見出し画像

Stable Video Diffusionのエラーでドはまりした話


動画生成AIの進歩・進化はすごいものがありますね。

ところで、Stable Diffusionをローカル環境で動かしている私は
StableDiffusionに機能追加ということで、animateDiffを使っています。

というのも、Stable Video Diffusionで困ったエラーが起きてたんですよね。
で、そのエラーがなかなか取れない。
有料の動画生成AIを試す前にやれることはやってからにしようと思っていたんですが、StableDiffusionの拡張機能でanimateDiffを見つけて、「これでいこう」と思っていたんですが、やはりあきらめきれないSVD(StableVideoDiffusion)!

エラーをどうにかして動かしたい!と思い、アホな頭をひねりまくり英語のドキュメントを読み漁り、コミュニティも覗き、まぁそれでも解決しない。

エラーの内容はこれです。

A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.0.1 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.

If you are a user of the module, the easiest solution will be to
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.

英訳すると

NumPy 1.x を使用してコンパイルされたモジュールは実行できません。
NumPy 2.0.1 はクラッシュする可能性があるため。 1.x と 2.x の両方をサポートするには
NumPy のバージョンを使用するには、モジュールを NumPy 2.0 でコンパイルする必要があります。
代わりに一部のモジュールを再構築する必要がある場合があります。 「pybind11>=2.12」の場合。

あなたがモジュールのユーザーである場合、最も簡単な解決策は次のとおりです。
「numpy<2」にダウングレードするか、影響を受けるモジュールをアップグレードしてみてください。
一部のモジュールが NumPy 2 をサポートするには時間がかかることが予想されます。

今回はこれにドはまりしてしまった経緯をお伝えするとともに、このエラーで困っている人がいるのではないかと思い、記事を書くことにしました。

stable video diffusionとは

軽く紹介です。
画像から動画を作るすごいプログラム
のことです
公式サイトは以下です。日本語で読めるのでぜひ見てみてください。
ところで「Sora」はまだかしら・・・( ;∀;)

animateDiffとは

こちらも軽く紹介です。
StableDiffusionの拡張機能で、プロンプトまたは画像、設定によれば動画からも動画を生成できます。
結構すごいんですが、なかなか重たいのとプロンプトは厳格にいれないとすぐにエラーになってしまいます。経験上の話ですが重みづけ(long hair:1.5)みたいなのは軒並みエラーでした。
公式サイトは以下です。

対処した内容

1.コマンドプロンプトを開き、SVDを入れたディレクトリに移動します。

2.仮想環境を削除します(バックアップはとっておいてね)。

rmdir /S /Q venv

3.新しい仮想環境を作成します。

python -m venv venv

4.仮想環境のアクティベートをします。

venv\Scripts\activate

5.NumPyをアンインストールしてから、1.23.5に固定してインストールします。

pip uninstall numpy
pip install numpy==1.23.5

6.requirements.txtの中にある、numpy==のところを以下のようにして上書き保存します。

numpy==1.23.5

7.依存関係のインストールをします。

pip install -r requirements.txt

8.インストールが始まるので放置します。

9.インストールが終わったらパッケージのバージョンを確認します。

pip list

10.numPyのバージョンが1.23.5になっていれば成功です。

11.以下のコードで起動します(batファイルにしておくと便利)。

powershell -ExecutionPolicy Bypass .\run_gui.ps1

12.起動しました!

他にもエラーが・・・

実は他にもエラーがありました。

Traceback (most recent call last):
  File "G:\SVD-webui\webui.py", line 10, in <module>
    import gradio as gr
ModuleNotFoundError: No module named 'gradio'

gradioモジュールが入ってないとのらしいので

pip install gradio

で、無事に起動させることができました。

さらなるエラーが

動画保存するところでコケるんですよね

OpenCV: FFMPEG: tag 0x5634504d/'MP4V' is not supported with codec id 12 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'

調べてみるとこけているわけではなかったという!!
タダの警告のようなので、無視して大丈夫でした。

G:\SVD-webui\outputsにちゃんと出力されてました。(私はGドライブに入れているのでこのパスになってます。各自の環境に合わせて確認してみてくださいね。)

サンプルを置いておきます。

終わりに

様々なコミュニティを読み漁りましたがなかなか解決に至らず、途方に暮れていましたが何とかなりました。

この記事が誰かの役に立つことを信じて。

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