MagicDance
MagicDance(又名 MagicPose)是一款基于扩散模型的开源 AI 工具,专注于实现高保真的人体姿态与面部表情迁移。它能够将源视频中人物的动作和表情自然地“移植”到目标人物身上,同时完美保留目标人物的身份特征,生成逼真且连贯的视频内容。
传统视频重定向技术常面临身份丢失、背景扭曲或无法处理复杂视角(如背部姿态)等难题,而 MagicDance 通过引入“身份感知扩散”机制,有效解决了这些痛点。即使在野外复杂场景下,它也能精准还原人体背面细节,并生成丰富多样的面部微表情,效果显著优于同类方案如 MagicAnimate 或 Animate Anyone。
该工具特别适合计算机视觉研究人员、AI 开发者以及数字内容创作者使用。研究人员可基于其开放的训练与推理代码探索扩散模型在时序生成中的新应用;开发者能将其集成至虚拟主播、影视特效或游戏动画管线中;设计师则可利用它快速制作高质量的动态素材。作为发表于 ICML 2024 的前沿成果,MagicDance 不仅提供了详尽的技术文档,还支持多 GPU 训练及自定义数据集微调,是连接学术创新与产业应用的有力桥梁。
使用场景
某短视频特效团队需要为虚拟偶像制作一段高难度舞蹈视频,要求角色在大幅度转身和复杂肢体动作中,依然保持面部表情生动且人物身份特征不丢失。
没有 MagicDance 时
- 表情僵硬失真:传统重定向技术在处理大幅度的舞蹈动作时,往往无法同步迁移细腻的面部微表情,导致虚拟偶像看起来像“面具人”,缺乏感染力。
- 身份特征丢失:当角色做出背身、侧身等大角度姿态时,生成模型容易混淆人物特征,导致衣服纹理错乱或脸部五官变形,甚至无法生成背部细节。
- 后期修复成本高昂:为了修正动作与表情的不协调,动画师需要逐帧手动调整骨骼绑定和表情参数,制作一条 15 秒的视频可能需要数天时间。
- 多视角一致性差:尝试复用现有动作库时,不同镜头下的角色外观会出现闪烁或跳变,难以保证视频整体的视觉连贯性。
使用 MagicDance 后
- 表情自然同步:MagicDance 利用身份感知扩散模型,能精准将参考视频中丰富的面部表情(如眨眼、微笑)迁移到目标角色上,即使在大动作下表情依然生动自然。
- 完美保留身份特征:无论角色如何旋转或做出高难度姿势,MagicDance 都能稳定保持人物的服饰细节和五官特征,成功生成清晰的背部画面,杜绝了“换脸”般的违和感。
- 自动化高效产出:团队只需提供一张角色参考图和一段动作视频,MagicDance 即可自动完成高质量的重定向,将原本数天的制作周期缩短至几分钟。
- 极佳的时空一致性:生成的视频在连续帧之间过渡平滑,彻底消除了画面闪烁问题,直接达到成品级输出标准,无需额外修图。
MagicDance 通过身份感知的扩散技术,彻底解决了虚拟人生成中动作与表情难以兼得的痛点,让高保真数字人视频创作变得像编辑文档一样简单高效。
运行环境要求
- Linux
必需 NVIDIA GPU,支持多卡训练 (DistributedDataParallel),示例命令使用 8 张显卡,需 CUDA 11.7
未说明

