生成AI研究室(42) ハロウィン企画(後編)——魔女は踊った。12ステップでは終盤に深度画像へ戻った動画を、参照の「保持」指定を弱めて25ステップで仕上げた

魔女コスプレのAIキャラのダンス。MiniMax H3・25ステップ版の0秒・5秒・10秒

前編は、キャラシートと参照動画まで出来て、参照を読ませた直後にM5 Macが止まったところで終わった。後編は、参照動画を白黒の深度動画に作り替え、デスクトップ(RTX 5060 Ti 16GB×2)で3本焼いた記録。結論から言うと魔女は踊った。ただし1本目は、終盤に魔女が消えて参照の深度画像そのものに戻っていった。

25ステップ版・15秒・音あり

振付: まなこ(本人公開の振付動画を参照にした)

目次

参照動画を白黒の深度動画にした

前編で読ませた参照はカラーの縦動画(540×720)だった。Macが止まった後、負荷を下げる目的で、ChatGPTに相対深度の白黒動画(360×480・24fps・15秒・音声つき)へ変換してもらった。明るいところが手前、暗いところが奥、背景は真っ黒のマスク。

深度参照動画の10コマ抜き。人物は白い影、手前の腕や帽子が明るい
深度参照動画の10コマ抜き。人物は白い影、手前の腕や帽子が明るい

軽くなった理由は色数ではない。H3は参照動画を読むと、白黒でもカラーでもRGB 3チャンネル・float32に展開するので、効くのは画素数×コマ数だ。540×720は約38.9万画素、360×480は約17.3万画素で、これは今までMacで通っていたBlender参照(512×288・約14.7万画素)と同じ級になる。

ところがこの深度動画には、後で分かる副作用があった。

1本目(12ステップ): 10.5秒から魔女が消えていく

プロンプトは、ChatGPTが深度動画用に書き直したもの。<Picture 1>=キャラシートは fully_preserved(そのまま保持)、<Subject 2>=振付は attribute_transfer(動きだけ移す)、<Audio 1>は fully_copy(そのまま複写)。ここまでは前編と同じ考え方で、違いは<Video 1>(深度動画)を「動きと奥行きの手本」と説明しつつ、retention_analysis では fully_preserved にしていたこと。

0.6MP縦(672×928)・15秒・24fps・Turbo LoRA・12ステップ。2枚挿しのH3VMは「双卡后台/100%」。33分08秒で完了した。

12ステップ版の9.5秒〜13.5秒を0.25秒刻みで。カラー→半透明→白い人物と黒背景へ
12ステップ版の9.5秒〜13.5秒を0.25秒刻みで。カラー→半透明→白い人物と黒背景へ

9.5秒まではカラーの魔女が踊っている。約10.5秒から人物が半透明になり、約12.25秒から深度参照のような白い人物と黒い背景が優勢になり、13.25秒で衣装の色がほぼ消えた。真っ白な空フレームではなく、参照動画の「見た目」が出力に漏れてきた形だ。

同時に、この本では1枚目のGPUでメモリ確保の失敗警告が1,448行出ていた(処理は続いて完了している)。VRAMの採取最大はGPU0 15.93GiB・GPU1 14.76GiB。

2本目(20ステップ): 4つ同時に変えた

原因はプロンプトの fully_preserved が「深度映像の見た目まで保て」と読まれたことが疑わしいが、メモリ警告も同時に出ていたので、ここで原因を1つに決めるのはやめた。代わりに4つを同時に変えて1本焼いた。

  1. プロンプト: <Video 1>を weak_reference に変更。「灰色は奥行きの意味で、肌色や透明度ではない」「10〜15秒も冒頭と同じ肌色・衣装・紫の背景を保つ」を明記。
  2. ステップ: 12→20。
  3. H3VMの設定: 「双卡扩容/低25%」(容量優先)。2枚目のGPUを計算より容量に使う配分で、MLPの分担は68/32固定、予約は8.28/8.76GiB。
  4. ComfyUIを再起動してから1本だけ投入。

51分00秒で完了。メモリ確保の失敗警告は0。VRAMの採取最大はGPU0 13.74GiB・GPU1 6.01GiB。そして最後まで肌色・衣装・紫の背景が残った。

4つ同時に変えたので、「20ステップにすれば直る」とも「プロンプトだけが原因だった」とも書けない。1項目ずつ戻す切り分けは、今夜は焼く時間がなかったのでやっていない。

3本目(25ステップ): 同条件でステップだけ上げた

