最新资讯
dev.to 你的 Agent Harness 应具备的 17 项能力 dev.to 离线 AI 记忆中 0.8 余弦阈值为何失效 dev.to Kimi K3.1 Pro 开放权重:自托管 2.8T 模型前的开发者清单 dev.to 如何通过工具调用引导模型以提升 Harness 质量 dev.to AI Agent 审计轨迹不等于对话记录 dev.to 精简 MCP server 工具数量:更少工具、更小影响面,双重收益 dev.to 为什么 git checkout 无法撤销 AI 编码 agent 的改动? wechat AI短剧门槛降降降!实测即梦短剧工作室:剧本分镜预演一条龙,伙伴计划长期护航 dev.to 让模型改写文档前,先量化事实保真度 dev.to 回放 153 个 Claude Code 与 Codex 会话,审计 Agent 的生产影响范围 dev.to 银行 77 意图分类最便宜 LLM:GPT-6.1 Terra 每次成功任务 $0.000727 theinformation.com Chesky的副业:Airbnb向CEO新设AI实验室出售IP
多元动态
登录 注册
算力商业 developer.nvidia.com · @Michelle Horton

使用NVIDIA Omniverse NuRec跨车辆平台扩展自动驾驶感知

原文 我的收藏

NVIDIA技术博客探讨了自动驾驶感知栈如何受车辆平台影响,并介绍使用Omniverse NuRec实现跨车型(如SUV到轿车)的感知扩展,旨在提高软件复用性。

AI推荐理由 NVIDIA官方博客,讨论自动驾驶感知栈跨平台扩展,使用Omniverse NuRec,内容专业,但摘要未提供具体方法或数据,对自动驾驶开发者有参考价值,但兴趣度一般。

70

正文

