🎥

【AnimateDiff】animatediff-cli-prompt-travelを試してみた!

2023/09/19に公開2

1. はじめに

animatediff-cli-prompt-travelは、GitHub上で公開されているツールで、アニメーションの差分を生成するためのCLIツールです。この記事では、このツールのインストール方法から使い方、実際の使用結果までを紹介します。

2. animatediff-cli-prompt-travelとは?

このツールは、neggles/animatediff-cliをベースにしており、特にフレームの中間でプロンプトを変更する実験的な機能が追加されています。

3. インストール方法

Windows環境を前提として、Python 3.10とgitクライアントが必要です。以下の手順でインストールできます。

  1. Pythonのインストール
    まず、Pythonがインストールされていない場合は、公式サイトからダウンロードしてインストールしてください。インストール時には「Add Python to PATH」のオプションを選択することをおすすめします。

  2. animatediff-cli-prompt-travelのクローンとインストール
    以下のコマンドを実行してanimatediff-cli-prompt-travelをクローンします。

git clone https://github.com/s9roll7/animatediff-cli-prompt-travel.git

クローンが完了したら、ディレクトリに移動します。

cd animatediff-cli-prompt-travel
  1. 仮想環境の構築
    Windowsのコマンドプロンプトを開き、以下のコマンドを実行して仮想環境を作成します。
python -m venv venv

これにより、venvという名前のディレクトリが作成され、その中に仮想環境が構築されます。

  1. 仮想環境のアクティベーション
    作成した仮想環境をアクティベートするには、以下のコマンドを実行します。
.\venv\Scripts\activate.bat

このコマンドを実行すると、コマンドプロンプトのプロンプトが仮想環境の名前で始まるように変わります。これにより、仮想環境がアクティベートされていることが確認できます。

最後に、必要なパッケージをインストールします。
torchやcudaのバージョンはお使いのPCの環境で適宜

python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
python -m pip install -e .
python -m pip install xformers

もし、動画を元にアニメーション生成する場合は、python -m pip install -e .ではなく、以下のパッケージをインストールしてください。

python -m pip install -e .[stylize]
  1. モデルやモジュールを追加する
    アニメーション生成するために、チェックポイントモデルとモーションモジュールを追加する必要があります。

以下のフォルダ内に各モデルを入れてください。

checkpointモデル:アニメ系は、mistoonAnimeやtoonyou、リアル系はxxmix9realistic_v40を推奨しています。

(フォルダ先)
animatediff-cli-prompt-travel/data/models/sd

motionモジュール:mm_sd_v14.ckpt、mm_sd_v15_v2.ckptなど

(フォルダ先)
animatediff-cli-prompt-travel/data/models/motion-module

4. 使い方

まずは、インストール時にデフォルトで入っているデータを使って生成してみましょう。
animatediff-cli-prompt-travel/config/promptsフォルダ内に「prompt_travel.json」というサンプルデータがあるか確認してください。この中に、生成するためのプロンプト情報やControlNetなどを制御する情報が記載されています。

最初は、エラーが出る可能性がありますが、まずは流れだけ掴んでいただければと思います。

以下のコマンドを実行することで、アニメーションの生成が始まります。

animatediff generate -c config/prompts/prompt_travel.json -W 384 -H 576 -L 48 -C 16

アニメーションの設定オプション

  • -W: 生成されるアニメーションのを指定します。
  • -H: 生成されるアニメーションの高さを指定します。

例: -W 384-H 576のオプションは、生成されるアニメーションの解像度を384x576ピクセルに設定するためのものです。


アニメーションのフレーム設定

  • length (-L): 生成されるアニメーションのフレーム数を指定します。
    例: この設定で、アニメーションは48フレームの長さになります。

  • context (-C): アニメーションの各フレームを生成する際に考慮される前後のフレーム数を指定します。contextは、アニメーションの滑らかさや一貫性を向上させるために使用されます。
    例: この設定で、各フレームを生成する際に前後の16フレームが考慮されます。

低VRAMの場合は、-W/-H/-L/-Cの値を小さくしてから生成する方がいいです。

生成が完了すると、animatediff-cli-prompt-travel/outputフォルダ内に生成データが入っていることを確認してください。

以下のようなフォルダが生成されています。
2023-08-25T20-00-00-sample-mistoonanime_v20/00-341774366206100

アップスケール

生成されたアニメーションをアップスケールします。

animatediff tile-upscale output/2023-08-25T20-00-00-sample-mistoonanime_v20/00-341774366206100 -W 512

上記の例では、幅(-W)を384 → 512pxにアップスケールしていますが、高さ(-H)もアップスケールすることができます。

5. 実際の使用結果

生成されたアニメーションの例を紹介します。また、使用時の注意点やヒントも共有します。

途中のフレームでプロンプトを修正すると、それに合わせてアニメーションも変化させることができます。また、LoRAも使用することも可能です。

https://youtube.com/shorts/GNt1oCjuHhM

注意点

デフォルトで生成するとエラーが出るかもしれませんので、以下に修正箇所と注意点を記載します。

・モデルのパスが異なる
jsonファイルに記載されているパスが、自分の環境と異なる場合があるため、パスを変更してください。

以下のjsonファイルをメモ帳やVSCodeなどで開きます。
animatediff-cli-prompt-travel/config/prompts/prompt_travel.json

冒頭にある"path"と"motion_module"のパスを変更してください。

(元データ)

{
  "name": "sample",
  "path": "share/Stable-diffusion/mistoonAnime_v20.safetensors",
  "motion_module": "models/motion-module/mm_sd_v14.ckpt",
  "compile": false,
  "seed": [
    341774366206100
  ],

(修正例)

{
  "name": "sample",
  "path": "models/sd/mistoonAnime_v20.safetensors",
  "motion_module": "models/motion-module/mm_sd_v14.ckpt",
  "compile": false,
  "seed": [
    341774366206100
  ],

どうやら、現在の仕様では"animatediff-cli-prompt-travel\data"を基点?としているようです。(今後のアップデートで変更される可能性があります)

上記のコードの更に下にも、loraやControlNetのパスが記載されていますので、適宜修正してください。

6. まとめ

animatediff-cli-prompt-travelは、アニメーションの差分を簡単に生成できる強力なツールです。AUTOMATIC1111やComfyUIに比べると、少し難解に感じますが今後のアップデートにも期待が持てます。

Discussion

yKesamaruyKesamaru

素晴らしい記事をありがとうございます😊

生成系は顔や髪型がどうしても変化してしまうものですが、リンク先を拝見したところ、かなりしっかりと元画像を継承していて驚きました!これは凄いですね😳💦

toki_mwctoki_mwc

ありがとうございます😊

動きなども安定していますので、とても素晴らしいツールだと思います!