見出し画像

一括生成バッチで学習画像を用意し、実際にAnimaでキャラクターLoRAを作ってみた

以前、キャラクターを固定したまま、ポーズや表情の違う画像をまとめて生成できるGUIツールを作成しました。

このツールでは、キャラクターの共通プロンプトを一度設定しておけば、顔の向き・構図・表情・ポーズなどの差分を、txtファイルから順番に読み込んで生成できます。

以前の記事では、ツールの仕組みや使い方を中心に紹介しました。

今回はその実用例として、

キャラクターLoRAの学習用画像を一括生成し、その素材を使って実際にAnimaのキャラクターLoRAを作成してみます。

ツールを作っただけで終わらず、

「LoRA学習用画像の準備に、本当に使えるのか」

を、学習から完成後の生成結果まで含めて確認していきます。




今回使用したもの

今回使用した一括生成ツールと、元になった35枚分のプロンプトは、以下の記事で公開しています。

キャラクター固定でポーズ違いを一括生成するGUIツール

キャラクターの共通プロンプトと、ポーズ・表情などの差分プロンプトを分けて管理し、複数の画像を順番に生成するツールです。

Stable Diffusion AUTOMATIC1111版とComfyUI版を公開しています。今回はComfyUIを使用

LoRA学習画像35枚分のプロンプトまとめ

以前、天紡シオンのキャラクターLoRAを作成した際に使用した、学習画像35枚分のプロンプトをまとめた記事です。

今回は、この記事で使用した構図やポーズの配分をベースにしつつ、キャラクター部分だけを新しいキャラクターの特徴へ置き換えました。


今回作成するキャラクター

今回LoRAを作成するのは、白髪とピンクを基調にしたキャラクターです。

主な特徴は、次のように設定しました。

・白髪
・ピンクの瞳
・長いポニーテール
・ピンクのインナーカラー
・ピンクのリボン
・ピンクのジャケット
・白いシャツ
・ピンクのスカート
・ギザ歯

LoRAのトリガーワードには、キャラクター名をもとにした以下の単語を使用します。

momose_ririka


STEP1 : 既存の35種類のプロンプトを新しいキャラクター用に変更する

以前使用したプロンプトには、顔のアップ・上半身・全身など、LoRA学習用に複数の構図を用意していました。

今回は、その構図やポーズをできるだけ残しながら、キャラクター部分だけを新しい特徴へ変更します。

今回使用したtxtファイル

今回使用した35種類分のプロンプトは、以下の添付ファイルへまとめています。

キャラクターの共通要素は、txtファイル内の[CHARACTER]へまとめました。

そのうえで、顔アップ・上半身・全身・表情・ポーズ・背景など、画像ごとに変えたい部分を[POSE1]から[POSE35]まで分けて記載しています。

構図によって不要になる共通要素はDEL:、追加したい衣装や小物はADD:を使用して調整できます。

例えば、後ろ姿を生成するときに、正面からしか見えない特徴を削除したい場合は、次のように記載します。

DEL:pink eyes
DEL:white shirt
DEL:sharp teeth

反対に、特定のポーズだけ衣装や小物を追加したい場合は、ADD:で指定します。

キャラクター部分を書き換えれば、別のキャラクターでも同じ構図やポーズを流用できると思います。


STEP2 : 35種類のプロンプトから合計140枚を一括生成する

今回は、35種類の差分プロンプトを用意し、それぞれ4枚ずつ生成しました。

計算すると、

35種類 × 4枚=合計140枚

です。

txtファイルでは、次のように記載すると、そのポーズを4枚生成できます。

[POSE1 4]

同じプロンプトでも、Seedによって表情や細かな構図、手足の状態などが少しずつ変わります。

そのため、各構図を1枚だけ生成するのではなく、今回は4枚ずつ候補を出し、その中から最も学習画像に向いている1枚を選ぶことにしました。

140枚すべてを学習へ使用するわけではありません。

最終的には、各プロンプトから1枚ずつ選び、

35種類 × 選定した1枚=学習画像35枚

という構成にします。


本番の一括生成前に、1枚ずつテストする

最終的には35種類のプロンプトを4枚ずつ生成しますが、最初から140枚をまとめて生成するのではなく、先に各プロンプトを1枚ずつテストすることをおすすめします。

一括生成は便利ですが、プロンプトにミスがあると、そのミスを含んだ画像が複数枚まとめて生成されてしまいます。

今回用意したtxtファイルでも、1か所だけポーズの記述が抜けている部分がありました。

