技術約14分で読めます

Base専用のAnima Ref AdapterをTurbo・Aesthetic・2.9Bで試す

いけさん目次

キャラの参照画像を1枚指定すると、髪・目・服はその絵から取り、ポーズ・背景・構図はプロンプトに従わせる、というAnima用のアダプターがGitHubに上がっていた。
ComfyUI-Anima-Ref-Adapterというリポジトリだ。

Animaはアニメ風イラストに特化した画像生成モデルで、公式のBase(基本モデル)のほか、Turbo(高速版)やAesthetic(画風調整版)、層拡張版のAnima-2.9Bなどの派生がある。
このAnimaでは構図を変えるのにずっと困っている。
以前のWAI-Anima v1をRTX 4060 LaptopのComfyUIで動かした記事では、立ち絵をi2iに通して走るシーンを指定しても棒立ちのままで、キャラを保って構図を変えるにはControlNetかLoRAがいると書いた。
参照画像1枚で構図が変わるなら、キャラLoRAを学習していないキャラでも別の場面に出せる。

READMEの推奨設定には「Anima base v1.0、Turbo LoRAなし(アダプターはBaseで学習した)」とある。
手元ではAnima公式のTurbo v1.1・Aesthetic v1.1と、40ブロックに層を増やしたAnima-2.9Bの派生を試していて、Base以外のモデルがそろっている。
ならばBase以外では本当に動かないのか。
M1 Max 64GBのComfyUIで、公式設定の再現から始めて、モデルを替えながら当ててみた。

Anima Ref Adapterの概要

項目内容
作者ElectronGirl
公開2026年10月27日(GitHubの初回コミット、Hugging Faceの重みも同日)
中身ComfyUIのカスタムノード3個と、rank 32のLoRA(4,590万パラメーター、91,853,888バイト)
学習300キャラ、2,000ステップのパイロット版。Anima Base v1.0で学習
ライセンスノードはApache-2.0、重みはCircleStone Non-Commercial License
入手先GitHub、Hugging Face

仕組みはREADMEと技術レポートに書かれている。
参照画像はVAEで潜在表現にして、生成中の画像とは別の2枚目のフレームとしてモデルに入れる。
このフレームはノイズを加えないきれいな状態(timestep 0)のまま送る。
画像内の位置を表す座標(RoPE)は、縦方向に出力画像1枚分ずらしてある。
ずらさないと参照のピクセルと出力のピクセルが同じ位置として扱われ、参照のポーズがそのまま写る。
このフレームを処理する役割をLoRAが学習しており、参照をつないだときだけ有効になる。

付属するカスタムノードは次の3個。

ノード役割
Anima Ref Adapter LoaderAnimaのモデルにアダプターのLoRAを付ける
Anima Ref Latent参照画像を出力サイズに白帯で収めてVAEで潜在表現にする
Anima Ref Guiderテキストの強さ cfg と参照の強さ ref_guidance を別々に効かせてサンプラーに渡す

READMEの推奨設定。

項目推奨READMEの補足
ベースモデルAnima base v1.0Turbo LoRAなし。アダプターはBaseで学習した
計算精度bf16(ModelComputeDtype)Animaはfp16だとあふれる
サンプラーEuler、28〜30ステップ、simple
cfg4.5テキストの強さ
ref_guidance4.5〜61は弱いが軽い。上げるとキャラの細部と画風が強く出て、彩度も上がる
correctionapgまたは rescale(phi 0.5)
プロンプト品質タグ+性別+solo+場面のタグキャラ名・絵師タグ・見た目のタグは書かない

プロンプトにキャラの見た目を書かないのが特徴で、髪や服は参照画像のほうから取る。

検証環境

