

「Stable Diffusion」の設定画面で、「Seed」という数値があります。
今回の記事は、この「Seed」という数値の意味と、利用方法についてご紹介します。
まず、「Seed」とは何か、というと、「最初のノイズのパターン」です。
「Stable Diffusion」では、「真っ白なキャンパスにゼロから絵を描く」のではなく、「ノイズ(砂嵐)から不要な部分を削る」という画像の生成をします。
そしてこの「ノイズ」には、膨大な数のパターンがあります。それが「Seed」の数値です。
全く同じプロンプトや設定でも、バリエーション豊かな様々な画像が生成されるのは、この「Seed」の値がランダムに割り振られるからです。
最初は、「Seed」の値は「-1」となっています。これは、「Seed値をランダムにする」ということです。すなわち、「どのような画像が生成されるか予想できない」ということです。
では、この「Seed」という機能をどういうシチュエーションで使用するかというと、例えば、色々なプロンプトや設定を変えながら画像を生成していると、「アタリ」を引くことがあります。
つまり、好みドンピシャの傑作、「神絵」が生成されるということです。
そして、その「神絵」を見ながらこう思うわけです。「ここの部分だけちょっと変えれたら…」「もうちょっと写実風にできたら…」と。
そこで登場する機能が、「Seed」です。「Seed」を固定し、プロンプトや設定を同じにしたうえで、そのプロンプトや設定をちょっとずついじって更なる理想のイラストを生成していくというわけです。

それでは、「Seed」値の検証をするにあたり、元となる画像を生成してみます。
プロンプト
(best quality:1.3), (highly detailed:1.3), (realistic:0.4), indoors, tatami, futon, (morning:1.2), BREAK,
1girl, (furry:1.3), (anthro cat:1.3), (long tail:1.4), detailed paws, solo, (cute:0.9), (loli:0.7), smile, happy, blush, (detailed beautiful eyes:0.8), (yukata:1.1), (lower ponytail hair:1.1), sideburns, parted bangs, (big breast:0.9), (awaiting tongue:0.8), full body
ネガティブプロンプト
nsfw, (worst quality:1.3), (low quality:1.3), ugly, duplicate, mutilated, poorly drawn hands, (extra fingers:1.2), (too many fingers:1.2), poorly drawn paws, poorly drawn face, poorly drawn eyes, poorly drawn tail, blurry, bad anatomy, bad proportions, extra limbs, long neck, text
プロンプト以外の設定はこんな感じです。

「Seed」は、初期設定の「-1」、すなわち「ランダム」としています。

ここで、設定された画像の「Seed」値を見てみましょう。

ここで、「Seed」値が「2536346610」と表示されています。
しかし、「Batch count」を「9」としたため、9枚の画像が生成されており、全て「Seed」値は異なります。
では、表示された値は9枚の画像のうち、どの画像の「Seed」値が「2536346610」なのかというと、結論としては、「1枚目に生成された画像」です。
「2枚目の画像」は「+1」、「3枚目の画像」は「+2」、「4枚目の画像」は「+3」…「9枚目の画像」は「+8」した値が「Seed」値となります。

9枚画像を生成した場合、各画像の「Seed」値はこのようになります。
ここで、「Seed」の欄にこの数値を入力し、全く同じプロンプト、設定として画像を生成すると、同じ画像を生成することができます。
ここで試しに、「4枚目から7枚目の画像を再度生成」してみましょう。

表示された「Seed」値を

設定画面の「Seed」の枠にコピー&ペーストします。

今回は「4枚目~7枚目の画像」を再度生成するので、値を「+3」して「2536346613」とします。
4枚の画像を生成するので、「Batch count」は「4」とします。
それ以外の設定、プロンプトは変更せず、そのままとします。


生成された画像がこちらです。

最初に生成した9枚の画像のうち、4枚目~7枚目と全く同じ画像が生成されました。
このように、Seed・プロンプト・設定を全く同じにして生成すれば、全く同じ画像が生成されます。
それではこれから、この4枚の画像について、「Seed」値をそのまま「2536346613」にして、プロンプトや設定を少しずつ変化させてみます。

プロンプトを修正し、「(lower ponytail hair:1.1)」(結び目が低い位置にあるポニーテール)を「long hair」(長髪)としました。

生成された画像がこちらです。

元の画像はこちら。確かに髪型は変化しましたが、髪型以外の部分(ポーズ、背景、髪の色)等も変化してしまいました。
「Stable Diffusion」では、「Seed」を固定し、設定も変化させず、プロンプトのみを変化させた場合でも、このようにプロンプトの修正箇所以外も多少変化してしまいます。

次は、プロンプトの別の部分を修正してみましょう。髪型の「(lower ponytail hair:1.1)」はもとに戻し、プロンプト末尾の「(big breast:0.9), (awaiting tongue:0.8), full body」から「(awaiting tongue:0.8)」(舌を出している)を削除しました。

生成された画像がこちらです。

元の画像はこちら。舌を出さなくなりましたが、やはりそれ以外の部分も変化してしまいました。

それでは最後に、プロンプトを全て元に戻し、「Refiner」を変更してみようと思います。
少し実写風にするため、「kftRequiemFurADream_v5vae.safetensors」を「0.9」(やや弱め)で設定します。


写実的なイラストとなりました。


「Refiner」のみ使用した場合、背景やポーズ、髪型等は変化せず、使用した「checkpoint」の特徴の身が反映されるようです。

「Switch at」の値を最小の「0.01」、つまり「Refiner」の効果を最大にしてみます。

ぱっと見ではわかりませんが、細かい部分を見ると、より写実的になったように見えます。
結論として、「Seed」を使用すれば、「気に入ったイラストを基本的にそのままの状態として一部を修正できるが、修正したプロンプト以外の部分も修正されることがある」ということです。
では、「特定の部分以外は絶対に変化させたくない」という場合はどうするか、ということですが、「img2img」で紹介した機能に、「inpaint」という機能があります。
参考:「img2img」について
これについては、また別の記事で紹介しようと思います。
以上をもちまして今回の記事を終了とします。最後まで読んでいただき、ありがとうございました。


コメント