2本目の直後に、同じプロンプト・同じseed・同じH3VM設定のまま、ステップだけ25に上げて焼いた。実行グラフの差分はステップ数の1か所だけ。63分09秒で完了、警告0、VRAM採取最大はGPU0 13.78GiB・GPU1 5.91GiB。

25ステップ版の毎秒15コマ
25ステップ版の毎秒15コマ

20と25の違いは小さい。指の分離や手が重なる場面の輪郭は一部で読みやすくなった(9.0秒・9.5秒)が、10.875秒の速い動きは両方ともぼける。終盤の色は両方とも保たれていて、25で新たに直ったものはない。それでも見た目の仕上がりは25の方がよかったので、冒頭の動画はこの本にした。

1本目2本目3本目
ステップ122025
<Video 1>の保持指定fully_preservedweak_referenceweak_reference
H3VM双卡后台/100%双卡扩容/25%双卡扩容/25%
所要時間33分08秒51分00秒63分09秒
1ステップあたり—約141秒(初回約169秒)約141秒(初回約168秒)
メモリ確保失敗の警告1,448行00
VRAM採取最大 GPU0/GPU115.93/14.76GiB13.74/6.01GiB13.78/5.91GiB
終盤の色深度画像へ戻った残った残った

所要時間は秒のまま並べた。1本目と2本目は条件が4つ違うので倍率にはしない。2本目と3本目は同条件で、1ステップあたり約141秒が同じで、ステップが5つ増えた分だけ長くなっている。VRAMはstep内の採取値の最大で、絶対のピークではない。

振付はどこまで追えたか

上段=深度参照、下段=25ステップ版。毎秒1コマ
上段=深度参照、下段=25ステップ版。毎秒1コマ

音は参照と0.000秒でぴったり合っている(相互相関0.896)。動きは、5秒の片腕伸ばし、6秒の額のあたり、10秒の顔のそば、13秒の両腕開きはおおむね対応している。一方、3秒で参照は腕を下げているのに出力は片腕を上げ、11〜12秒と14秒もポーズが違う。最終フレームの姿勢も参照と一致していない。「音に合わせて踊っている」が、「参照の振付をなぞっている」とは言えない出来だ。

帽子は15秒間ずっと頭に乗っていた。完全に背中を向ける場面はなく、斜め向きまで。指定していないのに、9.5〜10.5秒あたりで口が歌に合わせて動く。音を fully_copy で渡しただけで、歌詞に口が付いてきた。キャラシートとの一致は、顔立ち・髪・帽子のリボン・胸のレースアップ・袖・裾・靴の要素は保たれ、レースの細かさや柄、厚底の形までは簡略化された。

25ステップ版の最終フレーム(14.917秒)
25ステップ版の最終フレーム(14.917秒)

小ネタ: 進捗バーが0%のまま

今回はAPIから投入したので、ComfyUIの画面上部は「Running… in another tab」、進捗バーは0%のままだった。実際の進みは左下のコンソールで読める。5/20 [12:12<35:50] なら、20ステップ中5つ完了、サンプリング経過12分12秒、残り35分50秒の見込み。0%表示だけ見て止まったと決めて再投入しないこと。

Macはどうなったか

前編で止まったMac側は、同じ日にメモリ保護(Metal割当16GiB上限・開始時の空きが10GiB未満なら起動拒否・実行中の監視)を付け、参照動画の読み方もタイル化して、深度動画で2回焼いた。2回とも途中で柵に当たって止まり、完成動画はない。ただしMacは2回とも再起動なしで生き残った(スワップ増加0)。1回目は参照動画の処理を全部通過してQwenの視覚処理で、2回目はその解放漏れを直してQwenを全部通過し、生成本体の作業領域の確保で、それぞれ上限に当たった。15秒の本番はデスクトップで、という前編の段取りどおりになった。

分かったことと、分かっていないこと

  • 分かったこと: 深度動画は参照として動きと音を渡せる。参照を fully_preserved にすると、その見た目が出力に漏れることがある(1本で観測)。weak_reference+20ステップ+容量優先設定で色は最後まで残った。20→25は同条件で、1ステップ約141秒は変わらず、細部が一部よくなった。
  • 分かっていないこと: 白化の原因がプロンプトか、ステップか、H3VMの設定かは分けていない。振付の追従は部分的で、どうすれば3秒・11〜12秒・14秒が合うかは次の課題。口は指定なしで歌に合った(狙って出せるかは未確認)。

関連: 前編(40) / 第39回 同条件で測り直した / 第34回 背景の縦縞はステップ数で消えた / 第14回 Blenderで動きを先に決める

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次