項目内容
マシンMacBook Pro M1 Max 64GB(MPS)
UIComfyUI v0.33.3
アダプターノードは2026年10月27日のコミット af9a438、重みは anima_ref_adapter_pilot_r32.safetensors
解像度896×1152(公式ワークフローの既定)
サンプラー / スケジューラーeuler / simple
シード20261027(シード比較の節だけ20261028・20261029を追加)
補正APG(過剰な効き目を抑える適応型ガイダンス補正)
参照画像作者の作例 ref_girl.jpg、かなちゃんの立ち絵(Turbo v1.1とAesthetic v1.1の比較記事でBase+かな・けいLoRAで出した全身)

当てたモデルは8条件。

ラベルモデルステップ / cfgアダプター
Baseanima-base-v1.030 / 4.5そのまま
Aesthetic v1.1anima-aesthetic-v1.130 / 4.5そのまま
2.9B(付け替えあり)Anima-2.9B-preview-v130 / 4.540ブロック向けに付け替え
2.9B(付け替えなし)Anima-2.9B-preview-v130 / 4.5そのまま
Turbo v1.1anima-turbo-v1.18 / 1.0そのまま
Turbo v1.0anima-turbo-v1.08 / 1.0そのまま
Base+Turbo LoRAanima-base-v1.0+anima-turbo-lora-v0.1(1.0)8 / 1.0そのまま(Turbo LoRAはアダプターより前に入れる)
2.9B非公式Turboanima29b-p1-turbo1.1(Langzaigg)8 / 1.040ブロック向けに付け替え

Anima-2.9Bは、元の28ブロックの間に12ブロックを差し込んで40ブロックにしたモデルだ。
アダプターのLoRAは blocks.0〜blocks.27 という名前でブロックに当たるので、2.9Bにそのまま読ませると、名前の一致する先頭28ブロックへずれて適用される。
エラーは出ないが正常に機能しないため、以前のAnima-2.9BにキャラLoRAを当てた記事と同じスクリプトで、挿入位置 [2, 5, 8, 11, 14, 17, 21, 24, 27, 30, 33, 36] を避けるようにブロック番号を振り直したLoRAを作り、付け替えありの条件に使った。
2.9B非公式Turboは、2.9BとTurbo v1.1に共通するブロックを0.8×Turbo v1.1+0.2×2.9Bで混ぜ、2.9Bで増えた12ブロックはそのまま残した非公式のマージモデルで、構造は2.9Bと同じ40ブロックになる。
LoRAローダーを2段重ねにする際は、キャラLoRAを先に、Ref Adapterを後に適用した。ベースモデルの重みにキャラ特徴を乗せた上で参照画像のアダプターを重ねる構成だ。
作者推奨は euler + sgm_uniform だが、今回は条件をそろえるため全条件を euler / simple に統一した。

公式設定のまま動かしてみる

まず作者の作例と同じ参照画像・同じプロンプトをBaseで出した。
作例にはPAG(Perturbed-Attention Guidance、注目機構を乱して品質を整える補正)と補助LoRAが入っているが、素の動作を見るため外した。

1回目はサンプラーで止まった。

Cannot convert a MPS Tensor to float64 dtype as the MPS framework doesn't support float64.

APG補正の計算が .double() で倍精度に変換していて、MacのMPSは倍精度を扱えない。
CUDA環境ならそのまま動くはずだが、Mac環境では導入したノードの2行を単精度に変えて回した。

update = (guided - pos).float()  # 元は .double()
unit = F.normalize(pos.float().flatten(1), dim=1).view_as(pos)  # 元は pos.double()

2回目は785.8秒で出た。

Base、作例の参照・ケーキ
Baseに作者の作例の参照画像を指定し、カフェでケーキを食べる場面を出した結果

髪色やメッシュ、衣装の特徴が参照画像から引き継がれている。
カフェでフォークを持ってケーキを食べる構図は、作者の作例 girl_cake.jpg とほぼ同じになった。

プロンプト
masterpiece, best quality, score_7, newest, highres, absurdres, safe, 1girl, solo, upper body, sitting, eating, cake, cafe, indoors

ネガティブ(全条件共通)

