参照画像1枚でキャラを保つSnapRef v1bをRef Adapter v2・Role-Ref-KVと同じ条件でM1 Maxに当てて比べる
目次

前回のAnima Ref Adapter v2とRole-Ref-KVを比べた記事を出す直前に、同じ用途のアダプターがもう1つ公開された。
SnapRefで、参照画像1枚からキャラクターの特徴を保ったまま、別の構図や場面を出すためのものだ。
READMEの比較表には、Ref Adapter v2やRole-Ref-KVより速く、v2より正解画像に近いという数字が載っている。
ただ、この数字はA100で計測したものだ。
前回と同じ8条件で当てると何が起きるのか、README独自の機能がMacのMPSでも同じように動くのかは、数字からは分からない。
そこで、前回の記事と同じ参照画像、プロンプト、シードでv1bを当て、M1 Max 64GBのComfyUIで確かめた。
SnapRefの概要
| 項目 | 内容 |
|---|---|
| 作者 | Hugging Faceは0ppxnhximxr、GitHubはArcAnima |
| 公開 | v1a・v1bとも2026年10月29日 |
| 中身 | ノード2個(SnapRef と SnapRef (Advanced))と、LoRA形式の重み |
| 学習 | Animaで生成した58,300枚(scenes3x4)、10,000ステップ、Anima base v1.0 |
| ライセンス | ノードはApache-2.0、重みはCircleStone Labs Non-Commercial License v1.2 |
| 入手先 | Hugging Face(v1b)、Hugging Face(v1a)、GitHub |
仕組みはRef Adapter v2やRole-Ref-KVと同じ系統だ。
参照画像を専用の経路で1回だけモデルに通し、各ブロックの注目機構のkey/valueをキャッシュして、生成中の各ステップで読ませる。
ComfyUIのモデルにラッパーとして入るので、サンプラーは標準のものを選べる。
v1aとv1bの違いは次のとおり。
| 項目 | v1a | v1b |
|---|---|---|
| rank(参照側 / 生成側) | 128 / 64 | 256 / 128 |
| サイズ(bf16) | 381,822,008バイト | 910,324,208バイト |
| サイズ(FP8) | 194,652,728バイト | 460,246,968バイト |
| A100での1枚の時間(README) | 8.9秒 | 9.9秒 |
| 正解画像とのDINOv2類似度(README) | 0.722 | 0.720 |
| プロンプトとのCLIP類似度(README) | 0.249 | 0.256 |
READMEはv1bを「rankが2倍」と説明し、迷ったらv1aから始めるよう勧めている。
重みのキーを数えると、違いはrankだけではなかった。
LoRAのモジュールはv1aが336個、v1bが392個で、v1bは生成側のmlpにも当たっている。
READMEの比較表には、ほかのアダプターの値も載っている。
| 項目 | v1b | v1a | Ref Adapter v2 | Role-Ref-KV | 参照なし |
|---|---|---|---|---|---|
| A100での1枚の時間 | 9.9秒 | 8.9秒 | 14.4秒 | 12.5秒 | 7.7秒 |
| 正解画像とのDINOv2類似度 | 0.720 | 0.722 | 0.675 | — | 0.493 |
正解画像は、同じキャラが指定のポーズをとった別の画像で、52例の平均だ。
配布されている scores_v1a_v1b.json で値を確かめると、参照画像そのものとのDINOv2類似度はv2が0.552、v1aが0.515、v1bが0.510で、順番が逆になる。
どちらの指標を見るかで、順位は変わる。
READMEの推奨設定。
| 項目 | 内容 |
|---|---|
| ベースモデル | Anima base v1.0 |
| サンプラー | euler か er_sde、simple、28〜30ステップ |
cfg | 4.5 |
| プロンプト | 品質タグ+1girl+solo+場面。髪や服、画風は参照から来るので書かない |
| 解像度 | 指定なし(ワークフローは832×1216) |
検証環境
| 項目 | 内容 |
|---|---|
| マシン | MacBook Pro M1 Max 64GB(MPS) |
| UI | ComfyUI v0.33.3 |
| SnapRef | Hugging Faceのコミット 8e78def のノードと重み。sha256 は配布の SHA256SUMS と一致 |
| 解像度 | 896×1152(前回と同じ)。節ごとに違う場合はその節に書く |
| サンプラー | euler / simple |
| シード | 20261027(シード比較の節は20261028・20261029、速度の節は20261030・20261031を追加) |
| 参照画像 | 前回と同じ。Ref Adapter v2の作例 ref_girl.jpg と、かなちゃんの立ち絵 |
| 前回の比較対象 | Ref Adapter v2とRole-Ref-KV。画像と数値は前回の記事から流用した。速度の節だけ同じ日に出し直した |
ref_guidance_on はMPSでそのまま動かない。
Cannot convert a MPS Tensor to float64 dtype で止まるので、前回のRef Adapterと同じくAPG補正の .double() 2行を .float() にした。
それ以外のノードのコードは、黒画像の節で1回だけ試した変更を除いて元のままだ。
当てたモデルは前回と同じ8条件で、推奨設定はBaseの30ステップ・cfg 4.5に合わせた。
| ラベル | モデル | ステップ / cfg |
|---|---|---|
| Base | anima-base-v1.0 | 30 / 4.5 |
| Aesthetic v1.1 | anima-aesthetic-v1.1 | 30 / 4.5 |
| 2.9B(付け替えあり) | Anima-2.9B-preview-v1 | 30 / 4.5 |
| 2.9B(付け替えなし) | Anima-2.9B-preview-v1 | 30 / 4.5 |
| Turbo v1.1 | anima-turbo-v1.1 | 8 / 1.0 |
| Turbo v1.0 | anima-turbo-v1.0 | 8 / 1.0 |
| Base+Turbo LoRA | anima-base-v1.0+anima-turbo-lora-v0.1(1.0) | 8 / 1.0 |
| 2.9B非公式Turbo | anima29b-p1-turbo1.1 | 8 / 1.0 |
2.9Bの付け替えは、40ブロックのうち差し込まれた12ブロックを避けるようにキーの番号を振り直すものだ。
ノードはキーのあるモジュールにだけLoRAを当てるので、Role-Ref-KVのときのようなゼロ埋めは要らなかった。
SnapRefの既定では、参照を読むのは正プロンプト側だけだ。
cfg 1.0のTurboなら1ステップのモデル呼び出しは1回で、cfg 4.5なら2回になる。
公式設定のまま動かしてみる
READMEのプロンプト、ワークフローのネガティブ、832×1216、28ステップ、cfg 4.5でBaseに当てた。
| 参照 | 時間 | 結果 |
|---|---|---|
| かなちゃん | 289.9秒 | ベンチで脚を組む。夜の街。アホ毛、青いシュシュのサイドポニー、白シャツ、赤ネクタイ、黒タイツ、ローファーが残る |
| ref_girl | 276.7秒 | ベンチで脚を組む。ブロンドに赤メッシュ、ピンクの目、黒と白の服 |


