Stable DiffusionのSeed値(シード値)は、画像生成の際に重要な役割を果たす数値です。
しかし、以下のように思っている人もいるでしょう。
- Seed値の意味や特徴が知りたい
- Seed値を固定する理由や効果が気になる
- 具体的なSeed値の使い方やおすすめの方法を知りたい
結論からいうと、Seed値は画像生成のもとになるランダムな数値です。固定して活用方法もあります。
今回の記事では、Stable DiffusionのSeed値の概要や固定して同じキャラクターを生成する方法、おすすめの使い方について解説します。
Seed値を理解し、Stable Diffusionでの画像生成の幅を広げたい方は、ぜひ最後までご覧ください。
Stable Diffusion自体の概要や使い方を知りたい方は、以下の記事を参照すると良いでしょう。
Stable DiffusionのSeed値(シード値)とは?
Stable Diffusionの画像生成で重要な役割を担うSeed値が持つ、以下4つの特徴について解説します。
- 画像を生成する元となるランダムな数値である
- 値によって生成結果が変わる
- 生成した画像に使われた値を確認できる
- 手動で入力したり固定したりすることも可能である
1.画像を生成する元となるランダムな数値である
Seed値とは、画像生成AIが新しい画像を生成する際に使うランダムな数値です。
数値を元にしてノイズデータが作られ、徐々に変化させることで画像が生成されます。
画像生成のスタート地点を決める役割を果たしているといえるでしょう。
なお、Seed値は正の整数であり、シード値が-1の場合はランダムな値が設定されます。
2.値によって生成結果が変わる
Seed値は画像の生成結果に大きな影響を与える要素の一つです。
同じプロンプトや条件であっても、Seed値が変われば異なる画像が生成されます。
一目見ただけでは気付きにくい細部から見たときの印象が大きく変わる構図まで、Seed値による変化はさまざま。
そのため、Seed値のみランダムに変化させながら画像生成を繰り返し、気に入った画像が出力されるまで続ける手法(シードガチャ)も存在します。
3.生成した画像に使われた値を確認できる
Stable Diffusionで生成された画像のSeed値はあとから確認できます。
Stable Diffusion WebUIで生成した直後であれば、出力された画像を選択することで画面上に表示されます。
生成時に確認できなかったとしても、Stable Diffusion WebUIの機能の一つである「PNG内の情報を表示」を利用すればOKです。
気に入った画像のSeed値をメモしておき、今後の画像生成で参考にすると良いでしょう。
4.手動で入力したり固定したりすることも可能である
デフォルトではSeed値はランダムに決まりますが、手動で入力して固定させることも可能です。
画像生成の設定項目にシード(Seed)があるので、任意の数値を入れてみましょう。
Seed値を同じにすれば、同じ雰囲気やスタイルを維持しやすいメリットがあります。
シリーズもののアート作品を制作する際など、制作意図に応じてSeed値を固定させると良いでしょう。
Seedの理論上での最大値は0xffff_ffff_ffff_ffff(16進数)、つまり 18446744073709551615です。
seed (int) – 目的のseed。値は、包括的な範囲 [-0x8000_0000_0000_0000、0xffff_ffff_ffff_ffff] 内にあることが必要です。それ以外の場合は、RuntimeError が発生します。負の入力は、0xffff_ffff_ffff_ffff + seedという式を使用して正の値に再マップされます。
引用元:PyTorch|マニュアルを翻訳
ただし、Stable Diffusionを利用しているツールや環境によっては、上限が低く設定されていることもあるため注意が必要です。
たとえば、ローカル環境でよく利用されているWebUI(AUTOMATIC1111)では、18446744073709550592以上の値を入力するとエラーになります。
また、入力した桁数が多いと下の桁が0になる場合も。
生成直後の画像で使われたSeed値をコピーする方法
Stable Diffusion WebUIでは、生成された画像のSeed値をワンボタンでコピーできます。
出力結果にコピーしたい画像を表示している状態で、Seed値入力欄の右にあるサイクルボタンをクリックしましょう。
もちろん、表示されているSeed値を手動でコピーしても問題ありません。
Seed値をランダムに戻したい場合は、隣にあるサイコロボタンを押して値を-1にしてください。
Seed値を固定して同じキャラクターを生成する活用方法
キャラクターをそのままに別の画像を生成したいとき、Seed値を固定する方法が使えます。
以下のように変化させたいときに試してみると良いでしょう。
- 髪型や服装を変える
- 表情を変える
- ポーズを変える
- 背景を変える
- モデルデータを変更する
ただし、完全に特徴が一致したキャラクターで生成するのは難しいため、何度も生成しながら調整してください。
1.髪型や服装を変える
Seed値を固定すれば、髪型や服装を変えてもキャラクターの特徴を維持しやすくなります。
長くおろした髪を結んだり、季節感の違う服を着せたりして、キャラクターに変化を持たせましょう。
ponytailやcoatなど、髪型や服装に関わるプロンプトを追記して生成してみてください。
2.表情を変える
表情を変えることで、絵全体の雰囲気やキャラクターの感情に変化をつけられます。
ストーリー性のある画像を生成したいとき、表情は特に重要です。
smileやangry、sadのような感情を表すプロンプトを追記しましょう。
3.ポーズを変える
シーンに合わせた表現が必要であれば、ポーズの変化も必要不可欠です。
さまざまなポーズで連続した画像を生成し、動きを見せる作品にするのも良いでしょう。
raise handやrunningのようにポーズや動きを表すプロンプトを追記したうえで生成してみましょう。
なお、ControlNetのOpenPoseでポーズを指定する方法もあります。
4.背景を変える
背景を変えたいときも、Seed値を固定する方法が使えます。
場所や時間、季節を示すプロンプトを書き、画像を再生成してみると良いでしょう。
たとえば、schoolやnight、summerなどを追記して試してみてください。
5.モデルデータを変更する
プロンプトを変えずに、モデルデータを変更するのも一つの手です。
モデルデータを変更することで印象は大きく変わるものの、雰囲気をほのかに残した画像を生成できます。
実写系モデルをアニメ系モデルに変更するなど、多種多様な変化を試してみてください。
おすすめの使い方・利用法
キャラクターを維持する以外にも、Seed値を利用したおすすめの方法があります。
ここでは、Seed値を利用した以下4つの使い方を解説します。
- Seed値を連番にして生成する
- 絵の雰囲気を維持したまま設定を変更する
- Inpaintの成功率を高める
- バリエーションの強度を変えて微調整する
1.Seed値を連番にして生成する
一括して複数枚の画像を生成することで、Seed値を連番にすることができます。
Seed値が近いと変化が小さくなりやすいため、少しずつ異なる要素が加わった画像を続けて生成できるでしょう。
単純に、効率よくシードガチャする方法としても使えます。
Seed値を連番にするには、バッチ回数およびバッチサイズを増やして画像を複数枚生成しましょう。
生成される画像の枚数は以下の通りです。
- 生成枚数 = バッチ回数(Batch count) × バッチサイズ(Batch size)
バッチ回数とバッチサイズには以下のような違いがあり、VRAM使用量や生成時間に影響します。
項目名 | 意味 | 特徴 |
---|---|---|
バッチ回数 | 画像生成を実行する回数(最大100) | 値が大きいと時間がかかる |
バッチサイズ | 一回の画像生成で並列処理する数(最大8) | 値が大きいとVRAM使用量が増える |
使用しているパソコンのGPU(グラフィックボード)の性能が高ければバッチサイズを大きくし、そうでなければバッチ回数を大きくすると良いでしょう。
2.絵の雰囲気を維持したまま設定を変更する
シード値を固定したままプロンプトやモデルを変更しても絵の雰囲気を維持できるように、画像サイズなどの設定を変更しても一貫性のある画像を生成できます。
以下の項目を微調整しつつ、異なる要素を持つ画像をいくつも生成してみましょう。
- サンプリング方法
- サンプリングステップ数
- 幅・高さ
- CFGスケール
3.Inpaintの成功率を高める
画像の一部のみ変化させるInpaint機能を使う際、Seed値を固定すると成功させやすくなります。
Inpaint機能では、変化させる範囲が広かったり、プロンプトと画像に関連性がなかったりすると、元の絵とはかけ離れた生成結果になる場合も。
しかし、元の絵のSeed値を指定して固定させることで、修正部分も近い雰囲気に近づきやすくなり、望ましい結果が出力される確率が高まります。
下図の左画像はSeed値を固定した場合、右画像はランダムにした場合です。
元の絵とは大きく異なる修正を加えたい場合は、逆にSeed値をランダムにするのも一つの手です。
生成した画像ごとInpaintにコピーしよう
txt2txtやimg2txtで生成した画像をInpaintで修正したい場合は、出力結果の下部に表示されているペイントボタンを押しましょう。
ボタンを押すとInpaintタブに移動し、画像や設定が自動的にセットされます。
Seed値をランダムにしていた場合は、もとの生成画面に戻ってコピーしましょう。
あとはマスクしたい部分を塗りつぶしてプロンプトを変更するだけです。
「PNG内の情報を表示」機能で画像を読み込んだ際に表示される「inpaintに転送」ボタンを押しても同様にセットできます。
4.バリエーションの強度を変えて微調整する
Seed値の拡張設定である「バリエーションの強度」を変更することで、キャラクターの特徴などを微妙に変化させられます。
Seed値の入力欄の横にある「その他」にチェックを入れると設定項目が増えるので、バリエーションの強度を増やしましょう。
バリエーションの強度は、値が大きいほど変化が大きくなります。
「バリエーションのシード」が-1のままでは生成するたびに画像が変化するので、固定したい場合は任意の値を入力しておきましょう。
Stable DiffusionのSeed値に関するQ&A
Stable DiffusionのSeed値に関する、よくある質問と回答を紹介します。
- 生成した画像のSeed値を確認できません
- キャラクターだけでなく構図も同じままにするには?
- 同じSeed値にすれば以前生成した画像を再現できますか?
- 他の人の画像を再現する方法はありますか?
- 生成した画像のSeed値を確認できません
-
「PNG内の情報を表示」機能を使っても画像のSeed値を確認できない理由として、以下の理由が考えられます。
- ペイントソフトで再度保存された
- サービスやアプリ等を経由してファイルが変わっている
- PNG以外の形式で保存されている
- そもそもAIで生成した画像ではない
画像生成時の設定はPNGファイルのメタデータとして記録されているため、なんらかの変更が加わるとデータが上書きされてしまいます。
クラウドストレージに保存したり、SNSに投稿したりした場合もPNG情報が消えるため、データの扱いに注意してください。
逆に、Seed値を含めたPNG情報を消去したい場合は、PCに標準搭載されているペイントソフトで開いてそのまま上書き保存すればOKです。
- キャラクターだけでなく構図も同じままにするには?
-
構図を保ちながら再生成したいときは、img2img機能を使いましょう。
元となるイラストをアップロードしてSeed値を固定することで、プロンプトを変更しても構図を維持しやすくなります。
プロンプトや設定を変更しながら微調整し、よりイメージに近い画像を作り上げてください。
一部分だけを変更したい場合はInpaint機能を使うのがおすすめです。
- 同じSeed値にすれば以前生成した画像を再現できますか?
-
Seed値を同じにするだけでは、完全に同じ画像を再現することはできません。
Seed値は画像生成のランダム性を制御する基準の一つですが、プロンプトやモデルデータをはじめとした、さまざまな設定などによって変化します。
完全に同一の画像を生成したいのであれば、Seed値以外の設定もすべてコピーしてください。
- 他の人の画像を再現する方法はありますか?
-
Seed値の範囲がかなり広いため、情報が公開されていない他人の画像を完全に再現するのは困難でしょう。
ただし、画像に含まれている要素を分析してプロンプトを考えることで、類似した画像を生成できる可能性があります。
たとえば、ChatGPTに画像を添付してプロンプトを解析してもらい、要素のヒントを得ることは可能です。
モデルや設定を変更しながら微調整を繰り返し、参考にしている画像に近づけていきましょう。
その際、著作権侵害や法的問題には十分に注意してください。
まとめ
本記事では、Stable DiffusionのSeed値(シード値)について解説しました。
最後に、記事の内容をおさらいしておきましょう。
- Seed値は画像生成の元となるランダムな数値で、値によって生成結果が変わる
- 生成した画像に使われたSeed値は、Stable Diffusion WebUIの機能で確認できる
- Seed値を固定することで、キャラクターの特徴を維持しながら変化を加えられる
- Inpaintの成功率向上やバリエーションの微調整にもSeed値を活用できる
- Seed値だけでは、生成された画像の再現は難しい
Seed値を理解しうまく活用することで、Stable Diffusionの表現の幅が大きく広がります。
ぜひSeed値を活用しながら画像生成を繰り返し、理想の画像を作り上げてください。