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
結果
動きの転写は良さそうだが、顔の変更が気になる。。
参考になる情報
自分でオリジナルDenseponseの動画を作りたい人(Colabで動かせる)
この記事が気に入ったらサポートをしてみませんか?