旷视LE3D点亮每一片黑暗:HDR训练时间少99%,FPS提升4000倍!

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心三维重建技术交流群

论文作者 | Chun-Le Guo

编辑 | 3D视觉之心

高动态范围(HDR)场景如何重建?

现有的新视图合成(NVS)技术主要使用多张曝光良好且无噪声的低动态范围(LDR)RGB图像作为输入来重建3D场景。使用高动态范围(HDR)场景重建技术,需要有在低光或高对比度环境下捕捉高质量图像的能力,例如夜间场景或存在显著光照差异的区域。

目前HDR场景重建技术主要分为两类,均基于体绘制:

  • 使用多曝光LDR RGB图像进行监督训练

  • 直接在噪声RAW数据上进行训练。

现有的挑战

  • 在夜间场景中,由于sRGB数据的动态范围有限,其重建性能受到限制。

  • 虽然RAW数据在夜间场景中保留了更多细节,但也更容易受到噪声影响。

  • 专为增强噪声抵抗力的RawNeRF[2],训练时间过长和无法实时渲染

虽然3DGS在重建和实时渲染方面展示了强大的能力,但它不适合直接使用夜间RAW数据进行训练:

  1. 基于夜间图像的SfM估计通常不准确,导致远景模糊或浮动物的出现

  2. SH由于其有限的表示能力,无法充分表示RAW图像的HDR颜色信息

  3. 最终重建的结构(如深度图)不佳,导致下游任务(如再聚焦)表现不理想。

本文介绍的LE3D专为以上问题设计,主要特点如下:

  • 为了解决低光场景中SfM远景估计不准确的问题,提出了锥散初始化以丰富COLMAP估计的SfM。它使用估计的相机姿态在锥内进行随机点采样。

  • 用一个微型MLP代替SH来表示RAW线性色彩空间。为了更好地初始化每个高斯的颜色,为各种高斯原语使用不同的颜色偏置。

  • 提出使用深度失真和近远正则化来实现更好的场景结构,以进行下游任务(如再聚焦)。如图1(左)所示,LE3D仅需大约1.5 GPU小时(比RawNeRF[2]少99%)的训练时间即可进行实时渲染,并以每秒100帧(比RawNeRF[2]快约4000倍)的速度渲染,质量相当。此外,它还支持HDR渲染、再聚焦和曝光变化等下游任务,如图1(右)所示。

ceabf16b9d9b803bc1a71cc7f2ef8c54.jpeg

项目链接:https://srameo.github.io/projects/le3d

知识回顾

3D高斯散射

3D高斯散射通过计算像素的颜色和深度,并混合许多3D高斯原语来渲染详细的场景。每个高斯由其在3D空间中的中心 、一个缩放因子 、一个旋转四元数  以及其他属性如不透明度  和颜色特征  来定义。高斯原语的基函数由方程(1)给出,该方程结合了由缩放和旋转参数导出的协方差矩阵。

49e5c84786cb1ccb2fdc0b4e40993415.png

其中,协方差矩阵  由缩放因子  和旋转四元数  确定。通过这种方式,3D高斯散射能够在图像平面上准确表示复杂的颜色和深度信息,从而实现高质量的场景渲染。

在渲染过程中,像素的颜色是通过混合多个在像素位置上重叠的高斯原语的贡献来确定的。这个过程涉及将颜色特征  通过球面谐波(SH)解码为颜色 ,并通过将每个高斯原语的不透明度  与其在图像平面上的投影2D高斯  相乘来计算每个原语的 。与传统的光线采样策略不同,3D高斯散射采用优化的栅格化器来收集渲染所需的相关高斯原语。具体来说,颜色  是通过混合重叠在像素上的  个有序高斯原语来计算的:

443f0fda6f3de2b66f1605504bc140a0.png

其中, 表示第  个高斯原语的不透明度贡献, 表示通过SH解码得到的颜色特征。在这种优化的栅格化过程中,每个高斯原语对最终的像素颜色做出贡献,使得3D高斯散射能够实现高效和高质量的场景渲染。

使用噪声RAW图像进行HDR视图合成

RawNeRF[2] 作为NeRF的一个强大扩展,专门解决了使用噪声图像进行高动态范围(HDR)视图合成的挑战。与低动态范围(LDR)图像不同,HDR图像中的动态范围在亮区和暗区之间可以跨越几个数量级,导致NeRF的标准L2损失不足以处理这种情况。为了解决这个问题,RawNeRF引入了加权L2损失,以增强在暗区的监督。

RawNeRF在色调曲线  上应用梯度监督,其中 ,并使用  作为渲染颜色  和噪声参考颜色  之间L2损失的加权项。通过在  上应用停止梯度函数 ,最终损失可以表示为:

