見出し画像

AnimateDiff のモーションの学習を試す

「AnimateDiff」のモーションの学習を試したので、まとめました。


1. AnimateDiff のモーションの学習

以下のリポジトリのコードでAnimateDiff のモーションを学習してみます。

2. Colabでの実行

Colabでの実行手順は、次のとおりです。

2-1. インストール

(1) リポジトリの「Fine_tune_AnimateDiff.ipynb」を開き、メニュー「ファイル→ドライブにコピーを保存」。

(2) 「Install」セルの実行。
パッケージをインストールします。

(3) 「Install」セルの下に次のセルを追加して実行。【変更あり】
追加のパッケージをインストールします。

# 追加のパッケージのインストール
!pip install diffusers[torch]==0.26
!pip install compel ffmpeg

2-2. 学習するモーションの準備

(1) 「Project」セルの実行。
プロジェクトの設定を準備します。

(2) 「Download bunny」セルの実行。
動画をダウンロードします。

(3) 「Video to images」セルの実行。
動画を画像に変換します。

(4) 「Make video」セルの実行。
学習するモーションの動画を生成します。フェードインしつつ上スクロールする動画になります。

2-3. 学習

(1)「Default train config」セルに「temporal_context: 24」を追加して実行。【変更あり】
Issueを参考にしてます。

validation_data:
  prompts:
  - prompt
  video_length: 16
  width: 512
  height: 512
  temporal_context: 24
  num_inference_steps: 20
  guidance_scale: 12.5
  use_inv_latent: true
  num_inv_steps: 50

(2)「Write train config」セルに「"temporal_context": 24」を追加して実行。【変更あり】
Issueを参考にしてます。

  "validation_data": {
    "prompts": [
      f"{train_prompt}",
    ],
    "video_length": video_length,
    "width": width,
    "height": height,
    "temporal_context": 24,
    "num_inference_steps": 20,
    "guidance_scale": 12.5,
    "use_inv_latent": True,
    "num_inv_steps": 50,
  },

(3) 「Train」セルの実行。
学習を実行し、モーションのチェックポイントを出力します。(models/Motion_Module/bunny/inv_latents/ddim_latent-1.pt)

2-4. 推論

(1) 「Write infer config」セルの実行。
推論の設定を準備します。

(2) 「Define args」セルの実行。
推論パラメータの設定を準備します。

(3) 「Load models」セルの実行。
モデルを読み込みます。

(4) 「Load latents」セルの実行。
学習したモーションを読み込みます。

(5) 「Infer」セルの次の2箇所を変更して実行。【変更あり】
推論を実行します。

(a) 80行目の「DDIMScheduler」の初期化方法の変更。

 scheduler=DDIMScheduler(**OmegaConf.to_container(inference_config.noise_scheduler_kwargs)),

 scheduler=DDIMScheduler.from_config(OmegaConf.to_container(inference_config.noise_scheduler_kwargs)),

(b) pipelineに引数「temporal_context = 24,」「fp16 = True,」を追加。

            sample = pipeline(
                prompt,
                negative_prompt     = n_prompt,
                num_inference_steps = model_config.steps,
                guidance_scale      = model_config.guidance_scale,
                width               = args.W,
                height              = args.H,
                video_length        = args.L,
                latents             = latents,
                temporal_context = 24, # 追加
                fp16 = True, # 追加                
            ).videos

フェードインしつつ上スクロールする動画が生成されます。



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