MotioNet
MotioNet 是一款基于深度神经网络的开源工具,专为从单目视频中重建高质量 3D 人体骨骼运动而设计。它有效解决了传统方法在从普通 2D 视频恢复 3D 动作时,常出现的骨骼结构扭曲、动作不自然或需要繁琐后期处理等难题。
该工具的核心亮点在于其独特的运动学网络架构,能够直接输出符合生物力学约束的 3D 骨骼数据,并无需任何后处理步骤即可转换为标准的 BVH 动画文件,极大地简化了工作流程。此外,MotioNet 还引入了脚部接触信号和对抗训练机制,显著提升了在复杂真实场景(Wild Videos)下的动作还原度与稳定性。
MotioNet 主要面向计算机视觉研究人员、图形学开发者以及动画制作专业人士。对于研究者而言,它提供了复现顶级会议论文(ToG 2020)成果的完整代码与预训练模型;对于开发者和动画师,只要具备基础的 Linux 环境和 NVIDIA GPU 资源,即可利用 OpenPose 等工具提取 2D 关键点后,快速将实拍视频转化为可用的 3D 动画数据,为游戏开发、影视特效及虚拟现实内容创作提供高效的技术支持。
使用场景
一家小型独立游戏工作室正在为新款动作游戏制作角色动画,但团队缺乏昂贵的动作捕捉设备和专业动捕演员,只能依靠网上找到的单目视频素材进行参考。
没有 MotioNet 时
- 硬件门槛极高:传统方案必须租赁专业光学动捕棚或购买深度相机,初创团队难以承担数万元的设备成本。
- 人工转换耗时:动画师需要逐帧手动将视频中的二维动作“脑补”并关键帧化到三维骨骼上,制作一个奔跑循环需耗费数天。
- 数据格式割裂:即便提取了姿态,往往还需要繁琐的后处理脚本才能转换为游戏引擎通用的 BVH 格式,容易丢失运动细节。
- 自然度不足:手工还原的动作常出现脚部滑步、关节扭曲等不物理现象,反复修调严重拖慢开发进度。
使用 MotioNet 后
- 零硬件成本启动:仅需普通摄像头拍摄的单目视频,配合开源的 OpenPose 提取二维关键点,即可直接驱动三维重建流程。
- 自动化高效产出:MotioNet 利用深度神经网络直接推理,几分钟内就能将视频序列转化为完整的三维骨骼运动数据。
- 无缝引擎集成:模型输出无需任何后处理步骤,直接生成标准的 BVH 文件,可立即导入 Unity 或 Unreal Engine 使用。
- 运动逻辑自洽:基于骨架一致性的算法设计,自动修正了脚部接触和关节约束问题,生成的奔跑、跳跃动作流畅且符合物理规律。
MotioNet 让独立开发者仅凭一段手机视频,就能以极低成本获得电影级的三维角色动画资产。
运行环境要求
- Linux
必需:NVIDIA GPU,需安装对应的 CUDA 和 CuDNN(具体版本需根据安装的 PyTorch 版本匹配,README 未指定具体显存大小)
未说明

