Stable Diffusionを使用して、画像を作成する方法を記載方法で、細かい機能部分について説明します。
ここでは、「japanesedolllikeness_LoRA.ipynb」を使用しています。
1. 各設定項目
タブ「txt2img」は、テキストから新たなイメージ画像を生成する場所です。
各項目で大事な項目として、下記のとおりです。
1. Sampling method | サンプリング方法(おススメは「DPM++ 2M Karras」) |
---|---|
2. Sampling steps | ノイズからイラストに変えていくための回数 |
3. Restore faces | 顔を綺麗にできる(美人になるとは限らない) |
4. Tiling | タイル状に並べる |
5. Hires. fix | 解像度を上げることができる |
6. Width, Height | 画像の横幅、高さ |
7. Batch count | 画像の枚数(何回バッチを行うか) |
8. Batch size | 画像の枚数(1回のバッチで何枚の画像を生成するか) |
9.CFG Scale | どれだけプロントに近いイラストを生成するか |
10. Seed | Seedの数値と他の設定によって絵が決まる。-1にするとランダム |

2. 各項目を変更しての比較
ここでは下記のプロンプトは変更しないで、各項目設定を変更したら、どのぐらい変化があるのかを比較します。
【Positive】
masterpiece, best quality, highres, (photo realistic:1.4),1girl, solo, medium breasts, portrait, (sitting), big blue eyes, school uniform, cute, young, black hair, hair professional lighting, (18 years old), indoors, chair,
【Nagative】
painting, sketches,(worst quality:2),(low quality:2),(normal quality:2), lowers, normal quality,((monochrome)),((greyscale)),skin spots, acnes, skin blemishes, age spot, nsfw, ugly face, fat
1. Sampling method | DPM++ 2M Karras (デフォルト設定はEuler a) |
---|---|
2. Sampling steps | 20 |
3. Restore faces | チェックなし |
4. Tiling | チェックなし |
5. Hires. fix | チェックなし |
6. Width, Height | 512×512 |
7. Batch count | 1 |
8. Batch size | 1 |
9.CFG Scale | 7 |
10. Seed | -1 |
上記でデフォルト設定で作成すると、下記の図が作成されました。

①「Sampling method」をデフォルト「Euler a」で「Generate」すると、下図のように崩れた画像となります。

「DPM++ 2M」でも崩れてます。特に今回使用している、「japanesedolllikeness_LoRA.ipyn」を使用する場合は、「DPM++ 2M Karras」を推奨します。
ちなみに、Sampling methodとは、統計学や機械学習、信号処理などの分野において、集合から一部を取り出す方法を指します。サンプリングにはランダムサンプリング、層別サンプリング、クラスタサンプリング、システマティックサンプリング、多段階サンプリングなど様々な種類があります。

②「Sampling steps(ノイズからイラストに変えていくための回数)」のみを「20」から「100」に変更して「Generate」します。
どうですかね?あまり変化はないかもです。

③「Restore faces(顔を綺麗にできる(美人になるとは限らない))」にチェックを入れます。
(先ほど変更した「Sampling steps」は「20」に戻しています。)
多少現実にありそうな顔になったかな?と思われます。(美人を少し抑えた気がします。)

④「Tiling(タイル状に並べる)」にチェックを入れます。
(先ほど変更した「Restore faces」は、チェックを外しています。)
なんだかわけの分からない画像になりました・・・、人物には向いてないのでしょうか。

⑤「Hires. fix(解像度を上げることができる)」にチェックを入れます。
(先ほど変更した「Tiling」は、チェックを外しています)
チェックを入れたところ、下図のように新たな項目が追加されましたが、デフォルトのままで「Generate」します。


左がデフォルト設定のプロパティ情報であり、右が④「Hires. fix」にチェックを入れたものです。
サイズが大きくなったのが分かりますが、別設定の「Width, Height」を1024×1024にすればいいのでは・・・・?と思いましたら、「Width, Height」を大きくすると二人出力されます。(下記⑤参照)

