计算机视觉/视频分析

借助 NVIDIA Isaac Sim 和 NVIDIA OSMO 构建并编排端到端的合成数据生成工作流

随着机器人需要承担越来越复杂多变的移动任务,开发者需要通过物理精确的仿真工具,来实现跨环境、跨工作负载的无缝迁移。训练用于执行这些任务的机器人策略与模型依赖大量高质量数据,而现实世界中的数据采集通常既昂贵又耗时。因此,借助云端技术规模化生成合成数据,成为加速物理 AI 落地的关键路径。

基于 NVIDIA Isaac Sim 等开源机器人仿真框架,在物理精确的仿真环境中生成合成数据,并结合 NVIDIA Cosmos Transfer 等开放世界基础模型进行数据增强,能够有效弥合真实世界的数据缺口。

若要实现这类工作负载的规模化运行,开发人员可借助 NVIDIA OSMO(面向物理 AI 工作流的开源云原生编排工具)。OSMO 提供了一站式指挥中枢,支持在多样化计算环境中定义、运行并检测任意多阶段的物理 AI 流程。

1. NVIDIA OSMO 工作流可在单一工作流中,跨多计算环境管理多条机器人任务流程

本文将围绕以下内容展开探讨:

  1. 构建仿真环境
  2. 基于 OSMO 平台,借助 MobilityGen 生成合成数据
  3. 基于 OSMO 平台,通过 NVIDIA Cosmos 世界基础模型(WFMs)实现规模化数据增强
  4. 基于 Microsoft Azure,借助 NVIDIA OSMO 实现数据生成流程的云端规模化部署

2. 借助 OSMO Isaac Sim,仅需一个场景即可构建云端规模化的合成数据生成流程

在本地或云端搭建仿真环境

开发者既可在本地 NVIDIA RTX 工作站上,基于 Isaac Sim 构建仿真环境,也可借助 Azure Isaac Sim Development Workstation 等 VDI 开展工作。而通过 NVIDIA OSMO,还能解锁全新使用方式:将 Isaac Sim 以交互式会话形式远程运行,并通过本地设备的 Isaac Sim 流客户端完成连接。

在 Isaac Sim 启动后,下一步需要构建机器人的运行环境。可先通过 NVIDIA Omniverse NuRec 工具导入真实环境资源,再向场景中添加仿真就绪(SimReady)资产,以此为数据生成与模型训练提供具备物理精确性的物体与语义信息。

借助 Omniverse NuRec 重建 3D 数字孪生

Omniverse NuRec 技术套件可基于真实世界的传感器数据,重建并渲染交互式 3D 仿真环境。这类重建环境可广泛应用于机器人、智能驾驶、工业或地理空间等领域,用于合成数据生成、AI 模型训练以及模型行为测试等。

Isaac Sim 支持 NuRec 基于 Gaussian 的渲染技术,涵盖神经辐射场(NeRF)、3D Gaussian Splats(3DGS)与 3D Gaussian Unscented Transforms(3DGUT)三种模式。所有数据均以 OpenUSD 格式渲染,用于仿真场景搭建。用户可在 Isaac Sim 中加载兼容的资产与场景,并通过 OmniNuRecVolumeAPI 属性对渲染过程进行控制。如需了解 NuRec 在机器人领域的更多应用案例,可查阅有关技术文档

向仿真场景添加 SimReady 资产

SimReady 资产是基于 OpenUSD 构建的高精度 3D 模型,内置语义标注、密集描述信息,且基于 USDPhysics 框架赋予了完备的物理属性,可大幅简化机器人仿真环境的搭建流程。

SimReady 仓库场景资产包 01 包含托盘、货架、坡道等海量 USD 格式物体模型,只需通过拖拽操作即可添加至仿真场景。针对机器人及相关应用场景,可进一步查阅物理 AI 数据集获取更多资源。

视频 1 演示了如何在 Isaac Sim 中为场景添加 SimReady 资产。

视频 1. 通过拖拽式操作,为仓库场景添加物理精确的 3D 物体

通过上述方式,开发者可轻松在仿真环境中构建包含多物体的复杂场景。这类仿真环境的核心用途之一,就是为机器人策略训练采集合成数据,相关内容将在下一节详细介绍。

此外,还可尝试 SimReady 标准化工作流,基于 OpenUSD 标准完成 3D 资产规范的设计、验证与落地实施。

基于 OSMO 平台,借助 MobilityGen 生成合成数据

MobilityGen 是基于 Isaac Sim 构建的移动机器人数据生成工作流,支持两种数据采集方式:一是通过键盘、游戏手柄遥控等遥操作;二是基于随机加速度、随机路径跟随等自动化方案。

下文将以案例形式,介绍如何在 Isaac Sim 中基于 OSMO 平台,通过 MobilityGenH1 人形机器人生成训练数据。相关 OSMO 工作流案例可在 NVIDIA/OSMO GitHub 代码库中获取。

该工作流同样适用于四足机器人、自主移动机器人(AMR)等其他机器人形态,且已在 SpotCarter 机器人上完成测试验证。

