見出し画像

ComfyUIでAnimateDiff-MotionDirector

AnimateDiffのオリジナルのモーションloraを作ろうと思い以下のカスタムノードを使い、トレーニングしてみた。
ComfyUI-ADMotionDirector

トレーニング環境だが、結構スペックが必要になる。
Google Colab16GBT4では、GPU不足になった。
なのでL4を使ってみた。
やっていて思ったのがVRAMが少ないゲーミングGPUを使ったローカル環境よりGoogle Colabを使った方がいいと思う。
(後述するがフレーム数を下げれば16GBでも学習可能

250stepで32フレーム学習時。VRAM16GBに収まりそうだが、実際に動かすと足りない。

ワークフロー:
https://github.com/kijai/ComfyUI-ADMotionDirector/blob/main/examples/admd_250steps_combined_preview.json

https://github.com/kijai/ComfyUI-ADMotionDirector/blob/main/examples/admd_example_workflow_500steps.json

上記のファイルは右クリック保存しないでください
一度githubページに飛んで右上のダウンロードボタンを押してください。

上が250stepバージョンで、下が500stepバージョン。
今回は250step(50step x 5)で学習した。
学習時間はL4だと50stepごと9分ほどかかるので、250stepだと40分程度
さらに1プロセスごとにvalidationのビデオ書き出しが入るので、
1プロセス2分。5プロセスで10分。
最終的に50分程度かかった。


学習用動画を先頭のLoad Videoノードに入れる。
学習用動画は32フレーム以内のものを用意する
(Load Videoノード のframe_load_cap で余分なフレームを切り取ってしまってもいい。)
それより多いとエラーが出る。
32フレームで学習するのに16GBだとメモリ不足で実行できなかった。

RTX4070ti 16GBなら16フレームでも以下の画像ようにギリギリだ。
20フレームは可能だが、24フレームは無理だった。


学習データは2種類出力される。
"temporal"がmotion loraで
"spatial"が普通のloraです。
実際に動画を生成するには通常通りmotion loraのみを使えば良さそうです。
spatialモデルは"空間"を制御するようですが、使うとおかしな結果になるので、何か正しい使い方があるのかもしれません。

生成後のデータの保存場所はComfyUImodelsanimatediff_motion_loralorasの中に作られる。
(カスタムノードのレポジトリ内を探しても見つからないので注意。)


参考:


この記事が気に入ったらサポートをしてみませんか?