3キャラ+化粧トグル持ちギャルを合わせて4キャラAnima LoRAを1本に焼く
目次

3キャラ合体LoRA(けい・かな・こはる)に、単体LoRAで化粧トグルを検証済みの4人目(くらら・ギャル)を足して1本に焼いた。単体で焼けたものが合体でも維持できるか、特に「マルチ素材が全部化粧ありでもすっぴんトグルが残るか」を主に確かめた。
検証環境
| 項目 | 内容 |
|---|---|
| ベースモデル | Anima-Base v1.0 |
| 学習ツール | AnimaLoraToolkit (torch2.8.0+cu128 / ubuntu24.04) |
| 学習GPU | RunPod RTX 5090 (volume 170GB) |
| 学習設定 | rank256 / alpha256 / lr2e-5 / batch1 / accum4 / ep150 / save_every=1 / flip false (trio v2の設定を据え置き) |
| データ | 518枚 → 配分複製で896ファイル(後述) |
| 生成確認 | ComfyUI・Turbo 8step・cfg1.0 |
データセット構成(確定・518枚)
| サブセット | 枚数 | 内訳・作り方 |
|---|---|---|
| 3キャラ実証セット | 292 | trio v2で実証済みのものをそのまま |
| くららソロ | 91 | 化粧61+すっぴん30。単体v3と同一設計・傾き差し替え済み |
| ソロ追加 | 35 | けい12・かな12・こはる11。くらら91に枚数で負けないための全身増量。バストは既に焼けているので不要 |
| 立ち並び合成 | 33 | ペア3種×6+トリオ3種×4+4人×3。Codexを使わず直接合成(クリーン切り出し→実測身長比で正規化→足元揃え) |
| 絡みポーズ | 67 | ペア3種×14+トリオ3種×6+4人×7。Codex生成 |
キャプションは3キャラ成功データの書式を踏襲し、タグ頭+位置文+服装文の順で書く。位置文の識別アンカーは簡潔に固定した(kurara=rose-brown hair+earrings+makeup / keichan=blonde+blue ribbon / kanachan=side ponytail+ahoge / koharu=short dark hair+red eyes)。くららのアンカーにはearrings/makeupを常に入れる(化粧トグルの足し算設計と整合させる。マルチのくららは全部化粧あり)。
制作でつまずいた点と対策
1. AI生成マルチ素材は頭身がインフレする(実測+0.5〜1頭身)
Codex(gpt-image)のペア/トリオ出力を元絵と同身長に正規化して1/8グリッドで実測すると、かな5.5→6.5-7頭身、くらら6.4→7.3、けい6.2→7、こはる5.7→6.4。
4人構図だけはセーフだった(横に詰め込むため1体が小さく描かれ、足長化が抑制される)。参照のくららが長身スレンダー設計なので、2人構図だと相方がそれに調和させられて伸びるのだと推測している。
対策はプロンプトの頭身制約だが、片方向だけの制約は過補正になった。「compact, 5.5-6 heads tall, heads LARGE」だけだと今度は縮みすぎてチビ化した。最終形は双方向固定の「match the reference EXACTLY — neither taller/leggier NOR shorter/more chibi」。
副作用も出た。図体が小さく出るのはフレーミング指示(fill most of the canvas height)で、バストアップの頭見切れは「heads fully inside the frame with margin」で解決した。
2. 身長差は「過去の採用データ」から実測する
かな→こはるの差が合成で浅すぎた(3人立ち絵から取った比率0.937)。身長焼き付けの基準にしているヌード立ちペアを実測したら、こはる/かな=0.9212。
けい基準の最終比率は、くらら=けい=1.0 / かな=0.951 / こはる=0.876。立ち並びは全部この比率のダウンスケールのみで直接合成した(拡大なし・LANCZOS)。AIに「半頭低く」と言葉で頼むより機械合成の方が正確で速い。並べるだけの絵は合成、絡みはCodex、という分担にした。
3. トリオ/ペアの身長指示は言葉を具体化しないと守られない
「half a head shorter」だけだと小さくなりすぎる個体が出た。「her eyes are at the level of their mouths」「the top of her head is at their chin level, NOT lower」のように、頭のどこが相手のどこに来るかまで書くプロンプトが有効だった。
配分設計(確定)
AnimaLoraToolkitはグローバルrepeatsのみ(サブセット別repeats非対応)なので、ファイル物理複製で配分を作った。
| サブセット | 枚数 | 複製 | 実効露出 |
|---|---|---|---|
| ソロ(すっぴん除く) | 318 | ×2 | 636 |
| くららすっぴん | 30 | ×3 | 90 |
| マルチ | 170 | ×1 | 170 |
| 計 | 518 | → 896ファイル | 896/ep |
- 実効マルチ比率19.0%(trio v2実証の23.8%以内に調整)
- くらら化粧:すっぴん露出=2.5:1(マルチ100枚が全部化粧ありで素の比率が5.4:1まで偏るのを、すっぴん×3で単体v3の2:1相当に調整する。ここが崩れるとトグルが残らない)
- steps/ep=224、150epで33,600step(正常なpodで約23時間)
エポックサンプル戦略(確定)
ソロが焼けていないうちはマルチも焼けないので、エポック判定はソロを優先する設計にした。マルチ出力の人数固定はAnima側の性能とプロンプト依存で、こちらのマルチ素材の役割は「指定時に混ざらない・身長差と位置語が効く」の確保。よって素の多人数はエポック判定に入れなかった。
各エポックは1ep1枚方式の6本ローテで回す。(1)くらら化粧バスト (2)くららmakeoffバスト((1)↔(2)が隣接ep比較のトグルペア) (3)けい (4)かな (5)こはる (6)くらら×かなペア(色相最近接の混色カナリア)。
トリオ/4人の本判定は、ソロで3〜5epに絞ってからチェックポイントを事後評価する。ペア6組+トリオ4組+4人1本+トグル3本の14本バッテリーを各3seedで評価する。
多人数は横長解像度(トリオ1216×832 / 4人1344×768)で出す。正方形に4人詰めたときの混ざりには解像度由来のズレが上乗せされて、LoRA側の問題と切り分けられなくなるため。
学習前の予想
ソロ4人のキャラ再現は問題なく焼けるはず(データも設計も実証済みの延長)。くららトグルはすっぴん×3補正で残る見込みだが、単体より効きは弱まるかもしれない。ダメならすっぴん×4で再ビルドする。
ペアは全指定プロンプト(トリガー+位置文+識別アンカー+服装文)なら混ざらない見込みで、危険なのはくらら×かな(ロゼブラウン×ブラウン)。4人は素では混ざる(仕様)ので、全指定+横長でどこまで分離するか。頭身は学習データ側で修正済みで、もし出力で足長化したら3キャラ時代の旧マルチ(AI生成ペア)が原因の候補になる。
学習結果
pod(RTX 5090・$0.71/h)はスモーク0.38 it/sでゲート(0.30)通過、本番は0.42-0.43 it/s(2.33s/step)で回った。trio v2の正常に動いたpod(2.45s/step)より速い当たり。224step/ep×150ep想定のところ、後述の判断でep120打ち切り、実走約21.5時間。
序盤から「収束が早い」ように見えたが、これはエポックが大きいことによる誤認と思われ、steps/epが224とtrioの1.45倍あるので、ep15の時点でtrio換算ep22相当まで学習が進んでいる。ステップ換算ではほぼ同じカーブ。ただしrank256(くらら単体はrank32)の容量の差は誤認ではなく実際にあって、くららの化粧トグル(ピアス有無)はep14の学習内蔵サンプルで既に分化していた。単体v3で本判定がep80+だったのとは別物の立ち上がりだった。