プロンプト
masterpiece, best quality, score_7, safe, 1girl, solo, full body, sitting, crossed legs, bench, street, night
ネガティブ
worst quality, low quality, score_1, score_2, score_3, artist name, blurry, jpeg artifacts, chromatic aberration
前回と同じ ref_girl のケーキの場面も、前回と同じ条件で出した。
結果は赤いソファ席でフォークを口に運ぶ絵で、髪色・メッシュ・服が残り、時間は302.6秒だった。



Base・Aesthetic v1.1・2.9Bに当てた結果
以降の節は、特に書かない限り参照がかなちゃんの立ち絵で、ネガティブは前回と同じだ。
| 条件 | 時間(走る / ケーキ) | 走る | ケーキ |
|---|---|---|---|
| Base | 312.0秒 / 316.1秒 | 後ろ姿で走る。城と草原 | 赤いソファ席でフォークを口に。参照どおり |
| Aesthetic v1.1 | 316.0秒 / 315.9秒 | Baseとほぼ同じ構図の後ろ姿 | 場面は同じ。参照どおり |
| 2.9B(付け替えあり) | 441.4秒 / 445.6秒 | 正面寄りで走る。参照どおり | Baseとほぼ同じ構図 |
| 2.9B(付け替えなし) | 435.1秒 / 434.3秒 | 参照の立ち姿のまま。背景はぼけ、人物の周りに白いもや | 同じく立ち姿のまま。カップとケーキだけ半透明で浮く |








