見出し画像

【自作LoRA】自作のキャラLoRAと服LoRAを同時に使用してイラストを生成する【Stable Diffusion】

zetaと申します。
今回は自作のキャラLoRAと服LoRAを組み合わせてイラストの生成を行いました。


やりたいこと

・キャラLoRAの絵柄を崩さずに服LoRAで着せ替えたい
・服LoRAを作るためのテンプレート的なものを見つけたい

服LoRAの難しさについて(参考)

経験則に基づく個人の感想ですが、キャラLoRAを作るよりも服LoRAを作る方がかなり難しかったです。単純にキャラLoRAと同じ手順で生成すると、同時にLoRAを使用した際に高確率でキャラの顔が崩れてしまいました。

まずはキャラLoRAのみの画像です。

ドルフィンウェーブ 住乃絵紫苑のLoRAです

続いて、服LoRAを混ぜて生成した画像です。

細かいプロンプトやLoRAの生成方法は省略していますが、一番言いたいことは「キャラLoRAと服LoRAを組み合わせると絵柄が崩れる」ということです。※これを回避するにはt2i→i2iで段階的に生成する必要がありました。

やったこと

上記の失敗の原因を色々調べて、今回は「服LoRA生成時のタグの付け方」を変えました。具体的には以下の2点です。
・学習素材から「キャラの顔」を削除する
・タグに固有名詞を使用しない

学習素材について

今回学習素材として選んだのは以下の服です。

閃乱カグラ 死塾月閃女学館 制服

理由としては以下になります。
・素材を集めやすい
・肌の露出が少ない
・「制服」というわかりやすい衣装

実際LoRAを作成する際に用いた学習データは25枚です。
加工としては白背景化、キャラの顔(肌もなるべく)をトリミングしています。

学習step数は7500です

★学習時のタグについて

今回の一番のポイントです。
詳細は省きますが、基本的にLoRAを作る際は学習させたい要素の単語を削除→学習させたい要素を覚えさせる単語を追加するといった形でタグを設定します。

例えば金髪碧眼のキャラであれば、
削除
blonde_hair , blue_eyes キャラの特徴となるword
追加
キャラ名

のようになります。
LoRA作成後、キャラを生成する際にプロンプトにキャラ名+削除wordの一部を入力して生成すると学習させた内容が生成結果に反映される流れとなります。

ただし、この時に追加したタグ「キャラ名」は削除したタグ以外の素材の要素も学習しています。
服LoRAについても同様に生成すると「服名タグ」が学習した服の要素以外の学習内容が反映され、元の絵柄に反映されるのが、上記の「絵柄が崩れる」原因と考えました。
そのため、服LoRAは特定の単語の要素のみ学習させる必要があります。

今回「わかりやすい制服」を選んだのは学習画像全て「school_uniform」というタグを持っているからです。
服LoRAを学習させる際に、タグを削除するのみで学習すると、消した単語の素材の要素のみを学習させることができると考えて学習を実施しました。
(kohya_ssでやってます)
※〇〇服といった共通のタグを追加してもプロンプトに混ぜなければOKです。

生成結果

学習素材が少ないので、細部まで再現はできていませんがもとの絵柄を崩さずに、キャラLoRA×服LoRAで一気に画像を生成することができました。

同じプロンプトで服LoRAのみ排除した結果と比べてみます。

キャラの絵柄を変えずに服LoRAだけを適用することができました。

さいごに

今回服LoRAを生成する際には「特定の単語にのみ学習させる」といった方法をとりましたが、LoRAを組み合わせる際には学習素材の特徴を全般的に学習したメインのLoRAと学習素材の一部を一部の単語に学習させたLoRA(サブLoRA)の組み合わせが必要と感じました。

LoRAの学習方法は色々あるので、単語単位で強化学習をする方法についてもっと詳しくなればより思い通りに画像を生成できるようになると感じました。

私の知見では「服LoRAはキャラLoRAと同様に作ってはいけない」といったことしかわかりませんでしたが、もっと勉強していきたいと思います。
新しい学習方法を身に着けたり、学習素材の量を増やして服LoRAの質をあげることができたらまた記事にしたいと思います。

ここまでお読みいただきありがとうございました。

おまけ(今回の最高傑作)


この記事が気に入ったらサポートをしてみませんか?