ep80/90/100はソロとトグルがプラトー、服未指定の複数人にヌードが出る
ローカル本番条件(ComfyUI・Anima-Base・LoRA strength1.0・ソロ=Turbo 8step/cfg1.0・複数人=非Turbo 25step/cfg4.0・seed42固定)でep80/90/100を比較した。ソロ4人のキャラ再現とくららトグルはep80で既に決まっていて、ep100まで変わらなかった。

トグルの切り替わりは、単体のときと同じくピアスの有無に出ていた。

trio時代にローカル推論で「かながけいを暗髪に潰す」競合があったが、今回はアンカー+位置文のプロンプトでは素で発生しなかった。重み相殺((kanachan:0.8)等)も不要だった。
1つだけep依存の変化があった。服を指定しない複数人プロンプトはep90あたりからヌードが出る。学習データに身長焼き付け用のヌード立ちペアがあり、評価プロンプトの「two girls standing side by side facing the viewer」がそのキャプションと完全一致していたため。safeタグでは防げなかった。服装文を付けると同ep同seedで完全に着衣に戻った。学習キャプションは全マルチが服装文で終わる設計なので、これは過学習ではなく分布どおりの挙動。運用ルールは「複数人プロンプトに服装文必須」。
トリオ・4人・ポーズ・密着のep100本判定
全指定プロンプト(トリガー+位置文+識別アンカー+服装文)・横長解像度(トリオ1216x832 / 4人1344x768)での本判定。トリオ3種・4人立ちはseed42/1234/9999の3seedで混色ゼロ・人数正確・身長段差(くらら=けい>かな半頭>こはる)維持。


