为仿真构建真正照片级真实感的三维环境颇具挑战。即便采用先进的神经重建方法,如三维高斯泼溅(3D Gaussian Splatting, 3DGS)与带无迹变换的三维高斯(3D Gaussian with Unscented Transform, 3DGUT),渲染视图仍可能出现模糊、空洞或伪几何等伪影 ------尤其在新视角下。这些伪影会显著降低视觉质量,并妨碍下游任务。
NVIDIA Omniverse NuRec 将真实世界传感器数据带入仿真,并包含名为 Fixer 的生成式模型以应对上述问题 。Fixer 是基于 NVIDIA Cosmos Predict 世界基础模型(WFM)的扩散模型,可去除渲染伪影,并在场景约束不足的区域恢复细节。
本文介绍如何使用 Fixer 将含噪的三维场景转变为清晰、无伪影、可用于自动驾驶(AV)仿真的环境 ;涵盖在场景重建阶段 离线 使用 Fixer,以及在渲染阶段 在线 使用 Fixer,并以 Hugging Face 上 NVIDIA Physical AI 开放数据集中的示例场景为例。
步骤 1:下载已重建场景
首先,找一个带有一定伪影的已重建三维场景。Hugging Face 上的 PhysicalAI-Autonomous-Vehicles-NuRec 数据集提供超过 900 个来自真实驾驶的重建场景。请先登录 Hugging Face 并同意数据集许可协议,然后下载示例场景(以 USDZ 文件形式提供,内含三维环境)。例如,使用 Hugging Face CLI:
bash
pip install "huggingface_hub[cli]" # 如需要,安装 HF CLI
hf auth login
# (在 huggingface-cli 登录并接受数据集许可后)
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 的输入:
bash
# 为 Fixer 创建输入文件夹
mkdir -p nurec-sample/frames-to-fix
# 抽帧
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 旨在解决的问题。
视频 1:从 Hugging Face 下载的示例重建场景预览
步骤 2:配置 Fixer 运行环境
接下来配置运行 Fixer 的环境。
开始前,请确保已安装 Docker 并启用 GPU 访问,然后按下列步骤准备环境。
克隆 Fixer 仓库
以获取后续步骤所需的脚本:
bash
git clone https://github.com/nv-tlabs/Fixer.git
cd Fixer
下载 Fixer 预训练权重
预训练 Fixer 模型托管在 Hugging Face 上,可使用 Hugging Face CLI 获取:
bash
# 创建模型目录
mkdir -p models/
# 仅将预训练模型下载到 models/
hf download nvidia/Fixer --local-dir models
上述操作会将步骤 3 推理所需的文件保存到 models/ 文件夹。
步骤 3:使用在线模式进行 Fixer 实时推理
在线模式 指在渲染过程中将 Fixer 作为神经增强器,在仿真中对每一帧进行修复。使用预训练 Fixer 模型进行推理,可在 Cosmo2-Predict Docker 容器内运行。
注意:Fixer 增强的是来自场景的渲染图像 。请确保已将帧导出(例如到 examples/),并将该文件夹传给 --input。
要对目录中所有图像运行 Fixer,可执行:
bash
# 构建镜像
docker build -t fixer-cosmos-env -f Dockerfile.cosmos .
# 在容器内运行推理
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 从示例视频抽取的帧目录挂载为
/input。 - 脚本
inference_pretrained_model.py(来自克隆的 Fixer 仓库src/)从给定路径加载预训练 Fixer 模型。 --input:输入图像文件夹(例如examples/中可包含带伪影的渲染帧)。--output:增强后图像保存目录(上文示例为output)。--timestep 250:扩散去噪过程所使用的噪声水平。
运行结束后,output/ 目录将包含修复后的图像。注意:前几帧可能因模型初始化而较慢,模型跑起来后后续帧会更快。
视频 2:将经 Fixer 在线模式增强的 NuRec 场景与原始示例重建场景对比
步骤 4:评估输出
对图像应用 Fixer 后,可评估其对重建质量的改善程度。文中采用 峰值信噪比(PSNR) 作为衡量像素级精度的常见指标。下表为示例场景的前后对比。
| 指标 | 未使用 Fixer | 使用 Fixer |
|---|---|---|
| PSNR ↑(精度) | 16.5809 | 16.6147 |
表 1:应用 Fixer 后的 PSNR 改善示例(↑ 表示越高越好)
若使用 Physical AI 开放数据集中其他 NuRec 场景,或你自己的神经重建结果,同样可用这些指标衡量 Fixer 带来的质量提升。具体计算方法见指标相关文档。
在主观观感上,经 Fixer 处理的场景明显更逼真:原先涂抹般的表面被重建为更合理的细节;道路标线等细微纹理更清晰;帧间改善一致,且未引入明显闪烁。
此外,Fixer 在新视角合成 引入伪影时也能有效修正。视频 3 展示了将相机向左平移 3 米得到的新视角下,对 NuRec 场景应用 Fixer 的效果。在新视角合成输出之上运行 Fixer 时,可减轻视角相关伪影,并提升重建场景的主观观感质量。
视频 3:将经 Fixer 增强的 NuRec 场景与原始 NuRec 场景对比(视角向左偏移 3 米)
结语
本文围绕 Fixer 与 Omniverse NuRec 工作流,说明了如何从带伪影的重建结果出发,通过离线或在线方式提升三维高斯类渲染在仿真中的可用性与观感,尤其适用于自动驾驶等需要稳定、清晰多视角输出的场景。
如需复现,请结合官方仓库、Docker 环境与 Hugging Face 上的模型与数据集说明进行操作。
文章来自:https://developer.nvidia.com/blog/how-to-enhance-3d-gaussian-reconstruction-quality-for-simulation/