尽管 MobilityGen 生成的数据可直接用于训练机器人移动策略,但如果数据具备更丰富的视觉多样性,模型性能将得到显著提升。下一节将介绍如何通过 NVIDIA Cosmos 提升数据的视觉多样性,实现数据增强。

MobilityGen 数据生成流程主要包含以下步骤:

  1. 构建 occupancy 图:这是一种基于 grid 的机器人环境表征方法,每个 cell 代表对应区域被障碍物占据的概率。
  2. 记录运动轨迹:移动机器人的运动轨迹,记录了机器人在环境中移动时,每一时刻的位置、速度与姿态信息。
  3. 轨迹回放与数据渲染:可对生成的轨迹进行回放,以此完成数据的评估与可视化。

视频 2 与 视频 3 演示了如何在 Isaac Sim 中借助 MobilityGen 生成合成数据。

视频 2. 为不同机器人形态的移动模型训练构建 occupancy

视频 3. 录制无碰撞路径,并从机器人视角采集 RGB 图像与深度摄像头数据

本案例将采用 Isaac Sim 内置的仓库环境运行 MobilityGen。开发者也可参考前文内容,利用 SimReady 资产搭建自定义仿真环境。

此步骤需借助交互式 OSMO 工作流,在 Isaac Sim 中完成 occupancy 图构建与轨迹数据记录。

任务提交与连接

提交工作流并进入容器的交互式终端,即可开展手动数据录制:

# Submit the YAML definition
osmo workflow submit workflows/mobilitygen_replay.yaml --pool <pool-name>

# When the task logs this line:
# "Isaac Sim Full Streaming App is loaded."

# Run these commands in two separate terminals:
osmo workflow port-forward <workflow ID> isaac-lab --port 47995-48012,49000-49007,49100 --connect-timeout 300

osmo workflow port-forward <workflow ID> isaac-lab --port 47995-48012,49000-49007 --udp --

随后按以下步骤操作:

  • 参考官方文档完成 occupancy 图构建
    • 加载仓库场景资源
    • 生成 occupancy 图
    • 保存地图文件
    • 验证本地路径 ~/MobilityGenData/maps/warehouse_multiple_shelves/ 下是否生成 map.yaml 配置文件与 map.png 图像文件
  • 参考文档完成运动轨迹录制
    • 启用 MobilityGen UI 插件
    • 搭建仿真场景
    • 测试机器人运动控制
    • 启动轨迹录制
    • 验证数据是否已保存至 ~/MobilityGenData/recordings 目录
  • 参考文档完成轨迹回放与数据渲染
    • 轨迹录制完成后(包含机器人位姿等核心数据),即可对仿真场景进行回放
    • 运行 Isaac Sim 内置的 replay_directory.py Python 脚本,执行命令需切换至 Isaac Sim 安装目录
    • 脚本运行完毕后,验证 ~/MobilityGenData/replays 目录下是否生成渲染后的传感器数据,可直接打开文件夹查看数据详情
    • 关于已录制数据的加载与处理示例,可查阅开源项目 MobilityGen GitHub 代码库
    • 建议运行 Gradio 可视化脚本,对录制数据进行可视化查看。
    • 如需了解添加自定义机器人等更多进阶操作,可参考“基于 MobilityGen 实现数据生成”教程

若要实现上述步骤的规模化,可开发自定义脚本,以无界面模式作为 OSMO 工作流运行。

基于 OSMO 平台,通过 Cosmos 完成训练数据增强

通过 MobilityGen 生成数据后,可借助 Cosmos Transfer,将机器人合成数据转换为逼真的视频素材。这一数据增强过程可有效提升数据的视觉多样性,缩小仿真与现实的差距,进而优化模型部署后的实际性能。

3. 合成数据生成工作流包含两大核心环节:基于 MobilityGen 生成合成数据、基于 Cosmos Transfer 完成数据增强,最终输出训练机器人模型所需的高质量数据集

Cosmos Transfer 是一款世界基础模型,可接收 RGB 图像、深度图、分割图等多模态视频输入,生成逼真的视频数据。除输入视频外,用户还可通过文本提示,精准定义生成视频的视觉效果。以下为提示示例:

A realistic warehouse environment with consistent lighting, perspective, and camera motion. Preserve the original structure, object positions, and layout from the input video. Ensure the output exactly matches the segmentation video frame-by-frame in timing and content. Camera movement must follow the original path precisely.

视频 4 与 视频 5 演示了如何基于 MobilityGen 数据运行 Cosmos Transfer,实现数据的视觉多样性增强。

视频 4. 处理 Isaac Sim 合成数据,将仓库场景转换为逼真的训练数据集

视频 5. 生成逼真视频的推理过程

原始运动轨迹录制完成后,即可借助 Cosmos Transfer,执行基于扩散模型的真实感数据增强,从而提升模型从仿真到现实的性能。提交 OSMO 数据增强工作流

osmo workflow submit workflows/cosmos_augmentation.yaml \
    --pool <pool-name>

通过定制工作流与 Python 脚本,结合 LLM 生成多样化提示词,可将此工作流扩展至数千次生成任务。

若遇到 OSMO 相关问题,可查阅官方文档

