見出し画像

animatediffのフレーム数が少ない問題が解決したんだ

Stable Diffusion web UI(AUTOMATIC1111)でanimatediffを使っていたら 前回まではならなかったのに突然なって直らない症状が出ました

とりあえず症状

早回しかと

このgif動画の設定はfpsが16 Number of framesが39で 本来は39フレームと設定したものなのですが 実際には18フレームしか生成されていません なぜ減っているのかはまったくわからない

で対処法をググりまくりましたところ

ここの最後のコメントを参考にしたら解決しました


やったこと


\stable-diffusion-webui\extensions\sd-webui-animatediff\scripts
の中の
animatediff_utils.py
というファイルをメモ帳で開きます
82行目と83行目をコメントアウトします つまり頭に#をつけます

ここ↓
   else:
       command.extend(["-filter:v", "mpdecimate=hi=64*200:lo=64*50:frac=0.33,setpts=N/FRAME_RATE/TB"])

#  else:
#      command.extend(["-filter:v", "mpdecimate=hi=64*200:lo=64*50:frac=0.33,setpts=N/FRAME_RATE/TB"])
こうする
ファイルを保存して web UIを再起動しまして
生成すると

こうなる

ちょっとループのとこが変な動きになってますがopenposeに使った動画の切り取りがまずってたんだと思います
とにかく39フレームになりました 同時生成のpngファイルもちゃんと39枚でした

解決!

ただやたら背景が動くようになったのが気になります…これは今回のコメントアウトの弊害なのかなんなのか…
そもそもなんで早回し状態になってたのかがわからないし…うーん…詳しい人教えてください…

おわり

追記
参考リンクに載っていた別の方法も試してみました
設定→AnimateDiff→Default frame extraction method
これをffmpegからopencvに変更するというものです
ffmpegがフレームを間引いてるのでopencvなら間引かないという感じ?なのかな?
同じSEED値で同じプロンプト 同じ設定で animatediff_utils.pyのコメントアウトを戻して生成した結果が以下の画像です

ちゃんと39フレームでした

だいぶ印象が違う…ほんとにseed値同じか…?

こっちの方法はやたら時間かかりました 自分のVRAM6GBノートだと二時間も…ちなみに前述のコメントアウトする方法だと30分くらいでした


追記おわり

この記事が参加している募集

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