ea1737138ae6f18e29e349d9b3f311af.png

这种方法通过在暗区提供更强的监督,有效地应对了HDR图像中的大动态范围和噪声问题,从而改进了HDR视图合成的质量。

具体方法

LE3D流程如图2所示:

  1. 为了解决COLMAP在夜间捕捉远景时的不足,采用了提出的锥散初始化方法,以丰富从COLMAP获得的点云。

  2. 实验表明,原始3DGS中的SH(球面谐波)在表示RAW线性色彩空间时不足(如图4(e)和图7所示)。因此用一个小型的颜色MLP(多层感知器)来代替SH。

  3. 为了增强场景结构并优化下游任务的性能,提出了深度失真  和近远  正则化方法。4195ff1444295a2a3c2e2b85059aedd9.png

对原始3DGS表示的改进

直接将3DGS应用于噪声RAW图像集面临两个上述挑战,即缺乏远处点和对RAW线性色彩空间的不足表示。为了解决这些问题,我们对原始3DGS表示提出了以下改进。

锥散初始化

为了丰富由COLMAP初始化的点云  以涵盖远景,估计了所有相机的位置和方向。在此基础上,在预定义的视锥体  内随机散布点。要定义 ,需要确定:

  1. 视点 

  2. 视向 

  3. 视场角 

  4. 近平面  和远平面 

对于面向前方的场景,视向可以通过平均所有相机的方向轻松确定,表示为 。为了涵盖从所有训练视点可以看到的所有可见区域,我们使用所有相机视场角的最大值,表示为 。此外, 需要包含所有相机的原点  以确保从所有视角对场景的完全覆盖。这意味着  应该包含一个圆,其中心在 ,半径为 ,并且垂直于 。

dbffcd3fdcf0e28fed888b84c4547b33.png

对于近平面  和远平面 ,分别使用从COLMAP初始化点云  中最近点到  的距离以及最远点距离的  倍来表示。随后在视锥体  内随机散布点以获得丰富的点云 ,其中  是散布的点集。然后,用  而不是  来初始化高斯原语。

通过这种方法,可以在视锥体内随机散布点,从而丰富COLMAP初始化的点云,特别是在远景区域。这有助于更全面地表示场景,从而提高渲染效果。

带有原语感知偏置的颜色MLP

为了应对SH(球面谐波)无法充分表示RAW线性色彩空间的问题,用一个小型的颜色MLP  来替代它。每个高斯原语都初始化一个随机的颜色特征  和一个颜色偏置 。为了初始化 ,将每个  投影到每个训练图像上,获得每个点  的所有像素集 。颜色特征  与相机姿态  连接,然后输入到小型的颜色MLP  中以获得依赖于视图的颜色。

由于HDR色彩空间理论上没有颜色值的上限,使用指数函数作为  的激活函数来模拟这一特性。最终颜色  为:

077d4ee40a69381fd40545616980f905.png

颜色MLP不仅考虑了颜色特征和相机姿态,还能通过指数激活函数适应HDR色彩空间的特点,从而提高渲染效果。

深度失真与近远正则化

场景结构对于框架的下游应用非常重要,特别是像重新聚焦这样的任务。因此,我们提出深度失真和近远正则化来增强3DGS优化场景结构的能力。借鉴于基于NeRF的方法,使用深度图和权重图来正则化场景结构。

深度和权重图渲染

最近,一些基于3DGS的工作采用了某种形式的深度监督。此外,深度图对于像重新聚焦、机械提取和重光这样的下游任务至关重要。它们通过以下方式获得渲染的平均深度图 :

c9d6afd54c719c9c81e0e5e39e5f1396.png

其中, 表示深度图, 表示第  个高斯原语的混合权重, 和  分别表示在世界坐标系和相机坐标系中的位置,[W, t] 对应相机的外参。权重图中的像素值各自描述了通过该像素的射线上的分布直方图 。类似于 Mip-NeRF 360[3],可以通过约束每条射线上的高斯原语更加集中来优化场景结构。为了获得权重图,首先需要确定当前相机姿态  从最近的和最远的高斯原语的距离,分别表示为  和 。随后将区间  转换为  个交点,其中第  个交点表示为 。因此,直方图  中的第  个值可以通过以下方式进行渲染获得:

9a6de03e28892103948de2835977c7ad.png
正则化

类似的深度失真正则化  来使每条射线上的高斯原语更加集中:

51fc0f0f5be7069531e6a2155f788be5.png

Rdist将沿着整条射线的权重限制为要么接近零,要么集中在相同的交点上。然而,在现实世界中无界场景中,每个交点之间的距离  是巨大的。强行增加  的大小以减少每个交点的长度也会显著增加计算负担。这意味着  只能为每条射线上的高斯原语提供相对粗糙的监督,主要通过尽可能限制它们在同一个交点内。