快速开始
MotioNet
本库提供了MotioNet的源代码,该模型发表于2020年的《计算机图形学汇刊》(ToG),是一种基于单目视频重建三维骨骼人体运动的运动学深度神经网络。该网络基于通用的运动表示设计,其直接输出无需任何后处理即可转换为bvh文件。
MotioNet:基于骨骼一致性的单目视频三维人体运动重建:项目 | 论文 | 视频
前置条件
- Linux
- Python 3
- NVIDIA GPU + CUDA CuDNN
- 2D姿态检测工具(用于在真实视频上进行评估,目前支持:Openpose)
根据你的CUDA版本,选择合适的PyTorch版本并安装,然后运行以下命令安装其他依赖包:
pip install -r requirements.txt
快速开始
我们提供了一个预训练模型和几个演示示例,展示了我们的框架如何工作。要运行演示,请下载:1. 预训练模型,从这里下载,并将其放置在**./checkpoints文件夹中;2. 训练数据,从这里下载,并将其放置在./data**文件夹中。然后简单地运行:
mkdir output
python evaluate.py -r ./checkpoints/wild_gt_tcc.pth -i demo
生成的bvh文件将位于**./output**文件夹中。请注意,对于这些示例,我们已经使用Openpose从视频中提取了2D关键点,但如果您想使用自己的视频,则需要自行完成这一步骤。所有原始视频都可以在我们的视频中找到。
数据准备
训练数据
完整流程中包含两个数据集,一个是Human3.6m,另一个是CMU动作捕捉数据。h36m数据对训练和测试都是必需的,因此请先准备好它。
对于h36m数据,您可以按照h36m-fetch的说明下载原始文件。获取解压后的文件后,可以运行我们的Python脚本将其转换为numpy矩阵:
python ./data/prepare_h36m.py
对于CMU数据,我们仅选择了310段用于训练。您可以在data/cmu_file_list中找到文件列表,将它们收集到一个文件夹中,然后运行我们的脚本提取有用的姿态数据。
python ./data/prepare_cmu.py
所有步骤都会产生相同的结果,但我们建议您自行处理数据。我们也提供了链接[Google云端硬盘],可以直接下载这些数据。然后将它们放入*./data*文件夹中。
预训练模型
目前有两个可用的预训练模型,一个用于在h36m数据上进行评估,使用地面真值2D检测;另一个用于处理真实视频,采用了置信度图、足部接触信号和对抗训练等技术。
通过链接[Google云端硬盘(已更新!)]下载后,将其放置在*./checkpoints*文件夹中。
未来几天还将发布更多预训练模型。
在h36m上的测试
一旦您有了h36m数据和预训练模型,就可以运行脚本在h36m数据上评估我们的模型。
# 仅评估,不考虑接触和平移
python evaluate.py -r ./checkpoints/h36m_gt.pth -i h36m -o [output_folder]
# 包括平移
python evaluate.py -r ./checkpoints/h36m_gt_t.pth -i h36m -o [output_folder]
结果将被放置在*./output*中的一个子文件夹中,文件夹名称由模型参数组合而成,有助于理解训练细节。将生成两种结果:error.txt和BVH文件。
在error.txt中,您可以找到与我们展示相似的性能——使用地面真值检测时约为53mm(当通道参数为2048时为52mm,但这会浪费模型大小和训练时间)。此外,还会随机存储2个bvh文件,您可以使用Blender查看可视化效果。
平移效果在行走或遛狗等动作中会非常明显。
(注意:我们使用的训练数据处于相机空间,因此在Blender的世界空间中观察预测姿态时,方向可能会显得奇怪。您需要在Blender中旋转用户视图或骨骼对象。)
在真实视频上的测试
一旦您有了h36m数据、2D检测数据和预训练模型,就可以运行脚本在真实视频上评估我们的模型。目前我们提供了Openpose与我们的网络之间的接口,对CPN和Detectron的支持也将很快推出。
运行Openpose后,所有的2D姿态文件将被存储在一个文件夹中,然后您可以将该文件夹路径作为输入参数运行Python脚本,结果也将以bvh格式保存在*./output*的一个子文件夹中。
目前我们对2D的输入和输出都未进行任何平滑处理,您可以自行进行平滑处理以获得如视频中所示的更好效果,但在这里我们希望展示原始的生成结果。
python evaluate.py -r ./checkpoints/wild_gt_tcc.pth -i [openpose_results_folder]
从头开始训练
我们提供了重新训练模型的指导说明。
训练涉及三种参数:运行时参数、网络定义和训练参数,详细信息可在train.py中找到。我们还提供了一个默认的网络定义和训练器配置,可在*./config_zoo/default.json中找到。在开始训练之前,您需要将此文件中的save_dir*更改为合适的路径。
如果您想复现我们预训练模型的结果,请运行以下命令:
# h36m评估,不考虑平移和接触
python train.py -n h36m --kernel_size 5,3,1 --stride 1,1,1 --dilation 1,1,1 --channel 1024
# h36m,考虑平移
python train.py -n h36m --kernel_size 5,3,1 --stride 1,1,1 --dilation 1,1,1 --channel 1024 --translation 1
# 真实视频
python train.py -n wild -d 1 --kernel_size 5,3,1 --stride 3,1,1 --dilation 1,1,1 --channel 1024 --confidence 1 --translation 1 --contact 1 --loss_term 1101
训练可视化:
我们使用 tensorboardX 来可视化训练过程中的损失。在训练过程中,您可以进入 checkpoint 文件夹并运行以下命令:
tensorboard --logdir=./
输出:
TensorBoard 1.15.0 at http://localhost:6006/ (按 CTRL+C 退出)
然后您可以在本机访问该链接 http://localhost:6006/ 查看可视化结果。

训练技巧:
为了获得不同的模型效果,您可以尝试以下几点:
- 我们并未使用专门的足部接触数据集进行训练,而是通过 H36M 数据集中平均的足高和速度来提取接触信息。在该 接触检测函数 中,有一个魔术数字 20,您可以自行调整。如果这个数值越大,则会有更多帧被判定为“接触”状态。这会增强对地面的吸引力,因此当视频中包含大量足部动作时,结果可能会变差。
- 我们是在帧数不固定的片段上训练模型的,因此您可以将测试视频的所有帧直接输入网络,而无需进行裁剪。
局限性
- 摄像机运动:模型是在包含 4 个摄像头的 H36M 数据集上训练的,网络预测的是相机空间中的姿态。原因在于,如果我们在世界坐标系中预测姿态:不同的 3D 姿态与不同的摄像机视角组合可能产生相同的 2D 投影。因此,给定相同的 2D 姿态时,预测出的 3D 姿态可能存在歧义。当摄像机移动时,也会出现类似的情况——有时看起来合理,但实际上并不正确。
- 对 2D 检测的依赖:输入是来自其他实现的 2D 检测结果,尽管我们使用置信度图作为适配器,但当 2D 检测失败时,结果仍会受到影响。这种情况通常出现在快速运动或遮挡场景中。
- 动画效果:如论文所述,损失函数并未直接作用于旋转部分,因此即使从位置上看效果不错,旋转的绝对值也可能显得异常。这一问题将在后续版本中得到解决。
致谢
正向运动学层的代码源自 tensorflow 上的 cvpr2018nkn,我们在自己的代码中重新实现了 PyTorch 版本。
引用
如果您在研究中使用了本代码,请引用我们的论文:
@article{shi2020motionet,
title={MotioNet: 从单目视频中基于骨骼一致性重建 3D 人体运动},
author={Shi, Mingyi and Aberman, Kfir and Aristidou, Andreas and Komura, Taku and Lischinski, Dani and Cohen-Or, Daniel and Chen, Baoquan},
journal={arXiv 预印本 arXiv:2006.12075},
year={2020}
}
常见问题
相似工具推荐
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
funNLP
funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。
cs-video-courses
cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。