4人ポーズは学習語彙4種(手繋ぎ一列・万歳ジャンプ・肩組みハグ・ピース)が全部成立した上で、学習データに存在しない構図(床座り・歩き・空指差し)も破綻なく出せた。ポーズ語彙はAnimaベースが持っていて、こちらのマルチデータは「キャラ分離・身長差・位置語」の確保に徹する、という設計どおりの役割分担。密着は前回trio記事と同じ「hugging each other tightly, cheek to cheek, close together」の原文でテストし、顔同士が接触した状態で顔融合なし。

複数人文脈ではmakeoffが効かない
複数人でくららにmakeoffを指定しても化粧が落ちず、ピアスも消えずに別デザインに化けて残った。マルチ学習画像100枚が全部化粧くららなので、「2girls+makeoff」は学習データに1枚も存在しない組み合わせになる。(makeoff:1.6)まで強調しても覆らなかった。trioの「かな優位」はプロンプト重みで押し切れたが、あれはトリガー同士の競合で、こちらは学習分布そのものとの競合なので性質が違う。

隣のけいへのタグ汚染はゼロだった。データで直す場合はマルチにすっぴんくららを混ぜることになるが、マルチ増量は「人数指定なしでも複数人が湧く」リスクと表裏なので、今回は見送った。
位置文はレイアウト指定ではなく意匠漏れの防止
位置文(far left / second from the left…)を省いた4人プロンプトで未学習ポーズ(空指差し)を出したところ、かなのサイドポニーとシュシュがこはるに漏れた。同じ位置文なしでも学習済み構図(密着ハグ)は耐えたので、「位置文なし×未学習ポーズ」で初めて出るエッジケースだった。位置文を付けると同seedで漏れはゼロになった。


密着バストで全員の目が盛られる原因
密着バストでは4人全員の目がソロ全身のときより明確に盛られる(ハイライト増・まつ毛描き込み・チーク)。くららの化粧が伝播した疑いがあったが、くらら抜きの3人密着でも全く同じだったので化粧滲みの線は消えた。

原因は二段重ねだと考えている。(1)ソロは露出が支配的(重み2倍で636/ep)で焼き付けが強くLoRAの影響が強く出るが、複数人バストはカバレッジが薄く、Animaベースが素で持つ画風(アニメ絵=ぱっちり目、今回は萌え寄りで特に親和)が透ける。(2)そこに、マルチ素材を作ったCodex(gpt-image)の目を盛る画風が同方向に加算される。ソロバスト=Gemini製のシンプルな目、マルチ密着=Codex製。生成ツールの画風が構図文脈ごと焼き付いている。
この現象は逆方向にも起きている。4キャラのデータ出自はバラバラ(かな=Gemini古参で頭やや大きめ・けい=Gemini画風合わせ+QIEで顔小さめ・こはる=Gemini+Codex・くらら=ほぼCodex)で、元データの実測頭身にも約1頭身の開きがあるが、複数人出力では身長「差」を保ったままデフォルメ感が1枚の絵として揃う。ベースの画風がキャラ間のデフォルメ差を均している。v2でマルチ素材の画風を統一するとしても、寄せるのは目の描き方だけでよく、頭身の完全統一までは不要(Animaが吸収する)。
ep110でソロ分離が崩れ始める
ep110のくららソロバストに、けいの意匠(クラウンの編み込み+青リボン)が漏れた。ep80/90/100は同seedでクリーンなので、エポックを重ねた結果、マルチ由来の共起(いつも隣にいるけい)がソロ文脈に漏れ始めたことになる。

seedを変えて確認すると、ep110の漏れはseed依存の確率事象(s42で漏れ・s1234でクリーン)。「常に壊れる」ではなく「低確率で漏れが出る」劣化の仕方だった。

前回trioはプロンプト由来の融合を「混ざる=学習不足」と誤読してep150まで回したが、今回は判定プロンプトが確立しているので、出力ベースで早期に判断してep120で学習を打ち切った。採用epはep100〜110未満の範囲から、漏れ率ゼロで全プローブを通過する最も高いepを選ぶ方針にした。
漏れ率と頭身のトレードオフから採用epを決める
ep95〜110の範囲を、漏れに一番敏感なプローブ(くららソロバスト・複数seed)+トグル+ペア+4人立ちで順に調べた。編み込み漏れはどこかで始まるのではなく、範囲全体に低確率で存在する確率的な現象だった。
| ep | くららバスト漏れ率 | 4人の頭身 | 備考 |
|---|---|---|---|
| 95 | 1/4 | 足長すぎ | |
| 100 | 1/8(範囲内で最小) | 中間・許容 | 採用 |
| 102 | 1/4 | — | |
| 105 | 3/4 | — | |
| 108 | 3/4 | 最も締まる | makeoffにもリボン混入 |
| 110 | 1/2 | — | 顔に過学習の兆候 |

