构建高度逼真的3D仿真环境面临巨大挑战。即便采用3D高斯点阵(3D Gaussian Splatting, 3DGS)或结合无迹变换的3D高斯方法(3D Gaussian with Unscented Transform, 3DGUT)等先进的神经重建技术,从新视角渲染的图像仍可能出现模糊、空洞或虚假几何结构等伪影。这些伪影不仅会显著降低视觉质量,还可能对后续任务造成不利影响。
NVIDIA Omniverse NuRec 能够将真实世界的传感器数据融入仿真环境,并引入了一种名为 Fixer 的生成模型来解决相关问题。Fixer 是基于 NVIDIA Cosmos Predict 世界基础模型(WFM)构建的扩散模型,可有效消除场景中受限区域的渲染伪影,并恢复细节信息。 本文将介绍如何利用 Fixer 将复杂的 3D 场景转化为清晰、无伪影的环境,为 智能汽车(AV) 仿真做好准备。文中采用 NVIDIA 物理 AI 开放数据集(发布于 Hugging Face)中的示例场景,涵盖在场景重建阶段离线使用以及在渲染过程中在线应用 Fixer 的两种方式。
第 1 步:下载重建的场景
首先,获取一个包含伪影的重建3D场景。Hugging Face 上的 PhysicalAI-Autonomous-Vehicles-NuRec 数据集提供了从真实驾驶中采集的900多个重建场景。请先登录 Hugging Face 并同意数据集的使用许可,然后下载示例场景。该场景以包含3D环境的 USDZ 文件格式提供。例如,可使用 Hugging Face CLI 进行下载。
pip install huggingface_hub[cli] # install HF CLI if needed
hf auth login
# (After huggingface-cli login and accepting the dataset license)
hf download nvidia/PhysicalAI-Autonomous-Vehicles-NuRec \
--repo-type dataset \
--include "sample_set/25.07_release/Batch0005/7ae6bec8-ccf1-4397-9180-83164840fbae/camera_front_wide_120fov.mp4" \
--local-dir ./nurec-sample
该命令会将场景预览视频(camera_front_wide_120fov.mp4)下载到您的本地设备。由于 Fixer 处理的是图像,而非直接处理 USD 或 USDZ 文件,因此通过视频帧提取图像可更便捷地进行批量处理。
接下来,使用 FFmpeg 提取视频帧,并将这些图像作为 Fixer 的输入。
# Create an input folder for Fixer
mkdir -p nurec-sample/frames-to-fix
# Extract frames
ffmpeg -i "sample_set/25.07_release/Batch0005/7ae6bec8-ccf1-4397-9180-83164840fbae/camera_front_wide_120fov.mp4" \
-vf "fps=30" \
-qscale:v 2 \
"nurec-sample/frames-to-fix/frame_%06d.jpeg"
视频1是重建场景及其伪影的预览,展示了由于摄像头覆盖范围有限,导致部分表面出现孔洞或纹理模糊的情况。这些正是Fixer旨在解决的问题。
第 2 步:设置 Fixer 环境
接下来,设置运行 Fixer 的环境。
在继续操作前,请确认已安装 Docker 并配置好 GPU 访问权限。然后按照以下步骤完成环境准备。
克隆 Fixer 存储库
这将获取后续步骤所需的相关脚本:
git clone https://github.com/nv-tlabs/Fixer.git
cd Fixer
下载预训练的 Fixer 检查点
预训练的 Fixer 模型 已托管在 Hugging Face 平台上。如需获取该文件,可使用 Hugging Face CLI 工具。
# Create directory for the model
mkdir -p models/
# Download only the pre-trained model to models/
hf download nvidia/Fixer --local-dir models
这将在第 3 步中把推理所需的文件保存到 models/ 文件夹中。
第 3 步:通过在线模式与 Fixer 进行实时推理
在线模式是指在渲染过程中,通过在仿真阶段逐帧调用 Fixer 作为神经增强器来提升图像质量。该模式利用预训练的 Fixer 模型进行推理,模型可运行于 Cosmo2-Predict Docker 容器中。请注意,Fixer 能够增强场景中的渲染图像。请确保已将帧序列导出(例如导出至 examples/),并将该输出文件夹路径传递给 --input。
要在目录中的所有图像上运行 Fixer,请按照以下步骤操作:
# Build the container
docker build -t fixer-cosmos-env -f Dockerfile.cosmos .
# Run inference with the container
docker run -it --gpus=all --ipc=host \
-v $(pwd):/work \
-v /path/to/nurec-sample/frames-to-fix:/input \
--entrypoint python \
fixer-cosmos-env \
/work/src/inference_pretrained_model.py \
--model /work/models/pretrained/pretrained_fixer.pkl \
--input /input \
--output /work/output \
--timestep 250
此命令的详细信息包括以下内容:
- 将当前目录挂载到容器中的 /work 路径,使容器能够访问本地文件。
- 该目录包含通过 FFmpeg 从示例视频中提取的图像帧。
- 运行脚本 inference_pretrained_model.py(来自克隆的 Fixer 仓库的 src/ 目录),从指定路径加载预训练的 Fixer 模型。
--input表示输入图像的文件夹(例如示例中的“示例/”目录,包含带有伪影的渲染帧),--output为保存增强后图像的输出目录,--timestep250 表示模型在降噪处理中所使用的噪声级别。
运行此命令后,output/ 目录将生成处理后的图像。需要注意的是,由于模型初始化的原因,前几帧图像的处理速度可能较慢,但随着模型进入稳定运行状态,后续帧的推理速度会明显提升。
第 4 步:评估输出
应用图像修复器(Fixer)后,可对其在提升重建质量方面的效果进行评估。本文采用峰值信噪比(PSNR)作为评价指标,该指标常用于衡量像素级的重建精度。表1展示了部分场景在处理前后的对比示例。
| 指标 | 无固定器 | 带固定器 |
| PSNR ↑ (准确率) | 16.5809 | 16.6147 |
请注意,如果您尝试使用物理 AI 开放数据集中的其他 NuRec 场景或自行构建的神经重建结果,均可通过这些指标来评估 Fixer 带来的质量提升。具体计算方法请参见 相关指标文档。
从定性角度来看,经过 Fixer 处理后的场景显得更加真实。原本涂抹的区域现在能够依据合理的细节得以重建,道路标线等精细纹理也更加清晰,同时在各帧之间实现了稳定的改进,且未出现明显的闪烁现象。
此外,在引入新的视图合成时,Fixer 能够有效消除产生的伪影。视频 3 展示了 Fixer 在 NuRec 场景中的应用效果:通过将摄像机向左平移 3 米并从新视角进行渲染,Fixer 在生成的新视图上运行后,能够减轻与视角相关的伪影,显著提升重建场景的视觉质量。
总结
本文将介绍如何下载重建的场景,配置 Fixer 并运行推理以优化渲染帧。经过处理后的场景更加清晰,重建伪影显著减少,有助于提升智能汽车开发的可靠性。
要将 Fixer 与 Robotics NuRec 场景结合使用,请先从 PhysicalAI-Robotics-NuRec 数据集下载重建的场景,再按照本文所述步骤进行操作。
准备好深入了解了吗?了解如何对 Fixer 进行后训练 以适配特定的 ODD 和传感器配置。如需了解在重建阶段(离线模式)如何使用 Fixer,请参阅 Difix3D+:使用单步扩散模型改进 3D 重建。
详细了解 NVIDIA 研究在 NeurIPS 上的内容。
NVIDIA 研究团队始终活跃在人工智能创新的前沿,NVIDIA 研究 持续推动机器学习、自动驾驶、机器人、图形与仿真等领域的技术进步。立即探索这些开创性突破。
订阅 NVIDIA 新闻,并在 Discord 和 YouTube 上关注 NVIDIA Omniverse,以便及时获取最新资讯。
- 访问我们的Omniverse开发者页面,全面了解入门所需的基础知识。
- 探索丰富的OpenUSD资源,包括自主学习的Learn OpenUSD课程,以及数字孪生与机器人开发培训。
- 参与即将推出的OpenUSD预览体验计划直播,与NVIDIA开发者社区建立连接。
使用开发者入门套件,快速构建并增强您自己的应用与服务