技術 約9分で読めます

Anima 2キャラLoRAのアホ毛移りと融合が消えた、rank128+2体データ20枚

いけさん目次

前回の合体LoRA(v1)で、けいちゃんとかなちゃんを1本のLoRAに焼いて2人を絡ませた。横並びと単独は通り、ハグ・おんぶ・姫抱っこも当たりシードなら成立した。ただし2つ引っかかった。

  • 2人を接触させると属性が移る。かなのアホ毛がけい(金髪)に乗り、けいの長髪がかなに引っ張られ、密着すると体が融合する
  • 深さと顔忠実度が rank64 の容量と本人2人分の干渉で頭打ちになる

v1の最後に「処方は rank を上げて干渉を解くこと」と書いた。今回はそれを実際にやる。rank を 64→128 に上げ、さらに v1 には無かった2体学習データを20枚足して焼き直した。 狙いは属性移りと融合を消すこと。

v1 から変えた2点

項目v1v2
rank / alpha64 / 64128 / 128
データ単体のみ96枚(けい43+かな53)152枚(けい79+かな53+2体20
レシピlr 2e-5 / repeats 2 / ep150同じ(lr 2e-5 / repeats 2 / ep150 / save_every 4)
ベースAnima-Base v1.0同じ
生成Turbo 8step同じ(er_sde / simple / cfg1.0)

変更の本体は rank と2体データの2つで、それ以外は v1 のレシピを踏襲した。v1 の単体構成が実証済みだったので、効いた要素を切り分けたかった。

2体データの作り方

属性移りは「2人が同じ画面にいる絵」をモデルが学習で見ていないことが大きい。そこで2体画像を20枚用意した。

種別枚数作り方
合成8構図の一致する単体画像を bbox で切り出して並べ、身長を正規化して1枚に合成
AI生成12Gemini / GPT で2人が並ぶ・接触する絵を出力

左右の位置入れ替えも入れた。2体は全体の13%に抑えている。比率を上げすぎると単体トリガーでも勝手に2人出やすくなるため、単体を主・2体を従にする配分にした。全画像にキャプションを付けてある。

学習は RunPod(torch 2.5.1+cu124 / AnimaLoraToolkit)で回した。304 step/epoch × 150ep = 11,400 step、1epoch 約4分で約10時間。手順はAnimaLoraToolkit + RunPod の記事と同じ流れ。

アホ毛移りと融合が消えた

v1 で一番目立っていた失敗が、けい(金髪)の頭にかなのアホ毛が乗る属性移りだった。v2 では2体を出してもけいの頭頂にアホ毛がまず乗らない(ごく稀に小さな毛束が出る程度で、v1 のような明確な移りは消えた)。かな側はアホ毛を保持したまま、けい側には移らない。長髪の引っ張りも起きず、密着しても2人の体が別個に分離している。

ハグ(頬寄せ)ep140。密着してもけいの頭頂にアホ毛が乗らず、体も融合しない

単独トリガーも健全で、keichan / kanachan を別々に出すと汚染が無い。けいがかなの特徴を引くことも、その逆も無く、顔の崩壊も出ない。この周回数で単体が崩れていないので、分離と単体品質が両立している。

keichan 単独トリガー ep140(金髪・blunt bangs・青リボン) kanachan 単独トリガー ep140(茶髪サイドポニー・アホ毛)

接触ポーズ(ハグ・立ち並び・おんぶ・姫抱っこ)は v1 同様に出るが、v1 で残っていた「密着点での融合」が目に見えて減った。接触の難所が rank128+2体データで解けたことになる。

2体立ち並び ep140(左 keichan / 右 kanachan、分離維持) おんぶ ep140(keichan が kanachan を背負う、密着でも融合なし)

膝乗せはDanbooruタグで当たりシードなら出る、自然文では出ない

v1 で唯一はっきり崩壊していたのが膝乗せ(座位で脚が前で重なる構図)だった。v1 では「kanachan sitting on keichan's lap をモデルが『2人とも座っている』と解釈して座位2体を融合させている面がある」と書いた。v2 でここを詰めると、読み筋が確定した。

  • 自然文(kanachan sitting on keichan's lap)では膝乗せにならない。2人が並んで座るか、融合する
  • 同じ自然文を LoRA 無し(Anima-Base 単体) で出しても同様に失敗する
  • Danbooru タグ(sitting on lapgirl on top)を足すと、膝乗せになるシードが出てくる

つまり膝乗せが自然文で出ないのは LoRA の問題ではなく、Qwen3 テキストエンコーダが「AがBの膝に乗る」という空間関係をパースしきれない制約。ベース単体でも落ちる以上、LoRA では直しようがない。これは v1 の「プロンプト解釈の失敗で救える余地がある」という見立ての裏が取れた形。

ただしタグを足しても全シードでは出ない。ep140 の Danbooru タグ膝乗せを4シード並べると、2シードはかなが本当にけいの腿に座る膝乗せになり、残りは椅子に並んで座るだけに落ちた。タグは膝乗せの成立率を上げるが保証はしない、シードガチャの領域。膝乗せが出るか出ないかと、出た絵の2人が分離しているかは別の話で、後者は膝乗せでも並び座りでも維持される(融合もアホ毛移りも起きない)。

膝乗せ ep140(Danbooruタグ・当たりseed、kanachan が keichan の膝に座る、分離維持)

エポックスイープ

save_every 4 で ep4〜148 と最終 ep150 を保存し、候補帯(ep120 以降)を同一プロンプトで並べて比較する。見たいのは2体の分離のロバスト性と単体品質が両立する ep。

顔と分離は ep150 まで崩れない

けい / かなを単独で出すと、ep120 から ep150 まで、見たすべての ep でオンモデルで顔が崩れない。epoch 間の差は衣装のドリフト(ブレザーやベストの有無、タイツかニーハイか)程度で、過学習のサイン(顔が元絵から外れる・残像・フライ顔)は最終 ep150 でも出ていない。2人を並べた立ち絵(正面)も ep148・ep150 で分離・顔ともクリーンで、残像も混入も無い。

ここは v1 と明確に違う。v1 は rank64・単体データのみで、ep150 まで焼くと2人を並べたとき顔が元絵から外れて残像が混じった(過学習)。v2 は rank128+2体データで、その v1 型の派手な過学習(顔の崩壊・残像)は最終 ep150 まで出ない。

むしろ髪型は ep を上げるほど安定する。ep140 より下ではシードで髪型が揺れるが、ep140 以上ではほぼ固定になる。キャラの髪型はトリガーに焼き込む対象そのものなので、これは固定する方が正しい。髪型が揺れる低 ep の方が、キャラとしては焼き込み不足に近い。

2体の分離も ep120〜140 で安定

膝乗せ(Danbooruタグ)を難しいシードで ep120・132・140 と並べると、膝乗せになったか並び座りに落ちたかに関わらず、3つとも2人が別個に分離していて、けいにアホ毛が乗らず体も融合しない。周回を重ねるほど分離がロバストになると思って並べたが、この帯ではどの ep も同等で、分離の良し悪しから ep の優劣ははっきり出ない。つまり分離は ep120 の時点で既に取れていて、その後も崩れない。

アーティファクトは低確率で、特定 ep のせいではない

スイープを通して見て意外だったのは、アーティファクトがほとんど出ないこと。アホ毛がけいに移るのもほぼ無い。たまにゴーストが残る・脚が増える・変な影が出る絵はあるが、これは過学習が無くてもたまに出る類の破綻で、その ep が悪いというよりシードや各種数値の噛み合わせでたまたま落ちた、という感じが近い。

切り分けの目安は頻度。毎度出るなら LoRA や ep が悪い、低確率なら噛み合わせ。 今回はどの ep でも破綻は低確率で、後者に当たる。だから「この ep は壊れている」と言える ep は候補帯に無く、数枚回して当たりを拾う運用で足りる。

本当の過学習は「指定しても変わらない」で見る

髪型が固定することは過学習ではない。焼き込んだ通りに出ているだけ。硬直が問題になるのは、髪型や服装を明示的に変えてと指示したのに変わらないとき。keichan に別の髪型や私服を指示して、低 ep は追従するのに高 ep が元の形のまま変わらないなら、高 ep が焼きすぎになる。この追従性テスト自体はまだ詰めていない。

おんぶの手は ep140 まで保ち、ep144 から崩れ始める

過学習寄りの破綻として唯一はっきり ep 依存で出たのが、おんぶでけいがかなの腿を掴む手。一番難しい接触(手が脚と交差する)部分を、シードを3つ振って ep140・144・148・150 で並べ、手の領域をクロップ拡大して見た。

seedep140ep144ep148ep150
7成立成立やや甘いやや甘い
13成立ロストロストロスト
99成立成立成立やや甘い

破綻には2つのモードがある。指がくっつく融合と、手そのものが消えるロスト。重いのはロストの方で、見栄えとして融合よりきつい。

ep ごとの出方は次の通り。ep140 はどのシードも手が成立する。ep144 は手が消えるシードが出るが、融合はまだ見られない。ep148 は手が消える絵がはっきり出てきて、ここから重い方の破綻が混じる。ep150 は消える・融合の頻度がいちばん高い。全シードで毎回崩れるわけではないが、崩れる確率も崩れの重さも ep を上げるほど増える。崩れるのは常に一番難しい交差ポーズで、立ち絵・ハグ・単体には波及しない。

同じシード(13)でおんぶの手の領域をクロップして並べると差が分かりやすい。左の ep140 はけいの手がかなの腿を掴んで成立しているが、右の ep150 では同じ手が消えている。

おんぶの手クロップ ep140(seed13・手が腿を掴んで成立) おんぶの手クロップ ep150(seed13・同じ手が消失=ロスト)

スイートは ep140 あたり

ep140 で髪型(キャラの同一性)が固まり、おんぶの手もまだ全シードで保つ。ep144 から手が消える破綻が混じり始め、ep148・150 はその頻度と重さが上がる。ep150 がいちばん怪しい。描き込みは高 ep ほど良い手応えがあるが、難しい接触ポーズの手はそれと引き換えに悪化する。だから両立点は ep140 付近が無難で、難しい絡みを多用するならここから上げない。立ち絵・ハグ・単体しか使わないなら ep148・150 でも実害は出ない。

最終 ep150 は _epoch150 のサフィックス付きでは保存されず、keikana-animabase-v2.safetensors(サフィックス無し)が全150epoch完走後の重みになる。save_every が 150 を割り切らないため、epoch 名付きの最後は ep148。

描き込みは寄りなら破綻なく、引きで崩れる

白背景のターンアラウンドでは描き込みの甘さが見えにくいので、ep140 で背景とオブジェクトを盛ったシチュエーションを大きめの解像度で出した。教室、プールサイドで足を水に浸ける、下校途中の買い食い、プール掃除の水かけ、屋上、夏祭り。見えてきたのは構図の問題だった。寄りなら背景まできれいに描けて、引く(カメラを遠ざけて全身と背景を広く取る)と描き込みが甘くなる。2人の同一性と分離はどの距離でも保つので、これは LoRA ではなくベースモデルの描画力の側の話になる。

寄りは安定して出る

教室・プールサイド・プール掃除のような寄りから中距離の構図は、背景が奥行きを持って描けて描き込みも甘くない。学習データの解像度を上げた効果か、大きく出すと細部が乗る。2人の分離(アホ毛・顔・体)もシーンの中で保たれる。

教室で座る ep140(窓の採光・黒板・机の奥行き、2人の分離も維持) プールサイドで足を水に浸ける ep140(水面・濡れ描写も崩れず、足まで描けている)

プール掃除の水かけ ep140(寄り。水飛沫・太陽光・ホースの掴みが成立、けい噴射・かな防戦の非対称も出ている)

唯一アラが出るのは、手や口が物に絡む複雑な相互作用のところ。買い食いシーンはシードによって、かなの持つクレープが2つに増えたり、顎と融合したり(食べているのではなく溶けている)、口元が崩れたりする。下の絵は当たりシードでクレープと口は比較的崩れていないが、それでも看板は偽の文字に崩れる。食べ物と口の相互作用が崩れるのは Illustrious 系でも起きるモデル共通の難所で、膝乗せの自然文が通らないのと同じく、keikana 特有の過学習というよりベースモデルやプロンプト解釈の側の限界に近い。

買い食いシーン ep140(当たりseed。背景は奥行きが出るが看板の文字は崩れる。クレープと口の相互作用はseedで崩れやすい)

引くと描画が甘くなる

同じキャラ・同じ ep140 でも、カメラを引いて全身を入れ背景を広く取ると描き込みが落ちる。顔と手が小さくなって割り当たるピクセルが減るぶん、モデルが造形を平均的に丸める。崩れるのは決まって背景の高頻度ディテールの側だった。

プール掃除を引きにすると、キャラ自体は出ているのにホースの取り回しが非論理的になる。

プール掃除を引きにした構図 ep140(キャラは出ているがホースの取り回しが非論理的に崩れる)

夏祭りは屋台の看板が偽の文字に崩れ、奥の群衆がのっぺりして顔も体も溶ける。

夏祭りの引き構図 ep140(屋台の看板が偽の文字、奥の群衆がのっぺり溶ける)

屋上の引きは背景の金網のメッシュがひび割れたように崩れる。

屋上の引き構図 ep140(背景の金網のメッシュがひび割れて崩れる)

差を生んでいるのは構図(カメラ距離)で、LoRA ではない。2人の同一性・分離・アホ毛の切り分けは引きの絵でも保たれていて、崩れるのは背景・小物・群衆というモデルが元々苦手な高頻度ディテールの側に集中している。1枚に詰める要素が増えるほど配分されるピクセルと描画の手が回らなくなる、と読むのが近い。keikana を使うなら寄りから中距離が安定していて、引きの広い画面を狙うときは背景の描き込みを別に上げる前提で構えるのがいい。

参考リンク