技術約8分で読めます

Animaの4人LoRAで立ち位置と衣装を入れ替え、前景右への衣装の取り違えを調べた

いけさん目次

前回の3つの要因で複雑な4人場面を調べた実験では、手前でくららとけいが話し、右でこはるが腕を組み、奥でかなが手を振るところまでは3シードとも出せた。ただし、かなへ指定した灰色スカートと黒タイツは、3/3で前景右のこはるが履いていた。

今回は、かなとこはるの立ち位置と衣装の指定を別々に入れ替えてみる。入れ替えたあとも黒タイツをかなが履き続けるのか、それとも誰であれ前景右に立った方が履くのかを確かめる。

検証環境

項目設定
環境M4 Mac mini上のComfyUI
modelanima-base-v1.0
text encoderqwen_3_06b_base
4人LoRAanima-4char-v1_epoch100
Turboなし
samplerer_sde / simple
steps / cfg25 / 4.0
解像度1344×768
seed42、1234、9999

立ち位置と衣装を別々に入れ替えた

かなへ指定した衣装をこはるが履いたのか。それとも、灰色スカートと黒タイツがたまたま前景右へ出ただけなのか。元の111だけでは区別できない。

そこで、かなとこはるに限って、原因と考えられる指示を別々に変えてみた。

指示01
P: 役割奥で手を振るかな/前景右で腕を組むこはる奥で手を振るこはる/前景右で腕を組むかな
O: 衣装奥の人物へ灰色スカート+黒タイツ前景右の人物へ灰色スカート+黒タイツ

くららとけいの会話、教室、カメラ、外見の目印、残りの制服、ネガティブプロンプト、シード、生成設定は固定した。衣装を指定する文の中の人物順も、常にkanachankoharuとした。P0O0は元の111と同じプロンプトで、再生成した3枚は元画像とRGBのピクセル値まで完全一致した。

全体はこの一覧で、細部は続く個別の画像で判定した。

かなとこはるの役割×衣装を独立に入れ替えた4通り×3シード

P0O0では、奥のかなへ指定した黒タイツが前景右へ出た

P0O0 seed42。奥のかなへ指定した灰色スカートと黒タイツを、前景右のこはるが履いていた P0O0 seed1234。奥のかなは紺スカートと白いレッグウェアになり、前景右のこはるが灰色スカートと黒タイツを着た P0O0 seed9999。3枚目も、黒タイツは前景右のこはるが履いていた

P0O1では、指定した相手と前景右が一致した

P0O1 seed42。前景右のこはるへ黒タイツを指定し、実際にもそこへ出た P0O1 seed1234。黒タイツは前景右のこはるが履いたが、奥のかなには未指定の白いレッグウェアが出た P0O1 seed9999。黒タイツはこはるが履いた一方、スカートは指定した灰色より紺に見える

P1O0では、立ち位置を入れ替えても前景右の人物が黒タイツを履いた

奥の手振り役をこはる、前景右の腕組み役をかなへ入れ替え、灰色スカートと黒タイツは奥のこはるへ指定した。

P1O0 seed42。奥で手を振るこはると前景右で腕を組むかなは出たが、灰色スカートと黒タイツはかなが履いていた P1O0 seed1234。立ち位置と動作の入れ替えは成立し、下半身の衣装は前景右のかなが履いたままだった P1O0 seed9999。3枚目も奥のこはるは紺スカートで、前景右のかなが灰色スカートと黒タイツを着た

P1O1でも、前景右のかなへの指定と出力が一致した

P1O1 seed42。前景右のかなへ黒タイツを指定し、実際にもそこへ出た P1O1 seed1234。前景右のかなが灰色スカートと黒タイツを着た P1O1 seed9999。人物、動作、黒タイツの指定先が前景右で一致した

採点では、人数と、描き分け+大まかな役割は4つの条件すべてで3/3だった。黒タイツが前景右へ出たのも全条件3/3だった。表は、指定した人物が履いたかどうかに絞る。灰色スカートと黒タイツは一つにせず、色と脚の装いも分けて数えた。

cell黒タイツが指定した人物へ灰色スカートが指定した人物へ
P0O00/30/3
P0O13/32/3
P1O00/30/3
P1O13/33/3

黒タイツを指定どおりの人物が履いたのは6/12で、前景右の反応役は12/12で履いていた。特に指定した人物と前景右を衝突させたP0O0とP1O0だけなら、指定した人物が0/6、前景右が6/6だった。

