「text2videoを簡単に実現したい」
「画像をテキストで制御して動画を生成したい」
このような場合には、DynamiCrafterがオススメです。
この記事では、DynamiCrafterについて解説しています。
本記事の内容
- DynamiCrafterとは?
- DynamiCrafterのシステム要件
- DynamiCrafterのインストール
- DynamiCrafterの動作確認
それでは、上記に沿って解説していきます。
DynamiCrafterとは?
DynamiCrafterは、テキストプロンプトに基づいて静止画像をアニメーション化することができる技術になります。
このプロジェクトは、香港中文大学とTencent AI Lab(テンセントの人工知能研究所)の共同で行われているようです。
基本的には、画像とプロンプトをセットで利用します。

プロンプトによって画像を制御して動画を生成できることが、GUIで実現できる点がDynamiCrafterの強みです。
あとは、インストールが簡単という利点もあります。
DynamiCrafterのデモ自体は、2023年12月2日にリリースされています。

しかし、DynamiCrafterはイマイチ普及していないようです。
GitHubを見ると、次のような状況となっています。

Hugging Faceのデモも次のような状況です。

これには、何個か理由があると思います。
何と言っても、2023年11月末にStable Video Diffusionという大物が出ましたからね。
タイミング的に悪かったのかもしれません。
そのことに焦ったのかどうかわかりませんが、12月6日に上記のポストが投稿されています。
ただ、GitHubの公式ページにおける以下の記述も人気の無さに影響しているのでは思います。

私自身も初見時にこれを見てDynamiCrafterをスルーしています。
おそらく、この表記は10秒で生成されることをアピールしたかったのでしょう。
しかし、これだけのスペックが必要だと勘違いしてしまう可能性の方が高いと言えます。
つまり、メリットを伝えるつもりがデメリットを伝えてしまっているようになっているのです。
実際のところは、そんなにGPUメモリは必要ではありません。
Hugging Face上のデモページでは、次のように表示されています。

A10Gのプランを確認してみると、次のようになっています。

これをみる限りでは、GPUに24GBがあればOKと言うことです。
したがって、RTX 3090やRTX 4090であればローカルでも動かせることになります。
そして、実際にRTX 3090で動作確認ができています。
この勘違いを生んでいる状況も、DynamiCrafterが話題にすらならない理由なのかもしれません。
これは、あくまで仮説なので適当に流してください。
と言っても、GUIでtext2videoができるのは大きなメリットです。
ただし、Stable Video Diffusionでtext2videoがGUI操作により実現できれば・・・
(モデル自体がまだimg2vidしか存在していません)
それまでのつなぎとして、DynamiCrafterは使えるとは思います。
DynamiCrafterのシステム要件
DynamiCrafterのシステム要件としては、公式に明記はされていません。
わかっていることとしては、以下になります。
- GPU 24GBで動く
- Windowsで動く(WSLではなく)
PyTorchは念のため、一つ古いCUDA 11.8用の2.1.1版をインストールしています。
現時点で最新となるCUDA 12.1だと動かないプロジェクトも存在していますので。
事前にPyTorchはインストールしておきましょう。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
GPU版PyTorchのインストールについては、次の記事で解説しています。
DynamiCrafterのインストール
Python仮想環境の利用をオススメします。
デモ用のプロジェクトをダウンロードするために、デモページにアクセスします。

そして、「Clone repository」をクリック。

次の画面が表示されます。
「git clone」のコマンドをコピーします。

コピーした以下のコマンドを実行。
git clone https://huggingface.co/spaces/Doubiiu/DynamiCrafter cd DynamiCrafter
ダウンロードできたら、リポジトリルートに移動しておきます。
requirements.txt
decord==0.6.0 einops==0.3.0 imageio==2.9.0 numpy==1.24.2 omegaconf==2.1.1 opencv_python pandas==2.0.0 Pillow==9.5.0 pytorch_lightning==1.8.3 PyYAML==6.0 setuptools==65.6.3 torch==2.0.0 torchvision tqdm==4.65.0 transformers==4.25.1 moviepy av xformers gradio timm scikit-learn open_clip_torch==2.22.0 kornia
PyTorchはすでにインストール済みのため、以下の部分をコメントアウトします。
# torch==2.0.0 # torchvision
変更できたら、次のコマンドを実行します。
pip install -r requirements.txt
処理が終われば、DynamiCrafterのインストールは完了です。
DynamiCrafterの動作確認
DynamiCrafterを起動するには、次のコマンドを実行します。
python app.py
初回起動時は、モデルのダウンロードに時間がかかります。
10GB程度のモデルがダウンロードされています。
起動に成功したら、コンソールに以下が表示されます。
Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`.
ブラウザで「http://127.0.0.1:7860」にアクセスします。
次のような画面が確認できれば、OK。

画像とプロンプトを設定して、「Generate」をクリックすれば処理が始まります。

この画像をベースに次のような動画を生成できました。