このような単純な記述漏れも、先に1枚ずつ生成結果を確認しておけば、本番の一括生成前に気づくことができます。

また、記述自体に間違いがなくても、共通プロンプトに含まれる要素が、指定した構図を邪魔することがあります。

後ろ姿ではなく、振り返りの構図ができる失敗例

例えば、後ろ姿を生成したい場合に、共通プロンプトへpink eyesが残っていると、AIが瞳を描こうとして、完全な後ろ姿にならないことがあります。

顔を少し横へ向けたり、画像のようにこちらを振り返った構図になったりすることもあります。

服の背面からは見えないwhite shirtなどの要素も、構図によっては削除したほうが安定する場合があります。

そのため、後ろ姿のプロンプトでは、見えない特徴や構図を邪魔する可能性のある要素を個別に削除しました。

DEL:pink eyes
DEL:white shirt
DEL:sharp teeth

本番生成前には、次のような点を確認しておくと安心です。

・ポーズや構図の記述が抜けていないか
・顔アップ、上半身、全身の指定が反映されているか
・後ろ姿なのに顔が見えていないか
・ADD:で追加した要素が反映されているか
・DEL:で指定した要素が残っていないか
・共通プロンプトの特徴が構図を邪魔していないか

問題のある箇所を修正してから、生成枚数を4枚へ変更し、本番の一括生成を開始します。

少し手間は増えますが、設定ミスを含んだまま140枚を生成してしまうことを防げるため、結果的にはやり直しを減らせます。


一括生成で特に楽になった部分

これまで同じ作業を手動で行う場合は、次のような操作が必要でした。

プロンプトを書き換える

生成ボタンを押す

生成が終わるまで待つ

次のプロンプトへ変更する

再び生成する

これを35種類分繰り返す必要があります。

1回ずつの操作はそれほど大変ではありません。

しかし、構図や表情を変えながら何十種類も生成するとなると、かなり手間がかかります。

生成が終わるタイミングを確認しながら次のプロンプトへ変更する必要があるため、長時間PCの前にいることにもなります。

今回のツールでは、最初にtxtファイルを読み込ませて生成を開始すれば、登録したプロンプトを上から順番に処理してくれます。

生成中は基本的に別の作業ができるため、手動で何度もプロンプトを変更する必要がありません。

今回のような、

35種類のプロンプトを4枚ずつ生成する

という作業では、特に便利さを実感できました。

ただし、ツールが自動で行うのは、あくまで画像を順番に生成するところまでです。

生成された画像の中には、次のようなものも含まれます。

・顔や手が崩れている
・キャラクターの特徴が弱い
・指定したポーズになっていない
・似たような構図になっている
・学習させたくない要素が含まれている

生成を自動化できても、最終的な画像の確認と選定は必要です。

それでも、生成操作を繰り返す時間が減ったことで、画像を作る作業よりも、

「どの画像を学習へ使用するか選ぶ作業」

に集中できるようになります。


STEP3 : 140枚の中から学習に使用する35枚を選ぶ

生成が終わったら、140枚の中から、実際にLoRA学習へ使用する35枚を選びます。

4枚ずつ作成した時のフォルダスクショ

今回は、各プロンプトから1枚ずつ選定しました。

同じプロンプトで生成した4枚を比較し、次の点を確認しています。

・顔や手が大きく崩れていないか
・キャラクターの基本的な特徴が出ているか
・意図した表情やポーズになっているか
・学習させたくない小物や特徴が入っていないか
・ほかの学習画像と構図が重なりすぎていないか

また、学習画像全体を見たときに、顔アップ・上半身・全身の比率が偏りすぎないようにしました。

表情や体の向き、背景についても、同じものばかりにならないように選んでいます。

【選定した35枚の一覧】

140枚の生成結果から、各プロンプトにつき1枚ずつ選定した35枚です。顔アップ・上半身・全身や、表情・ポーズが偏りすぎないように選びました。


STEP4 : Anima LoRA Factoryを使ってLoRAを作成する

学習用画像の選定が終わったら、次は実際にLoRAを作成します。

今回は、Anima向けのLoRAを比較的簡単に作成できる「Anima LoRA Factory」を使用しました。

不可思議さんの記事です👇

Anima LoRA Factoryには、自動キャプションやタグの一括編集機能が用意されています。

画像ごとにキャプションをすべて手入力しなくても、最初に自動でタグを付け、その後に不要なタグをまとめて整理できます。

