今回はStable DiffusionのLoRAに関する中級者向けの話題で
をご紹介するという内容になっています。
以前、圧倒的なディテールを追加できる「flat LoRA」をご紹介したのですが…
実はこのLoRAの作り方は作者様が情報を共有してくださっており、研究熱心な方の間では興味深い研究テーマとしてしばらく前に話題になっていました。このLoRAの作成方法は「コピー機LoRA学習法」と呼ばれていて、応用すると画風を調整可能なLoRAを作れるとのことだったので今更ながら私も試してみることにしました。
ここではこのコピー機LoRA学習法を使ったLoRAの作り方をまとめてみますね。
今回作ったサンプル:輪郭線追加LoRA
まず、私が今回の方法を使って実際に作ったLoRAのサンプル画像を掲載します。同じ行の画像のシード等の条件は同一です。
普通に生成した画像 | LoRA適用(ウェイト:1) | LoRA適用(ウェイト:2) |
---|---|---|
今回私が作ったのはキャラクターに輪郭線を追加するLoRAです。ウェイトを強くすると輪郭線も太くなっていることがわかりますね。
ちなみに本当は輪郭線に加えて陰影を黒く塗りつぶすような画風にもしたかったのですが、今回はやり方がよくなかったのか残念ながらあまり上手く反映されませんでした。
コピー機LoRA学習法の手順
では次にコピー機LoRA学習法の手順を詳しくご紹介します。主な手順は次のとおりです。
- 適当なモデル(以下モデルAとする)を使って適当な画像を1枚生成する(以下、この画像を元画像と呼ぶ)。
- モデルAと元画像1枚だけを使って過学習させたLoRAを作成する(これをLoRA1とする)。
- モデルAとLoRA1をマージしてモデルBを作る。このモデルBは、どんなシードでも元画像と全く同じ画像を生成する。
- 元画像を加工して、欲しい画風の画像にする(この画像を加工画像と呼ぶ)。
- モデルBと加工画像1枚だけを使い新しく過学習させたLoRA2を作成する。これで完成!
ポイントは過学習を行わせることです。一般的に過学習は避けるべきなのですが、コピー機LoRA学習法では逆にそれを利用するのが面白いですね。
ちなみに「コピー機学習法」という呼び方は、過学習によってまるでコピー機のように同じ画像を生成するモデルBにちなんだものだと思われます。
コピー機学習法を活用したLoRAの具体的な作り方
さてコピー機LoRA学習法の手順をご覧頂いたところで、具体的にこの方法でどうやってLoRAを作るのか?という点を丁寧にご紹介していきます。
手順1:適当なモデルを使い画像を生成する
まずは適当なモデルを使って適当な画像を生成します。ここではCounterfeit V3.0を使って下記の画像を生成しました(以下、下記の画像を「元画像」とします)。
ここではちびキャラを生成していますが加工しやすければどんなキャラクターでもいいです。好きなように生成してください。
手順2:元画像を使って一つ目のLoRAを作る
次に先ほどのモデルと画像を使って過学習LoRAを作成します。LoRAの作り方は下記の記事で詳しくご紹介しているのですが…
今回は上の記事で使っていた正則化画像は使わず学習を行いました。学習条件は下記のとおりです。
- 教師画像:手順1の画像1枚のみ
- 正則化画像:なし
- クラスプロンプト:1girl
- ステップ数:500(繰り返し数100・エポック数20・バッチカウント4)
- 次元数:128
- アルファ:64
- オプティマイザ:AdamW
その他の条件はデフォルトです。
手順3:モデルとLoRAをマージする
さてこれで一つ目のLoRAができたので、使用したCounterfeitモデルと先ほどのLoRAをマージします。モデルとLoRAのマージはKohya_ss GUIの「DreamBooth LoRA」タブ→「Tools」タブ→「Merge LoRA」から行えます(下図)。
マージは十数秒で終わります。
試しにマージ後のモデルを使って画像を生成してみると、(クラスプロンプトを使えば)どのようなシードでも元画像と同じ画像が生成されることが確認できました。
手順4:元画像を加工する
次に元画像を加工して最終的に作りたい画風のイラストを作成します。ここでは輪郭線を追加し、さらに陰影を黒くするLoRAにしたかったので下記のように加工を行いました。
加工はPhotoshopで元画像を切り抜き、切り抜いた画像に「レイヤー効果(輪郭線)」と「2階調化」を適用して合成しただけです。
ちなみに上の方でも書いた通り、今回は陰影を黒く塗りつぶす画風があまり上手く反映されなかったので、もしかしたら2階調化の処理をもっと強くしてもよかったかもしれません。
手順5:加工画像を使って目的のLoRAを作る
最後に先ほどの加工画像とマージしたモデルを使って目的のLoRAを作ります。とりあえず学習のパラメータは一つ目のLoRAを作るときと同じにして学習を行えばOKです。
これでできあがったLoRAが目的のLoRAです。このLoRAを適用して画像を生成すると、上の方に掲載したサンプル画像のように輪郭線のあるイラストを生成できます。
おわりに
以上、コピー機LoRA学習法を使ったLoRAの作り方を解説しました。この方法を使えば画風などを細かく調整できるLoRAを作れてとても便利なので、ぜひ皆さんも試してみてください。
この記事が何かしら参考になれば幸いです。