人类动作识别是 AI 系统中的一项功能,专为监控、老年人护理和工业监控等安全关键型应用而设计。但是,许多现实世界的数据集受到数据不平衡、隐私限制或对罕见但重要的动作 (如跌倒或事故) 的报道不足的限制。本文中,我将介绍 SynthDa,这是一种模块化合成数据增强工作流,可在数据稀缺和模型泛化之间架起桥梁。

通过使用合成运动序列和视点随机化,SynthDa 无需大规模手动标注即可提高模型的鲁棒性。此深入探讨探讨了 SynthDa 如何生成逼真的训练数据、与 NVIDIA TAO 工具套件集成,并展示了动作识别性能的潜在改进。
这是 NVIDIA 与新加坡理工学院合作开展的 NVIDIA AI 技术中心 (亚太地区南部) 项目。
为何将合成数据用于人类动作识别
人类动作识别是监控、辅助机器人和人机交互等应用的核心。然而,传统的视频数据集通常难以应对三个持久的挑战:类别不平衡、有限的动作多样性和高昂的注释成本。在处理现实世界中难以捕捉或成本高昂的罕见、异常或隐私敏感行为时,这些问题尤为明显。
合成数据提供了可扩展的隐私保护解决方案。我们不依赖大量真实世界的集合,而是从较小的一组真实运动样本中生成变体。这种方法使我们能够通过不常见或关键动作的示例来系统地丰富数据集,从而在边缘情况下提高模型性能,而不会出现过拟合。
通过策略性地使用受控比例的合成视频来增强训练集,我们在保持动作自然分布的同时,增强了对少数类别的识别。这有助于避免过度平衡的陷阱 (例如误报增加) ,并确保模型更好地为现实世界的部署做好准备。
为缓解此问题,我们推出了 SynthDa,这是一个旨在缓解现实世界中数据稀缺问题的可用框架。

什么是 SynthDa?
SynthDa 是专为人类动作识别任务设计的数据增强工作流。它兼容现有的计算机模型,例如 NVIDIA TAO 工具套件 (动作识别网络) ,并提供两种主要增强模式:
- 合成混合:在现实世界的视频和生成式 AI 序列之间进行插补,以生成合成变体。
- 真实混合:在真实序列对之间进行插补,以生成合成变体。
该工作流由用于骨架重定向、3D 人体渲染、场景随机化和输出视频合成的模块化组件组成。图 1 显示了 SynthDa 的高级架构。
SynthDa 通过在真实动作之间生成合成人体动作视频和插值动作混合来缓解数据稀缺的挑战。该工作流支持随机环境和可定制的摄像头角度,以模拟各种条件。
多年来,该项目不断发展,将生成式 AI 融入其工作流程,显著扩展了人类姿势变化的多样性和真实感。其模块化设计使其具有高度适应性,用户可以将 SynthDa 组件集成到现有的工作流中,或将特定模块替换为模型,从而定制系统以满足其独特要求或专门用例。

增强类型和工作流组件
为了生成多样化且逼真的运动数据,AutoSynthDa 在模块化工作流中整合了多种增强策略。
合成混合:借助合成虚拟形象为运动注入活力
合成混合从非常真实的东西开始:以 3D 姿态骨骼捕获的人类运动。但我们不是止步于此,而是通过创意转换流程来传递这一动作。使用 joints2smpl 工具,每个姿态序列都会传输到虚拟环境中令人信服的合成虚拟形象。
为了提高多样性和鲁棒性,每个场景都是随机的。虚拟形象出现在不同的环境、不同的光照条件和独特的摄像头角度下。其结果是丰富的合成视频集合,保留了现实世界的运动模式,同时引入了视觉多样性,帮助模型更好地泛化。
可以将其想象成同时在十几个数字世界中展开的动作捕捉角色扮演游戏。
真正的组合:将动作拼接到新的现实中
并非所有数据增强都需要合成虚拟形象。真正的混合需要一对真实的运动序列,并将它们流畅地混合到新的自然过渡中。此插值过程不仅仅能增加体积。它产生了可能发生在现实世界中但从未记录过的变化。
通过调整插值权重并混合不同的动作,我们可以在不同动作之间产生细微的内部变化或逼真的过渡。这就像根据熟悉的舞蹈动作编排新的舞蹈动作:富有创意、接地气且数据高效。
随机场景和摄像头视角
无论来源是合成还是真实,视觉多样性都能提高鲁棒性。这就是我们为每个渲染视频随机化对象布局、表面纹理和摄像头视角的原因。这些变体有助于模型处理复杂的现实场景,而不会过度拟合到狭窄的条件下。
查找有关随机化场景和自定义选项的更多详细信息。
开始使用 SynthDa
SynthDa 可以作为 Python 包安装。以下步骤总结了设置过程。有关更多详细信息,请参阅我们的 GitHub 资源库:
1. 安装依赖项
pip install -r requirements.txt
2. 克隆所需的存储库
克隆以下资源库并将其放置在项目目录中:
- StridedTransformer-Pose3D
- 文本转动态
- joints2smpl
- 慢速
- 从 Blender 官方版本存档中下载 Blender 3.0
3. 配置设置
在根目录中创建 .env
文件,其中包含每个克隆仓库和 API 密钥的路径。
4. 下载预训练模型
按照 GitHub 文档中的说明下载所有预训练检查点。将其放置在每个存储库各自的文件夹中。
5. 验证每个组件
在运行完整的 SynthDa 工作流之前,请测试每个子模块:
- StridedTransformer:
python demo/vis.py --video sample_video.mp4
- 文本转动态:
python gen_motion_script.py --name Comp_v6_KLD01 --text_file input.txt
- joints2smpl:
python fit_seq.py --files test_motion2.npy
- Blender:使用
./blender -b -P animation_pose.py
测试渲染
6. 使用 running.py 作为指南,生成合成数据样本