初めてAnimaのLoRAを作成する場合にも、比較的作業の流れを把握しやすいツールだと思います。

なお、この記事ではAnima LoRA Factoryの全機能を詳しく解説するのではなく、今回行ったキャラクターLoRA作成の流れを中心に紹介します。


選定した35枚をフォルダへまとめる

まず、140枚の中から選定した35枚を、1つのフォルダへまとめます。

次に、Anima LoRA Factoryの「データセット準備」にある画像フォルダのパスへ、35枚を保存したフォルダを指定します。

Anima LoRA Factoryで画像フォルダを指定した画面

自動タグ付けを実行する

画像フォルダを指定したら、赤丸の自動タグ付けを実行します。

画像の内容が解析され、それぞれの画像へキャプション用のタグが自動で追加されます。

服装、表情、ポーズ、背景、構図など、画像から認識された特徴がタグとして書き出されます。

自動タグ付け後のキャプション画面

自動タグ付けは便利ですが、出力されたタグをそのまま使用するのではなく、作成したいLoRAに合わせて整理していきます。

キャプションのタグを整理する

キャラクターLoRAでは、基本的に、

トリガーワードを入力したとき、自動で再現してほしい特徴をキャプションから削除する

という考え方があります。

画像内にある特徴をキャプションへ残した場合、モデルはその特徴を、キャラクターそのものではなく、個別のタグによって指定された要素として学習しやすくなります。

反対に、キャプションから削除すると、その特徴はトリガーワード側へ結び付いて学習されやすくなります。

トリガーワードだけで再現してほしい特徴

次のような特徴は、キャプションから削除する候補になります。

・固有の髪色
・固有の目の色
・キャラクター特有の髪型
・特徴的なアクセサリー
・固有衣装
・キャラクター特有の耳や角

例えば、トリガーワードを入れただけで白髪やピンクの瞳を再現してほしい場合は、white hairやpink eyesをキャプションから削除します。

生成時に変更・制御したい特徴

一方で、生成時にプロンプトで変更したい要素は、キャプションへ残しておきます。

・表情
・ポーズ
・背景
・カメラ距離
・顔や体の向き
・座る、立つなどの状態
・生成時に変更したい衣装や髪型

例えば、smileやsitting、from side、outdoorsなどを残すことで、表情やポーズ、構図をキャラクター固有の特徴と分けて学習させやすくなります。

キャラクターに関するタグを、すべて削除すればよいわけではありません。

表情、ポーズ、背景、構図まで削除すると、それらの要素までトリガーワードへ結び付く可能性があります。

その結果、トリガーワードを使うたびに同じ表情や似た構図が出やすくなり、LoRAの自由度が下がる原因になります。

どの特徴を削除し、どの特徴を残すかは、完成後のLoRAをどのように使いたいかによって変わります。


今回削除したタグ

今回のキャラクターでは、次のタグをキャプションから削除しました。

pink eyes
white hair
sharp teeth

一括追加、削除で35枚分のtagを整理できます

この3つは、トリガーワードを入力したときに、キャラクターの基本的な特徴として再現してほしい要素です。

一方で、髪型や服装に関するタグは削除せず、キャプションへ残しました。

完成後のLoRAで、髪型や衣装をある程度変更できる余地を残したかったためです。

例えば、自動タグ付け直後のキャプションが次のような内容だったとします。

1girl, white hair, pink eyes, ponytail, sharp teeth, pink jacket, smile, upper body, indoors

整理後は、次のようになります。

3つのキャプションを消したキャプション例

このように、キャラクターへ結び付けたい特徴だけを削除し、表情や構図、変更できるようにしたい衣装などは残します。


トリガーワードをすべてのキャプションへ追加する

タグの整理が終わったら、すべてのキャプションへLoRAのトリガーワードを追加します。

トリガーワードは、生成時にそのキャラクターを呼び出すための合図になる単語です。

キャラクター名を使用することが多いですが、既存キャラクターの名前や一般的な英単語と重なるものは避けたほうが安全です。

既存の意味を持つ単語と重なると、ベースモデルがすでに知っている概念と干渉する可能性があります。

今回は、次のトリガーワードを使用しました。

momose_ririka

アンダーバーを含む固有の名前にすることで、一般的な単語と重なりにくくしています。

トリガーワード追加後のキャプションは、次のようになります。

トリガーワードを一括追加した画面

なお、今回使用したキャプション設定が、必ずしも最善だとは考えていません。

削除するタグや残すタグによって、完成したLoRAの再現性や自由度は変わります。また、学習画像の内容や、完成後にどの特徴を変更したいかによっても、適したキャプションは異なります。