⑥「Width, Height」を「512×512」から「1024×1024」に変更して「Generate」します。
(先ほど変更した「Hires. fix」は、チェックを外しています。)
なぜか、二人表示されるようになりました。3回やってもポーズなどは変化があっても、人は二人表示されます。「Positive」には1girlと入力しているのに。サイズや容量は上記④「Hires. fix」と同じでした。
このことから1人分の姿を記載しようと思ったら、「Width, Height」を「512×512」がベストであり、1024だと二人分記載されてしまう。大きいサイズを作成したい場合は、「Hires. fix」で調整すべきだと思いました。


⑦「Batch count(画像の枚数(何回バッチを行うか))」を「1」から「4」に変更して「Generate」します。(先ほど変更した「Width, Height」は「512×512」に戻しています。)
4枚生成されました。サイトには4枚を1枚にまとめたのを掲載していますが、1枚ずつのものも生成されているため、計5枚生成されいます。

⑧「Batch size(画像の枚数(1回のバッチで何枚の画像を生成するか))」を「1」から「4」に変更して「Generate」します。(先ほど変更した「Batch count」は「1」に戻しています。)
先ほど⑦Batch countと同じ4枚の画像が生成されました。
同じかなと思いましたが、Batch sizeは同じ構図で服や背景が異なることから
⑦Batch countは、4回新しく生成している。
⑧Batch sizeは、1回生成して、そこから同じものを追加3枚生成している
という使い分けができると思います。

⑦+⑧として、「Batch count」を3にして「Batch size」を2にしてみます。
分かりずらい結果ではありますが、3種類を2個ずつ作成された画像となりました。
(どれが同一種類のものか分かりずらいですが・・・・、同じ顔で複数作成したい場合、この方法が良いかもです。)

⑨「CFG Scale(どれだけプロントに近いイラストを生成するか)」を「7」から「30(MAX)」に変更して「Generate」します。(先ほど変更した「Batch count」等は「1」に戻しています。)
明らかに不自然な画像となってしまいました。

「CFG Scale」を「15」に変更して生成しましたが、それでも不自然な画像となります。

「CFG Scale」を「10」に変更して生成しましたが、それでもデフォルトの「7」と比較すると、違和感を感じる画像となります。

「CFG Scale」を「1(min)」に変更して生成しましたが、今までの画像と比較して、別人物となってしまいました。「CFC Scale」は「7」ぐらいが適当なようです。

⑩「Seed」を「-1」から「10000」に変更して「Generate」します。(先ほど変更した「CFG Scale」は「7」に戻しています。)
あまり変化がないような・・・・

「Seed」を「100000」に変更して「Generate」します。「10000」と比較しても、そこまで絵柄が変わるわけではないようです。
ここで「Seed」を調べたところ、「Seed」とは、ランダムな値を生成するための出発点となる、初期値や種となる値のことを指します。Seedは、同じ初期値から同じ疑似乱数が生成されるという性質を利用して、ランダムな値を生成するプログラムやアプリケーションで再現性を持たせることができます。例えば、乱数を使用して実験を行う場合、Seedを指定することで、同じ結果が得られるようにすることができます。

そのため、「Seed」を「100000」のまま「Generate」をしたところ、全く同じ画像となります。
このことから画像は 「プロンプト」+「各設定」×「seed」=画像
となります。(先ほどまでは「seed」は「-1(ランダム)」なため、実施するたびに異なる画像となっていたと思われます。)
⑩’ 「Seed」を「100000」にしたまま、
「Positive」
masterpiece, best quality, highres, (photo realistic:1.4),1girl, solo, medium breasts, portrait, (sitting), big blue eyes, school uniform, cute, young, black hair, indoors, chair,
⇒hair professional lighting,及び(18 years old)を削っています。
にして、「Generate」しました。
髪型が少し変化があったぐらいで、他に変化はあまり見られません。

さらにそのまま、「Positive」を「big blue eyes」を「big black eyes」に変更して「Generate」したところ
目が黒色??になっていますかね。(まだ青色に近いような・・・)しかも顎に手が生えてる・・。

3. 考察(まとめ)
各設定を変えながら作成したところ、
・設定はデフォルトのままが良い(Sampling methodのみ「DPM++ 2M Karras」に変更する。)
・画像生成の基本は 「プロンプト」+「各設定」×「seed」=画像
で生成される。
・良い画像が作成されたら、「seed」を固定して、「プロンプト」を変更して作成してみると丁度いい微調整が可能となる。