Vroidを使ってStable Diffusion Web UIのAnimateDiff(メモ6)
試したStable Diffusionの設定をメモする。
Vroidを使ったモーション動画作成
Vroidにモーションを与えてVroid HUBの機能で動画を作成する。
フレーム分割
動画から画像に分割するためにFFmpegを使うので、FFmpegを導入する。
FFmpegを使って、動画をフレームごとにpngファイルに分割する。
ffmpeg -i input.mp4 -vf "fps=30" frame_%04d.png
Stable Diffusionでimg2img(animatediff)
ControlNetを使う必要があるので、Hugging Faceからモデルをダウンロードし、以下のフォルダに各種モデルを配置する。
stable-diffusion-webui\extensions\sd-webui-controlnet\models
depthのモデルは以下から「diffusers_xl_depth_full.safetensors」をダウンロードする。
cannyのモデルは以下から「diffusers_xl_canny_full.safetensors」をダウンロードする。
scribbleのモデルは以下から「diffusion_pytorch_model.safetensors」をダウンロードする。
SDXLのAnimateDiffの手順。
Dreambooth
モデルについては、以下でファインチューニングを使って、再学習を行っている。
以下の設定で動画生成する。
Stable Diffusionでimg2img(img2imgでupscale)
animatediffで生成される画像は「00000-00000.png」というようなファイル名なので、以下のコマンドでファイル名を変更する。
ren 00000-00000.png 0000.png
ren 00001-00001.png 0001.png
ren 00002-00002.png 0002.png
ren 00003-00003.png 0003.png
ren 00004-00004.png 0004.png
ren 00005-00005.png 0005.png
ren 00006-00006.png 0006.png
ren 00007-00007.png 0007.png
ren 00008-00008.png 0008.png
ren 00009-00009.png 0009.png
ren 00010-00010.png 0010.png
ren 00011-00011.png 0011.png
ren 00012-00012.png 0012.png
ren 00013-00013.png 0013.png
ren 00014-00014.png 0014.png
ren 00015-00015.png 0015.png
.
.
.
画像自体は以下のような出力になっている。
以下のコマンドで画像をつなぎ合わせる。
ffmpeg -framerate 30 -i %04d.png -c:v libx264 -pix_fmt yuv420p output.mp4
dreambooth/animatediff/img2img2全てで、市販のPCの最高スペック(RTX4090 24G/CPUメモリ128G)は必要だが、かなりの一貫性と解像度を保持した動画が生成可能。