7. 自定义优化循环
AutoSynthDa 的一项关键功能是支持迭代优化。用户可以使用来自下游模型性能的反馈来动态优化合成数据质量,而不是依赖于静态增强。
- 生成一次姿势对 开始时,通过以下方式生成合成姿态:- 真实和真实的运动源对,或 – 真实和合成的运动源对 (例如,使用生成式 AI 生成姿态) 这些姿态对可重复用于插值;您无需为每次迭代重新生成姿态。
- 定义循环逻辑 使用模型精度指导选择插值权重。从默认值 (例如 0.5) 开始,然后评估附近的权重,并向性能最佳的权重移动
- 实现 calculate_new_weight (有限差近似值) 为调整插值权重,我们使用简单的有限差分近似值。这通过以较高或较低的权重评估模型准确性来估算改进方向。
8. 使用 NVIDIA TAO 工具套件进行训练和测试
- 假设您已选择 NVIDIA TAO 工具套件,则可以选择在 Docker 中使用以下命令进行训练和测试:
# Sample command for training
action_recognition train -e ./specs/{experiment.yaml} results_dir=./results
action_recognition evaluate -e ./specs/{experiment}.yaml results_dir=./results dataset.workers=0 evaluate.checkpoint=./{path to trained model}.tlt evaluate.batch_size=1 evaluate.test_dataset_dir=./{path to directory} evaluate.video_eval_mode=center
详细了解 NVIDIA TAO 工具套件动作识别网络。
SynthDa 的真实用户
SynthDA 已被研究、学术界和行业的真实用户采用和测试,证明了其在各种动作识别场景中的实用价值。
新加坡国立教育学院 (南洋理工大学) 和 Hwa Chong Institute
在新加坡南洋理工大学旗下国立教育学院 (NIE) 的研究人员的领导下,SynthDa 在现实世界中最具前景的应用之一是在教育领域。SynthDa 正在用于一个正在进行的项目,为学校实验室的科学实验生成合成视频数据。这项工作旨在训练计算机视觉模型,通过监控学生活动和实时识别关键操作 (例如误用实验室设备或程序错误) 来帮助教师。
此项目直接解决了对真实学生视频数据的访问受限问题,这是隐私法规和数据稀缺带来的常见挑战。通过使用模拟真实学生行为的合成视频数据,NIE 的团队正在努力构建更安全、响应更灵敏的 AI 赋能教学工具。
自那时起,该项目已扩展到新加坡一流的中学 — — 华中师范大学,研究人员计划在该大学中试用在实际课堂环境中使用合成数据训练的 AI 模型。Hwa Chong Institute 目前正在与 NIE 的研究团队合作,拍摄学生出于训练和研究目的进行科学实验的真实画面。通过此次合作,SynthDa 在展示合成数据如何使 AI 系统在保护学生隐私至关重要的教育环境中可行且合乎道德的过程中发挥了基础性作用。
日本志贺大学
来自志贺大学 (日本志贺根市) Yoshihisa Lab 的研究人员已经开始探索使用 SynthDa 生成不同的人类运动数据。通过使用 SynthDa 独特的基于 SDG 的插值法,他们可以生成丰富的姿态变化,可导出为 .mp4 或 .fbx 文件。他们的项目专注于使用 SynthDa 和 IoT 等 AI 技术,以确保安全的自行车使用。
日本东京大学 Matsuo-Iwasawa 实验室
东京大学松尾岩泽实验室专注于前沿深度学习研究,通过教育、研究和创业生态系统培养推动未来创新的先驱者。日本东京。目前正在与东京大学松尾岩泽实验室合作探索 SynthDa,重点关注其在现实世界机器人系统中的模仿学习潜力。除了机器人开发之外,该项目还旨在支持更广泛的用例,例如沉浸式环境中的自适应世界建模和多模态学习。
未来工作
未来的工作包括扩展 SynthDa 以支持多人动作,以及针对医疗健康和机器人等特定领域进行微调。SynthDa 旨在进行改进并与您现有的工作流程集成;因此,我们的存储库包含您可以交换和拼接的各个组件,以创建您的 SynthDa 版本。向我们展示您在 SynthDa 上的创作和使用情况,即使您的个人研究项目或研究工作也是如此。
有关更多信息,请访问 SynthDa GitHub 存储库,并阅读有关合成数据的更多信息。SynthDa 演示可在 HuggingFace 上获取。
如果您在项目或基准测试中试用 SynthDa,请告知我们,并通过我们的存储库连接。目前,您可以为哪些应用程序和用例部署 SynthDa?
致谢
新加坡国立教育学院 (南洋理工大学) 、日本滋贺大学、日本东京大学、Chek Tien Tan (SIT) 、Indri Atmosukarto (SIT) 和 Simon See (NVIDIA)
特别感谢以各种方式帮助 SynthDa 的所有其他同事。