deep-motion-editing

GitHub
1.7k 262 中等 3 次阅读 3天前BSD-2-Clause开发框架视频
AI 解读 由 AI 自动生成,仅供参考

deep-motion-editing 是一款基于深度学习的开源库,专为 3D 角色动画的编辑与渲染设计。它实现了从动作文件读取、智能编辑到最终渲染的全流程自动化。

在动画制作中,不同骨骼结构的角色往往难以复用同一套动作,且手动调整风格耗时费力。deep-motion-editing 利用 AI 技术解决了这一痛点,提供两大核心功能:动作重定向与动作风格迁移。前者能自动将动作适配到不同骨骼结构的角色身上,后者则支持将特定风格(如舞蹈节奏)应用到新动作中,甚至能从视频中提取风格并转换。这些能力基于 SIGGRAPH 2020 的前沿研究成果,支持跨结构适配及 2D 视频到 3D 动画的风格转换。

该项目适合游戏开发者、3D 动画师以及计算机视觉研究人员使用。虽然需要配置 Python 和 GPU 环境,但官方提供了预训练模型和详细示例,大大降低了实验门槛。对于追求高效动画生产流程或致力于动作生成算法探索的团队而言,deep-motion-editing 是一个极具价值的开源资源。

使用场景

某独立游戏工作室正在制作一款奇幻题材的动画短片,核心需求是将真人动作捕捉数据精准适配到非人形怪物角色上。

没有 deep-motion-editing 时

  • 手动调整骨骼权重耗时极长,极易破坏原始动作的流畅自然感,导致角色僵硬。
  • 不同比例的角色骨架无法直接复用现有动捕数据,技术门槛高且需要大量重复劳动。
  • 想要改变动作风格(如从稳健变为轻快)需重新录制或逐帧修改关键帧,成本高昂。
  • 渲染流程复杂,需频繁在多个软件间切换导出中间文件,版本管理混乱且效率低下。

使用 deep-motion-editing 后

  • 利用深度学习自动完成跨结构重定向,完美保留动作精髓并适配新骨架,无需人工干预。
  • 支持视频关键点到动画的风格迁移,无需昂贵设备即可获取特定运动风格,素材来源更广。
  • 内置 Blender 渲染模块,一键生成可视化结果,大幅缩短从数据到成片的预览周期。
  • 模型处理非线性变形能力强,有效避免了传统方法中常见的关节扭曲和穿模问题。

通过自动化深度编辑流程,它让非专业团队也能高效实现高质量的角色动作适配与风格化创作。

运行环境要求

操作系统
  • Linux
  • macOS
GPU

CPU 或 NVIDIA GPU,需 CUDA 和 CuDNN,具体型号及显存未说明

内存

未说明

依赖
notes需手动下载预训练模型及数据集;可视化与渲染依赖 Blender 2.8+;视频风格迁移需先用 OpenPose 提取 2D 关键点;Blender 运行脚本时需配置 Python 解释器路径以支持外部库。
python>=3.7
PyTorch>=1.5.0
Blender>=2.8
NumPy
SciPy
TensorBoard
OpenPose
deep-motion-editing hero image

快速开始

Deep-motion-editing

Python Pytorch Blender

本库提供了在深度学习中使用 PyTorch 进行 3D 角色动画处理的基础和高级功能。代码包含端到端模块,从读取和编辑动画文件到使用 Blender 进行可视化和渲染。

此处提供的主要深度编辑操作——动作重定向 (Motion Retargeting)动作风格迁移 (Motion Style Transfer),基于两篇发表于 SIGGRAPH 2020 的论文:

Skeleton-Aware Networks for Deep Motion Retargeting: 项目 | 论文 | 视频


Unpaired Motion Style Transfer from Video to Animation: 项目 | 论文 | 视频


本库由 Kfir AbermanPeizhuo LiYijia Weng 编写和维护。该库仍在开发中。

前置要求

  • Linux 或 macOS
  • Python 3
  • CPU 或 NVIDIA GPU + CUDA CuDNN

快速开始

我们提供了预训练模型以及使用指定为 bvh 格式的动画文件的演示示例。

动作重定向 (Motion Retargeting)

Google Drive百度网盘 (ye1q) 下载并解压测试数据集。然后将 Mixamo 目录放置在 retargeting/datasets 内。

要使用预训练模型生成演示示例,请运行

cd retargeting
sh demo.sh

结果将保存在 retargeting/examples 中。

要使用预训练模型重建定量结果,请运行

cd retargeting
python test.py

