💭

AnimateAnyoneをローカルのdocker環境で試す

2024/01/16に公開

概要

AnimateAnyoneの実装が出てきたので自宅環境で動かしてみました。
https://github.com/MooreThreads/Moore-AnimateAnyone

準備

動作環境

  • ubuntu22.04
  • python3.10.9
  • RTX4090
  • cuda:11.7

使用するモジュール

markupsafe==2.0.1を追加しています。vid2pose.pyを動かす場合controlnet-auxが必要になるので入れておきます。私の環境ではgithubで指定されたバージョンでscipyが入らなかったので、scipy==1.10.1を使っています。

markupsafe==2.0.1
accelerate==0.21.0
av==11.0.0
clip @ https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip#sha256=b5842c25da441d6c581b53a5c60e0c2127ebafe0f746f8e15561a006c6c3be6a
decord==0.6.0
diffusers==0.24.0
einops==0.4.1
gradio==3.41.2
gradio_client==0.5.0
imageio==2.33.0
imageio-ffmpeg==0.4.9
numpy==1.23.5
omegaconf==2.2.3
onnxruntime==1.16.3
onnxruntime-gpu==1.16.3
open-clip-torch==2.20.0
opencv-contrib-python==4.8.1.78
opencv-python==4.8.1.78
Pillow==9.5.0
scikit-image==0.21.0
scikit-learn==1.3.2
scipy==1.10.1
torch==2.0.1
torchdiffeq==0.2.3
torchmetrics==1.2.1
torchsde==0.2.5
torchvision==0.15.2
tqdm==4.66.1
transformers==4.30.2
controlnet-aux

必要なファイルのダウンロード

まずgithubからcloneします。

git clone https://github.com/MooreThreads/Moore-AnimateAnyone.git

pthファイルのダウンロード

ここからpthファイルをダウンロードします。ダウンロード後はMoore-AnimateAnyone/pretrained_weightsフォルダを作って入れておきます。

  • denoising_unet.pth
  • reference_unet.pth
  • pose_guider.pth
  • motion_module.pth

https://huggingface.co/patrolli/AnimateAnyone/tree/main

StableDiffusion V1.5

先ほどのpretrained_weightsの中で実行します。

git clone https://huggingface.co/runwayml/stable-diffusion-v1-5

sd-vae-ft-mse

こちらも同様。

git clone https://huggingface.co/stabilityai/sd-vae-ft-mse

sd-image-variations-diffusers

pretrained_weightsの中で実行します。image_encoderフォルダを取り出して、pretrained_weights直下に置きます。

git clone https://huggingface.co/lambdalabs/sd-image-variations-diffusers
mv sd-image-variations-diffusers/image_encoder/ .

DWPose

以下のリンク先(baidu, google)から2つのファイルをダウンロードして、pretrained_weights/DWPoseに置きます。

  • dw-ll_ucoco_384.onnx
  • yolox_l.onnx

https://github.com/IDEA-Research/DWPose?tab=readme-ov-file#-dwpose-for-controlnet

実行

scripts.pose2vidは1枚の画像とポーズの動画から、新しい動画を生成します。自分で用意した画像を試したい場合はconfigs/prompts/animation.yamlを変更します。

python -m scripts.pose2vid --config ./configs/prompts/animation.yaml -W 512 -H 784 -L 64

実行結果

サンプルの画像とポーズ動画はうまくいきますが、画像を差し替えると破綻するようです。調整がうまくいったら次の記事にします。

Discussion