![見出し画像](https://assets.st-note.com/production/uploads/images/123410551/rectangle_large_type_2_c5c882b8e6195c18b87448b1c0a0a4ab.png?width=1200)
Google Colab で AnimateDiff を試す
「Google Colab」で「AnimateDiff」を試したので、まとめました。diffusers版は動作が安定してなかったので、公式リポジトリ版を使用してます。
1. AnimateDiff
「AnimateDiff」は、1枚の画像から一貫性のあるアニメーションを生成する機能です。diffusersにもAnimateDiffが追加されましたが、動作が怪しかったので、今回は公式リポジトリを利用しています。
2. AnimateDiff のモデル
AnimateDiff で提供されているモデルは、次のとおりです。
2-1. モーションモジュール
・mm_sd_v15_v2.ckpt : StableDiffusion 1.5用
・mm_sd_v14.ckpt : StableDiffusion 1.4用
・mm_sdxl_v10_beta.ckpt : SDXL用
2-2. モーションLoRA
・v2_lora_ZoomIn.ckpt : ズームイン
・v2_lora_ZoomOut.ckpt : ズームアウト
・v2_lora_PanLeft.ckpt : ズームパン左
・v2_lora_PanRight.ckpt : ズームパン右
・v2_lora_TiltUp.ckpt : チルトアップ
・v2_lora_TiltDown.ckpt : チルトダウン
・v2_lora_RollingAnticlockwise.ckpt : 逆時計回り回転
・v2_lora_RollingClockwise.ckpt : 時計回り回転
モデルは、Google Drive / HuggingFace/ CivitAIで入手できます。
3. Colabでの実行
Colabでの実行手順は、次のとおりです。
(1) パッケージのインストール。
# パッケージのインストール
!git clone https://github.com/guoyww/AnimateDiff
!pip install -q torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 torchtext==0.15.2 torchdata==0.6.1 --extra-index-url https://download.pytorch.org/whl/cu118 -U
!pip install einops omegaconf safetensors diffusers[torch]==0.11.1 transformers xformers==0.0.20 triton==2.0.0
!rm -rf /content/AnimateDiff/models/StableDiffusion
!git clone -b fp16 https://huggingface.co/runwayml/stable-diffusion-v1-5 /content/AnimateDiff/models/StableDiffusion/
%cd AnimateDiff
(2) モデルのダウンロード。
今回は、「Stable Diffusion 1.5」ベースの「Counterfeit-V3.0」を使用します。
# モーションモジュールのダウンロード
!wget -P /content/AnimateDiff/models/Motion_Module https://huggingface.co/camenduru/AnimateDiff/resolve/main/mm_sd_v15_v2.ckpt
# モデルのダウンロード
!wget -P /content/AnimateDiff/models/DreamBooth_LoRA https://huggingface.co/gsdf/Counterfeit-V3.0/resolve/main/Counterfeit-V3.0_fix_fp16.safetensors
(3) コンフィグファイル「0-Counterfeit-V3.0.yaml」を作成して、「AnimateDiff/configs/prompts/v2」に配置。
使用するモデルとプロンプトを指定しています。
・0-Counterfeit-V3.0.yaml
RealisticVision:
inference_config: "configs/inference/inference-v2.yaml"
motion_module:
- "models/Motion_Module/mm_sd_v15_v2.ckpt"
dreambooth_path: "models/DreamBooth_LoRA/Counterfeit-V3.0_fix_fp16.safetensors"
lora_model_path: ""
seed: [1]
steps: 25
guidance_scale: 7.5
prompt:
- "cute cat ear maid, best quality, high quality"
n_prompt:
- "worst quality, low quality, monochrome"
(4) 「AnimateDiff/animatediff/utils/convert_from_ckpt.py」の726行目を以下のように修正。
text_model.load_state_dict(text_model_dict)
↓
text_model.load_state_dict(text_model_dict, strict=False)
動画生成時に、以下のエラーが発生したので、strictをはずしてます。
RuntimeError: Error(s) in loading state_dict for CLIPTextModel:
Unexpected key(s) in state_dict: "text_model.embeddings.position_ids".
(5) 動画生成の実行。
数分ほどで動画生成され、AnimateDiff/samplesに出力されます。
# 動画生成の実行
!python -m scripts.animate --config /content/AnimateDiff/configs/prompts/v2/0-Counterfeit-V3.0.yaml --pretrained_model_path /content/AnimateDiff/models/StableDiffusion
・sample.gif
![](https://assets.st-note.com/production/uploads/images/123409621/picture_pc_fb2659312ed5eca6a1893658a90b6a57.gif)