快速开始
MagicPose:具有身份感知扩散的逼真人体姿态与面部表情重定向
常迪1
·
施一春2
·
高权凯1
·
徐洪毅2
·
傅洁西卡1
·
宋国贤2
·
严青2
·
朱义哲2
·
杨晓2
·
穆罕默德·索莱曼尼1
·
1南加州大学 2字节跳动公司
新闻
- [2024.04.03] 更新与同期工作的对比结果。
- [2024.02.21] 更新多GPU训练、数据加载器以及使用自有数据进行训练的说明。
- [2024.02.15] 发布训练与推理代码。
- [2024.02.02] 发布更新后的论文——MagicPose。方法和数据完全一致。
- [2023.11.18] 发布MagicDance论文及项目页面。
相关开源工作
- Disco,来自微软
- MagicAnimate,来自字节跳动新加坡团队
与同期工作的对比
与Animate Anyone的对比
与MagicAnimate的对比
MagicPose与MagicAnimate在面部表情编辑上的对比。MagicAnimate无法生成多样化的面部表情,而MagicPose则可以。
MagicPose与MagicAnimate在野外场景下姿态重定向任务上的对比。MagicAnimate无法生成人物背面的姿态,而MagicPose则能够做到。
快速上手
若需对TikTok数据集或您自己的图像与姿态序列进行推理,请下载我们的MagicDance 检查点。
如需进行外观控制预训练,请下载适用于StableDiffusion V1.5的预训练模型。
对于外观解耦的姿态控制任务,请下载预训练的外观控制模型和预训练的ControlNet OpenPose。
预处理后的TikTok数据集可从这里下载。由于OpenPose可能无法检测某些图像中的人体姿态骨架,我们将过滤掉这些失败案例,并在干净的数据上训练我们的模型。
请按以下方式放置预训练权重和数据集:
MagicDance
|----TikTok-v4
|----pretrained_weights
|----control_v11p_sd15_openpose.pth
|----control_sd15_ini.ckpt
|----model_state-110000.th
|----model_state-10000.th
|----...
运行环境
我使用的机器环境为python==3.9、pytorch==1.13.1、CUDA==11.7。您可以根据本地环境选择其他版本的依赖项。
conda env create -f environment.yaml
conda activate magicpose
使用您自己的图像和姿态序列进行推理:
bash scripts/inference_any_image_pose.sh
我们在“example_data”中提供了一些示例图像和姿态,您只需替换inference_any_image_pose.sh脚本中的“local_cond_image_path”和“local_pose_path”参数,即可轻松地使用自己的图像或姿态序列进行推理。以下展示了一些来自域外图像的有趣输出:
推理
在测试集上进行推理:
bash scripts/inference_tiktok_dataset.sh
我们使用与DisCo完全相同的代码来进行指标评估。以下展示了一些由我们的模型生成的示例输出:
训练
外观控制预训练:
bash scripts/appearance_control_pretraining.sh
外观解耦的姿态控制:
bash scripts/appearance_disentangle_pose_control.sh
多GPU训练:
我们已经在Python训练脚本中实现了DistributedDataParallel。如果您希望使用多块GPU而不是您机器上的第一块GPU进行训练,请参阅以下示例脚本:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --master_port 10000 --nproc_per_node 8 train_tiktok.py \
这将使用8块GPU,并启动8个进程(nproc_per_node=8)来进行训练。
使用您自己的视频数据进行训练
要使用您自己的数据集进行训练,首先需要对输入的图像或视频运行openpose,并保存可视化的人体姿态图。然后,按照TikTok数据集中的格式组织这些数据。您也可以参考DisCo-OpenPose预处理或ControlNet-OpenPose,我们在管道中使用的正是相同的姿态ControlNet。 接下来,在dataset/tiktok_video_arnold_copy.py中设置您的数据路径。
您的数据集
|----train_set
|----video_000
|----000.jpg
|----001.jpg
|----002.jpg
...
|----video_001
|----video_002
...
|----pose_map_train_set
|----video_000
|----000.jpg
|----001.jpg
|----002.jpg
...
|----video_001
|----video_002
...
|----val_set
|----pose_map_val_set
|----test_set
|----pose_map_test_set
|----...
一些提示
关于任务
根据我们在该项目中的经验,动作重定向任务是一个非常依赖数据的任务。生成结果高度依赖于训练数据,例如姿态跟踪器的质量、视频序列的数量以及每段视频中的帧数。您可以考虑采用像MagicAnimate中使用的DensePose、Animate Anyone中使用的DWPose或其他几何控制方法,以获得更好的生成质量。我们也尝试过MMPose,它在姿态检测方面表现稍好一些。引入额外的训练数据会带来更好的性能,可以考虑使用其他真人半身或全身数据集,例如TaiChi/DeepFashion,来进行进一步的微调。
关于代码
代码中的大多数参数都比较直观易懂。以下是一些关键参数的说明:
model_config模型架构配置文件的相对或绝对路径。img_bin_limit训练过程中随机选择源图像和目标图像的最大步长。在推理阶段,该值被设置为“all”。control_mode此参数控制推理过程中的Image-CFG。“controlnet_important”表示使用Image-CFG,“balance”则表示不使用。wonoise参考图像在输入到外观控制模型时不会添加噪声。with_text当设置为“with_text”时,文本不会用于训练。(我知道这有点让人困惑,哈哈)finetune_control对外观控制模型(以及姿态ControlNet)进行微调。output_dir用于保存检查点的相对或绝对路径。local_image_dir用于保存图像输出的相对或绝对路径。image_pretrain_dir用于加载外观控制模型检查点的相对或绝对路径。pose_pretrain_dir姿态ControlNet的相对或绝对路径。
引用
如果您觉得我们的工作有用,请考虑引用:
@article{chang2023magicdance,
title={MagicDance: Realistic Human Dance Video Generation with Motions \& Facial Expressions Transfer},
author={Chang, Di and Shi, Yichun and Gao, Quankai and Fu, Jessica and Xu, Hongyi and Song, Guoxian and Yan, Qing and Yang, Xiao and Soleymani, Mohammad},
journal={arXiv preprint arXiv:2311.12052},
year={2023}
}
许可证
我们的代码遵循USC研究许可证进行分发。更多信息请参阅LICENSE.txt文件。
致谢
本研究得到了美国陆军研究办公室的资助,合作协议编号为W911NF-20-2-0053。本文所表达的观点和结论属于作者个人,不应被视为代表美国陆军研究办公室或美国政府的官方政策,无论是明示还是暗示。美国政府有权在不考虑本文任何版权标注的情况下,为政府目的复制和分发本文的副本。
我们的代码参考了多个优秀的开源项目。感谢这些项目将他们的代码公开分享。同时,我们也感谢Tan Wang在基线对比实验中提供的帮助。
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
真实图像 姿态输入 TPS方法 Disco方法 MagicDance方法