MagicAnimate: Temporally Consistent Human Image Animation using Diffusion Modelを触る


何ができるか?

画像と動きを用意して、画像を動かす。以下の動画を見るのが早い

モデル準備

リリース時点では READMEにあるStableDiffusion V1.5とMSE-finetuned VAEのリンクがないので、こちらのプルリクを参照

手っ取り早くダウンロードしたかったので

from huggingface_hub import snapshot_download
 
snapshot_download(repo_id="runwayml/stable-diffusion-v1-5", revision="main")
snapshot_download(repo_id="stabilityai/sd-vae-ft-mse", revision="main")

で ~/.cache/hugginface/hub/ にモデルを落としてきてから、指定されたフォルダ構成になるように調整

データ準備


ネットから動かしたい画像を探して、512x512にリサイズする。

加藤純一


検証用ファイル作成


config/prompts/animation.yamlを改良して、source_imageの部分に、動かしたい画像のパスを設定する。video_pathも、動かしてみたいものを設定。

pretrained_model_path: "pretrained_models/stable-diffusion-v1-5"
pretrained_vae_path: "pretrained_models/sd-vae-ft-mse"
pretrained_controlnet_path: "pretrained_models/MagicAnimate/densepose_controlnet"
pretrained_appearance_encoder_path: "pretrained_models/MagicAnimate/appearance_encoder"
pretrained_unet_path: ""

motion_module: "pretrained_models/MagicAnimate/temporal_attention/temporal_attention.ckpt"

savename: null

fusion_blocks: "midup"

seed:           [1]
steps:          25
guidance_scale: 7.5

source_image:
  - "path to your image"
video_path:
  - "inputs/applications/driving/densepose/running.mp4"

inference_config: "configs/inference/inference.yaml"
size: 512
L:    16
S:    1 
I:    0
clip: 0
offset: 0
max_length: null
video_type: "condition"
invert_video: false
save_individual_videos: false

ここで

source_image:
  - "path to your image A"
  - "path to your image B"
  - ...
video_path:
  - "inputs/applications/driving/densepose/running.mp4"
  - "inputs/applications/driving/densepose/runnning2.mp4"

と設定すると、Aはrunning.mp4, Bはrunning2.mp4が適用される。

実行

Run inference on single GPU:

bash scripts/animate.sh

Run inference with multiple GPUs:

bash scripts/animate_dist.sh


結果


動きの転写は良さそうだが、顔の変更が気になる。。

参考になる情報

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