机器人技术 使用NVIDIA Omniverse NuRec跨车辆平台扩展自动驾驶感知 2026年8月31日 作者:Apurv Naman、Mingfei Guo、Dominik Froehlich和Wonsik Han 喜欢 L T F R E AI生成摘要 NVIDIA Omniverse NuRec使用3D高斯泼溅重建真实驾驶场景,并为目标车辆配置渲染新的相机视图。 Hugging Face上的Physical AI NuRec数据集提供超过1,500个神经重建场景,每个场景约20秒长,从六个相机视角捕获。 开发人员将重建场景与目标装备配对,渲染目标视图,使用NVIDIA Harmonizer细化帧,并在输出上训练感知模型。 一个内部自动驾驶程序测量了在新车型上使用NuRec渲染的合成数据训练后,与零样本基线相比,目标检测精度和召回率的相对提升。 NVIDIA/nurec-skills仓库将工作流打包为代理技能,用于下载场景、使用NuRec渲染和应用Harmonizer。 后续步骤 从Physical AI NuRec数据集下载USDZ场景和包含的示例目标装备,开始调整重建场景。 查看NuRec文档了解设置要求、支持的硬件、验证和渲染说明。 使用NVIDIA Harmonizer对渲染帧进行时间一致的序列后处理。 由NVIDIA Nemotron提供支持。AI生成的内容可能不完整地总结信息。请验证重要信息。了解更多 感知栈受承载它的车辆影响。将相同的软件移动到新的车型——例如,从SUV到轿车或产品组合中的其他车辆变体——其对世界的感知会发生变化。传感器位置、校准、视野、遮挡、车身几何、时间和覆盖范围都会改变。交通灯可能出现在帧的不同部分。路缘可能更难看到。覆盖边缘附近的行人可能变得模糊。随着自动驾驶栈扩展到新车型和变体,即使底层感知栈保持不变,开发人员也必须考虑这些差异。 为每个车型收集和标注新的真实世界数据集成本高昂,并且在车辆开发早期可能不可行。新车队可能不可用,罕见条件也不总能捕获。真实世界驾驶数据对于验证系统性能仍然至关重要,但合成数据可以帮助团队在完整目标车型数据集存在之前调整模型。 车型适配挑战是为可能尚不存在的车辆准备感知软件,并在平台变体之间扩展该软件,而无需为每个变体收集和标注大型数据集。 NVIDIA Omniverse NuRec使这一过程更加实用。它从录制的真实驾驶开始,重建每个场景,并为目标车辆配置渲染新的相机视图。 开发人员可以重用真实世界数据来回答以下问题: 这个场景从目标装备的角度看起来会是什么样子? 哪些现有驾驶记录能很好地覆盖新车辆? 几何变化在哪里造成薄弱点? 哪些差距需要真实数据收集? 本文展示了如何使用现有驾驶数据通过以下四个步骤将感知栈适配到新的传感器装备: 将重建驾驶与目标装备配置配对。 渲染目标视图。 使用NVIDIA Harmonizer细化帧。 在输出上训练感知模型。 本教程使用NVIDIA Physical AI NuRec数据集中的重建场景来完成这四个步骤。 NuRec如何支持车型适配 NuRec使用3D高斯泼溅从传感器数据重建真实环境并渲染用于模拟。对于车型适配,NuRec重建由现有车辆捕获的真实驾驶,并从目标车辆的视角渲染新的相机流。 NuRec的两个能力对车型适配特别有用。 新颖视图合成:NuRec可以使用gsplat渲染场景,gsplat通过指定的相机模型投影高斯。此功能使用户能够更改相机外部参数、内部参数、视野和镜头模型,包括针孔、鱼眼和f-theta配置。 可重用场景数据和标注:重建场景保留原始装备轨迹、每个相机的校准、动态对象轨迹和地图数据。这些资产可用于对齐或调整新渲染视图中的对象、车道、交通灯和道路边界等标签。 图1. NuRec车型适配工作流。重建的USDZ场景通过目标车型的传感器装备渲染,使用Harmonizer细化,并用于感知训练 使用NuRec将感知模型适配到新车型 以下工作流展示了开发团队如何通过目标相机装备渲染现有的重建驾驶,细化生成的帧,并准备数据用于感知模型训练。 步骤1. 下载重建场景 Hugging Face上的Physical AI NuRec数据集包含超过1,500个神经重建驾驶场景。每个场景约20秒长,从六个相机视角重建:120度前宽视角、30度前长焦视角、120度左交叉和右交叉视角,以及70度后左和后右视角。 NuRec数据集受门控。接受许可,使用Hugging Face令牌进行身份验证,并下载一个场景。 import os from huggingface_hub import login, snapshot_download login(token=os.getenv("HF_TOKEN")) # 从26.04版本下载一个重建场景(USDZ) snapshot_download( repo_id="nvidia/PhysicalAI-Autonomous-Vehicles-NuRec", repo_type="dataset", allow_patterns="sample_set/26.04_release//*", ) 如果使用编码代理,请克隆NVIDIA/nurec-skills仓库。它包含用于下载Physical AI数据集、使用NuRec渲染和细化输出帧的技能。 git clone https://github.com/NVIDIA/nurec-skills.git 步骤2. 从目标车型的传感器装备渲染 图2. 同一NuRec重建场景从原始相机装备和移动的目标相机装备渲染 本教程使用公共示例中包含的合成目标相机装备。其相机名称、姿态、分辨率和镜头参数是说明性的。 提供的合成装备包含一个目标相机,因此本教程生成一个目标相机流。在装备文件中,每个传感器条目定义冒号分隔的相机名称、图像分辨率、F-Theta镜头模型、内部参数和相机到装备的姿态。 NRE将冒号分隔的名称转换为逻辑相机ID。例如,它将camera:front:synthetic:120fov转换为camera_front_synthetic_120fov。要添加另一个目标相机,请在rig.sensors中添加另一个条目。给它一个唯一的名称,并提供自己的宽度、高度、镜头模型、内部参数和nominalSensor2Rig_FLU变换。 设置输入和输出位置: export SCENE_DIR=/absolute/path/to/scene export SCENE_FILE=.usdz export RIG_DIR=/absolute/path/to/rig export RIG_FILE=minimal-synthetic-target-rig.json export OUTPUT_DIR=/absolute/path/to/output mkdir -p "$OUTPUT_DIR" 将公共NuRec容器固定到其不可变摘要并拉取镜像: export NUREC_IMAGE='nvcr.io/nvidia/nre/nre-ga:26.04.01@sha256:97f43e7130c5636ce3e80ea3184d97f56a87fdd989b05cce42230881dbdea284' docker pull "$NUREC_IMAGE" docker image inspect "$NUREC_IMAGE" --format '{{range .RepoDigests}}{{println .}}{{end}}' 将轨迹导出和渲染作为单独的容器操作运行。导出目标相机轨迹: docker run --rm --gpus all --shm-size=64g \ -v "$SCENE_DIR":/inputs/scene:ro \ -v "$RIG_DIR":/inputs/rig:ro \ -v "$OUTPUT_DIR":/outputs \ "$NUREC_IMAGE" export-custom-rig-trajectory \ --artifact-path="/inputs/scene/$SCENE_FILE" \ --rig-json="/inputs/rig/$RIG_FILE" \ --output=/outputs/custom_rig_trajectories.json 接下来,运行一个目标相机的稀疏渲染以验证设置。在此示例中,选择目标相机camera_front_synthetic_120fov,因为示例目标装备定义了一个前置相机。渲染命令加载导出的轨迹文件,然后使用–camera-id选择要渲染的相机。 USDZ场景是使用六个源相机重建的:120度前宽相机、30度前长焦相机、120度左交叉和右交叉相机,以及70度后左和后右相机。目标相机不需要与任何这些源相机一一对应。它可以使用不同的位置、方向、分辨率、视野或校准,只要其姿态在相同的装备坐标框架中表达,并且其镜头模型受导出器支持。放置在观察轨迹之外或朝向源相机覆盖有限区域的相机可能会产生较低质量的渲染。 本教程使用前置目标相机,要适配另一个视图,例如后左相机,首先在目标装备JSON中添加后左传感器,为其提供后左相机到装备的外部参数,再次导出轨迹,并将其规范化逻辑ID传递给–camera-id。 docker run --rm --gpus all --shm-size=64g \ -v "$SCENE_DIR":/inputs/scene:ro \ -v "$OUTPUT_DIR":/outputs \ "$NUREC_IMAGE" render \ --artifact-path="/inputs/scene/$SCENE_FILE" \ --output-dir=/outputs/smoke \ --custom-rig-trajectory=/outputs/custom_rig_trajectories.json \ --no-replicate-training-views \ --renderer=default \ --image-format=png \ --frame-step=30 \ --image-scale=1 \ --frame-naming=frame-end-timestamp \ --camera-id=camera_front_synthetic_120fov 检查帧以确保姿态、视野和时间戳正确。稀疏渲染通过审查后,使用`–frame-step=1`为所有目标相机渲染完整序列。对目标装备中每个验证过的相机重复–camera-id。 步骤3. 细化渲染帧 神经渲染可能留下与视图相关的伪影、不一致的颜色或色调,以及重建不佳的动态对象。NVIDIA Harmonizer是一个公共的、时间感知的后处理模型,用于纠正NuRec和相关神经渲染中的伪影。它提高了视觉质量,但不会修复不正确的校准、恢复从未重建的场景覆盖,或替代目标相机验证。 NVIDIA/nurec-skills中的nurec-fixer技能涵盖设置、推理、评估和可选的Harmonizer微调。首先,在下载模型之前验证主机。 git clone https://github.com/NVIDIA/nurec-skills.git python nurec-skills/skills/nurec-fixer/scripts/validate_setup.py 在Hugging Face上接受模型许可,克隆Harmonizer仓库,构建其运行时镜像,并下载发布的检查点: git clone https://github.com/NVIDIA/harmonizer.git cd harmonizer docker build -t harmonizer-cosmos-env -f Dockerfile.cosmos . hf auth login ./download_checkpoints.sh test -f models/diffusion_harmonizer.pkl test -d src/checkpoints/nvidia/Cosmos-Predict2-0.6B-Text2Image 一次运行一个相机序列。挂载父渲染目录,以便输出(写在输入目录旁边)在主机上持久化: export HARMONIZER_DIR=/absolute/path/to/harmonizer export RENDER_ROOT=/absolute/path/to/output/render export CAMERA_ID=camera_front_synthetic_120fov docker run --rm --gpus all --ipc=host \ --entrypoint python \ -v "$HARMONIZER_DIR":/work \ -v "$RENDER_ROOT":/frames \ -w /work/src \ harmonizer-cosmos-env \ inference_pix2pix_turbo_harmonizer.py \ --input_image="/frames/$CAMERA_ID" \ --model_path=/work/models/diffusion_harmonizer.pkl \ --model_identifier=harmonized \ --timestep=250 \ --resolution=1024 \ --use_sched 图3. 原始NuRec渲染的并排比较 以及NVIDIA Harmonizer输出。Harmonizer减少了可见的天空伪影并改善了视觉一致性(右侧) 步骤4. 训练感知模型 在为新车系创建NuRec渲染数据集后,在将其纳入感知训练流程之前验证输出。将此新数据集与从车辆收集的真实相机数据类似对待。然后,根据感知模型的需求准备使用。 车系适配程序 NVIDIA在一个内部自动驾驶程序中评估了此工作流程,该程序需要支持新的相机配置。团队拥有来自不同车辆的现有驾驶库,但目标车系数据尚不可用。 图4. 使用目标车系的NuRec渲染合成数据训练后,与零样本基线相比,目标检测精度和召回率的相对提升。VRU指弱势道路使用者 使用NuRec代理技能自动化工作流程 NVIDIA/nurec-skills仓库将主要步骤打包为代理技能。编码代理可以使用physical-ai-datasets定位和下载场景,使用nre渲染它们,并使用nurec-fixer优化输出。 有关端到端示例,请观看神经重建代理技能直播。 视频1. 了解NVIDIA Omniverse NuRec如何使用3D高斯泼溅重建真实驾驶场景并将其渲染用于自动驾驶模拟 公共NVIDIA/nurec-skills仓库包含用于定位Physical AI数据集、使用NCore、运行NuRec和应用DiffusionHarmonizer的技能。nurec-carline-adaptation技能添加了薄兼容性和来源层;它不重新分发NuRec源代码或模型。 git clone https://github.com/NVIDIA/nurec-skills.git 克隆仓库后,询问兼容的编码代理: 使用$nurec-carline-adaptation技能验证此USDZ和经过清理的目标装备,向我展示确切的本地Docker命令,运行稀疏的单相机冒烟测试,如果任何相机或挡风玻璃检查失败,则在完整渲染前停止。 将NuRec应用于现有驾驶数据 重建捕获的驾驶需要来自记录装备的同步视频和来自同一记录的相应元数据。然后必须将源数据组织成一致的布局: clip/ └── raw/ ├── generated/ │ ├── front_wide.mp4 │ ├── front_tele.mp4 │ ├── cross_left.mp4 │ ├── cross_right.mp4 │ ├── rear_left.mp4 │ ├── rear_right.mp4 │ └── rear.mp4 └── clipgt/parquets/ ├── calibration_estimate.parquet ├── egomotion_estimate.parquet └── object_fused.parquet MP4文件来自车辆相机记录器。Parquet文件包含整个相机装备共享的元数据。 输入包含内容典型来源calibration_estimate.parquet相机镜头参数和安装位置相机校准或装备配置导出egomotion_estimate.parquet车辆随时间的位置和方向定位、里程计、VIO或SLAMobject_fused.parquet移动物体、类别、尺寸和轨迹ID感知或标注流程表1. 所需元数据文件、其内容和典型来源 本教程中使用的配套转换器和重建配方需要所有三个Parquet文件。其他NuRec工作流程可能支持没有物体轨迹的重建。这些文件名和Parquet序列化不是NCore要求。如果相同信息存储在JSON、数据库或其他格式中,可以调整公共NCore转换器模板以读取源。 此工作流程假设所选视频已同步并跨越相同的记录间隔。校准数据必须识别每个选定的相机,自我运动数据必须跨越从第一次曝光到最后一次曝光的序列,并且此配方所需的物体轨迹必须与该间隔重叠并使用相同的世界坐标系。语义验证器在转换后运行,并检查生成的NCore序列中的这些关系。 将源数据映射到NCore 下一节中的配套转换器支持上述七视频和三表布局。当文件遵循此模式时,工作流程可以直接继续运行配套转换器。 不支持的源格式需要定制化的公共转换器模板副本,该模板读取源文件并将数据写入NCore。 export CONVERTER_DIR="$WORK_DIR/cosmos-clipgt-converter" cp -R "$NUREC_SKILLS_REPO/skills/ncore/ncore_template" "$CONVERTER_DIR" 模板是代码骨架,不是通用转换器。其源读取器必须将等效信息映射到以下NCore组件: 源数据NCore V4编码相机图像和每帧曝光间隔每个逻辑相机一个CameraSensorComponent相机镜头模型和内参IntrinsicsComponent相机到装备的外参PosesComponent: T_sensor_rig度量自我运动PosesComponent: T_rig_world可选全局参考PosesComponent: T_world_world_global自我遮罩MasksComponent物体观测和轨迹CuboidsComponent表2. 源数据到NCore V4组件的映射 遵循公共NCore坐标约定: 装备:+X向前,+Y向左,+Z向上 相机:+X向右,+Y向下,+Z向前 时间戳:整数微秒 距离:米;姿态:有效的SE(3)变换 保持姿态计算为float64。将本地`world`帧重新基准化,使第一个装备姿态为单位矩阵。对于没有记录帧时间戳的同步恒定帧率视频,帧`i`的名义时间戳为: frame_timestamp_us = anchor_timestamp_us + i * 1,000,000 / fps 如果可用,使用记录的曝光时间戳。名义公式假设MP4流已同步。转换器使用NCore `separate-sensors`配置文件写入序列。此配置文件为每个转换的相机创建一个相机组件存档,并为姿态、内参、遮罩和立方体创建一个共享存档。转换器保留每个相机的实际分辨率 和颜色解释。 运行配套转换器 当源特定转换器随教程仓库分发时,按如下方式运行: export COSMOS_CONVERTER="$TUTORIAL_REPO/tools/cosmos_ncore/build_cosmos_ncore_v4.py" test -f "$COSMOS_CONVERTER" env -u PYTHONPATH "$NCORE_PYTHON" "$COSMOS_CONVERTER" \ --root "$INPUT_ROOT" \ --anchor-us "$ANCHOR_TIMESTAMP_US" \ --sequence-id "$SEQUENCE_ID" \ --fps "$FPS" \ --store-type itar 验证NCore序列 根据转换器的输出契约设置生成的路径: export NCORE_DIR="$INPUT_ROOT/ncore/$SEQUENCE_ID" export NCORE_MANIFEST="$NCORE_DIR/$SEQUENCE_ID.json" export NCORE_VALIDATOR="$TUTORIAL_REPO/tools/cosmos_ncore/validate_cosmos_ncore_v4.py" test -s "$NCORE_MANIFEST" python3 -m json.tool "$NCORE_MANIFEST" > /dev/null 运行源特定验证器: env -u PYTHONPATH "$NCORE_PYTHON" "$NCORE_VALIDATOR" \ --root "$INPUT_ROOT" \ --sequence-id "$SEQUENCE_ID" 然后使用公共NCore查看器检查序列,并打开http://localhost:8080。 export NCORE_REPO=/absolute/path/to/ncore export NCORE_MANIFEST=/absolute/path/to/sequence/.json ( cd "$NCORE_REPO" bazel run //tools/ncore_vis -- \ v4 \ --component-group="$NCORE_MANIFEST" ) 预期输出 单独的传感器NCore V4序列通常包含: / ├── .json ├── build_manifest.json ├── .ncore4.zarr.itar ├── .ncore4-.zarr.itar └── ... 每个转换的相机一个相机存档 共享的`.ncore4.zarr.itar`存档包含姿态、内参、遮罩和立方体等组件。每个`.ncore4-.zarr.itar`存档包含一个转换相机的帧。JSON清单和所有引用的存档形成一个逻辑序列;它们必须保持在一起。 生成NuRec辅助数据 转换后的NCore序列包含记录的传感器测量、校准、姿态和物体轨迹。它还不包含此仅相机重建工作流程所需的推断语义分割、深度和自我遮罩。公共skills/nre说明描述了此阶段,NuRec辅助数据文档定义了数据产品。NGC上的公共nre-tools-ga NGC容器提供推理应用程序。 工作流程使用NRE_AUX_IMAGE标识辅助数据容器,并将其与单独的nre-ga训练和渲染图像区分开。26.04 GA图像通过一个入口点公开多个工具,因此工作流程明确选择ncore-aux-data子命令: export NUREC_AUX_IMAGE=nvcr.io/nvidia/nre/nre-tools-ga:26.04.00 python3 "$NUREC_SKILLS_REPO/skills/nre/scripts/validate_setup.py" --strict docker pull "$NUREC_AUX_IMAGE" docker run --rm --gpus all --shm-size=2g \ --env NGC_API_KEY \ --volume "$NCORE_DIR:/workdir/dataset" \ "$NUREC_AUX_IMAGE" ncore-aux-data \ --dataset-path="/workdir/dataset/$SEQUENCE_ID.json" \ --output-dir=/workdir/dataset \ --segmentation-backend=mask2former \ --depth-backend=depthanythingv2 \ --max-depth-m=80 \ --ego-mask \ --no-lidar-seg-camvis \ --no-seg-logits \ --zarr-store-type=itar \ --store-meta \ --num-threads=auto 所选选项具有明确作用。表3总结了每个所选选项生成的输出。 选项生成产品--segmentation-backend=mask2former.aux.sseg.zarr.itar:每帧语义类别遮罩--depth-backend=depthanythingv2.aux.depth.zarr.itar:度量深度--ego-mask.aux.egomask.zarr.itar:每相机自我车辆排除遮罩--store-meta.aux-meta.json:来自固定图像的已解析辅助设置--no-lidar-seg-camvis禁用LiDAR分割,因为工作流程不包含LiDAR数据表3. 辅助数据选项和生成产品 省略--camera-id处理NCORE_SEQUENCE_JSON中声明的每个相机。选择特定相机需要每个相机一个--camera-id=参数,使用清单中的逻辑相机ID。 辅助数据生成后,重建输入目录包含以下结构: / ├── .json ├── build_manifest.json ├── .ncore4.zarr.itar ├── .ncore4-.zarr.itar └── ... 每个转换的相机一个相机存档 ├── .aux.sseg.zarr.itar ├── .aux.depth.zarr.itar ├── .aux.egomask.zarr.itar └── .aux-meta.json 开始使用 使用以下资源开始将重建场景适配到目标车系。 从Physical AI NuRec数据集下载USDZ场景和包含的示例目标装备。 通过示例装备渲染场景,将装备JSON替换为目标车系配置,然后再次渲染场景。 查看NuRec文档了解设置要求、支持的硬件、验证和渲染说明。 要重建记录的驾驶,请遵循重建AV场景以及NVIDIA/nurec-skills中的NCore转换和辅助数据指南。 使用NVIDIA Harmonizer进行时间一致序列后处理。 公共软件、容器、数据集和模型工件需要适用的NVIDIA NGC或Hugging Face账户并接受其许可证。NuRec运行时在NGC上的nre-ga容器中可用。 喜欢 标签 开发者工具与技术 | 机器人 | 仿真/建模/设计 | 汽车/运输 | Omniverse | 中级技术 | 教程 | 自动驾驶车辆 | Physical AI 关于作者 关于Apurv Naman Apurv Naman是NVIDIA的产品经理,负责领导自动驾驶开发的合成数据生成(SDG)产品。他拥有密歇根理工大学机械工程硕士学位和加州大学伯克利分校哈斯商学院MBA学位。 查看Apurv Naman的所有帖子 关于Mingfei Guo Mingfei Guo是NVIDIA的软件工程师,从事数据生成工作。她的兴趣包括图形、高效机器学习系统和AI基础设施。Mingfei拥有北京大学和斯坦福大学电气工程学士和硕士学位 。 查看Mingfei Guo的所有帖子 关于Dominik Froehlich Dominik Froehlich是NVIDIA自动驾驶团队的感知工程师。他的工作重点是使NDAS感知栈适应不同车辆平台。Dominik拥有德国弗莱贝格大学工程博士学位。他的兴趣包括算法开发、数据科学和人工智能,特别是它们在机器人和汽车挑战中的应用。 查看Dominik Froehlich的所有帖子 关于Wonsik Han Wonsik Han是NVIDIA自动驾驶集团的高级产品经理。他在全球汽车制造商和自动驾驶初创公司拥有超过十年的战略、业务开发和产品管理经验。Wonsik拥有杜克大学MBA学位。 查看Wonsik Han的所有帖子
查看原文(中文正文为 AI 翻译)
Robotics Scale AV Perception Across Vehicle Platforms with NVIDIA Omniverse NuRec Aug 31, 2026 By Apurv Naman, Mingfei Guo, Dominik Froehlich and Wonsik Han Like L T F R E AI-Generated Summary NVIDIA Omniverse NuRec reconstructs real-world driving scenes with 3D Gaussian splatting and renders new camera views for a target vehicle configuration. The Physical AI NuRec Dataset on Hugging Face provides over 1,500 neural-reconstructed scenes, each about 20 seconds long and captured from six camera views. Developers pair a reconstructed scene with a target rig, render the target views, refine frames with NVIDIA Harmonizer, and train a perception model on the output. An internal automated driving program measured relative gains in object-detection precision and recall after training on NuRec-rendered synthetic data for a new carline compared with a zero-shot baseline. The NVIDIA/nurec-skills repository packages the workflow as agent skills for downloading scenes, rendering with NuRec, and applying Harmonizer. Next Steps Download a USDZ scene and the included sample target rig from the Physical AI NuRec Dataset to begin adapting a reconstructed scene. Review the NuRec documentation for setup requirements, supported hardware, validation, and rendering instructions. Use NVIDIA Harmonizer for temporally consistent sequence postprocessing of rendered frames. Powered by NVIDIA Nemotron. AI-generated content may summarize information incompletely. Verify important information. Learn more A perception stack is shaped by the vehicle that carries it. Move the same software to a new carline—for example, from an SUV to a sedan or another vehicle variant in the portfolio—and its perception of the world changes. The sensor placement, calibration, fields of view, occlusions, body geometry, timing, and coverage all shift. A traffic light may appear in a different part of the frame. A curb can become harder to see. A pedestrian near the edge of coverage may become ambiguous. As an autonomous driving stack expands to new carlines and variants, developers must account for these differences even when the underlying perception stack remains the same. Collecting and labeling a new real-world dataset for every carline is expensive and may not be possible early in vehicle development. New fleets may not be available, and rare conditions can’t always be captured. Real-world driving data remains essential for grounding and validating system performance, but synthetic data can help teams adapt models before a full target-carline dataset exists. The carline adaptation challenge is to prepare perception software for a vehicle that may not exist yet, and scale that software across platform variants without collecting and labeling a large dataset for each one. NVIDIA Omniverse NuRec makes this process more practical. It starts with recorded real-world drives, reconstructs each scene, and renders new camera views for a target vehicle configuration. Developers can reuse real-world data to ask questions such as: What would this scenario look like from the target rig? Which existing drives cover the new vehicle well? Where do geometry changes create weak spots? Which gaps require real collection? This post shows how to adapt a perception stack to a new sensor rig using existing drive data by following these four steps: Pairing a reconstructed drive with a target rig configuration. Rendering the target views. Refining the frames with NVIDIA Harmonizer. Training a perception model on the output. This tutorial uses reconstructed scenes from the NVIDIA Physical AI NuRec Dataset to complete the four steps. How NuRec supports carline adaptation NuRec uses 3D Gaussian splatting to reconstruct real-world environments from sensor data and render them for simulation. For carline adaptation, NuRec reconstructs a real-world drive captured by an existing vehicle and renders new camera streams from the viewpoints of the target vehicle. Two NuRec capabilities are especially useful for carline adaptation. Novel-view synthesis: NuRec can render the scene with gsplat, which projects the Gaussians through the specified camera model. This capability enables users to change camera extrinsics, intrinsics, field of view, and lens model, including pinhole, fisheye, and f-theta configurations. Reusable scene data and annotations: The reconstructed scene retains the original rig trajectories, per-camera calibration, dynamic object tracks, and map data. These assets can be used to align or adapt labels such as objects, lanes, traffic lights, and road boundaries in the newly rendered views. Figure 1. NuRec carline adaptation workflow. A reconstructed USDZ scene is rendered through the target carline’s sensor rig, refined with Harmonizer, and used for perception training Adapt a perception model to a new carline with NuRec The following workflow shows how development teams can render an existing reconstructed drive through a target camera rig, refine the resulting frames, and prepare the data for perception-model training. Step 1. Download a reconstructed scene The Physical AI NuRec Dataset on Hugging Face includes more than 1,500 neural-reconstructed driving scenes. Each scene is about 20 seconds long and was reconstructed from six camera views: a 120-degree front-wide view, a 30-degree front-telephoto view, 120-degree cross-left and cross-right views, and 70-degree rear-left and rear-right views. The NuRec Dataset is gated. Accept the license, authenticate with a Hugging Face token, and download one scene. import os from huggingface_hub import login, snapshot_download login(token=os.getenv("HF_TOKEN")) # Download one reconstructed scene (USDZ) from the 26.04 release snapshot_download( repo_id="nvidia/PhysicalAI-Autonomous-Vehicles-NuRec", repo_type="dataset", allow_patterns="sample_set/26.04_release//*", ) If using a coding agent, clone the NVIDIA/nurec-skills repository. It includes skills for downloading Physical AI datasets, rendering with NuRec, and refining output frames. git clone https://github.com/NVIDIA/nurec-skills.git Step 2. Render from the target carline’s sensor rig Figure 2. The same NuRec-reconstructed scene rendered from the original camera rig and a shifted target camera rig This tutorial uses a synthetic target camera rig included with the public sample. Its camera name, pose, resolution, and lens parameters are illustrative. The supplied synthetic rig contains one target camera, so this tutorial generates one target-camera stream. In the rig file, each sensor entry defines a colon-delimited camera name, image resolution, an F-Theta lens model, intrinsic parameters, and a camera-to-rig pose. NRE converts the colon-delimited name to a logical camera ID. For example, it converts camera:front:synthetic:120fov to camera_front_synthetic_120fov. To add another target camera, add another entry to rig.sensors. Give it a unique name and provide its own width, height, lens model, intrinsic parameters, and nominalSensor2Rig_FLU transform. Set the input and output locations: export SCENE_DIR=/absolute/path/to/scene export SCENE_FILE=.usdz export RIG_DIR=/absolute/path/to/rig export RIG_FILE=minimal-synthetic-target-rig.json export OUTPUT_DIR=/absolute/path/to/output mkdir -p "$OUTPUT_DIR" Pin the public NuRec container to its immutable digest and pull the image: export NUREC_IMAGE='nvcr.io/nvidia/nre/nre-ga:26.04.01@sha256:97f43e7130c5636ce3e80ea3184d97f56a87fdd989b05cce42230881dbdea284' docker pull "$NUREC_IMAGE" docker image inspect "$NUREC_IMAGE" --format '{{range .RepoDigests}}{{println .}}{{end}}' Run trajectory export and rendering as separate container operations. Export the target-camera trajectory: docker run --rm --gpus all --shm-size=64g \ -v "$SCENE_DIR":/inputs/scene:ro \ -v "$RIG_DIR":/inputs/rig:ro \ -v "$OUTPUT_DIR":/outputs \ "$NUREC_IMAGE" export-custom-rig-trajectory \ --artifact-path="/inputs/scene/$SCENE_FILE" \ --rig-json="/inputs/rig/$RIG_FILE" \ --output=/outputs/custom_rig_trajectories.json Next, run a sparse render of one target camera to validate the setup. In this example, select the target camera camera_front_synthetic_120fov because the example target rig defines a front-facing camera. The render command loads the exported trajectory file and then uses –camera-id to select the camera to render. The USDZ scene was reconstructed using six source cameras: a 120-degree front-wide camera, a 30-degree front-telephoto camera, 120-degree cross-left and cross-right cameras, and 70-degree rear-left and rear-right cameras. A target camera does not need to correspond one-on-one with any of these source cameras. It can use a different position, orientation, resolution, field of view, or calibration, provided that its pose is expressed in the same rig coordinate frame and its lens model is supported by the exporter. Cameras placed far outside the observed trajectory or aimed toward areas with limited source-camera coverage may produce lower-quality renders. This tutorial uses a front-facing target camera, to adapt another view, for example a rear-left camera, first add a rear-left sensor to the target rig JSON, give it rear-left camera-to-rig extrinsics, export the trajectory again, and pass its normalized logical ID to –camera-id. docker run --rm --gpus all --shm-size=64g \ -v "$SCENE_DIR":/inputs/scene:ro \ -v "$OUTPUT_DIR":/outputs \ "$NUREC_IMAGE" render \ --artifact-path="/inputs/scene/$SCENE_FILE" \ --output-dir=/outputs/smoke \ --custom-rig-trajectory=/outputs/custom_rig_trajectories.json \ --no-replicate-training-views \ --renderer=default \ --image-format=png \ --frame-step=30 \ --image-scale=1 \ --frame-naming=frame-end-timestamp \ --camera-id=camera_front_synthetic_120fov Review the frames to ensure that the pose, field of view, and timestamps are correct. After the sparse render passes review, render the full sequence with `–frame-step=1` for all target cameras. Repeat –camera-id for each validated camera in the target rig. Step 3. Refine the rendered frames Neural rendering can leave view-dependent artifacts, inconsistent color or tone, and poorly reconstructed dynamic objects. NVIDIA Harmonizer is a public, temporally aware post-processing model that corrects artifacts in NuRec and related neural renderings. It improves visual quality, but it doesn’t repair incorrect calibration, recover scene coverage that was never reconstructed, or replace target-camera validation. The nurec-fixer skill in NVIDIA/nurec-skills covers setup, inference, evaluation, and optional Harmonizer fine-tuning. First, validate the host before downloading the model. git clone https://github.com/NVIDIA/nurec-skills.git python nurec-skills/skills/nurec-fixer/scripts/validate_setup.py Accept the model licenses on Hugging Face, clone the Harmonizer repository, build its runtime image, and download the released checkpoints: git clone https://github.com/NVIDIA/harmonizer.git cd harmonizer docker build -t harmonizer-cosmos-env -f Dockerfile.cosmos . hf auth login ./download_checkpoints.sh test -f models/diffusion_harmonizer.pkl test -d src/checkpoints/nvidia/Cosmos-Predict2-0.6B-Text2Image Run one camera sequence at a time. Mount the parent render directory so that the output—which is written beside the input directory—persists on the host: export HARMONIZER_DIR=/absolute/path/to/harmonizer export RENDER_ROOT=/absolute/path/to/output/render export CAMERA_ID=camera_front_synthetic_120fov docker run --rm --gpus all --ipc=host \ --entrypoint python \ -v "$HARMONIZER_DIR":/work \ -v "$RENDER_ROOT":/frames \ -w /work/src \ harmonizer-cosmos-env \ inference_pix2pix_turbo_harmonizer.py \ --input_image="/frames/$CAMERA_ID" \ --model_path=/work/models/diffusion_harmonizer.pkl \ --model_identifier=harmonized \ --timestep=250 \ --resolution=1024 \ --use_sched Figure 3. Side-by-side comparison of raw NuRec renderings and NVIDIA Harmonizer output. Harmonizer reduces visible sky artifacts and improves visual consistency (right) Step 4. Train the perception model After creating NuRec-rendered datasets for a new carline, validate the output before incorporating it into a perception-training pipeline. Treat this new dataset similarly to real camera data collected from vehicles. Then, prepare it for use based on the perception model’s needs. Carline adaptation program NVIDIA evaluated this workflow in an internal automated driving program that needed to support a new camera configuration. The team had an existing library of drives from a different vehicle, but the target carline data was not yet available. Figure 4. Relative gains in object-detection precision and recall after training on NuRec-rendered synthetic data for the target carline, compared with the zero-shot baseline. VRU means vulnerable road user Automate the workflow with NuRec agentic skills The NVIDIA/nurec-skills repository packages the main steps as agent skills. A coding agent can use physical-ai-datasets to locate and download scenes, nre to render them, and nurec-fixer to refine the output. For an end-to-end example, watch the neural-reconstruction agent-skills livestream. Video 1. See how NVIDIA Omniverse NuRec uses 3D Gaussian splatting to reconstruct real-world driving scenes and render them for autonomous vehicle simulation The public NVIDIA/nurec-skills repository contains skills for locating Physical AI datasets, using NCore, running NuRec, and applying DiffusionHarmonizer. The nurec-carline-adaptation skill adds a thin compatibility and provenance layer; it does not redistribute NuRec source or models. git clone https://github.com/NVIDIA/nurec-skills.git After cloning the repository, ask a compatible coding agent: Use the $nurec-carline-adaptation skill to validate this USDZ and sanitized target rig, show me the exact local Docker commands, run a sparse one-camera smoke test, and stop before the full render if any camera or windshield check fails. Apply NuRec to existing drive data Reconstructing a captured drive requires synchronized videos from the recording rig and the corresponding metadata from the same recording. The source data must then be organized into a consistent layout: clip/ └── raw/ ├── generated/ │ ├── front_wide.mp4 │ ├── front_tele.mp4 │ ├── cross_left.mp4 │ ├── cross_right.mp4 │ ├── rear_left.mp4 │ ├── rear_right.mp4 │ └── rear.mp4 └── clipgt/parquets/ ├── calibration_estimate.parquet ├── egomotion_estimate.parquet └── object_fused.parquet MP4s come from the vehicle’s camera recorder. The Parquet files contain metadata shared by the complete camera rig. InputWhat it containsTypical sourcecalibration_estimate.parquetCamera lens parameters and mounting positionsCamera-calibration or rig-configuration exportegomotion_estimate.parquetVehicle position and orientation over timeLocalization, odometry, VIO, or SLAMobject_fused.parquetMoving objects, classes, dimensions, and track IDsPerception or labeling pipelineTable 1. Required metadata files, their contents, and typical sources All three Parquet files are required by the companion converter and reconstruction recipe used in this tutorial. Other NuRec workflows may support reconstruction without object tracks. These filenames and Parquet serialization are not NCore requirements. If the same information is stored in JSON, a database, or another format, the public NCore converter template can be adapted to read the source. This workflow assumes that the selected videos are synchronized and span the same recording interval. Calibration data must identify every selected camera, egomotion data must span the sequence from its first exposure through its last, and the object tracks required by this recipe must overlap that interval and use the same world coordinate system. The semantic validator runs after conversion and checks these relationships in the generated NCore sequence. Map the source data to NCore The companion converter in the next section supports the seven-video and three-table layout shown above. When the files follow this schema, the workflow can continue directly with Run the companion converter. Unsupported source formats require a customized copy of the public converter template that reads the source files and writes the data to NCore. export CONVERTER_DIR="$WORK_DIR/cosmos-clipgt-converter" cp -R "$NUREC_SKILLS_REPO/skills/ncore/ncore_template" "$CONVERTER_DIR" The template is a code skeleton, not a general-purpose converter. Its source reader must map equivalent information into these NCore components: Source dataNCore V4Encoded camera images and per-frame exposure intervalsOne CameraSensorComponent per logical cameraCamera lens models and intrinsicsIntrinsicsComponentCamera-to-rig extrinsicsPosesComponent: T_sensor_rigMetric egomotionPosesComponent: T_rig_worldOptional global referencePosesComponent: T_world_world_globalEgo masksMasksComponentObject observations and tracksCuboidsComponentTable 2. Source-data mappings to NCore V4 components Follow the public NCore coordinate conventions: Rig: +X forward, +Y left, +Z up Camera: +X right, +Y down, +Z forward Timestamps: integer microseconds Distances: meters; poses: valid SE(3) transforms Keep pose computation in float64. Rebase the local `world` frame so that the first rig pose is identity. For synchronized constant-frame-rate video without recorded frame timestamps, the nominal timestamp for frame `i` is: frame_timestamp_us = anchor_timestamp_us + i * 1,000,000 / fps Use recorded exposure timestamps when available. The nominal formula assumes that the MP4 streams are synchronized. The converter writes the sequence with the NCore `separate-sensors` profile. This profile creates one camera-component archive per converted camera and a shared archive for poses, intrinsics, masks, and cuboids. The converter preserves each camera’s actual resolution and color interpretation. Run the companion converter When the source-specific converter is distributed with the tutorial repository, run it as follows: export COSMOS_CONVERTER="$TUTORIAL_REPO/tools/cosmos_ncore/build_cosmos_ncore_v4.py" test -f "$COSMOS_CONVERTER" env -u PYTHONPATH "$NCORE_PYTHON" "$COSMOS_CONVERTER" \ --root "$INPUT_ROOT" \ --anchor-us "$ANCHOR_TIMESTAMP_US" \ --sequence-id "$SEQUENCE_ID" \ --fps "$FPS" \ --store-type itar Validate the NCore sequence Set the generated paths according to the converter’s output contract: export NCORE_DIR="$INPUT_ROOT/ncore/$SEQUENCE_ID" export NCORE_MANIFEST="$NCORE_DIR/$SEQUENCE_ID.json" export NCORE_VALIDATOR="$TUTORIAL_REPO/tools/cosmos_ncore/validate_cosmos_ncore_v4.py" test -s "$NCORE_MANIFEST" python3 -m json.tool "$NCORE_MANIFEST" > /dev/null Run the source-specific validator: env -u PYTHONPATH "$NCORE_PYTHON" "$NCORE_VALIDATOR" \ --root "$INPUT_ROOT" \ --sequence-id "$SEQUENCE_ID" Then inspect the sequence using the public NCore viewer and open http://localhost:8080. export NCORE_REPO=/absolute/path/to/ncore export NCORE_MANIFEST=/absolute/path/to/sequence/.json ( cd "$NCORE_REPO" bazel run //tools/ncore_vis -- \ v4 \ --component-group="$NCORE_MANIFEST" ) Expected output A separate-sensors NCore V4 sequence commonly contains: / ├── .json ├── build_manifest.json ├── .ncore4.zarr.itar ├── .ncore4-.zarr.itar └── ... one camera archive per converted camera The shared `.ncore4.zarr.itar` archive contains components such as poses, intrinsics, masks, and cuboids. Each `.ncore4-.zarr.itar` archive contains the frames for one converted camera. The JSON manifest and all referenced archives form one logical sequence; they must remain together. Generate NuRec auxiliary data The converted NCore sequence contains recorded sensor measurements, calibration, poses, and object tracks. It doesn’t yet include the inferred semantic segmentation, depth, and ego masks required for this camera-only reconstruction workflow. The public skills/nre instructions describe this stage, and the NuRec auxiliary-data documentation defines the data products. The public nre-tools-ga NGC container on NGC provides the inference application. The workflow uses NRE_AUX_IMAGE to identify auxiliary-data containers and distinguish them from the separate nre-ga training and rendering image. The 26.04 GA image exposes several tools through one entry point, so the workflow explicitly selects the ncore-aux-data subcommand: export NUREC_AUX_IMAGE=nvcr.io/nvidia/nre/nre-tools-ga:26.04.00 python3 "$NUREC_SKILLS_REPO/skills/nre/scripts/validate_setup.py" --strict docker pull "$NUREC_AUX_IMAGE" docker run --rm --gpus all --shm-size=2g \ --env NGC_API_KEY \ --volume "$NCORE_DIR:/workdir/dataset" \ "$NUREC_AUX_IMAGE" ncore-aux-data \ --dataset-path="/workdir/dataset/$SEQUENCE_ID.json" \ --output-dir=/workdir/dataset \ --segmentation-backend=mask2former \ --depth-backend=depthanythingv2 \ --max-depth-m=80 \ --ego-mask \ --no-lidar-seg-camvis \ --no-seg-logits \ --zarr-store-type=itar \ --store-meta \ --num-threads=auto The selected options have explicit roles. Table 3 summarizes the output generated by each selected option. OptionGenerated product--segmentation-backend=mask2former.aux.sseg.zarr.itar: per-frame semantic class masks--depth-backend=depthanythingv2.aux.depth.zarr.itar: metric depth--ego-mask.aux.egomask.zarr.itar: per-camera ego-vehicle exclusion masks--store-meta.aux-meta.json: resolved auxiliary settings from the pinned image--no-lidar-seg-camvisDisables LiDAR segmentation because the workflow does not include LiDAR dataTable 3. Auxiliary-data options and generated products Omitting --camera-id processes every camera declared in NCORE_SEQUENCE_JSON. Selecting specific cameras requires one --camera-id= argument for each, using the logical camera IDs from the manifest. After auxiliary data generation, the reconstruction input directory contains the following structure: / ├── .json ├── build_manifest.json ├── .ncore4.zarr.itar ├── .ncore4-.zarr.itar └── ... one camera archive per converted camera ├── .aux.sseg.zarr.itar ├── .aux.depth.zarr.itar ├── .aux.egomask.zarr.itar └── .aux-meta.json Get started Use the following resources to begin adapting a reconstructed scene to a target carline. Download a USDZ scene and the included sample target rig from the Physical AI NuRec Dataset. Render the scene through the sample rig, replace the rig JSON with the target carline configuration, and render the scene again. Review the NuRec documentation for setup requirements, supported hardware, validation, and rendering instructions. To reconstruct recorded drives, follow Reconstruct an AV Scene and the NCore conversion and auxiliary-data guidance in NVIDIA/nurec-skills. Use NVIDIA Harmonizer for temporally consistent sequence postprocessing. The public software, containers, datasets, and model artifacts require the applicable NVIDIA NGC or Hugging Face accounts and acceptance of their licenses. The NuRec runtime is available in the nre-ga container on NGC. Like Tags Developer Tools & Techniques | Robotics | Simulation / Modeling / Design | Automotive / Transportation | Omniverse | Intermediate Technical | Tutorial | autonomous vehicles | Physical AI About the Authors About Apurv Naman Apurv Naman is a product manager at NVIDIA, where he leads synthetic data generation (SDG) products for autonomous vehicle development. He holds a master’s degree in mechanical engineering from Michigan Technological University and an MBA from the Haas School of Business at the University of California, Berkeley. View all posts by Apurv Naman About Mingfei Guo Mingfei Guo is a software engineer at NVIDIA who works on data generation. Her interests include graphics, efficient machine learning systems, and AI infrastructure. Mingfei holds BS and MS degrees in Electrical Engineering from Peking University and Stanford University. View all posts by Mingfei Guo About Dominik Froehlich Dominik Froehlich is a perception engineer on the autonomous vehicle team at NVIDIA. His work focuses on adapting the NDAS perception stack to different vehicle platforms. Dominik holds a doctoral degree in engineering from the University of Freiberg in Germany. His interests include algorithm development, data science, and artificial intelligence, particularly their applications to robotics and automotive challenges. View all posts by Dominik Froehlich About Wonsik Han Wonsik Han is a senior product manager in the NVIDIA Autonomous Vehicle Group. He brings more than a decade of experience across strategy, business development, and product management roles at global automakers and an autonomous driving startup. Wonsik holds an MBA from Duke University. View all posts by Wonsik Han

来源报道 · 2 篇 · 以下链接均前往原始媒体

← 返回精选动态 原文

更多内容