手軽に学習できることからStable Diffusionのファインチューニングで最も人気のあるLoRA
Civitaiから簡単にダウンロードすることもでき、画像生成を楽しくしてくれます。
ただ、思った通りの画像を生成できないこともあります。
この記事では思い通りの画像を生成するためのコツを紹介します。
学習データのコツ
いくら学習を繰り返しても、学習に使用する画像の質が悪いと良いモデルは作成できません。
逆に言うと、質の良い画像だと少ない枚数、少ない学習回数で良いモデルを作成できます。
画像枚数
私は50枚〜200枚で学習することが多いです。
ステップ数
kohya_ss氏のツールでLoRA学習する場合、ステップ数は以下のようになります。
ステップ数 = 画像枚数 × 繰り返し回数 × エポック数
私はステップ数が5000〜10000で学習することが多いです。
画像枚数:100
繰り返し回数:5
エポック数:20
こんな感じです。
画像サイズ
Stable Diffusion v1系は256×256の画像で学習し、512×512にファインチューニングしています。
Stable Diffusion v2.1は768×768の画像で学習しています。
そのためLoRAを作成するときも、512×512の画像を用いることが多いです。
ただ、最終的に生成したい画像サイズで学習すると良いです。
学習で用いた画像サイズ = LoRAが生成得意な画像サイズ になるからです。
画像のバリエーション
画像のバリエーションによってそのLoRAが得意な画像が決まります。
偏った画像ばかりだと応用が効かないものになってしまいます。
顔のLoRAを作成することを考えると、以下の点に注意するとよいです。
- 髪も含め顔全体が写っている
- 髪も含め顔に余計なもの(手、ロゴなど)が写っていない
- 顔が正面を向いている
- 背景がゴチャゴチャしていない
1. 髪も含め顔全体が写っている
ありがちなのが顔はすべて写っているが、髪(頭の上)が見切れている画像。
この画像を学習すると、常に頭が見切れた画像、異様に後頭部が長い画像なんかが生成されてしまいます。
2. 髪も含め顔に余計なもの(手、ロゴなど)が写っていない
余計なものも学習し、生成画像に反映されてしまいます。
そのため下記のように、あくまで学習時は最も固有である特徴を描写した部分のみ使う。
それ以外の手や体などはどの人間も同じですから、プロンプトで追加描写してあげるイメージです。
- LoRA学習時:学習したいもののみ写った画像を使う
- 画像生成時:LoRA + 追加で描写したいプロンプト
3. 顔が正面を向いている
横顔を生成したいのであれば横顔画像を使えばよいですが、通常は正面の顔のみ生成したいと思います。
理想は証明写真、卒業写真のような画像です。
ただそんな画像は数多くないため、少し横を向いた画像も使う必要が出てきます。
その際はそれぞれの画像の割合に注意してみてください。
- 正面の顔:60枚
- 右向きの顔:20枚
- 左向きの顔:20枚
このようにバリエーションを考慮するとよいです。
4. 背景がゴチャゴチャしていない
白背景が最もよいと言われています。
背景も学習されるため何にも染まっていない白がよいというわけです。
プロンプトのコツ
LoRAを適用してみて思い通りの画像を生成できない。
また学習し直すかーと早々に諦めてしまうのはもったいないかもしれません。
プロンプトをうまく指定すれば良い画像を生成できることも。
identifier
identifierとはLoRAを指定するときのプロンプトのことです。
LoRAだけ指定しても画像生成できますが、identifierも指定するとよいです。
いろんなパターンを試してみましょう。
- LoRAのみ・・・<lora:hck:1>
- LoRA + identifier・・・hck <lora:hck:1>
- LoRA + identifier + class・・・hck dog <lora:hck:1>
identifierはLoRA学習時に設定しますが、名前の決め方には注意が必要です。既に存在する単語ですと学習しにくくなります。
LoRA作成についてはこちらをご参考ください。
プロンプトの数
プロンプトが多すぎるとLoRAの影響力が弱くなってしまいます。
まずはLoRAのidentifierとLoRAだけで生成してみて、徐々にPositiveプロンプトを足していく方式が良いと思います。
おすすめのプロンプトを紹介していますのでぜひ参考に。
パラメータのコツ
Stable Diffusion には多くのパラメータが存在します。
パラメータそれぞれの意味を理解し、適切に設定してあげることが重要です。
Stable Diffusion Web UIのScriptにX/Y/Z plotという機能があります。
パラメータを変えながら画像を生成してくれるので、どの値にすればよいか判断の助けになります。
X/Y/Z plotの使い方はこちらで紹介しています。
学習サイズと生成サイズ
512×512でLoRAを作成した場合、生成する画像は512×512が原則です。
例えば顔LoRAを512×512で作成した場合、
- 顔のみ生成したい:512×512
- 顔 + 胸を生成したい:512×768
このように画像サイズを拡張させ、拡張した部分にLoRA以外を描写させるのがよいです。
画像サイズを大きくしすぎると画像が崩れることもあります。
その場合は、一旦512×512で画像を生成し、その後にOutpaintingで画像を拡張するとよいです。
LoRAの強度
まずは強度1.0で試すと良いです。
複数LoRAを指定する場合、相性が大事です。
顔LoRA + 体LoRAとか顔LoRA + 背景LoRAなどは相性が良いですが、
顔LoRA + 顔LoRAのように同じようなLoRAを複数指定すると、画像が崩れがちです。
Stable Diffusion Web UIのパラメータ
- サンプリングステップ数
- Restored faces
- サンプラー
1. サンプリングステップ数
サンプリングステップを増やすと画像の質が向上しがちです。
2. Restored faces
Restored facesにチェックを入れると、顔が高画質化します。
3. サンプラー
サンプラーによって画風が変わります。いろいろ試してみましょう。
私はEuler a、DPM++ 2M Karrasをよく使います。
いろいろ試してみて理想の画像生成を追求してみてください♪
コメント