Papers › MotionDirector: Motion Customization of Text-to-Video Diffusion Models

MotionDirector: Motion Customization of Text-to-Video Diffusion Models

12 Oct 2023arXiv:2310.08465archive 2025-07-28

Rui Zhao, YuChao Gu, Jay Zhangjie Wu, David Junhao Zhang, Jiawei Liu, Weijia Wu, Jussi Keppo, Mike Zheng Shou

Large-scale pre-trained diffusion models have exhibited remarkable capabilities in diverse video generations. Given a set of video clips of the same motion concept, the task of Motion Customization is to adapt existing text-to-video diffusion models to generate videos with this motion. For example, generating a video with a car moving in a prescribed manner under specific camera movements to make a movie, or a video illustrating how a bear would lift weights to inspire creators. Adaptation methods have been developed for customizing appearance like subject or style, yet unexplored for motion. It is straightforward to extend mainstream adaption methods for motion customization, including full model tuning, parameter-efficient tuning of additional layers, and Low-Rank Adaptions (LoRAs). However, the motion concept learned by these methods is often coupled with the limited appearances in the training videos, making it difficult to generalize the customized motion to other appearances. To overcome this challenge, we propose MotionDirector, with a dual-path LoRAs architecture to decouple the learning of appearance and motion. Further, we design a novel appearance-debiased temporal loss to mitigate the influence of appearance on the temporal training objective. Experimental results show the proposed method can generate videos of diverse appearances for the customized motions. Our method also supports various downstream applications, such as the mixing of different videos with their appearance and motion respectively, and animating a single image with customized motions. Our code and model weights will be released.

PaperPDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2310.08465")

Code

Syntology Ran 14 of 18 code samples harvested from 1 repository linked to this paper; 4 have no recorded run. Of those that ran: 14 ran with no contract checked.

By repository: official repository: 18 samples from 1 repository, 14 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

showlab/MotionDirector officialmentioned on GitHubpytorchApache-2.0 report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

18 samples harvested; 14 ran; 0 honoured the contract we drafted; 4 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

14ran
4unverified

Licence: 0 of the 18 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from showlab/MotionDirector. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

convert_text_enc_state_dict showlab/MotionDirector/utils/convert_diffusers_to_original_ms_text_to_video.py official repository ran Apache-2.0 (permissive) · a59539766c1c5a5a · report
convert_text_enc_state_dict_v20 showlab/MotionDirector/utils/convert_diffusers_to_original_ms_text_to_video.py official repository ran Apache-2.0 (permissive) · 8d4b0c9f8b9a884e · report
create_output_folders showlab/MotionDirector/MotionDirector_train.py official repository ran Apache-2.0 (permissive) · 94c11dbf4942965e · report
filter_dict showlab/MotionDirector/utils/lora_handler.py official repository ran Apache-2.0 (permissive) · 9191602362628ded · report
get_bucket_sizes showlab/MotionDirector/utils/bucketing.py official repository ran Apache-2.0 (permissive) · f37666c50cfeb34b · report
get_noise_pred_single showlab/MotionDirector/utils/ddim_utils.py official repository ran Apache-2.0 (permissive) · 0b088617d5525751 · report
get_prompt_ids showlab/MotionDirector/utils/dataset.py official repository ran Apache-2.0 (permissive) · 6f7c993202e44dda · report
get_text_prompt showlab/MotionDirector/utils/dataset.py official repository ran Apache-2.0 (permissive) · b2a01841e254dd24 · report
get_total_frames showlab/MotionDirector/utils/extract_16frames.py official repository ran fingerprinted Apache-2.0 (permissive) · ec9d9a3b095a1675 · report
inject_trainable_lora showlab/MotionDirector/utils/lora.py official repository ran Apache-2.0 (permissive) · 44f3f2c610c7b72c · report
min_res showlab/MotionDirector/utils/bucketing.py official repository ran fingerprinted Apache-2.0 (permissive) · 40775842d99a25f9 · report
next_step showlab/MotionDirector/utils/ddim_utils.py official repository ran Apache-2.0 (permissive) · fb032d6fa7e6196d · report
read_caption_file showlab/MotionDirector/utils/dataset.py official repository ran Apache-2.0 (permissive) · 00090fcbdd45d352 · report
up_down_bucket showlab/MotionDirector/utils/bucketing.py official repository ran Apache-2.0 (permissive) · bec7ef14686681c0 · report
convert_unet_state_dict showlab/MotionDirector/utils/convert_diffusers_to_original_ms_text_to_video.py official repository unverified Apache-2.0 (permissive) · 754cea3454b8b8da · report
init_prompt showlab/MotionDirector/utils/ddim_utils.py official repository unverified Apache-2.0 (permissive) · a0a4d94af120c56f · report
inject_inferable_lora showlab/MotionDirector/utils/lora.py official repository unverified Apache-2.0 (permissive) · 1516fe29d1f41fc9 · report
inject_trainable_lora_extended showlab/MotionDirector/utils/lora.py official repository unverified Apache-2.0 (permissive) · 1220a3d67e1679cd · report

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Methods

Diffusion

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections