点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
编辑 | 自动驾驶之心
写在前面
基于视觉的3D语义场景补全(SSC)通过3D volume表示来描述自动驾驶场景。然而,场景表面对不可见体素的遮挡给当前SSC方法在幻想精细3D几何形状方面带来了挑战。这里提出了一种名为HybridOcc的混合方法,该方法结合了Transformer框架和NeRF表示生成的3D volume查询建议,并在一个由粗到细的SSC预测框架中进行优化。HybridOcc通过基于混合查询建议的Transformer范式来聚合上下文特征,同时结合NeRF表示来获得深度监督。Transformer分支包含多个尺度,并使用空间交叉注意力进行2D到3D的转换。新设计的NeRF分支通过volume渲染隐式推断场景占用情况,包括可见和不可见的体素,并显式捕获场景深度而非生成RGB颜色。此外还提出了一种创新的占用感知光线采样方法,以引导SSC任务而非仅关注场景表面,从而进一步提高整体性能。在nuScenes和SemanticKITTI数据集上进行的大量实验证明了HybridOcc在SSC任务中的有效性。
领域背景介绍
基于相机的3D场景理解是自动驾驶感知系统的重要组成部分。它涉及获取准确且全面的现实世界3D信息,即使在车辆轻微移动的情况下也能如此。近年来,在多相机系统的帮助下,在深度估计和3D检测等任务中,多相机系统已经取得了与激光雷达相媲美的成绩。语义场景补全(SSC)最近比3D检测获得了更多关注。由于语义场景补全能够表示任意形状和类别的场景,因此它更适合自动驾驶的下游任务。然而,从有限的观测视角推断出全面的语义场景是具有挑战性的。
MonoScene 提出了直接通过特征投影将2D图像提升到3D体素以完成SSC任务。最近,一些工作提出了基于空间交叉注意力将多视角相机特征提升到3D表示。在Occ3D 提出的从粗到细的框架中,性能受限于缺乏深度信号。其它研究采用了额外的深度估计模块来提高3D体素表示的质量,如图1(a)所示。FB-Occ使用了预训练的深度预测模型和深度感知的反投影模型来辅助生成3D体素特征。然而,大多数基于深度的方法都集中在场景的可视表面上,缺乏对遮挡区域的推断。VoxFormer提出了一个额外的基于掩码自动编码器的模块来考虑遮挡体素,但其繁琐的两阶段结构不利于端到端模型训练。目前的各种方法都表明了深度信号对于SSC任务的重要性。值得注意的是,目前存在两种用于自动驾驶的不同功能的3D占用数据集。一种是仅评估可视表面(图2(b)),另一种则用于场景的完整占用,即SSC任务(图2(a))。本文更侧重于SSC任务,该任务考虑了遮挡的物体或区域。当前的SSC工作大多受到遮挡的影响,使得每个体素特征包含许多模糊性。因此,遮挡体素的占用预测仍面临挑战。
神经辐射场(NeRFs)的引入极大地提高了3D场景重建的性能。SceneRF 为辐射场设计了一种概率射线采样方法,并将其应用于自动驾驶场景的3D重建。最近,一些方法利用提升的3D体素特征进行深度和颜色渲染。由于基于NeRF的3D重建方法主要关注场景的可视表面,如图1(b)所示,SSC任务需要对不可见区域的体素特征给予额外关注。因此,在SSC任务上粗略且直接地应用NeRF模型可能不利于优化隐函数和完成SSC任务。
为了应对这些挑战,本文提出了HybridOcc,这是一种基于多相机的语义场景补全方法。HybridOcc在粗到细的结构中细化了由NeRF表示和Transformer架构生成的混合占用建议。如图1(c)所示,HybridOcc包含两个分支。受SurroundOcc 和Occ3D 启发的Transformer分支,使用可学习的交叉注意力将2D图像提升到3D体素,并从粗到细的结构中逐渐细化3D体素查询。NeRF分支创新性地采用了具有深度监督的体积渲染来预测完整的占用情况。由于自动驾驶场景中的遮挡给NeRF优化带来了挑战,我们提出了占用感知射线采样来优化大型辐射volumes。隐函数通过沿射线在可见和不可见体素之间取占用感知采样点来训练,以服务于SSC任务。在粗到细的结构中,需要仔细考虑每一层的占用先验。改进的NeRF可以推断出遮挡不可见区域的占用情况。将NeRF和粗粒度Transformer预测的二进制占用混合成新的体素查询集,以细化语义占用。综上所述,我们的贡献有三方面:
提出了一种新颖的Transformer上下文特征聚合与NeRF深度监督相结合的互补方法。在粗到细的结构中,NeRF表示和Transformer框架生成的混合占用建议得到了端到端的细化。
引入了一种新颖的深度监督神经辐射场,该辐射场在SSC任务中考虑了所有可见和遮挡的不可见体素。它将深度信号添加到粗到细的SSC预测框架中,并包括了一个占用感知射线采样策略。
大量实验证明了HybridOcc的有效性,其性能优于基于深度预测网络的方法,如FB-Occ和VoxFormer。
一些相关工作介绍
3D语义场景补全可以提供对自动驾驶场景更详细的理解。一些先前的工作是在小规模室内场景中进行的。随着SemanticKITTI数据集和nuScenes数据集的发布,最近迅速提出了针对大规模自动驾驶场景的SSC基准。SurroundOcc和Occ3D分别构建了基于nuScenes的3D占用预测数据集,一个面向密集的SSC任务,另一个仅评估可见表面的占用情况。这些占用方法可以简单地分为两类:基于深度预测构建3D体素特征,以及使用基于Transformer的可学习体素特征聚合。一些方法引入历史帧数据来解决深度预测和遮挡问题。OccFiner提出隐式捕获和处理多个局部帧。此外,一些方法使用NeRF表示来探索占用任务,但它们更侧重于重建而非SSC。我们提出了一种结合Transformer范式和NeRF表示优势的方法,以增强SSC任务性能。
3D场景重建旨在从单视图或多视图的2D图像中建模3D表面信息。早期的重建方法侧重于体素的显式表示,但现在神经辐射场(NeRF)和3D高斯splatting在隐式重建中越来越受欢迎。考虑到NeRF存在渲染速度慢的问题,一些方法在保持渲染质量的同时提高了渲染速度。基于图像特征的隐式重建工作将对象级重建扩展到室内场景,并致力于构建一个通用的隐式网络。一些工作采用粗到细的方法融合多尺度特征,以获得更准确的室内场景3D重建。SceneRF提出了球形U-Net和概率射线采样,以扩展NeRF用于大规模室外场景。值得注意的是,在NeRF范式下的3D重建需要沿射线的采样点集中在3D表面附近,以便更好地渲染颜色或语义。然而,对于SSC任务来说,将辐射场集中在被占用的体素上更有意义。
HybridOcc方法介绍
HybridOcc的总体流程如图3所示。以camera图像为输入,使用图像主干网络提取多尺度摄像头特征。然后,通过由Transformer框架和NeRF表示组成的双分支学习稀疏的3D体素特征。具体来说,Transformer分支通过2D到3D转换模块从多摄像头特征中学习3D体素形状的查询。混合3D查询proposal分别来自Transformer和NeRF,并以粗到细的方式逐步细化。在NeRF分支中,原始的NeRF范式被新的自动驾驶场景占用预测NeRF模块所取代。体渲染占用预测模型直接受深度监督,而不是RGB颜色。语义占用真实值监督多尺度体素语义占用预测。
1)Transformer Branch
粗到细的方法。与SurroundOcc中获得的密集3D体素不同,受Occ3D的启发,我们采用粗到细的方法来逐步细化稀疏体素,如图3上半部分所示。具体来说,每个尺度的3D体素空间的语义占用Ol是通过遵循SurroundOcc的MLP(多层感知机)进行预测的。占用值低于占用阈值θ的体素被定义为空体素。第l层的体素占用Ol作为更高分辨率体素中查询先验位置分布的一部分,如图3中的紫色箭头和紫色方框所示。中的稀疏体素被记录为稀疏查询建议,,其中,并且是通过每个尺度的2D到3D模块从多camera特征中学习得到的。最后,与上采样的进行跳跃连接,并输入到MLP中以预测第l+1层的语义占用。语义占用预测可以表示为:
其中,up表示2倍上采样,h(·)表示多层感知机(MLP)。值得注意的是,粗粒度体素V1的初始查询建议是密集构建的。细粒度V2、V3和V4的查询建议的先验空间分布分别由Transformer分支和NeRF分支在每个尺度上的二进制占用率的混合组成。
2D到3D的转换。受近期基于Transformer的多camera的3D感知方法的启发,将体素的3D参考点投影到2D相机上以聚合特征。具体来说,每个对应于查询的3D参考点,都根据给定的相机内参和外参投影到2D特征图上,并执行可变形交叉注意力(DeformAtt)来学习特征:
其中,X是多camera特征,和是通过线性投影获得的权重,是注意力权重且,X(p + ∆pmk)是与2D参考点p相对应的采样特征,∆pmk是与p相对应的学习到的位置偏移量。其他设置遵循SurroundOcc和BEVFormer。最后,通过3D稀疏卷积对体素形状的查询Q进行进一步优化,使得每个体素查询子集都关注于彼此之间的局部信息。
2)Neural Radiance Field Branch
深度渲染监督。传统的NeRF基于光线沿路上采样点的密度ρ来优化连续的辐射场f(·) = (c, ρ),并通过RGB进行体渲染的监督。与之不同的是,我们基于SceneRF设计了一个新的辐射场,而新的NeRF模型具有深度监督以预测3D占用率。NeRF分支如图3底部所示,NeRF分支基于来自图像主干的第l层多摄像头特征Xl(l = 2, 3, 和 4)进行占用率预测和深度渲染。从每个相机的像素坐标中均匀采样I个像素,并沿着通过这些像素的光线采样N个点。这种均匀采样策略与SceneRF一致。然后,按照SceneRF的方法将Xl转换为球面空间以获得,以便每个采样点x可以投影到球面空间上,通过双线性插值检索图像特征向量。最后,将点x的特征和3D位置编码γ输入到隐式表达函数MLP中,以预测体素的二值占用率σ。值得注意的是,NeRF分支仅需要为基于Transformer的粗到细结构提供查询的先验空间分布信息,因此,我们只预测与类别无关的占用率。二值占用率预测的隐式辐射场定义为:
与大多数使用从密度到颜色的体渲染的NeRFs不同,我们尝试从辐射体显式地揭示深度。分别在多尺度图像特征X2、X3和X4上进行深度体渲染,以便多尺度特征可以获得深度监督。对于第l尺度的特征,我们将深度体渲染定义为:
占用率感知的光线采样。先前的研究表明,沿着场景表面附近的光线采样点可以有效地提高渲染效率。图4(a)展示了分层体采样方法,该方法生成了一个沿着光线聚焦于表面的概率密度函数(PDF),以优化采样点。在SSC任务的NeRF模块中,目标是根据可见表面和不可见体素的特征来估计深度,而不是颜色或类别。NeRF分支的隐函数需要完成对整个场景的3D体素二值占用率预测。对于占用率预测的NeRF模型,直观地看,落在非空体素上的光线采样点可以提高渲染效果。因此,我们提出了一种占用率感知的光线采样策略,其中体积Vl的占用率预测结果Ol明确地指导体积中每条光线上的每个采样点,如图4(b)所示。
具体来说,对于每条光线,首先在近边界和远边界之间均匀采样128个点。然后,将这些点投影到3D体素V3中,以查询占用状态O3,并根据占用状态采样32个点。如果占用的点超过32个,则从中随机采样32个点。否则,我们接受所有占用的点,并随机采样其余的点。这种占用率感知的光线采样策略侧重于对场景内占用体素的采样,从而优化二值占用率预测和深度体渲染。
混合查询提proposal。上述NeRF分支具有3D占用率预测能力,以nuScenes数据集为例,首先将每个相机的特征X2、X3和X4独立地划分到3D体素空间中,并通过NeRF模块预测3D体素的二值占用率。然后,在体素坐标中融合多相机结果,并结合相机外参,获得占用率分布。同时,深度监督信号也会更新图像特征,使模型对深度敏感。最后,将NeRF分支隐式预测的占用率与粗粒度Transformer分支在体素Vl-1中显式估计的进行融合。混合查询proposal作为第l级查询,参与2D到3D的过程。混合查询proposal 可以表示为:
3)损失函数
双分支占用率预测网络是一个端到端的优化模型。模型的总损失β,其中是Transformer分支的显式损失,是NeRF分支的隐式损失,β设置为0.5。多尺度3D体素的监督灵感来源于SurroundOcc。这里也对每个尺度的体素进行监督,以获得粗粒度和细粒度的3D特征。采用交叉熵损失来进行3D语义占用率预测,可以表示为:
其中αi是第l尺度监督的衰减损失权重。高分辨率体素V4的混合查询需要足够的监督信号,对于NeRF分支的损失,使用二元交叉熵损失来进行类别无关的占用率预测,并利用SILog损失来优化深度,深度由激光雷达点的投影进行监督。同时也包括衰减损失权重α,可以表示为:
实验结果对比
在nuScenes数据集上进行了多相机语义场景补全实验,该数据集包含来自6个相机的环绕RGB图像数据和覆盖360度全视场的激光雷达扫描数据。这1000个多模态数据被分为训练集/验证集/测试集,比例为700/150/150。SurroundOcc基于nuScenes数据集提出了一个3D SSC基准,其中包含17个类别的3D占用率。感知范围在X、Y轴上被裁剪为[-50m, 50m],在Z轴上被裁剪为[-5m, 3m]。语义占用率的真实体素维度为200×200×16,体素大小为0.5m。对于Occ3D-nuScenes,感知范围在X、Y轴上被裁剪为[-40m, 40m],在Z轴上被裁剪为[-1m, 5.4m]。最终输出的占用率形状为200×200×16,体素大小为0.4m。
为了进一步证明方法的有效性,在SemanticKITTI数据集上进行了单目语义场景补全实验,该数据集用21个语义类别(19个语义类别、1个自由类别和1个未知类别)标注了自动驾驶场景。数据集包含22个序列,并被分为10/1/11用于训练/验证/测试。感知范围在X轴上被裁剪为[-25.6m, 25.6m],在Y轴上被裁剪为[0, 51.2m],在Z轴上被裁剪为[-2m, 4.4m]。真实语义占用率的维度为256×256×32,体素大小为0.2m。
1)Metrics
对于SurroundOcc-nuScenes和SemanticKITTI数据集,我们报告了占用体素的交并比(IoU)作为类别无关场景补全(SC)任务的评估指标,并遵循SurroundOcc的方法,报告了SSC任务中所有语义类别的平均交并比(mIoU)。对于Occ3D-nuScenes,遵循FB-Occ和Occ3D的方法报告mIoU。值得注意的是,Occ3D-nuScenes仅评估可见区域,如图2所示。
2)详细的实施细节
对于SurroundOcc-nuScenes数据集,输入图像的分辨率为900×1600。遵循SurroundOcc采用从FCOS3D模型初始化的ResNet-101作为图像主干网络。图像主干网络产生3级特征图,并采用FPN在主干网络之后生成4级隐藏维度为256的特征图。对于SemanticKITTI数据集,将cam2的图像裁剪为370×1220的大小,并使用EfficientNetB7作为图像主干网络以进行公平比较。对于Occ3D-nuScenes数据集,遵循FB-Occ将输入图像的分辨率调整为256×704,并采用ResNet-50作为图像主干网络。
对于SurroundOcc-nuScenes和SemanticKITTI数据集,将2D到3D空间交叉注意力层的数量分别设置为6、3、1和3。每个级别的空间交叉注意力在每个参考点周围分别使用8、4、4和4个采样点。NeRF模块中隐函数f(·)的MLP结构与SceneRF一致。我们在占用率感知射线采样中每条射线使用32个点。占用率阈值θ设置为0.5。Occ3D-nuScenes数据集评估场景的可见表面,将我们的HybridOcc采样策略简单地设置为概率射线采样。我们在nuScenes数据集上训练了24个周期,在SemanticKITTI数据集上训练了30个epoch,默认学习率为2×10−4。所有模型均在4个NVIDIA A800 GPU上以bs为4进行训练。
3)结果对比
参考
[1] HybridOcc: NeRF Enhanced Transformer-based Multi-Camera 3D Occupancy Prediction.
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!重磅,自动驾驶之心科研论文辅导来啦,申博、CCF系列、SCI、EI、毕业论文、比赛辅导等多个方向,欢迎联系我们!
① 全网独家视频课程
BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
网页端官网:www.zdjszx.com② 国内首个自动驾驶学习社区
国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】全平台矩阵