
SCAIL-2という、動画の動きを画像に反映できるモデルがリリースされました。
今回はこのSCAIL-2をComfyUIで動かす方法について紹介します。
SCAIL-2とは?
SCAIL-2は、駆動用の動画のモーションを参照画像のキャラクターに転写できるモデルです。
前バージョンのSCAILは骨格(ポーズ推定)を挟んでいましたが、SCAIL-2はそれを経由せず駆動動画を直接読み込みます。
そのおかげで人以外の動きや、動物・一人称視点の動画でも駆動できるとのこと。
動画の人物をそのまま入れ替える置換モードと、参照画像のキャラクターに動きだけさせるアニメーションモードの2つがあります。
主な特徴
- 駆動動画からモーションを転写するキャラクターアニメーション
- 骨格などの中間表現を経由しないend-to-end設計
- 動画内のキャラクターを差し替える置換モードに対応
- 複数キャラクターや動物が駆動元でも動く
- 細部を改善するDPO LoRAが別途配布されている
- ComfyUIがネイティブで対応(カスタムノード不要)

ライセンス
コードはApache-2.0です。
ただモデルの重みはHugging Faceのモデルカードだとmit表記になっていて、リポジトリの表記と食い違っています。
どちらも生成物の商用利用を制限するものではないみたいですが、気になる方は公式のLICENSEを確認してみてください。
ComfyUIのインストール
ComfyUIのインストールがまだの方はこちらを参考にしてみてください。

SCAIL-2で使うノードはまだ新しいので、ComfyUIは最新版(nightly / masterブランチ)に更新しておく必要があります。
安定版のままだとSCAIL2ColoredMaskノードが出てこないので、動かない場合はまずここを疑ってみてください。
モデルの用意
今回は公式ワークフローに沿って、以下の7つを用意します。
拡散モデルだけはfp16が30GB近くあるので、fp8_scaledのほうを使っています。
| ファイル | 置き場所 |
| wan2.1_14B_SCAIL_2_fp8_scaled.safetensors | diffusion_models |
| wan2.1_SCAIL_2_DPO_lora_bf16.safetensors | loras |
| lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors | loras |
| Wan2_1_VAE_bf16.safetensors | vae |
| umt5_xxl_fp8_e4m3fn_scaled.safetensors | text_encoders |
| clip_vision_h.safetensors | clip_vision |
| sam3.1_multiplex_fp16.safetensors | checkpoints |
フォルダ構成
ComfyUI\models\diffusion_models\wan2.1_14B_SCAIL_2_fp8_scaled.safetensors
ComfyUI\models\loras\wan2.1_SCAIL_2_DPO_lora_bf16.safetensors
ComfyUI\models\loras\lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors
ComfyUI\models\vae\Wan2_1_VAE_bf16.safetensors
ComfyUI\models\text_encoders\umt5_xxl_fp8_e4m3fn_scaled.safetensors
ComfyUI\models\clip_vision\clip_vision_h.safetensors
ComfyUI\models\checkpoints\sam3.1_multiplex_fp16.safetensorsComfyUIでSCAIL-2を使う方法
ワークフローの読み込み
ComfyUIのテンプレートに公式のものが入っています。
メニューのワークフロー→Browse Templatesから、SCAIL-2: Character Replacementを選んでください。

ノードの設定&実行
・Load Video
動きの元になる駆動動画を取り込みます。
今回はこちらをお借りしました。

・Load Image
動かしたい画像を取り込みます。

・Character Replacement (SCAIL-2 Base)・Character Replacement (SCAIL-2 Extend)

主なパラメータ
| 項目 | 内容 |
| pose_video | 動きの元になる駆動用の動画 |
| reference_image | 差し替えたいキャラクターの参照画像 |
| prompt | 出力される動画そのものの描写 |
| replace_mode | trueで置換モード、falseでアニメーションモード |
| segment_index | 1が最初の区切り。続きは2、3と増やす |
| width / height | 既定は896×512 |
| frame_count | 既定は81。4n+1の値にする |
| previous_frame_count | 区切り同士の重なり。既定は5 |
| turbo_mode | Lightx2vを使った高速化のプリセット |
| sam3_video_object | 駆動動画のどれを追うかを単語で指定。既定はhuman |
| sam3_image_object | 参照画像のどれを追うかを単語で指定。既定はhuman |
下のhumanの部分はマスクをかける部分を指定するものなので、人物ならhumanのままで問題ありません。

あと今回縦動画なので896×512も入れ替えて実行しています。
長い動画を作るとき
Extendのサブグラフを増やしてつなげれば伸ばせます。
まずExtendの方をCtrl+C→Ctrl+Shift+Vで複製したあと、segment_indexを+1にしてください。
ベースから1,2,3と順にする必要があります。

で、一個前のoutputを複製した方のprevious_framesに繋ぎます。

最後に複製した方のoutputをBatch Imagesの新しい部分に入力します。

これでいくらでも拡張可能です。
長さに合わせて増やしてみてください。
アニメーションモードと置換モードの違い
SCAIL-2には2つのモードがあり、replace_modeで切り替えます。
| モード | replace_mode | 何が起きるか | 背景 |
| 置換モード | true | 駆動動画に映っている人物が、参照画像のキャラクターに入れ替わる | 駆動動画のまま |
| アニメーションモード | false | 参照画像のキャラクターが、駆動動画の動きをする | 参照画像側 |

またpromptもモードによって書き分けが必要みたいです。
置換モードは背景が駆動動画のものになるので、差し替えたあとの人物の見た目だけを書きます。
アニメーションモードは参照画像側の背景になるので、背景も含めて書きます。
結果
拡張は増やさずデフォルトのワークフローをそのまま使用してます。
私の環境(VRAM16GB/RAM64GB)では、どちらのモードでも処理は約15分でした。
ただアニメーションモードの方が若干速く14分くらいでした。
・置換モード
人物だけが変わり、背景などは駆動動画のままです。
・アニメーションモード
人物・背景含め画像のまま、動画の動きを反映しています。
まとめ
無印のSCAILも十分クオリティは高かったのですが、SCAIL-2になってより精度・描写ともに良くなっている印象でした。
ComfyUIのワークフローもシンプルだし、マスクもSAM3が勝手に作ってくれるので、前処理でつまずくところがほとんどありません。
モーションさえあれば、自分の好きなキャラを自由に動かせると思います。
興味ある方は使ってみてください。
以上ComfyUIでSCAIL-2を使う方法について紹介しました。
参考になれば幸いです。
