如何提升3D高斯重建质量以用于仿真

构建真正逼真的3D仿真环境具有挑战性。即使采用3D高斯溅射(3DGS)和带无迹变换的3D高斯(3DGUT)等先进的神经重建方法,渲染视图仍然可能包含伪影,例如模糊、孔洞或虚假几何体——特别是在新视角下。这些伪影会显著降低视觉质量,并可能阻碍下游任务。

某中心的Omniverse NuRec将真实世界传感器数据引入仿真,并包含一个名为Fixer的生成模型来解决此问题。Fixer是一个基于扩散的模型,构建于某中心Cosmos Predict世界基础模型之上,旨在消除场景中欠约束区域的渲染伪影并恢复细节。本文逐步介绍了如何使用Fixer将噪点多的3D场景转变为清晰、无伪影、可供自动驾驶车辆仿真的环境。涵盖了在场景重建期间离线使用Fixer和在渲染期间在线使用Fixer的方法,使用了某机构Hugging Face上某中心Physical AI开放数据集中的一个示例场景。

步骤1:下载重建的场景

首先,找到一个存在一些伪影的重建3D场景。Hugging Face上的PhysicalAI-Autonomous-Vehicles-NuRec数据集提供了超过900个从真实世界驾驶中捕获的重建场景。首先登录Hugging Face并同意数据集许可。然后下载示例场景,该场景以包含3D环境的USDZ文件形式提供。例如,使用Hugging Face CLI:

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

此命令将场景的预览视频下载到本地机器。Fixer直接对图像而非USD或USDZ文件进行操作,因此使用视频帧提供了一组方便处理的输入图像。

接下来,使用FFmpeg提取帧,并将这些图像作为Fixer的输入:

# 为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设计要解决的问题。

步骤2:设置Fixer环境

接下来,设置运行Fixer的环境。

在继续之前,请确保已安装Docker并启用了GPU访问。然后完成以下步骤以准备环境。

克隆Fixer仓库
这将获取后续步骤所需的必要脚本:

git clone https://github.com/nv-tlabs/Fixer.git
cd Fixer

下载预训练的Fixer检查点
预训练的Fixer模型托管在Hugging Face上。要获取此模型,请使用Hugging Face CLI:

# 为模型创建目录
mkdir -p models/
# 仅将预训练模型下载到 models/ 目录
hf download nvidia/Fixer --local-dir models

这将把推理步骤3所需的文件保存到models/文件夹。

步骤3:使用在线模式进行实时推理

在线模式是指在仿真期间使用Fixer作为神经增强器,在渲染过程中修复每一帧。使用预训练的Fixer模型进行推理,该模型可以在Cosmo2-Predict Docker容器内运行。

请注意,Fixer会增强来自场景的渲染图像。确保帧已导出(例如到examples/目录),并将该文件夹传递给--input参数。

要对目录中的所有图像运行Fixer,请执行以下步骤:

# 构建容器
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模型。
  • --input是输入图像的文件夹。
  • --output是增强图像将被保存的文件夹。
  • --timestep 250表示模型用于去噪过程的噪声水平。

运行此命令后,output/目录将包含修复后的图像。请注意,前几幅图像可能处理较慢,因为模型正在初始化,但模型运行后,后续帧的推理速度会加快。

步骤4:评估输出

将Fixer应用于图像后,可以评估它提升了多少重建质量。本文报告了峰值信噪比,这是一种衡量像素级准确性的常用指标。表1提供了示例场景处理前后的对比。

指标 未使用 Fixer 使用 Fixer
PSNR ↑ (准确性) 16.5809 16.6147

表1. 应用Fixer后的PSNR提升示例(↑ 表示数值越高越好)

请注意,如果尝试使用Physical AI开放数据集中的其他NuRec场景,或自己的神经重建,可以通过这些指标衡量Fixer的质量改进。有关如何计算这些值的说明,请参阅相关指标文档。

在定性方面,经过Fixer处理的场景看起来明显更加逼真。先前模糊的表面现在以合理的细节重建,精细纹理变得更加清晰,并且这些改进在帧之间保持一致,没有引入明显的闪烁。

此外,当引入新视角合成时,Fixer在纠正伪影方面也非常有效。视频3展示了将Fixer应用于从向左移动3米的新相机视角渲染的NuRec场景。当在新视角合成输出之上运行时,Fixer减少了视角相关的伪影,并提高了重建场景的感知质量。

总结

本文逐步介绍了如何下载重建场景、设置Fixer以及运行推理来清理渲染帧。最终结果是获得一个更清晰、重建伪影更少的场景,从而实现更可靠的自动驾驶车辆开发。

要使用Fixer处理机器人NuRec场景,请从Hugging Face的PhysicalAI-Robotics-NuRec数据集下载重建场景,并按照本文介绍的步骤操作。

了解更多信息,探索Fixer如何针对特定的操作设计领域和传感器配置进行后训练。有关如何在重建期间使用Fixer的信息,请参阅相关文档。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