ケーキの場面は3条件とも、アホ毛、画像右側のサイドポニー、白シャツ、赤ネクタイが参照どおりに出た。
前回のRole-Ref-KVでケーキの場面に出た、髪のオレンジ寄りはここでは出ていない。
2.9Bは付け替えなしだと動かない。
v2のように格子状に崩壊するのではなく、人物だけは参照の立ち姿のまま鮮明で、場面がほとんど反映されなかった。
走る場面のBaseとAestheticは後ろ姿になった。
プロンプトに向きの指定がないのでおかしな結果とは言えないが、前回のv2とRole-Ref-KVは同じシードで正面向きだったので、別の節で詳しく掘り下げた。
プロンプト
走る場面
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
ネガティブ
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
Turbo系に当てた結果
| 条件 | 時間(走る / ケーキ) | 走る | ケーキ |
|---|---|---|---|
| Turbo v1.1 | 64.3秒 / 62.4秒 | 正面で走る、右手を頭に。参照どおり | 窓際の赤いソファ席。腕でネクタイの大半が隠れる |
| Turbo v1.0 | 64.3秒 / 61.3秒 | 正面で走る、腕を広げる。参照どおり | 片手を頬に。ネクタイの大半が隠れる |
| Base+Turbo LoRA | 63.3秒 / 62.3秒 | 正面で走る、右手を握る。参照どおり | Turbo v1.1に近い構図 |
| 2.9B非公式Turbo | 88.4秒 / 87.4秒 | Turbo v1.1とほぼ同じ構図 | Turbo v1.1とほぼ同じ構図 |








Turbo系は走る場面が4条件とも正面向きで、Baseの後ろ姿は出なかった。
READMEが対象にしているのはAnima base v1.0だが、Turboのフルモデル、Turbo LoRA、付け替えた2.9Bのどれでも問題なく動いた。
ケーキの場面で赤ネクタイが腕に隠れるのは構図によるもので、次の節の設定では見えている。
ref_guidance 4.5で4コマに崩れるか
前々回のpilotは、Turbo系をcfg 1.0・ref_guidance 4.5で回すと4コマに崩れた。
前回のv2は4コマにならなかったが、色がくすんだ。
SnapRefにも ref_guidance_on があるので、同じ設定でケーキの場面を出した。
| 条件 | 時間 | 結果 |
|---|---|---|
| Turbo v1.1 | 98.5秒 | 1枚絵。ネクタイが見える。色はくすまない |
| Turbo v1.0 | 96.5秒 | 1枚絵。ネクタイが見える。色はくすまない |
| Base+Turbo LoRA | 96.5秒 | 1枚絵。シャツの胸元が白く飛び気味 |
| 2.9B非公式Turbo | 138.8秒 | 1枚絵。シャツの胸元が白く飛び気味 |




4条件とも4コマには分かれなかった。
1ステップのモデル呼び出しが2回になるので時間は1.5倍ほどかかるが、シード1つでは効果と揺れを区別できない。
Baseでも ref_guidance_on を試した。
READMEは6〜8で参照に近づくと書き、時間は約1.4倍、ref_end 0.6なら速くて結果はほぼ同じとしている。
| 条件 | 時間 | 結果 |
|---|---|---|
| オフ(既定) | 316.1秒 | ネクタイが見える。髪は明るい茶 |
| ref_guidance 4.5 | 480.8秒 | 構図がやや変わる。色はくすまない |
| ref_guidance 7 | 480.7秒 | 色はくすまない。ネクタイが見える |
| ref_guidance 7、ref_end 0.6 | 432.2秒 | ref_guidance 7とほぼ同じ絵 |
| Turbo v1.1、ref_guidance 2(参考) | 96.0秒 | 1枚絵。ネクタイが見える |




手元の時間はオフの約1.5倍で、ref_end 0.6でも1.4倍弱だった。
ref_end 0.6の絵がほぼ同じという点は、READMEのとおりだった。
寝そべり・俯瞰構図を試す
| 条件 | 時間 | 結果 |
|---|---|---|
| Turbo v1.1 | 60.5秒 | 白い花の草地で仰向け、膝を立てる。頭は画面の上。ローファー |
| Base | 316.0秒 | 黄色と白の花の草地で仰向け、膝を立てる。頭は画面の上。ローファー |


正面の立ち絵1枚から、キャラを保ったまま仰向け・俯瞰に変わった。
プロンプト
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
シードを変えて走る場面を出す
前回と同じくシード20261028・20261029を足し、Turbo系4条件と、Base・2.9B(付け替えあり)で出した。
| 条件 | s20261027 | s20261028 | s20261029 |
|---|---|---|---|
| Turbo v1.1 | 正面 | 正面 | 正面 |
| Turbo v1.0 | 正面 | 正面 | 正面 |
| Base+Turbo LoRA | 正面 | 正面 | 正面 |
| 2.9B非公式Turbo | 正面 | 正面 | 正面 |
| Base | 後ろ姿 | 後ろ姿、人物が小さい | 後ろ姿 |
| 2.9B 付け替えあり | 正面 | 後ろ姿、人物が小さい | 正面 |


















