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でも同じです。
の 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
うまくいかない場合は以下から手動でダウンロードして設置してください。うまくいくはずではありますが。
学習データのダウンロード(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を試した話です。
ただし付属コードのGRADIOはうまく動かないのと使いずらいので飛ばしていただき、動くように改修した3回目の記事にとんでいただいてもかまいません。
Discussion