一方で頭身・ポーズの焼き込みはエポックが進むほど締まっていった。ep95の4人は足長寄りで、ep108が最もコンパクトになった。つまり「分離はエポックが浅いほど保たれ、頭身はエポックが深いほど締まる」という逆向きのトレードオフがあり、その交差点がep100だった。

ep120で打ち切って範囲内から選ぶ方式にしたことで、学習時間も費用も前回比で3割減だった。
ep100を採用した (anima-4char-v1_epoch100)。
- 複数人プロンプトは、服装文と位置文が必須(服なしはヌードが出る、位置なしは意匠漏れのエッジケース)
- 複数人でのくららmakeoffは効かない(学習データにない組み合わせ)
- くららソロバストは低率(1/8)でけいの編み込みが漏れる。出たらseed振り直し
- 密着バストは全員の目が盛られる(Animaベースの画風×Codex素材の相乗)。気になる場合は全身寄り構図で
ヒーロー画像を作る過程で分かったシーン絵の作法
冒頭のヒーロー(夕方の教室で4人が笑い合う)はep100で出したが、一発では出ておらず、試行の途中で複数人シーン絵の作法がいくつか確定した。
横一列の位置文だけだと平板になった。位置文を左右でなく奥行き(close foreground / middle distance / far background)で書くと、深度3層の構図が出た。
背面視点のキャラに非対称アクセサリを持たせると破綻した。かなを手前の肩越し(背面)にしたらサイドポニーの結び位置が左右逆に描かれた。前から見て右に見える結びは、後ろから見たら左に見えるべき、という反転をモデルは解いてくれない。髪が左右対称なこはるに役を替えて解決した。
シーン構図では総称の「school uniforms」が制服要素をシャッフルした(けいがリボンでなくネクタイになる、こはるにくららのピアスが漏れる)。立ち並びでは総称で問題なかったが、シーンでは個別服装文で1人ずつ縛って解決した。
手が崩れたカットは、直すより手を構図から外す(hands not visible)方が速かった。
Turbo(8step/cfg1)でのhires 2パス目は線が水彩状に溶けた。Animaは大判ネイティブに耐えるので、最初から2016x1152一発で出したら顔の画素不足も同時に解決した。
一発率(採用ep100・ランダム6seed)
恒例の一発率。全指定プロンプト(位置文+アンカー+服装文)で、リテイクなしの一発で条件(4人・混色なし・順序・身長差・顔融合なし)を満たした枚数。
| 構図 | 一発率 |
|---|---|
| 4人立ち(全指定・1344x768) | 6/6 |
| 4人密着 cheek to cheek(1344x768) | 6/6 |

密着6枚は、サムネイルの大きさだと編み込みやピアスの漏れを見逃すので、頭部を拡大して1枚ずつ確認した。くららのピアスがくららにだけ、かなのアホ毛とシュシュがかなにだけ、という単位で全部本人に付いていた。trioのとき重み相殺((kanachan:0.8))を要したローカル推論の競合が、4人になってプロンプトそのままの6/6まで来たのは、位置文+アンカー+服装文というプロンプト設計の確立と、マルチ素材のキャプション(位置文と服装文で終わる書式)が揃ったことが大きいと考えている。
予想と結果
ソロ4人のキャラ再現は予想どおりで、ep80で全員ロック済みだった。くららトグルは「残るが弱まるかも」と見込んでいたが、すっぴん×3補正でソロのトグルはep14から分化しep100でも完全に残った。ただし複数人文脈では効かないという、予想していなかった制約が出た。
警戒していたくらら×かなの混色は最後まで出なかった。代わりに出たのは「くららソロへのけい意匠(編み込み)の低率漏れ」で、マルチ側の共起がソロに漏れるという逆方向の現象だった。4人の混色は予想どおり素では混ざったが、全指定なら一発率6/6まで持っていけた。頭身はデータ側の修正で解決し、エポック進行で焼き込みが締まっていった(95足長→108コンパクト)。
518枚・rank256・約21.5時間・$16。3キャラ時代の蓄積(データ・学習設定・判定プロンプト)を踏襲できたことで、学習そのものより「どのepで止めるか」「何が仕様で何が欠陥か」の切り分けに時間を使えた。
ところでヒーロー画像だが、顔の描画が3人のときより若干甘いと思う。
Animaが1枚に何人まで出せるかは、以前「10人までいけた」という記事を見たことがあるが、おそらく一発では不可能で、何回か出したガチャのはず。ましてや今回みたいなLoRA併用ではやっていないと思われる。
流石に10人LoRAを作るほどLoRA作成に注力する気はないが、5人くらいはちょっと見てみたいので、どこかで時間があったら最後に5人はやってみようと思う。おそらく4か5人が、1画面で意匠を保ったまま描画できる限界じゃないかなと考えている。