💈

MotionProで画像からアニメーション作った: 1.環境構築

に公開

CVPR2025で発表されたMotionProという論文を読んで実装したときの忘備録です。
結構、面白いものだったのですが、論文に付属しているGRADIOのコードだとほとんどエラーになるため、完全にコマンドラインで動くものを作ったものの紹介、それをGOOGLE COLABで動かした実装の手順をまとめたものを記事にしました。
推論はすべてGOOGLECOLABで、学習やベンチマークでの評価はどうしてもGOOGLECOLABではできなかったので、ローカルでのGPUでやる方法を実行したものを紹介します。
(ちなみに推論で最低でもL4相当、20GB以上のVRAMは必要になります)

NVIDIAドライバー、CUDA,PYTHONのバージョン

COLAB以外にLOCAL(EC2 Ubuntu24.04)
ではpyenvにてpython3.10.16の環境で実施してます。
論文の環境ではpython3.10.0ですが少なくとも推論は2025年9月4日時点で
以下のCOLAB環境でもうごいているようです

!nvidia-smi

!nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Jun__6_02:18:23_PDT_2024
Cuda compilation tools, release 12.5, V12.5.82
Build cuda_12.5.r12.5/compiler.34385749_0
!python --version
Python 3.12.11

ちなみにEC2での環境が以下です

# nvidia-smi

# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Tue_May_27_02:21:03_PDT_2025
Cuda compilation tools, release 12.9, V12.9.86
Build cuda_12.9.r12.9/compiler.36037853_0
# python --version
Python 3.10.16

## 環境設定
環境設定ですが、基本的にローカルでもGOOGLE COLABでも同じです。
https://github.com/takeofuture/ResearchPaper_MotionPro
の 1_環境構築.ipynb にまとめてありますが基本的には以下です。
論文付属のGITサイトにも書いてますがそのままだと一部インストールがうまくいかないので若干修正しています。https://github.com/HiDream-ai/MotionPro

# git clone https://github.com/HiDream-ai/MotionPro.git
# cd MotionPro
# pyenv activate motionpro  #私はpyenvをつかってますがお使いのパッケージに合わせて環境をactivateしてください

ここでrequirements.txtでimportlibをコメントアウトしてdeepspeed==0.15.4を追加します。
あとモデルや学習データをダウンロードコード実行のため、huggingface_hubも追加しておきます。

tqdm
torch>=2.0.1        
gradio==3.47.1      
pytorch-lightning==1.5.0  
timm==0.6.7           
transformers==4.47.1
xformers==0.0.28 
av==12.0.0
webdataset==0.2.48
opencv-python
#importlib #削除もしくはコメント
einops
scipy
imageio
colorlog
kornia
open_clip_torch
omegaconf
decord
av
termcolor
test-tube
iopath
deepspeed==0.15.4 #追加、バージョン指定で
huggingface_hub #ダウンロード用

ライブラリをインストールします

(motionpro)$ pip install -r requirements.txt

次に、モデルの重みファイルを置く場所およびコマンドで動かすときのinput, outputフォルダーも作っておきます。

(motionpro)$ mkdir -p "/content/drive/MyDrive/YOURFOLDER/MotionPro/models/svd_ckpt"
(motionpro)$ mkdir -p "/content/drive/MyDrive/YOURFOLDER/MotionPro/models/motionpro_ckpt"
(motionpro)$ mkdir -p "/content/drive/MyDrive/YOURFOLDER/MotionPro/input"
(motionpro)$ mkdir -p "/content/drive/MyDrive/YOURFOLDER/MotionPro/output"

次にいかのコードを実行して、モデルをダウンロードします
*model_download.py

from huggingface_hub import snapshot_download, hf_hub_download
base = "MotionPro/models"
# ❶ SVD (img2vid) フォルダごと取得
svd_dir = snapshot_download(
    repo_id="stabilityai/stable-video-diffusion-img2vid",
    local_dir=f"{base}/svd_ckpt",            # ← here
    resume_download=True,
    local_dir_use_symlinks=False,
)
# ❷ MotionPro の .pt だけ取得
motion_ckpt1 = hf_hub_download(
    repo_id="HiDream-ai/MotionPro",
    filename="MotionPro-gs_16k.pt",
    local_dir=f"{base}/motionpro_ckpt",      # ← and here
    resume_download=True,
)
motion_ckpt2 = hf_hub_download(
    repo_id="HiDream-ai/MotionPro",
    filename="MotionPro_Dense-gs_14k.pt",
    local_dir=f"{base}/motionpro_ckpt",
    resume_download=True,
)
(motionpro)$ python model_download.py

うまくいかない場合は以下から手動でダウンロードして設置してください。うまくいくはずではありますが。
https://huggingface.co/HiDream-ai/MotionPro/blob/main/MotionPro-gs_16k.pt
https://huggingface.co/HiDream-ai/MotionPro/blob/main/MotionPro_Dense-gs_14k.pt

学習データのダウンロード(COLAB環境では私は学習コードは機能できてません)
**data_download.py

from huggingface_hub import snapshot_download
snapshot_download(
    repo_id="HiDream-ai/MotionPro",
    local_dir="hf_repo_tmp",                       # 保存先ローカルフォルダ
    local_dir_use_symlinks=False,           # シンボリックリンクを使わず実ファイルで取得
    allow_patterns=["data/*"],             # data フォルダ内の全ファイルを対象
)
(motionpro)$ python data_download.py
(motionpro)$ mv hf_repo_tmp/data ./
(motionpro)$ rm -rf hf_repo_tmp

次回は付属コードのGRADIOを試した話です。
https://zenn.dev/takeofuture/articles/12e4fed8ba0e61
ただし付属コードのGRADIOはうまく動かないのと使いずらいので飛ばしていただき、動くように改修した3回目の記事にとんでいただいてもかまいません。
https://zenn.dev/takeofuture/articles/2a598b801f3da6

Discussion