重定向后的演示结果,包括结构内重定向 (intra-structual retargeting) 和跨结构重定向 (cross-structural retargeting),将保存在 retargeting/pretrained/results 中。

动作风格迁移 (Motion Style Transfer)

要获取演示示例,只需运行

sh style_transfer/demo.sh

结果将保存在 style_transfer/demo_results 中, 其中每个文件夹包含原始输出 raw.bvh 和经过脚部滑行清理 (footskate clean-up) 后的输出 fixed.bvh

从头训练

我们提供了重新训练模型的说明

动作重定向

数据集

我们使用 Mixamo 数据集来训练模型。您可以从 Google Drive百度网盘(4rgv) 下载我们预处理的数据。然后将 Mixamo 目录放置在 retargeting/datasets 内。

否则,如果您想自行下载 Mixamo 数据集或使用自己的数据集,请遵循以下说明。除非特别说明,所有脚本应在 retargeting 目录下运行。

  • 若要自行下载 Mixamo,可参考 优秀教程。您需要下载 fbx 文件(不需要皮肤),并在 retargeting/datasets/Mixamo 下为每个角色创建子目录。在我们的原始实现中,我们下载了 60fps 的 fbx 文件并将其降采样为 30fps。由于我们在训练中使用无配对方式,建议将所有动作分为两组大小相等的集合,并为每组中的每个角色分配大小相等的集合。如果您使用自己的数据,需要确保您的数据集由具有相同 T 姿势 (t-pose) 的 bvh 文件组成。您还应将数据集放在 retargeting/datasets/Mixamo 的子目录中。

  • 进入 retargeting/datasets 目录并运行 blender -b -P fbx2bvh.py 将 fbx 文件转换为 bvh 文件。如果您已经有 bvh 文件作为数据集,请跳过此步骤。

  • 在我们的原始实现中,我们手动分割了 group A 中骨架的三个关节。如果您想遵循我们的流程,请运行 python datasets/split_joint.py。此步骤是可选的。

  • 运行 python datasets/preprocess.py 通过移除一些不太重要的关节(例如手指)来简化骨架,并将 bvh 文件转换为 npy 文件。如果您使用自己的数据,需要在 retargeting/datasets/bvh_parser.py 中定义简化的结构。此信息目前硬编码在代码中。有关更多详细信息,请参阅源文件中的注释。让您的数据集工作的步骤有四个。

  • 训练和测试的角色在 retargeting/datasets/__init__.py 中是硬编码的。如果您想使用自己的数据集,需要修改它。

训练

准备好数据集后,只需运行

cd retargeting
python train.py --save_dir=./training/

它将使用默认超参数 (hyper-parameters) 训练模型,并将训练好的模型保存在 retargeting/training 目录中。更多选项可在 retargeting/option_parser.py 中找到。您可以通过运行以下命令使用 TensorBoard 监控训练进度

tensorboard --logdir=./retargeting/training/logs/

动作风格迁移

数据集

  • Google DriveBaidu Drive (提取码:zzck) 下载数据集。数据集由两部分组成:一部分来自 Xia et al. 提出的动作风格迁移数据集,另一部分是我们的 BFA 数据集,其中两部分都包含针对 CMU mocap 数据集 (动作捕捉数据集) 标准骨架重定向的 .bvh 文件。

  • 将 .zip 文件解压到 style_transfer/data

  • 为训练预处理数据:

    cd style_transfer/data_proc
    sh gen_dataset.sh
    

    这将在 style_transfer/data 中生成 xia.npz, bfa.npz

训练

下载数据集后,直接运行

python style_transfer/train.py

来自视频的样式

要在测试阶段使用自己的视频运行我们的模型,您首先需要使用 OpenPose (姿态估计工具) 从视频中提取 2D 关节位置,然后按照示例演示中使用生成的 JSON 文件。

Blender 可视化

我们提供了一个简单的 Blender Python API (2.80) 包装器用于渲染 3D 动画。

前置条件

从 blender.org 分发的 Blender 版本在所有平台上都包含完整的 Python 安装,这意味着您在系统 Python 中安装的任何扩展都不会出现在 Blender 中。

要使用外部 Python 库,您可以直接将新包安装到 Blender 的 Python 发行版中。或者,您可以通过以下方式更改默认的 Blender Python 解释器:

  1. 删除内置的 python 目录:[blender_path]/2.80/python

  2. 创建一个符号链接或直接复制一个 python 解释器到 [blender_path]/2.80/python。例如:ln -s ~/anaconda3/envs/env_name [blender_path]/2.80/python