18枚とも、見える範囲で髪型と服は参照のままだった。
正面の14枚はサイドポニー、白シャツ、赤ネクタイ、黒タイツがそろい、後ろ姿の4枚もシュシュのサイドポニーとタイツが残っている。
前回のRole-Ref-KVにあった、ポニーやネクタイが消えるシードはなかった。
一方でBaseは3シードとも後ろ姿で、前回のv2とRole-Ref-KVは同じ3シードすべて正面向きだった。
Baseの走る場面が後ろ姿になる
後ろ姿がv1bの癖なのかBaseの癖なのかを切り分けるため、シードと条件を足した。
| 条件 | s20261027 | s20261028 | s20261029 | s20261030 | s20261031 |
|---|---|---|---|---|---|
| v1b | 後ろ姿 | 後ろ姿 | 後ろ姿 | 後ろ姿 | 後ろ姿 |
| v1a | 正面 | 後ろ姿 | 正面 | 正面 | — |
| v1b FP8 | 後ろ姿 | — | — | — | — |
| 参照なし | — | — | — | 後ろ姿 | 後ろ姿 |
| Ref Adapter v2 | 正面 | 正面 | 正面 | 正面 | — |
| Role-Ref-KV | 正面 | 正面 | 正面 | 正面 | — |






参照なしのBaseも2シードとも後ろ姿なので、このプロンプトで後ろ向きになるのはBase自体の傾向と思われる。
参照の正面の立ち絵に引っ張られるv2やRole-Ref-KVと違って、v1bはそれを変えなかったことになる。
READMEの「参照を構図としてコピーせず見た目として読む」という説明とは合っているが、シード数は少ない。
参照の効きを強めても、向きは変わらなかった。
プロンプトに looking at viewer を足すと正面になった。
| 条件(s20261027) | 時間 | 結果 |
|---|---|---|
| strength 1 | 293.9秒 | 後ろ姿 |
| ref_guidance 7 | 481.6秒 | 後ろ姿 |
looking at viewer を追加 | 316.0秒 | 正面 |



v1a・v1b・FP8を比べる
| 条件 | v1b | v1a | v1b FP8 |
|---|---|---|---|
| Turbo v1.1 走る s20261027 | 参照どおり | 参照どおり | v1bとほぼ同じ絵 |
| Turbo v1.1 走る s20261028 | 参照どおり | 半袖、黒タイツがニーハイに変わる | — |
| Turbo v1.1 走る s20261029 | 参照どおり | 片脚がハイソックスのように見える | — |
| Turbo v1.1 ケーキ | ネクタイが腕に隠れる | ネクタイが見える。胸ポケットが増える | v1bとほぼ同じ絵 |
| Base 走る s20261027 | 後ろ姿 | 正面、参照どおり | 後ろ姿、v1bとほぼ同じ |
| Base ケーキ | 参照どおり | 参照どおり。カップが2つ | v1bとほぼ同じ絵 |












Turbo v1.1の走る場面3シードでは、v1aの服の崩れが2回で、v1bは0回だった。
READMEの正解画像との類似度はほぼ同じだが、少なくともこの参照とシードでは、v1bのほうが服を保った。
FP8はサイズが約半分で、READMEの「実質的に同じ画像」のとおりだった。
同じシードのbf16との差は、0〜255の画素値の平均で1.8〜3.0だ。
構図は変わらず、並べて見て細部が少し違う程度だった。
時間は56.5〜58.6秒(Turbo)、312秒台(Base)で、bf16と変わらない。
--bf16-unet で起動しているので、FP8の重みをどの精度で計算しているかまでは見ていない。
strengthの効き方
Advancedノードの strength は対数スケールで、参照のkeyの重みを変える。
ツールチップには、+1で約2.7倍、-1で約2.7分の1とある。
READMEは細部(飾り、袖、アクセサリ)を増やしたいときに1〜2を勧めている。
| strength | Turbo v1.1 走る | Turbo v1.1 ケーキ | Base ケーキ |
|---|---|---|---|
| -1 | 笑顔で脚を大きく上げる。ネクタイ、タイツは残る | 手を頬に。シュシュが暗い色に | 髪がオレンジ寄り |
| 0(既定) | 手を頭に。走る動きが大きい | フォークを口に。ネクタイは腕の陰 | 髪は明るい茶 |
| 1 | 腕を下ろし、表情が硬い。動きが小さい | ネクタイが見え始める | 彩度がやや下がる |
| 2 | 1より立ち姿に近い | 正面向きで背筋を伸ばす。ネクタイ全体が見える | 彩度が下がり灰色がかる。アホ毛が上で切れる。背景にビル |