同時に、かなとこはるの立ち位置と動作の入れ替え(P1O0/P1O1)は6/6で通った。4人、前後の配置、会話、腕組み、奥の手振りという構成要素は出せている。P1O0では立ち位置と動作だけが入れ替わり、下半身の衣装は前景右に立ったかなが履いていた。

黒タイツは着せ替え用に今回プロンプトで指定した衣装で、出力そのものには12/12で存在する。チェックポイントの推論では、人物の描き分け、場面上の役割、着せ替える衣装が別々に表現されていて、衣装を誰に着せるかを決める段階で前景右へのショートカットが優先されている、と考えると辻褄が合う。

P0O1とP1O1の成功は、指定先を変えたときにも再現するとは限らない。プロンプトどおりに理解した結果と、指定先がショートカットの行き先へ偶然重なった結果は、普通に1つの条件で生成しただけでは区別できない。今回の2×2はそこを分けるための実験だった。

末尾ではっきり言い直しても直らなかった

プロンプトの追記だけで上書きできるかも確かめた。P1O0へ次のどちらか一文だけを追加し、3シードずつ生成した。1つはkoharu alone wears ... / kanachan ... no tightsのように人物名で排他的に言い直す文、もう1つはonly the small background waving girl ... / foreground-right arms-crossed girl ... no tightsのように空間上の役割で言い直す文だ。

人物名で言い直した方は、3シードとも黒タイツが前景右のかなのままだった。

人物名で言い直したseed42。こはるだけが黒タイツ、かなはタイツなしと書いても、前景右のかなが黒タイツを履いた 人物名で言い直したseed1234。衣装は直らず、けいまで後景に回って会話ペアも崩れた 人物名で言い直したseed9999。黒タイツは前景右のかなのまま

役割で言い直した方も、こはるが黒タイツを履くことはなく、seed1234では3人に減って場面ごと崩れた。

役割で言い直したseed42。奥のこはるは紺スカートと素足で、灰色スカートは前景右に出た。前景右の脚は画面外で黒タイツは判定不能 役割で言い直したseed1234。3人に減ってこはるが消え、後景で手を振るのはけいになった。黒タイツは前景右のかな 役割で言い直したseed9999。4人の場面は保ったが、黒タイツは前景右のかなが履いたままだった

奥のこはるが黒タイツを履いた画像は0/6。前景右のかなの脚が見える5枚では、5/5でかなが履いていた。さらに6枚中2枚は、人数または会話ペアまで崩した。

同じ長文の末尾へ人物名を繰り返す方法も、空間上の役割で排他的に言い直す方法も、安定した対策にならなかった。この構成のまま文を追加するほど他の枠まで崩れて、正しい1枚をシードの引き直しで探す方式が続いてしまう。

短くしても、衣装を名前の近くに書いても直らなかった

111はQwen 435トークン、T5 518トークンだった。ComfyUIのAnima実装はT5列が512未満なら512へパディングするが、512を超えた列は切らない。この111は518位置のままLLMAdapterへ入る。

衣装の指定文は末尾にあり、T5位置ではくらら 400、けい 425、かな 456、こはる 484から始まる。衣装が弱いのは、プロンプトが長く、指定が後ろにあるせいだと疑った。

そこで、同じ場面の指定を3種類のプロンプト構成へ変えて比較した。完成イラストとして使える画像は、どの構成でも0/3だった。

構成Qwen / T5トークン変更場面が成立したか
v1435 / 518前の実験で使った原文3/3
v2293 / 341重複を削り、1人分を同じ枠へまとめる2/3
v3424 / 498v1の構造を残し、衣装だけ人物の説明文に入れる0/3
v4433 / 512v3末尾で4人名を再列挙0/3

v1 seed42の画像は前の記事と同じで、ここには変更後の3つの構成のseed42だけ置いた。

v2 seed42。かなの黒タイツは戻ったが、こはるの呆れた表情が弱くなった v3 seed42。衣装を人物の動作文に入れるとこはるが消え、腕組みは別人がやっていた v4 seed42。末尾で4人名を再列挙してもこはるは戻らなかった

v2ではかなの黒タイツが0/3から2/3になった一方、こはるの呆れ顔は3/3から0/3になった。seed1234では奥行き自体が消え、人物の属性も混ざった。