worst quality, low quality, score_1, score_2, score_3, blurry, jpeg artifacts, chromatic aberration, bad anatomy, bad hands, extra arms, extra fingers, missing fingers, text, watermark, signature, artist name, multiple views, split screen, comic, 2koma, 4koma

Base・Aesthetic v1.1・2.9Bに推奨設定で当ててみる

参照をかなちゃんの立ち絵に替え、30ステップ・cfg 4.5・ref_guidance 4.5で2つの場面を出した。
走る場面は、以前の比較記事で使った動的シーンのプロンプトから場面指定の部分を使った。

条件走る場面ケーキの場面
Base後ろ姿で城へ走る。アホ毛、青いシュシュ、白シャツ、グレーのスカート、黒タイツ赤いソファ席でケーキ。参照の髪型・服どおり
Aesthetic v1.1Baseとほぼ同じ構図の後ろ姿参照どおり、場面どおり
2.9B(付け替えあり)正面向きで走る全身。サイドポニー、赤ネクタイ、タイツ。人物の輪郭に白い縁取り参照どおり、場面どおり
2.9B(付け替えなし)画面全体が暗い茶色で、人物はシルエット暗い画面に黒髪ボブの別人
Base 走る
Baseにかなちゃんの参照を使った走る場面、後ろ姿
Base ケーキ
Baseにかなちゃんの参照を使ったケーキの場面
Aesthetic v1.1 走る
Aesthetic v1.1にかなちゃんの参照を使った走る場面
Aesthetic v1.1 ケーキ
Aesthetic v1.1にかなちゃんの参照を使ったケーキの場面
2.9B(付け替えあり)走る
2.9Bに付け替えたアダプターを当てた走る場面
2.9B(付け替えあり)ケーキ
2.9Bに付け替えたアダプターを当てたケーキの場面
2.9B(付け替えなし)走る
2.9Bに付け替えなしのアダプターを当てた走る場面、暗く崩れている
2.9B(付け替えなし)ケーキ
2.9Bに付け替えなしのアダプターを当てたケーキの場面、別人になっている

参照は正面の棒立ちなので、走る場面でもケーキの場面でも構図はプロンプトの指定どおりになっている。
Aesthetic v1.1はBaseから追加学習した版で、アダプターはそのまま動いた。
2.9Bはブロックを付け替えると正常に出て、外すと崩れた。
同じ2.9Bで参照なしの走る場面を2回出すと、2枚は同じ画像になったので、2条件の差はアダプターの適用ブロックの差だけで生じている。

参照なしだと、どのモデルでも別人の少女が草原を走る画像になった。

Base 参照なし 走る
Baseで参照なしの走る場面、別人の少女
プロンプト

走る場面

masterpiece, best quality, score_7, newest, highres, absurdres, safe, 1girl, solo, full body, running, wind, hair blowing, dynamic pose, fantasy landscape, castle in background, sunset sky, dramatic clouds, grass field

ケーキの場面

masterpiece, best quality, score_7, newest, highres, absurdres, safe, 1girl, solo, upper body, sitting, eating, cake, cafe, indoors

Turbo系に推奨設定を当てた結果

Turbo系の4条件は、Turboの通常設定の8ステップ・cfg 1.0にして、ref_guidanceはREADMEの推奨値4.5のまま出した。

条件ケーキの場面
Turbo v1.1正面立ち絵の2×2の4コマ。シャツが水色、ネクタイが黒に変わる
Turbo v1.0崩壊。オレンジの物体と横顔、漫画のコマと文字
Base+Turbo LoRA2×2の4コマ、カップを持つ
2.9B非公式Turbo2×2の4コマ
Turbo v1.1
Turbo v1.1をcfg 1.0、ref_guidance 4.5で出したケーキの場面、2×2の4コマ
Turbo v1.0
Turbo v1.0をcfg 1.0、ref_guidance 4.5で出したケーキの場面、崩壊
Base+Turbo LoRA
Base+Turbo LoRAをcfg 1.0、ref_guidance 4.5で出したケーキの場面、2×2の4コマ
2.9B非公式Turbo
2.9B非公式Turboをcfg 1.0、ref_guidance 4.5で出したケーキの場面、2×2の4コマ

