見出し画像

LoRA作成時のキャプションの付け方の考察

キャラクターや絵柄をAI作画で再現できるLoRA。超便利なので私も頻繁に使っています。

LoRAを作るときに用意するキャプションファイル。キャプションには出したくない特徴を記述しろとネットではよく言われているけどそれは本当なのか?

わかっている人には当たり前かもしれませんがLoRA初心者向けに書いてみました。

キャプションの実験

今回実験するのは「素材画像すべて眼鏡をかけているところからキャプションの記述で眼鏡をはずせるか?」です。

結論を最初に書くと「眼鏡をはずした画像も出力したいなら、眼鏡をはずした素材も入れましょう」ではあるんですが、せっかく検証したので見ていきましょう。

まず、紫色の髪で眼鏡をかけているというアバレちゃんというキャラでLoRAを作ってみます。トリガーワードは「abare」です。

画像は全部で6枚。モデルにはBRAV5を用いて、seedを固定してなるべく似たような顔が出るようにしています。この時点では全画像に眼鏡ありです。

ドクターストップアバレちゃんです

全画像眼鏡あり、キャプションにトリガーワードなし

全キャプションファイルに「glasses」とのみ入れたものです。

「abare, glasses」で出力するとこうなります。紫色の髪とメガネが出ていますね。顔の雰囲気も良い感じの再現です。

「abare,glasses」での出力

これでglassesなしのプロンプトで生成するとこうなりました。

プロンプトにglassesなしの「abare」のみ

眼鏡は外れたけど、紫色の髪の毛も再現されなくなっているじゃないですか!

キャプションには出したくない特徴を記述しろと良い言われますが、それはある意味正しくはあるけど、ちょっと違うんですよね。

トリガーワード+キャプションのプロンプトで素材を再現できるように学習されるのです。つまり、「glasses」も今回の特徴を学習しちゃっているんですよ。

トリガーワードのabareを抜いた「girl,glasses」で生成してみます。

girl,glasses

ああ!顔の雰囲気は違うけど、眼鏡をかける指示しか出していないのに、髪の毛が紫になっている!そうなのです。「glasses」という単語も髪の毛が紫を学習してしまっていたのです。「abare」だけじゃ髪の毛の紫を再現できなくなるのもよくわかる。

glassesに「髪の毛が紫」の情報が入らないようにするためには正則画像を用います。髪の毛が紫になっていない眼鏡の画像を一緒に学習することで眼鏡をかけると髪の毛が紫になるのを避けるわけです。

ただ、眼鏡をかけた時に紫の髪にならなくはなっても、アバレちゃんが紫の髪を保ったまま眼鏡をはずすようになってくれるわけではないのに注意。

個人的にはキャラクターの学習をさせる場合は、正則画像は用意しなくてよいと思っています。ほかのキャラクターを出すのにそのLoRAを使わないんですから。

そして、特徴となる要素をキャプションに書いていけないのもわかりますね。再現するには「abare,glasses」と必ずglassesを入れなければいけなくなってしまうからです。

全画像眼鏡あり、キャプションにトリガーワードあり

ついでなので、キャプションにトリガーワードを入れるべきかどうかも調べてみます。キャプションファイルの中身は「abare,glasses」です。

まずは「abare,glasses」での生成。紫の髪も眼鏡も出てきます。

キャプションにトリガーワード入り

このトリガーワードをキャプションに入れたLoRAでglassesなしの「abare」だけで生成してみます。

キャプションにトリガーワード入りでglassesなし

おお、髪の毛が紫になってくれました!ただ、顔の雰囲気はかなり変わっちゃっているかな?日本人離れしてきている感。

キャプションにトリガーワードは入れる方がよさそうですね。私は基本的に入れています。

とはいえ、顔の雰囲気を保ったままの眼鏡をはずすところまでは行けていない!

画像を1枚だけ眼鏡なし、キャプションにトリガーワードあり

1枚の画像だけ眼鏡をはずしてみました。素材の中の06.pngの眼鏡部分をinpaintingで消しています。

06.pngから眼鏡を除去

06のキャプションから「glasses」を除去し「abare」だけにします。これで作ったLoRAで「abare」だけで生成してみましょう!

眼鏡なし画像入りでの生成

髪の紫の効きが多少弱いですが、顔のイメージも保ったまま眼鏡をはずしてくれました。そして、当然といえば当然なのですが唯一眼鏡をはずした画像の06.pngにかなり近い雰囲気ですね。これはもっと眼鏡なしの枚数が増えれば特定の画像によることもなくなります。

画像を1枚だけ眼鏡なし、キャプションなし

さらに検証するために、1枚だけ眼鏡なし画像でキャプションファイルを全く入れないものでも検証してみました。

glassesなしの「abare」だけで生成してみます。

キャプションファイルなし

6枚中5枚が眼鏡ありのため、基本的に眼鏡ありの姿で出てきます。ネガティブプロンプトにglassesを入れると眼鏡をはずします。

背景について

ちなみに今回背景について書いていないですが、背景も複数種類用意しなおかつキャプションも付ける方が良いです。

複数種類の背景を用意しても、キャプションを付けないとなんと背景が混ざっちゃうことも!これは海の背景と道路の背景が混ざって道路に海が生えてきたものです!

道路に海が生えている

まとめ

というわけで、着脱可能な特徴を入れる場合はキャプションに書いておくというのは確かにその通りなんですが、ちゃんと他の特徴の再現率を上げたければ外した状態の画像も入れること!そして、外した状態を入れればよいというわけではなくキャプションでの記述もある方がコントロールしやすいとなります。

まあ、当たり前な結論になってますが。

これは衣装LoRAを作るときも同じで、衣装が同じで人を入れ替えるには同じ衣装の複数の人の画像を用意して、そのうえでキャプションで衣装以外の部分の記述をするとよいです。正則画像なしでも衣装LoRAは作れます。

では皆さん楽しいLoRAライフを!

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