v3ではかなの黒タイツが3/3で戻った。しかしこはるが3シードすべてで消え、こはるがやるはずだった腕組みと呆れ顔は、かなに1回、けいに2回出た。末尾へ4人名を戻したv4でも、こはるは0/3のままだった。

この結果からは、T5が512を超えたから失敗するとも、プロンプトは短いほど良いとも、衣装は人物名の近くへ書けば良いとも、末尾で名前を数え直せば良いとも言えなかった。

以降の比較は、4人の描き分けと大まかな役割が3/3で残ったv1の語順に固定した。v1は、全体の人数と前後の人数を先に書き、役割ごとに人物どうしの関係をまとめ、最後に4人分の属性の枠を置く並びだ。内容が同じでも枠の置き場所を変えると人数や役割まで変わって、差分を追うにはここを動かさないのが一番だった。完成した場面が安定して出る並びという意味ではない。

過去のキャプション設計どおり外見の説明を消すと崩れた

トリガーへ焼き付けるためにあえてキャプションから抜いた意匠と、キャプションに入れたプロンプトを、もう一度確かめた。

3人LoRAのv1では、かなだけが65枚すべての学習キャプションにside ponytailahogemedium hairblue scrunchieを書いていた。けいとこはるは髪・目をほぼ書いていなかった。その非対称のため、かなの外見だけがkanachanから汎用の属性側へ切り離され、3人にするとけいへ吸収された。

v2ではかなを含む全員の髪・目の記述をソロ学習キャプションから外し、外見をトリガーへ吸収させた。同記事では、推論時にbrown side ponytailなどを書き戻すと属性が隣の人物に出て、トリガー名と位置だけにすると直るところまで確認している。

一方、4人LoRAを作った時のマルチ学習キャプションには、人物を見分けるための短い目印を再導入した。かなはside ponytail+ahoge、けいはblonde+blue ribbon、こはるはshort dark hair+red eyes、くららはrose-brown hair+earrings+makeupとした。現在のチェックポイントには、ソロでは外見をトリガーへ吸収し、マルチでは外見の目印を文章に書く、という2種類の設計が入っている。

そこでv1の111から、この4人分の外見の説明だけを削除した。役割、位置、個別の衣装、ネガティブプロンプト、シード、生成設定は変えていない。

外見の説明を削除したv5 seed42。3人に減り、前景と後景が茶髪系になった 外見の説明を削除したv5 seed1234。4人はいるが全員が茶髪系になり、4人の描き分けに失敗した 外見の説明を削除したv5 seed9999。役割の構成は残るが、髪色と顔が同系統になった

結果は描き分け0/3、正確な4人も2/3だった。3人LoRA v2で有効だった「外見を書かない」は、この4人LoRAでは通用せず、外見の目印を消しただけで描き分けが崩れた。

衣装の取り違えも直らなかった。seed1234と9999では、かなへ指定した灰色スカートと黒タイツを、引き続き右の反応役が履いていた。外見の説明を全部消しても取り違えたままで、書き戻した説明が原因という線はこれでなくなった。

かなの黒タイツは12/12の出力に存在しており、弱く学習されたのでもない。衣装は最初からトリガーへ焼き付けない設計で、4人分の着せ替える衣装を場面中の誰に着せるかの段階で混線している。逆に外見の目印を消すと、今度は描き分けそのものが崩れる。現在のチェックポイントは、描き分けには外見の目印が必要な一方、外見・役割・衣装を同時に増やすと、衣装を正しい人物に着せる力が弱くなっている。

単体LoRAとマルチキャラLoRAでは、説明を省く意味も変わる。単体では、髪型や髪色のような不変の要素をキャプションから外し、トリガーへ吸収させる方法が有効だった。ところが4人を同じ学習画像へ入れる場合、全員の説明を省きすぎると、どの構成要素がどのトリガーに属するかを分ける教師信号まで弱くなる。今回のv5は、その省きすぎ側を推論プロンプトで再現した結果と考えられる。

説明の量の一律な増減では、この2つは同時に直らない。髪、リボン、目など人物を見分ける最小限の目印は残し、着せ替える衣装は毎回プロンプトに書く。そのうえで、同じ人物を前景、後景、腕組み、手振りへ入れ替えた組み合わせは今回の学習データに1枚もなかった。ここを足さないと、人物ではなく位置や役割で衣装が決まる余地が残る。