上げるほど、ポーズが参照の立ち姿に寄り、走る動きや表情が小さくなった。
Baseの2は色も薄くなる。
かなちゃんの立ち絵には細かい飾りがないので、READMEの言う細部が増えるかどうかはこの参照では確かめられなかった。
strength は時間を増やさなかった。
Turbo v1.1のケーキが56.5秒、走る場面が45.4〜45.5秒、Baseのケーキが301.8〜302.0秒で、0のときと差がない。
READMEには「strengthと重みは遅くならなくなった」とあり、ツールチップには古い「約1.3倍遅い」が残っている。
MPSでは高速な計算経路を使えず、マスク付きの経路を通るが、それでも遅くならなかった。
なお、簡単なほうの SnapRef ノードの strength はスケールが違う。
こちらは1が学習どおり、0がオフ、2が2倍で、対数ではない。
SnapRef の1.0とAdvancedの0は、ピクセル単位で同じ画像になった。
READMEの「1〜2を試す」はAdvancedの値で、SnapRef の2はAdvancedの約0.7に当たる。
fidelityはMacでは切り替えスイッチになる
fidelity は下げるほどプロンプトに自由に従う設定で、ノードのコードを読むとCUDAとそれ以外で動きが違う。
CUDAでは負プロンプト側に参照を 1 - fidelity の重みで読ませるが、高速な計算経路が必要だ。
それ以外では、1未満ならどの値でも負プロンプト側が参照を完全に読む、というフォールバックになっている。
実際にBaseのケーキの場面で比べた。
| 条件 | 時間 | 結果 |
|---|---|---|
| fidelity 1.0(既定) | 316.1秒 | 髪は明るい茶 |
| fidelity 0.5 | 354.5秒 | 髪が濃いオレンジ寄り。シュシュが紫がかる |
| fidelity 0.0 | 346.5秒 | fidelity 0.5とピクセル単位で同じ |
ref_in_uncond オン | 347.4秒 | fidelity 0.5とピクセル単位で同じ |
| Turbo v1.1、fidelity 0.5 | 60.6秒 | fidelity 1.0とピクセル単位で同じ |


コードのとおり、Macでは0.5でも0.0でも ref_in_uncond と同じ画像になり、途中の値は作れない。
cfg 1のTurboは負プロンプト側を計算しないので、何も変わらなかった。
modeのcharで画風を変える
mode の cs は既定でキャラと画風の両方を参照から取り、char はキャラだけを取る。
READMEは char と絵師タグの組み合わせを挙げている。
ここでは絵師タグは使わず、一般的な画風のタグで試した。
| 条件 | cs | char |
|---|---|---|
| Base、タグなし | 既定と同じ画像 | 髪のつやと線が少し変わる |
Base、watercolor (medium) | ほぼ変わらない | 水彩にならず、髪が鮮やかなオレンジ、窓枠が黄色に |
Base、1990s (style), retro artstyle | ほぼ変わらない | 髪が濃い茶、線が太く、古いアニメ寄り |
Turbo v1.1、watercolor (medium) | ほぼ変わらない | 水彩にならず、光の表現が増える程度 |




cs ではタグを足しても画風はほとんど変わらなかった。
char では変わるが、watercolor は水彩にならず、キャラの髪色まで変わった。
READMEのWhat’s nextには、次のv2aで mode char を強化するとある。
2キャラを1枚の参照で出す
READMEのやり方どおり、2人の立ち絵を横に並べた1枚を参照にして、1216×832で出した。
| 条件 | 時間 | 左(かなちゃん) | 右(金髪) |
|---|---|---|---|
| Turbo v1.1 s20261027 | 57.6秒 | ネクタイがリボンに。スカートが格子柄に | 参照どおり |
| Turbo v1.1 s20261028 | 48.5秒 | ネクタイがリボンに | 参照どおり |
| Turbo v1.1 s20261029 | 48.5秒 | ネクタイがリボンに | 参照どおり |
| Base s20261027 | 314.1秒 | ネクタイは残る。スカートが格子柄に | サイドポニーが付く |
| Base s20261028 | 303.0秒 | ネクタイがリボンに | サイドポニーが付く |