そのため、今回の設定は正解として紹介するものではなく、実際に試した一例として見ていただければと思います。


学習設定を行う

キャプションの準備が終わったら、学習設定の画面へ移動します。

ここでは、使用するAnimaのベースモデル、VAE、テキストエンコーダーの保存場所を指定します。

あわせて、完成したLoRAを保存するフォルダと、出力するLoRAのファイル名を設定します。

LoRAのファイル名は、学習後に変更しても基本的には問題ありません。

学習回数や学習率なども変更できますが、今回は初期設定をベースに作成しました。

初めて作成する場合は、まずデフォルトに近い設定で学習し、生成結果を確認してから調整する方法でもよいと思います。

ただし、最適な設定は、画像枚数・画像の内容・使用するベースモデル・目的とする再現度によって変わります。

学習設定について厳密な判断が必要な場合は、Anima LoRA Factoryの公式情報や、LoRA学習に詳しい専門家への確認を推奨します。

設定が終わったら「LoRA学習開始」を押し、学習が完了するまで待ちます。

学習が完了すると、指定した保存先へLoRAファイルが出力されます。


完成したLoRAを使って生成してみる

学習が完了したら、作成したLoRAを読み込み、実際にキャラクターを生成してみました。

キャラクターを再現や、服装変更もうまく生成できました。

完成したLoRAによる生成結果4枚

今回の記事の目的は、完成したLoRAの性能を細かく比較することではありません。

一括生成バッチで用意した学習画像から、実際にキャラクターLoRAを作成できるか確認すること

が主な目的です。

生成結果を見る限り、一括生成した素材からでも、キャラクターの基本的な特徴を持ったLoRAを作成できました。

一方で、キャラクターの特徴が弱くなる構図や、衣装や髪型を変更しにくい条件なども考えられます。

詳しい再現度や設定ごとの違いについては、必要に応じて別の記事で検証したいと思います。


実際に使って感じたこと

今回、自作した一括生成バッチを使い、LoRA用の学習画像をまとめて作成しました。

特に便利だったのは、35種類のプロンプトを手動で入れ替えずに、合計140枚の候補画像をまとめて生成できた点です。

これまでのように、

プロンプトを変更する
生成を開始する
終了まで待つ
次のプロンプトへ変更する

という操作を何度も繰り返す必要がなくなりました。

一方で、生成された画像をすべてそのまま学習へ使用できるわけではありません。

キャラクターの特徴が弱い画像、手足が崩れた画像、指定した構図にならなかった画像などを確認し、最終的には人の目で選別する必要があります。

また、自動キャプションも便利ですが、自動で付いたタグをそのまま使用するのではなく、どの特徴をキャラクターへ結び付けるのか考えながら整理する作業が必要でした。

つまり、今回のバッチで自動化できたのは、主に画像を生成する工程です。

画像の選定やキャプション整理まで、完全に自動化できるわけではありません。

それでも、学習用画像の候補を少ない操作でまとめて用意できるようになったことで、LoRA作成の中でも特に手間のかかる素材準備をかなり楽にできました。


まとめ

今回は、自作した一括生成バッチを使って、キャラクターLoRA用の学習画像を作成しました。

35種類のプロンプトから4枚ずつ、合計140枚を一括生成し、その中から学習に使用する35枚を選定しています。

さらに、選定した画像へ自動でキャプションを付け、必要なタグを整理したうえで、Anima LoRA Factoryを使って実際にキャラクターLoRAを作成しました。

一括生成バッチを使用することで、プロンプトの変更と生成操作を何度も繰り返す必要がなくなり、学習素材を用意する工程を効率化できました。

ただし、画像の選定やキャプションの整理は、完成するLoRAの再現性や自由度に関わるため、最終的には人の確認が必要です。

すべてを自動化できるわけではありませんが、

画像を作る作業を自動化し、人は画像を選ぶ作業に集中する

という使い方には、かなり相性がよいと感じました。

今回作成したLoRAの詳しい生成結果や、キャプション・学習設定を変更した場合の違いについては、今後さらに検証できればと思います。

最後まで読んでいただき、ありがとうございました。

【使用環境】
・Comfy UI
・モデル:anima-base

※今回の生成では、ComfyUIのワークフロー側でLoRAを適用しています。そのため、配布しているtxt内のプロンプトだけでは、掲載画像と同じ絵柄や結果にならない場合があります。


いいなと思ったら応援しよう!