该解释器应为 python 3.7.x 版本,并至少包含:numpy, scipy。

使用方法

参数

由于 Blender 的 argparse 系统,参数列表应与 python 文件用额外的 '--' 分隔,例如:

blender -P render.py -- --arg1 [ARG1] --arg2 [ARG2]

engine: "cycles" 或 "eevee"。更多详细信息请参考 Render 部分。

render: 0 或 1。如果设置为 1,数据将在 Blender GUI 之外渲染。如果您需要手动调整相机,建议使用 render = 0。

完整参数列表可以通过以下命令显示: blender -P render.py -- -h

加载 bvh 文件 (load_bvh.py)

要加载 example.bvh,请运行 blender -P load_bvh.py。请先完成准备工作。

注意,目前它使用具有 5 个顶点的 primitive_cone 作为肢体。

注意,Blender 和 bvh 文件有不同的 xyz 坐标系。在 bvh 文件中,“高度”轴是 y 轴,而在 Blender 中它是 z 轴。load_bvh.pyBVH_file 类初始化函数中交换了轴。

目前 bvh 文件中的所有 End Sites 都被丢弃,这是因为 utils/ 中使用的外部代码。

加载 bvh 文件后,其高度被归一化为 10。

材质、纹理、灯光和相机 (scene.py)

此文件允许向场景添加棋盘格地板、相机、“太阳”,并为角色应用基本颜色材质。

地板放置在 y=0 处,如果需要(取决于 bvh 文件中的角色参数),应手动修正。

渲染

我们支持 Blender 2.80 提供的两种渲染引擎:Eevee 和 Cycles,权衡在于速度和画质。

Eevee(左)是一种快速、实时的渲染引擎,提供有限的画质;而 Cycles(右)是一种较慢、无偏置的光线追踪 (ray-tracing) 渲染引擎,提供照片级渲染结果。Cycles 还支持 CUDA 和 OpenGL 加速。

蒙皮

自动蒙皮

我们提供了一个 Blender 脚本,用于对输出骨架应用“蒙皮”(skinning)。您首先需下载对应目标角色的 fbx 文件(例如,"mousey")。然后,只需运行即可获取蒙皮动画:

blender -P blender_rendering/skinning.py -- --bvh_file [bvh file path] --fbx_file [fbx file path]

注意,该脚本可能无法对所有 fbx 和 bvh 文件正常工作。如果失败,您可以尝试调整脚本或遵循下面的手动蒙皮指南。

手动蒙皮

这里我们提供一个“快速且粗糙”的指南,说明如何在 Blender 中将皮肤应用到生成的 bvh 文件:

  • 下载对应重定向角色的 fbx 文件(例如,"mousey")
  • 将 fbx 文件导入 Blender(取消勾选“import animation"选项)
  • 合并网格 - 选择所有部分并合并它们 (ctrl+J)
  • 导入重定向后的 bvh 文件
  • 点击“上下文” (菜单栏) -> “休息位置” (在骨架下)
  • 手动对齐网格和骨架(旋转 + 平移)
  • 选择骨架和网格(骨架对象应高亮显示)
  • 点击 对象 -> 父级 -> 带自动权重 (或 Ctrl+P)

现在骨架和皮肤已绑定,动画可以进行渲染。

致谢

utils 目录中的代码主要取自 Holden et al. [2016]
此外,部分 MoCap 数据集 (动作捕捉数据集) 取自 Adobe Mixamo 以及 Xia et al. 的工作。

引用

如果您在本研究中使用此代码,请引用我们的论文:

@article{aberman2020skeleton,
  author = {Aberman, Kfir and Li, Peizhuo and Sorkine-Hornung Olga and Lischinski, Dani and Cohen-Or, Daniel and Chen, Baoquan},
  title = {Skeleton-Aware Networks for Deep Motion Retargeting},
  journal = {ACM Transactions on Graphics (TOG)},
  volume = {39},
  number = {4},
  pages = {62},
  year = {2020},
  publisher = {ACM}
}

and

@article{aberman2020unpaired,
  author = {Aberman, Kfir and Weng, Yijia and Lischinski, Dani and Cohen-Or, Daniel and Chen, Baoquan},
  title = {Unpaired Motion Style Transfer from Video to Animation},
  journal = {ACM Transactions on Graphics (TOG)},
  volume = {39},
  number = {4},
  pages = {64},
  year = {2020},
  publisher = {ACM}
}

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架