Official Code for MotionCtrl [SIGGRAPH 2024]
1,499
stars
36
commits
Python
primary language
Feb 19, 2025
updated
π₯π₯ We release the codes, models and demos for MotionCtrl on Stable Video Diffusion (SVD).
https://github.com/TencentARC/MotionCtrl/assets/19488619/45d44bf5-d4bf-4e45-8628-2c8926b5954a
Official implementation of MotionCtrl: A Unified and Flexible Motion Controller for Video Generation.
MotionCtrl can Independently control complex camera motion and object motion of generated videos, with only a unified model.
More results are in showcase_svd and our Project Page.
More results are in our Project Page.
dataset/camera_posespython -m app --share.conda create -n motionctrl python=3.10.6
conda activate motionctrl
pip install -r requirements.txt
./checkpoints.configs/inference/run.sh and set condtype as 'camera_motion', 'object_motion', or 'both'.condtype=camera_motion means only control the camera motion in the generated video.condtype=object_motion means only control the object motion in the generated video.condtype=both means control the camera motion and object motion in the generated video simultaneously.python -m app --share
WebVid with Object Trajectories
Preparing ParticleSfM. Our experiments is running on CentOS 8.5 and we provide a detailed install note in dataset/object_trajectories/ParticleSfM_Install_Note.pdf.
Moving dataset/object_trajectories/prepare_webvideo_len32.py and dataset/object_trajectories/run_particlesfm_obj_traj.py to ParticleSfM project.
Step 1: Prepare sub-videos with lenth of 32 and size of 256 x 256.
## start_idx and end_idx is used to process a subset of the dataset in different machines parallelly
python prepare_webvideo_len32.py --start_idx 0 --end_idx 1000
Step 2: Get object trajectories
root_dir="WebVid/train_256_32"
start_idx=0
end_idx=1000
CUDA_VISIBLE_DEVICES=0 python run_particlesfm_obj_traj.py \
--root_dir $root_dir \
--start_idx $start_idx \
--end_idx $end_idx \
You can customize object Trajectories with our provided HandyTrajDrawer.
If you make use of our work, please cite our paper.
@inproceedings{wang2024motionctrl,
title={Motionctrl: A unified and flexible motion controller for video generation},
author={Wang, Zhouxia and Yuan, Ziyang and Wang, Xintao and Li, Yaowei and Chen, Tianshui and Xia, Menghan and Luo, Ping and Shan, Ying},
booktitle={ACM SIGGRAPH 2024 Conference Papers},
pages={1--11},
year={2024}
}
The current version of MotionCtrl is built on VideoCrafter. We appreciate the authors for sharing their awesome codebase.
For any question, feel free to email wzhoux@connect.hku.hk or zhouzi1212@gmail.com.
Python
99.6%
Official Code for MotionCtrl [SIGGRAPH 2024]
1,499
stars
36
commits
Python
primary language
Feb 19, 2025
updated
π₯π₯ We release the codes, models and demos for MotionCtrl on Stable Video Diffusion (SVD).
https://github.com/TencentARC/MotionCtrl/assets/19488619/45d44bf5-d4bf-4e45-8628-2c8926b5954a
Official implementation of MotionCtrl: A Unified and Flexible Motion Controller for Video Generation.
MotionCtrl can Independently control complex camera motion and object motion of generated videos, with only a unified model.
More results are in showcase_svd and our Project Page.
More results are in our Project Page.
dataset/camera_posespython -m app --share.conda create -n motionctrl python=3.10.6
conda activate motionctrl
pip install -r requirements.txt
./checkpoints.configs/inference/run.sh and set condtype as 'camera_motion', 'object_motion', or 'both'.condtype=camera_motion means only control the camera motion in the generated video.condtype=object_motion means only control the object motion in the generated video.condtype=both means control the camera motion and object motion in the generated video simultaneously.python -m app --share
WebVid with Object Trajectories
Preparing ParticleSfM. Our experiments is running on CentOS 8.5 and we provide a detailed install note in dataset/object_trajectories/ParticleSfM_Install_Note.pdf.
Moving dataset/object_trajectories/prepare_webvideo_len32.py and dataset/object_trajectories/run_particlesfm_obj_traj.py to ParticleSfM project.
Step 1: Prepare sub-videos with lenth of 32 and size of 256 x 256.
## start_idx and end_idx is used to process a subset of the dataset in different machines parallelly
python prepare_webvideo_len32.py --start_idx 0 --end_idx 1000
Step 2: Get object trajectories
root_dir="WebVid/train_256_32"
start_idx=0
end_idx=1000
CUDA_VISIBLE_DEVICES=0 python run_particlesfm_obj_traj.py \
--root_dir $root_dir \
--start_idx $start_idx \
--end_idx $end_idx \
You can customize object Trajectories with our provided HandyTrajDrawer.
If you make use of our work, please cite our paper.
@inproceedings{wang2024motionctrl,
title={Motionctrl: A unified and flexible motion controller for video generation},
author={Wang, Zhouxia and Yuan, Ziyang and Wang, Xintao and Li, Yaowei and Chen, Tianshui and Xia, Menghan and Luo, Ping and Shan, Ying},
booktitle={ACM SIGGRAPH 2024 Conference Papers},
pages={1--11},
year={2024}
}
The current version of MotionCtrl is built on VideoCrafter. We appreciate the authors for sharing their awesome codebase.
For any question, feel free to email wzhoux@connect.hku.hk or zhouzi1212@gmail.com.
Python
99.6%