ケーキの場面だけでなく走る場面でも同様で、指定した場面は反映されなかった。
アホ毛やシュシュ、ネクタイといったキャラの特徴は残っているが、参照の正面立ちのポーズごと出ている。
アダプターが座標をずらして防いでいるはずの参照レイアウトのコピーが、4コマに分割された形で出た。
推奨設定のままでは、READMEにある「Turboは非対応」どおりの結果になった。

設定を入れ替えて原因を切り分ける

重みの影響か設定の影響かを確かめるため、BaseをTurboの設定(cfg 1.0、ref_guidance 4.5)で、Turbo v1.1をBaseの設定(cfg 3.5、ref_guidance 1.6)で出してみた。
場面はケーキで揃えた。

条件時間結果
Base 8ステップ cfg 1.0 ref_guidance 4.5212.9秒崩壊。白飛びした4コマと文字列
Base 30ステップ cfg 1.0 ref_guidance 4.5769.4秒崩壊。2コマと胸元の拡大コマ、文字列
Turbo v1.1 8ステップ cfg 4.5 ref_guidance 4.5214.9秒場面どおり。画面中央に青い横帯、シャツにグレーのベスト
Turbo v1.1 30ステップ cfg 4.5 ref_guidance 4.5769.2秒場面どおり、参照どおり
Turbo v1.1 8ステップ cfg 1.0 ref_guidance 1.0174.8秒場面どおり、参照どおり
Turbo v1.1 8ステップ cfg 2.5 ref_guidance 2.5208.9秒場面どおり、参照どおり
Base 8st cfg 1.0 ref_guidance 4.5
Baseを8ステップ、cfg 1.0、ref_guidance 4.5で出したケーキの場面、崩壊
Base 30st cfg 1.0 ref_guidance 4.5
Baseを30ステップ、cfg 1.0、ref_guidance 4.5で出したケーキの場面、崩壊
Turbo v1.1 8st cfg 4.5 ref_guidance 4.5
Turbo v1.1を8ステップ、cfg 4.5、ref_guidance 4.5で出したケーキの場面
Turbo v1.1 30st cfg 4.5 ref_guidance 4.5
Turbo v1.1を30ステップ、cfg 4.5、ref_guidance 4.5で出したケーキの場面
Turbo v1.1 8st cfg 1.0 ref_guidance 1.0
Turbo v1.1を8ステップ、cfg 1.0、ref_guidance 1.0で出したケーキの場面
Turbo v1.1 8st cfg 2.5 ref_guidance 2.5
Turbo v1.1を8ステップ、cfg 2.5、ref_guidance 2.5で出したケーキの場面

Baseでも cfg 1.0と ref_guidance 4.5を併用すると、30ステップでも画像が破綻した。
逆にTurbo v1.1は cfg を上げるか、ref_guidance を下げれば場面どおりに出た。
Turbo系が崩れたのは、重み自体の問題ではなく設定の組み合わせが原因だった。

ノード内の計算式を見ると、1ステップごとに参照ありの正プロンプト(pos)、参照ありのネガティブ(neg)、参照なしのネガティブ(base)の3通りを計算し、次のように合成している。

guided = base + ref_guidance × (neg − base) + cfg × (pos − neg)

neg − base が参照による差、pos − neg がプロンプトによる差だ。
cfg 4.5・ref_guidance 4.5なら、参照の差とプロンプトの差がどちらも4.5倍になる。
cfg 1.0・ref_guidance 4.5だと、プロンプトの差は1倍のまま、参照の差だけが4.5倍に増幅される。
参照の影響だけが強くなり、参照画像のレイアウトに引っ張られたのだと思う。