为了进一步约束高斯原语的集中度,近提出远正则化 。 通过缩小每条射线上最近的 M 个高斯原语和最远的 M 个高斯原语之间的加权深度距离来增强场景结构的优化,其中最远指的是当混合权重接近 1 时的最后 M 个高斯原语。首先,提取两个高斯原语的子集 N 和 F,分别包含每条射线上最近的 M 个高斯原语和最远的 M 个高斯原语。随后,为这两个子集()以及最终的混合权重图()渲染深度图。混合权重图  是每个  的总和。 如下所示:

d69abb16a914d0c5660b68e5863fdd45.png

它不仅可以通过透明度监督来修剪每条射线前后的高斯原语,当它们之间存在显著差异时(依赖于  项)。与  相比, 还可以监督每条射线上第一个和最后一个 M 个高斯原语的位置尽可能接近(依赖于  项)。除了加权 L2 损失  和提出的正则化  和  外,还对最终的混合权重  引入约束。鉴于LE3D是在现实世界的场景中测试的, 理想情况下应接近 1,这意味着所有像素都应该被渲染。因此提出  来惩罚  小于 1 的像素。

实验效果

c928735ec22dbda4433b01671aacd284.png 4bc3659d75dcea4915006cfbd6930283.png 9c0fb0c360d6a246402b9bf0f5babbc6.png 8ee0ee6bff1453401611a770ef0e994d.png b95441d093e1cbfb38615ff2133635bd.png 9346b32410023be902a6c3df4d84096e.png

总结一下

LE3D是基于3DGS,专为应对基于体绘制方法的长训练时间和慢渲染速度问题而设计。引入锥散初始化和一个用于表示线性色彩空间的微型MLP,解决了使用COLMAP初始化时夜间场景中缺失远点的问题,同时用微型颜色MLP替代球面谐波,能有效表示线性色彩空间。最后,通过提出的深度失真和近远正则化增强了结构重建,使下游任务更加有效和真实。得益于线性色彩空间中的渲染图像,LE3D可以实时实现更真实的曝光变化和HDR色调映射,扩展了后续HDR视图合成处理的可能性。

参考

[1] Lighting Every Darkness with 3DGS: Fast Training and Real-Time Rendering for HDR View Synthesis

[2] Nerf in the dark: High dynamic range view synthesis from noisy raw images

[3] Mip-nerf 360: Unbounded anti-aliased neural radiance fields

投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!

① 全网独家视频课程

BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署大模型与自动驾驶Nerf语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

b1bdf2ed7cda76ada6ca5c8e4a90cde2.png 网页端官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

6dfb3808b0b1e71b7899616113444e0c.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

ae1c5a011525437a828214bb306c2bf9.jpeg

④【自动驾驶之心】全平台矩阵

7d6a3d7bcfccf85b7a1d16a3c7be686d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将如下bat脚本转换为shell脚本语言:@echo off set count=0 dir E:\ > nul 2>&1 if not %errorlevel% == 0 ( (echo E not exist) & pause && exit ) else ( (echo E exist) ) setlocal enabledelayedexpansion :loop for /f "skip=1 tokens=1" %%a in ('adb devices') do ( if not "%%a"=="List" ( set /a count+=1 ) ) if %count% gtr 0 ( echo found %count% devices goto end ) else ( echo device list is empty goto loop ) :end :read sn :: 将文件系统挂载为可写 adb root adb remount :: 获取当前时间戳,格式为yyyymmdd_hhmmss set timestamp=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% :: 获取设备SN set retry_times=0 :get sn for /f "delims=" %%i in ('adb shell getprop ro.serialno') do set "devicesn=%%i" set /a "retry_times=retry_times+1" if not defined devicesn ( if %retry_times% leq 2 ( echo Failed to read device SN, try again. Retry count= %retry_times% goto :get sn ) else ( echo Failed to read device SN after multiple retries, please check the connection and try again later. pause && exit ) ) echo devicesn=%devicesn% timestamp=%timestamp% :: 以设备序列号和时间戳为文件夹名创建目录 set device_dir=%devicesn%_%timestamp% md "E:\Raven_DualCam\%device_dir%" && echo create "%device_dir%" success if %errorlevel% neq 0 ( echo create "%device_dir%" fail pause && exit ) :: 将指定的文件pull到E盘 adb pull /mnt/vendor/persist/camera/dualcam_cali.bin E:\Raven_DualCam\%device_dir%\dualcam_cali.bin adb pull /mnt/sdcard/DCIM/DoubleCam E:\Raven_DualCam\%device_dir%\DoubleCam pause
06-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值