5枚とも2人とも出て、左右も髪の色も入れ替わらず、黒タイツと白ソックスの違いも保った。
ただ、かなちゃんのネクタイは5枚中4枚で右のキャラと同じリボンになった。
Baseでは右のキャラにも、左のキャラのサイドポニーが付いてしまった。
READMEは「参照からはっきり見えない属性が2人の間で混ざることがある」としている。
今回はネクタイやスカートのように、参照にはっきり描かれている部分でも混ざった。
プロンプト
masterpiece, best quality, score_7, newest, highres, absurdres, safe, 2girls, brown hair girl on the left, blonde girl on the right, standing side by side, full body, looking at viewer, park, day
横に並べた参照でstrengthを動かすと黒画像になる
混ざりを減らそうと strength 2にすると、真っ黒な画像が出た。
シードを変えても、Baseにしても、strengthを1や-1にしても同じだった。
一方で、同じ参照でもstrength 0なら正常に出る。
条件を絞っていくと、キャラが2人かどうかは関係なく、参照の大きさで決まっていた。
ノードは参照を約1MP以下、16の倍数に縮小する。
1664×1216は1184×864になる。
かなちゃん1人を余白付きで同じ大きさにした画像でも黒くなり、ほかのサイズでは出なかった。
| 参照のサイズ | 出力のサイズ | トークン数(参照+出力) | 16の倍数か | strength 1以上 |
|---|---|---|---|---|
| 832×1216 | 896×1152 | 3,952+4,032=7,984 | はい | 正常 |
| 1216×832 | 896×1152 | 3,952+4,032=7,984 | はい | 正常 |
| 1024×1024 | 896×1152 | 4,096+4,032=8,128 | はい | 正常 |
| 832×640 | 896×1152 | 2,080+4,032=6,112 | はい | 正常 |
| 640×832 | 896×1152 | 2,080+4,032=6,112 | はい | 正常 |
| 832×1216 | 1216×832 | 3,952+3,952=7,904 | はい | 正常 |
| 1184×864 | 896×1152 | 3,996+4,032=8,028 | いいえ | 黒 |
| 864×1184 | 896×1152 | 3,996+4,032=8,028 | いいえ | 黒 |
| 1184×864 | 1216×832 | 3,996+3,952=7,948 | いいえ | 黒 |
16ピクセルが1トークンに当たる。
MPSが通る _masked_attention は、キーの数を16の倍数にそろえるために端を埋め、その部分のマスクを float("-inf") にしている。
strengthが0ならこの経路を通らないので、黒くならない。
この1行を -1e4 に変えて同じ条件(1184×864の参照、strength 2、シード20261027)で出すと、黒画像は出なかった。
この1枚は上下に白い帯が入ったが、ネクタイ、リボン、無地と格子柄のスカートが2人とも参照どおりだった。
ただ、同じ大きさの乱数テンソルをPyTorchの注目機構だけに通しても NaN は再現しなかったため、黒くなる直接の要因までは特定できていない。
修正は1回試したあと元に戻している。
ノードを変えずに避けるなら、合計が16の倍数になるサイズに参照を合わせればよい。
2人の参照を余白を足して1216×832にすると、strength 1でも2でも出た。
| 条件 | 時間 | 左(かなちゃん) | 右(金髪) |
|---|---|---|---|
| strength 0 | 56.5秒 | ネクタイがリボンに。スカートが格子柄に | 参照どおり |
| strength 1 | 47.5秒 | ネクタイが残る | 参照どおり |
| strength 2 | 47.4秒 | 細いネクタイ | サイドポニーが付く。足元が白く抜ける |
| strength 2、s20261028 | 44.4秒 | ネクタイがリボンに | サイドポニーが付く |




ネクタイが残ったのはstrength 1の1枚で、2では戻っているので、混ざりを安定して防げるとは言えない。
READMEにある黒画像の項目はfp16が原因のもので、これとは別だ。
CUDAは別の経路を通るので、この黒画像はMPSなどでfused kernelが使えない環境で起きる挙動とみられる。
SnapRef ノードのstrengthを1以外にしたときや、複数参照の weight を変えたときも同じ経路を通るので、サイズによっては同じことが起きると思われる。
同じキャラの参照を複数入れる
11月1日のノード更新で、同じキャラの参照を最大3枚入れられるようになった。
READMEの例は、上半身の画像に全身の画像を足す使い方だ。
かなちゃんの上半身の画像を足して試した。
この上半身の画像はブレザーにリボンで、全身の立ち絵の白シャツにネクタイとは服が違う。
どちらの情報が使われるかが見分けやすい。


