見出し画像

Vroidを使ってStable Diffusion Web UIのAnimateDiff(メモ4)

試したStable Diffusionの設定をメモする。

Vroidを使ったモーション動画作成

Vroidにモーションを与えてVroid HUBの機能で動画を作成する。

今回は2段構成となっている。
①txt2imgで大量の画像を生成し、無理矢理Vroidの見た目からStable Diffusionで生成した画像に変換する。
②img2imgで画像をつなぎ合わせた動画をAnimateDiffで動画化する。

①でtxt2imgで大量の画像を生成し、画像をつなぎ合わせた動画

②で①の動画をインプットにAnimateDiffで作成した動画


ControlNet

openposeのモデルは以下から「OpenPoseXL2.safetensors」をダウンロードする。

depthのモデルは以下から「diffusers_xl_depth_full.safetensors」をダウンロードする。

cannyのモデルは以下から「diffusers_xl_canny_full.safetensors」をダウンロードする。

tileのモデルは以下から「diffusion_pytorch_model.safetensors」をダウンロードする。

①txt2imgで大量の画像を生成し、無理矢理Vroidの見た目からStable Diffusionで生成した画像に変換する。

まずはインプットとなる画像を動画から作成する。
以下のようなコマンドで動画をフレームごとに分割する。

ffmpeg -i input.mp4 -vf "fps=30" frame_%04d.png

FFmpegを使うには、インストールが必要なので、以下の手順でインストールする。

こんな感じで画像に分割する。

stable diffusion webuiの設定は以下で実施する。

この設定だと、だいたい12時間ぐらいで生成される。(RTX 4090の場合)

以下のようなコマンドで、動画化しやすいようにファイル名を加工する。

ren "00005-1627421551.png" "0001.png"
ren "00006-1627421551.png" "0002.png"
ren "00007-1627421551.png" "0003.png"
ren "00008-1627421551.png" "0004.png"
ren "00009-1627421551.png" "0005.png"
ren "00010-1627421551.png" "0006.png"
ren "00011-1627421551.png" "0007.png"
ren "00012-1627421551.png" "0008.png"
ren "00013-1627421551.png" "0009.png"
ren "00014-1627421551.png" "0010.png"
ren "00015-1627421551.png" "0011.png"
ren "00016-1627421551.png" "0012.png"
ren "00017-1627421551.png" "0013.png"
ren "00018-1627421551.png" "0014.png"
ren "00019-1627421551.png" "0015.png"
ren "00020-1627421551.png" "0016.png"
ren "00021-1627421551.png" "0017.png"
ren "00022-1627421551.png" "0018.png"

...

以下のコマンドで画像を結合して動画化する。

ffmpeg -framerate 30 -i "%05d-1627421551.png" -c:v libx264 -pix_fmt yuv420p output_video.mp4

結果のような動画が作成される。
一貫性は足りていないが、ある程度の動画が作成されている。

②img2imgで画像をつなぎ合わせた動画をAnimateDiffで動画化する。

上記で作成した動画をインプットに、AnimateDiffで一貫性の取れた動画を作成する。

stable diffusion webuiの設定は以下で実施する。

生成時間を考慮(これでも15時間半かかる)して、インプットよりも解像度を落としているが、一貫性の高い動画が生成されている。


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