实验室闭环测试结果显示,相比仅使用合成数据训练的模型,基于合成数据及 Cosmos 增强数据训练的策略模型,性能表现实现显著提升,尤其在以下场景中表现优异:

  • 绕开透明障碍物
  • 规避与背景环境融为一体的障碍物(例如灰色地面上的灰色立柱)
  • 更贴近障碍物行驶,缩短到达目标位置的总路径长度
  • 在低光照环境中完成导航
  • 穿越狭窄通道

Cosmos Transfer 同时支持真实世界视频数据与合成视频数据的增强处理。例如,“基于 Cosmos 实现合成数据集增强”教程演示了如何在 Isaac Sim 中通过 Replicator生成合成数据,并借助 Cosmos 完成数据增强。NVIDIA OSMO Cosmos Transfer 工作流案例展示了如何将 Cosmos Transfer 部署为可扩展、可重复执行的工作流。

云端规模化部署数据生成流程

完成仿真环境构建后,开发者需要一套标准化方案,实现以下目标:支持数千次仿真任务与后处理任务的分布式运行、精准追溯每个数据分片的生成流程、在遇到临时性故障时实现优雅恢复、以及随着导航系统的迭代持续优化场景覆盖范围。

而 NVIDIA OSMO 恰好能够满足上述需求。下文将基于 Azure 案例,介绍具体实现方法。该案例提供了一套面向生产的基准方案,支持在 Azure 上部署 OSMO,并将其与合成数据生成及规模化训练所需的各类云服务集成。

同时,主流云服务提供商(CSPs)与 NVIDIA 云生态合作伙伴(NCPs)的平台均支持部署 OSMO。

如需了解 OSMO 的核心概念与工作流架构,可查阅 NVIDIA OSMO 用户指南

按照 Azure 案例指引完成 OSMO 部署后,在提交任务前,需确保 OSMO CLI 已完成配置,并与指定的集群完成身份验证。

安装 CLI:

pip install osmo-cli

浏览器身份验证与资源访问校验:

# Authenticate with the regional endpoint
osmo login <https://<YOUR_OSMO_URL>>
 
# List and set your compute pool
osmo profile list
osmo pool list
osmo profile set pool <pool-name>

基于 Azure Kubernetes 实现合成数据生成的规模化扩展

合成数据生成工作负载具有突发性强、异构性高、产物数据量大的特点。如果仅对计算资源进行扩容,极易引发系统瓶颈。可靠的扩容方案,需要建立清晰的工作负载边界、配置可预测的资源需求,并依托生产级平台服务实现支撑。

建议联合公司 IT 与运维团队,共同开展容量规划工作。在 Kubernetes 平台上对合成数据生成工作负载进行扩容时,需重点考量以下几个方面:

  • 基于节点池实现工作负载分类隔离:为 OSMO 与 AzureML 分别配置独立的 GPU 资源池;针对仿真密集型合成数据生成任务与模型训练任务,也可按需划分专属资源池。通过节点选择器、污点与容忍度机制,确保工作负载精准调度至目标节点。
  • 合理配置弹性 GPU 资源:为稳态服务预留适量的基础资源池,在开展大规模合成数据生成任务时再弹性扩容 GPU 资源池;合理利用 Spot 资源池提升成本效益。
  • 规划数据产物的吞吐能力:合成数据生成产生大规模传感器数据流与中间产物,需将存储吞吐能力、数据集分区策略、数据生命周期与留存策略,纳入扩容方案的核心设计范畴,而非作为后续补充。
  • 落地全链路可观测性方案:同时检测基础设施指标(GPU 利用率、待调度任务数、节点负载饱和度)与流程健康状态指标(每小时完成场景数、任务失败率、数据集规模增长量),并通过统一的任务 ID 确保数据溯源能力。
  • 实现 OSMO 依赖服务的生产级扩容:根据预期并发量,合理规划 PostgreSQL 与 Redis,同时配置完善的备份与容量规划策略,避免工作流控制层面出现瓶颈。

利用端到端合成数据生成工作流开始开发

NVIDIA 提供丰富的 OpenUSD 资源,帮助开发者加速学习进程。您可以按照自己的进度,从 OpenUSD数字孪生机器人培训课程开始,掌握本文所涉及的核心技能。

针对希望在机器人领域深耕的专业人士,OpenUSD 开发认证提供了专业级考核,可有效验证开发者在基于 OpenUSD 构建、维护与优化 3D 内容流程方面的技术能力。

访问 Cosmos Cookbook,可获取搭建、适配与部署 Cosmos WFMs 的分步工作流、技术方案与实操案例。也可加入开发者社区,与同行交流学习。

欢迎关注即将上线的 OpenUSD Insiders 直播,加入 NVIDIA 开发者社区。欢迎在 InstagramLinkedInXThreads YouTube 平台关注 NVIDIA Omniverse 官方账号,获取最新动态。

立即开始使用 NVIDIA Isaac 库与 AI 模型,开发物理 AI 系统。

观看 NVIDIA CES 直播,了解更多信息。

本文最初发布于 2025 10 月。

标签