ref_guidance 1.0のときは pos と neg の両方に参照が含まれるため、base の計算を省いて通常のCFGと同じ挙動になる。
1ステップの推論が3回から2回に減るため生成も速い。
さらに cfg 1.0なら式は guided = pos になり、ネガティブプロンプトは結果に反映されなくなる。

Turbo系をcfg 1.0・ref_guidance 1.0で出し直してみる

Turbo系4条件を8ステップ・cfg 1.0・ref_guidance 1.0で出し直すと、走る場面やケーキの場面、作例の参照のいずれも指定どおりに出た。
ただ、走る場面の頭部を拡大すると、参照では画像右側にあるシュシュ付きのサイドポニーが、条件によって変わっていた。
シード1つでは偶然の変動と区別できないため、走る場面でシードを2つ追加した。
推奨設定で出したBaseと2.9B(付け替えあり)も同じシードで揃えている。

条件シード 20261027シード 20261028シード 20261029
Turbo v1.1画像左側にシュシュが出た画像右側にサイドポニー画像右側にサイドポニー
Turbo v1.0シュシュ2個のツインテール画像右側にサイドポニー画像右側にサイドポニー
Base+Turbo LoRAシュシュ2個のツインテール画像右側にサイドポニー画像右側にサイドポニー
2.9B非公式Turbo画像右側にサイドポニー画像右側にサイドポニー画像右側にサイドポニー
Base(推奨設定)後ろ姿後ろ姿。サイドポニーは後ろから見えない正面向き、画像右側にサイドポニー
2.9B 付け替えあり(推奨設定)画像右側にサイドポニー画像右側にサイドポニー画像右側にサイドポニー
Turbo v1.1 s20261027
Turbo v1.1、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261027
Turbo v1.1 s20261028
Turbo v1.1、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261028
Turbo v1.1 s20261029
Turbo v1.1、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261029
Turbo v1.0 s20261027
Turbo v1.0、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261027
Turbo v1.0 s20261028
Turbo v1.0、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261028
Turbo v1.0 s20261029
Turbo v1.0、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261029
Base+Turbo LoRA s20261027
Base+Turbo LoRA、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261027
Base+Turbo LoRA s20261028
Base+Turbo LoRA、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261028
Base+Turbo LoRA s20261029
Base+Turbo LoRA、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261029
2.9B非公式Turbo s20261027
2.9B非公式Turbo、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261027
2.9B非公式Turbo s20261028
2.9B非公式Turbo、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261028
2.9B非公式Turbo s20261029
2.9B非公式Turbo、cfg 1.0、ref_guidance 1.0の走る場面、seed 20261029
Base s20261027
Base、推奨設定の走る場面、seed 20261027
Base s20261028
Base、推奨設定の走る場面、seed 20261028
Base s20261029
Base、推奨設定の走る場面、seed 20261029
2.9B 付け替えあり s20261027
2.9B付け替えあり、推奨設定の走る場面、seed 20261027
2.9B 付け替えあり s20261028
2.9B付け替えあり、推奨設定の走る場面、seed 20261028
2.9B 付け替えあり s20261029
2.9B付け替えあり、推奨設定の走る場面、seed 20261029

髪型が変わったのはシード20261027だけで、追加した2つのシードでは4条件とも参照どおりのサイドポニーになった。
今回の3つのシードでは、崩れたのは1つだけで、Turboの重みで常に崩れるわけではなかった。
Baseは3シード中2回が後ろ姿で、ほかの条件はすべて正面向きだった。
後ろ姿だとサイドポニーが隠れ、参照どおりか確認できなかった。

cfg 1.0でref_guidanceを振ってみる

READMEには ref_guidance を上げるとキャラの細部が強く出るとある。
Turbo v1.1を cfg 1.0のまま、ref_guidance を1.0から4.5まで少しずつ上げてケーキの場面を出した。
1.0は原因切り分けの節、4.5は前節と同じ画像をもう一度載せている。

