メインコンテンツへスキップ
見出し画像

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

    画像



     
     

    npaka

     
     
    プログラマー。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガジェット。年2冊ペースで技術書を執筆。アニソン / カラオケ / ギター / 猫 twitter : @npaka123

    あなたへのおすすめ