| 条件(Turbo v1.1) | 走る | 時間 | ケーキ | 時間 |
|---|---|---|---|---|
| 上半身だけ | ブレザーとリボン。下は格子柄のスカートと素足に片方だけの靴下で、参照にない | 53.5秒 | ブレザーとリボン | 53.6秒 |
上半身+全身(separate) | ブレザーとリボン。下は無地のスカート、黒タイツ、ローファー | 69.7秒 | ブレザーとリボン | 69.7秒 |
上半身+全身(stitch) | ブレザーとリボン。下は無地のスカート、黒タイツ、ローファー | 57.5秒 | ブレザーとリボン | 57.6秒 |
上半身の weight 0.4 | 白シャツとネクタイ | 64.7秒 | — | — |
全身の weight 0.4 | — | — | ブレザーとリボン | 63.7秒 |
| 全身を1枚目、上半身を2枚目 | — | — | ブレザーとリボン | 69.6秒 |








全身の参照を足すと、上半身だけでは参照にない服になっていた下半身が、全身の参照どおりになった。
READMEの使い方が効いている。
どの組み合わせも1人だけが出て、2人に分かれることはなかった。
服が違う2枚を混ぜると、走る場面もケーキの場面も、重みが同じなら上半身の画像のブレザーが勝った。
入れる順番を入れ替えても同じで、上半身の画像を0.4に下げて初めて全身の服になった。
画面の大きな割合を占めるほうが強く反映される可能性がある。
Baseの separate は350.4秒で、1枚のときより約40秒長い。
3Dポーズと組み合わせる
前回は、CharRef-LLLiteを介さないとRef AdapterとLLLiteを組み合わせられないことを確かめた。
SnapRefは参照のkey/valueを別に持ち、生成側の計算には参照のトークンが混ざらないので、標準のノードで動くかもしれない。
ComfyUI標準の AnimaLLLiteApply と、CharRef-LLLiteの ExperimentalAnimaLLLiteRefApply で比べた。
ポーズの入力は前回と同じ 3dpose_example.png、768×1152、LLLiteの強さは1.0だ。
| 条件 | s20261027 | s20261028 | s20261029 |
|---|---|---|---|
| 標準のLLLite+SnapRef | 座って片膝を上げ、手を床に。靴なし | 白い台に腰掛ける。ローファー | 木の座面の台に腰掛ける。ローファー |
| CharRef-LLLite+SnapRef | 標準とピクセル単位で同じ | 標準とピクセル単位で同じ | 標準とピクセル単位で同じ |






標準のノードだけでポーズどおりに座り、CharRef-LLLiteのノードと3シードともピクセル単位で一致した。
SnapRefでは接続用のノードを足さなくてよい。
Turboの時間は45.3〜45.4秒で、前回のv2との組み合わせの86.4秒より短かった。
Base(30ステップ、cfg 4.5)も272.5秒でポーズどおり、ローファーも出た。
靴が消えたのはTurboのs20261027の1枚で、前回のv2でも同じシードで靴が消えている。
プロンプト
masterpiece, best quality, score_7, newest, highres, absurdres, safe, 1girl, solo, full body, sitting, looking at viewer, simple background
READMEの既知の制限を試す
READMEには、場面が服を上書きする例として beach で水着になること、屋外の全身で足元が白い床になり、地面を書くと直ることが挙げられている。
| 条件 | 時間 | 結果 |
|---|---|---|
beach Base | 313.1秒 | 水着にならない。シャツが半袖に変わる。足元の砂は白く平ら |
beach Base、strength 2 | 293.8秒 | 長袖に戻る。全体に色が薄い |
beach Turbo v1.1 | 60.6秒 | 水着にならない。長袖のまま。砂浜の描き込みがある |
beach Turbo v1.1、strength 2 | 48.5秒 | 水着にならない。長袖のまま |
outdoors Base | 314.1秒 | 海辺のような背景。足元は明るく平らな地面 |
outdoors, grass Base | 305.0秒 | 白い背景の中で、足元だけに丸く草が生える |