ref_guidance時間結果
1.0174.8秒場面どおり、参照どおり
1.5208.9秒場面どおり。頬杖でケーキ、コーヒー2杯。シュシュが青い玉3個の髪飾りに変わる
2.0208.9秒場面どおり、参照どおり
3.0208.9秒2×2の4コマ、窓際で正面立ち。ケーキは出ない
4.5約209〜219秒2×2の4コマ
ref_guidance 1.0
Turbo v1.1、cfg 1.0、ref_guidance 1.0のケーキの場面
ref_guidance 1.5
Turbo v1.1、cfg 1.0、ref_guidance 1.5のケーキの場面
ref_guidance 2.0
Turbo v1.1、cfg 1.0、ref_guidance 2.0のケーキの場面
ref_guidance 3.0
Turbo v1.1、cfg 1.0、ref_guidance 3.0のケーキの場面、2×2の4コマ
ref_guidance 4.5
Turbo v1.1、cfg 1.0、ref_guidance 4.5のケーキの場面、2×2の4コマ

cfg 1.0では2.0までは場面どおりに出て、3.0で4コマになった。
1.0と2.0の間で、細部の出方に明確な差は見当たらなかった。

寝そべり・俯瞰構図を試す

走る場面もケーキの場面も、人物が画面の中で縦に立っているか座っているポーズだった。
立ち絵から一番離れたポーズとして、草むらに仰向けで寝そべる構図を真上から出してみた。

条件時間結果
Turbo v1.1(cfg 1.0・ref_guidance 1.0)174.8秒白い花の草地で仰向け、真上から。アホ毛、画像右側のサイドポニー、赤ネクタイ、タイツ。靴は下端で見切れる
Turbo v1.1(参照なし)38.2秒黒髪ロングの別人。頭が下で、白いワンピース
Base(推奨設定)773.4秒黄色い花の草地で仰向け、膝を立てる。ローファーまで全身、参照どおり
Turbo v1.1
Turbo v1.1にかなちゃんの参照を使い、草地に仰向けで寝そべる構図を真上から出した出力
Turbo v1.1 参照なし
Turbo v1.1で参照なしの寝そべり、別人
Base
Baseにかなちゃんの参照を使い寝そべる構図を出した出力

正面の立ち絵1枚から、キャラを保ったまま仰向け・俯瞰に変わった。
以前の記事の画像変換(i2i)では、立ち絵の構図から変えられなかった。
こちらは参照のピクセルを下敷きにしないため、構図はプロンプトどおりに出た。

プロンプト
masterpiece, best quality, score_7, newest, highres, absurdres, safe, 1girl, solo, full body, lying on back, on grass, from above, looking at viewer, flowers, daytime

生成速度の実測

M1 Max 64GBで、896×1152を1枚出す時間。
参照フレームの分だけモデルに入力する系列長が2倍になり、ref_guidance が1.0以外なら1ステップの推論も3回になる。

条件ステップ1ステップの推論参照あり参照なし
Base303回約772秒262.7秒
Aesthetic v1.1303回約771秒259.2秒
2.9B(付け替えあり・なし)303回約1,085〜1,095秒約370秒
Turbo系3条件、ref_guidance 4.583回約209〜219秒約38〜40秒
Turbo系3条件、ref_guidance 1.082回174.7〜182.8秒約38〜40秒
2.9B非公式Turbo、ref_guidance 4.583回約293〜301秒54.3秒
2.9B非公式Turbo、ref_guidance 1.082回245.1〜255.1秒54.3秒

Turbo系の3条件はTurbo v1.1、Turbo v1.0、Base+Turbo LoRA。
参照なしの列はアダプターを外して同じステップ・cfg で出した時間で、参照ありの列とは1ステップの推論回数も違う。
Turbo系を ref_guidance 1.0で回すと約3分で、READMEどおりのBaseの約13分より4倍以上速かった。

参考リンク