シードは1つだが、水着は4枚とも出なかった。
Baseでシャツが半袖に変わったのが、服の上書きに当たる。
grass を足すと、足元だけ草の島のようになり、地面としては描かれなかった。
READMEの「地面を書けば直る」は、この1枚では当てはまらなかった。
小さな細部の簡略化や、肌の濃い参照が明るくなる制限の確認は、手元に合う参照がないため割愛した。
プロンプト
beach の場面
masterpiece, best quality, score_7, newest, highres, absurdres, safe, 1girl, solo, full body, standing, beach, ocean, day
outdoors の場面
masterpiece, best quality, score_7, newest, highres, absurdres, safe, 1girl, solo, full body, standing, looking at viewer, outdoors, day
生成速度の実測
M1 Max 64GBで、896×1152を1枚出す時間。
同じ日に、走る場面でシードを変えながら続けて出した。
| 条件 | Turbo v1.1(8ステップ、cfg 1) | Base(30ステップ、cfg 4.5) |
|---|---|---|
| 参照なし | 38.4〜42.4秒 | 259.5〜263.6秒 |
| SnapRef v1b | 51.5〜56.5秒 | 307.9〜312.1秒 |
| SnapRef v1a | 50.5〜55.6秒 | 298.0秒 |
| Ref Adapter v2 | 56.6〜57.5秒(ref_guidance 1.0) | 475.4秒(ref_guidance 4.5) |
| Role-Ref-KV | 91.9〜92.0秒(8ステップ) | 297.9秒(28ステップ) |
それ以外の条件は次のとおり。
| 条件 | 時間 |
|---|---|
| SnapRef v1b、Base・Aesthetic(全シード) | 293.9〜316.1秒 |
| SnapRef v1b、2.9B 付け替えあり | 438.2〜445.6秒 |
| SnapRef v1b、Turbo系3条件 | 49.4〜64.3秒 |
| SnapRef v1b、2.9B非公式Turbo | 82.6〜88.7秒 |
| Turbo系3条件、ref_guidance 4.5 | 96.5〜98.5秒 |
| 2.9B非公式Turbo、ref_guidance 4.5 | 138.8秒 |
Baseでの参照の追加分は約50秒で、参照なしの約1.2倍だった。
READMEのA100の値は約1.3倍(9.9秒と7.7秒)で、近い。
Baseのv1bはv2の約3分の2の時間で、これはREADMEの比(9.9秒と14.4秒)とも合う。
Role-Ref-KVは推奨の28ステップなので、総時間はv1bと同じくらいになった。
1ステップあたりではv1bが約10.3秒、Role-Ref-KVが約10.6秒でほぼ差がない。
READMEのA100ではv1bが9.9秒、Role-Ref-KVが12.5秒なので、Macではこの差はあまり出ていない。
Turboでは、Role-Ref-KVがcfg 1でも毎ステップ2回計算するので、v1bが約1.7倍速かった。
v2とはほぼ同じだ。
v1aとv1bの差は、Turboでは1秒ほどで、シードによるブレの範囲だった。
Baseでも298.0〜308.3秒と、v1bの約1〜5%短い程度だった。
試していないもの
- READMEが修正済みとするfp16での黒画像。
--bf16-unetで起動しているので再現条件を通らない - Anzhc・sorryhyunのMod Guidance、Spectrumとの組み合わせ
- FP8のAnima base
ref_caption、use_batch、correctionのrescale、ref_megapixelsの変更- CUDAでの動作全般(fidelityの途中の値、黒画像の条件を含む)
- 実写寄りの参照、肌の濃い参照、細かい飾りの多い参照
- メモリ使用量の比較
シードは条件ごとに1〜5個で、かなちゃんと ref_girl の2枚の参照に偏っている。
「出なかった」は、この範囲で出なかったという意味だ。
使い分け
| 用途 | 選ぶもの |
|---|---|
| Baseの推奨設定で出す | SnapRef v1b。v2より速く、3シードで髪型と服が参照から変わらなかった。走る場面などは向きをプロンプトで指定する |
| Turbo系で速く出す | SnapRef v1bかRef Adapter v2(ref_guidance 1.0)。時間はほぼ同じ。Role-Ref-KVより約1.7倍速い |
| 容量を抑える | SnapRef v1b FP8(460MB)。bf16と構図が変わらなかった |
| v1aとv1bで迷う | 手元の範囲では服を保ったのはv1b。小さいほうがよければv1a |
| 3Dポーズと組み合わせる | SnapRef+標準のLLLite。接続用のノードが要らない |
| 上半身と全身の参照を両方使う | SnapRefの image_2。下半身の服まで参照どおりになった |
| 2キャラ | SnapRef v1bで出せるが、ネクタイや髪型が混ざる。Macで strength や weight を使うなら参照のサイズに注意 |
| 2.9B系 | SnapRefは付け替えるだけで動く。ゼロ埋めは要らない |
参考リンク
- snapref-v1b(Hugging Face)
- snapref-v1a(Hugging Face)
- SnapRef(GitHub)
- ComfyUI-Anima-Ref-Adapter(GitHub)
- Anima-Role-Ref-KV(Hugging Face)
- ComfyUI-Anima-CharRef-LLLite(GitHub)
- Anima_ControlNet-LLLite(Hugging Face)
- Anima(Hugging Face)
- Anima-2.9B(Hugging Face)
- anima29b-turbo-unofficial(Hugging Face)
- Anima Ref Adapter v2とRole-Ref-KVを比較する
- Base専用のAnima Ref AdapterをTurbo・Aesthetic・2.9Bで試す