论文:https://arxiv.org/pdf/2305.18829.pdf
代码:https://github.com/chaytonmin/Occ-BEV
多摄像机3D感知技术(能够收集车辆周围360°的环境信息)已经成为自动驾驶领域的一个突出研究领域,为 Lidarb-based 解决方案提供了一个可行且成本效益高的替代方案。
然而,现有的多摄像机算法主要依赖于单目图像的预训练(ImageNet模型和深度估计模型),忽略了不同摄像机视图之间的空间和时间相关性。 此外,单目预训练虽然提高了图像特征提取的能力,但不能充分满足后续任务的预训练要求。
深度估计方法通常侧重于估计物体表面的深度,而忽略了物体和被遮挡元素的整体三维结构。
自动驾驶车辆收集了大量的 image-LiDAR 对,这些image-LiDAR 对包含有价值的三维空间和结构信息。因此,有效地利用这些未标记的 Image-Lidar 对有助于提高自动驾驶系统的性能。
论文提出了第一个多摄像机统一预训练框架 OCC-BEV,它首先重建三维场景作为基础阶段,然后在下游任务中对模型进行微调。设计了一个3D解码器,用于利用多视角图像的鸟瞰(BEV)特征来预测3D几何占用率,以使模型能够捕获对3D环境的更全面的理解。
OCC-BEV的一个显著好处是它能够利用大量未标记的图像激光雷达对进行预训练。
在自动驾驶领域,优先考虑重建整个三维场景的占用网格,而不是仅仅强调深度预测,模型的预训练会产生更大的好处。
单目预训练只提高了从单个视图中提取特征的能力,而多视图统一预训练则通过三维场景重建将多视图图像的时空信息融合起来进行预训练。
由于单帧点云的稀疏性,我们采用多帧点云融合作为占据标签生成的基准。Decoder 仅用于预训练,而训练好的模型用于初始化多摄像机感知模型。
论文涉及
多摄像机三维感知
Learning-based BEV 感知方法,基于 2D 到 3D 视觉转换,大致可以分为基于几何和基于 transformer 两种方法。
基于几何: LSS(Least Squares-Support Vector Machines)
LSS方法首先通过相机标定和几何变换,将每个相机的图像坐标系与车辆坐标系进行对应。然后,使用特征截锥技术,将相机视野中的每个图像区域映射到车辆周围的三维空间中。这样可以获得每个相机视野中的物体位置和姿态信息。
接下来,通过将这些三维物体位置和姿态信息映射到BEV平面(垂直于地面的平面),可以将它们投影到一个光栅化的BEV网格中。BEV网格将车辆周围的环境划分为离散的网格单元,每个单元可以表示物体的存在或者空闲状态。
基于 transformer: DETR3D
定义了三维空间中的对象 Query,并使用 Transformer Decoder从多视图图像特征中学习。
自监督学习
自监督学习(Self-Supervised Learning)和半监督学习(Semi-Supervised Learning)是机器学习领域中两种不同的学习方法。
自监督学习 是一种无监督学习的变体,通过从数据中自动生成标签或者利用数据内部的结构来进行学习。在自监督学习中,模型从输入数据中自行学习表示或预测任务,而无需人工标记的监督信号。
自监督学习的优点是可以利用大量未标记的数据进行训练,而无需耗费人力和时间进行标注。它在缺乏大量标注数据的情况下,可以提供有效的学习方法。
半监督学习 是介于无监督学习和有监督学习之间的一种学习方法。在半监督学习中,训练数据既包含带标签的样本,也包含未标记的样本。
半监督学习的优点是可以在有限的标记数据的情况下,利用未标记数据进行模型训练,从而提高学习性能和泛化能力。
论文内容
BEV 感知
多摄像机输入图像,表示为 I = { I i , i = 1 , 2 , . . . , N v i e w } I=\{I_i,i=1,2,...,N_{view}\} I={Ii,i=1,2,...,Nview},最初由图像 backbone 网络处理(ResNet-101),每个摄像机视角产生特征映射 F 2 d = { F 2 d i } i = 1 N v i e w F_{2d}=\{F_{2d}^i\}_{i=1}^{N_{view}} F2d={F2di}i=1Nview。然后,对这些特征从到2D到3D视图进行转换操作,以将它们投影到统一的鸟瞰视图表示中,表示为 F b e v ∈ R C × H × W F_{bev} \in \R^{C×H×W} Fbev∈RC×H×W。 通过加入特定的 heads,可以在鸟瞰视图上完成多种自动驾驶感知任务,包括3D目标检测、地图分割、目标跟踪等。
依赖于在单目图像上训练的特征提取模型(ImageNet)或深度估计模型没有考虑从不同的摄像机视图和帧捕获的图像之间的相互作用和相关性。深度估计只能估计物体表面的位置,忽略了物体的遮挡。
为了充分挖掘不同摄像机视图之间的时空关系,论文提出了一种多摄像机统一预训练模型。
多摄像机统一预训练
对于多摄像机系统,精确的三维占据网格预测有利于感知的准确性。
几何占据 Decoder
为了根据BEV特征 F b e v F_{bev} Fbev预测三维几何占用率, 首先转换BEV特征为 F b e v ′ ∈ R C ′ × D × H × W F_{bev}^{'}\in \R^{C^{'} \times D \times H \times W } Fbev′∈RC′×D×H×W,其中 D D D 表示高度通道数, C = C ′ × D C = C^{'} \times D C=C′×D。然后使用了一个专门设计的三维 Decoder 来生成三维几何占据。
Decoder 包括轻量级的 3D 卷积层,最后一层提供每个体素包含点的概率。Decoder 的输出表示为 P ∈ R D × H × W × 1 。 \boldsymbol P \in \R^{D \times H \times W \times 1}。 P∈RD×H×W×1。在预训练过程中,Decoder 的主要目的是重建被占用的体素。
Pre-training 目标
考虑到单帧激光雷达点云的稀疏特性,以及由于动态目标的存在而导致的融合大量帧的潜在不准确性,论文从一些关键帧的LiDAR点云进行融合,以生成占据标签。根据3D感知模型中的标准做法,激光雷达点云被划分成均匀间隔的体素。
将激光雷达点云沿 Z × Y × X Z×Y×X Z×Y×X 方向的维数分别确定为 D × H × W D×H×W D×H×W,体素大小相应确定为 v Z × v H × v W v_Z×v_H×v_W vZ×vH×vW。 体素的占据,即每个体素中是否包含点,作为地面真值 T ∈ { 0 , 1 } D × H × W × 1 \boldsymbol T \in \{ 0,1 \}^{D \times H \times W \times 1} T∈{0,1}D×H×W×1。 1 表示占据,0 表示空闲。
论文介绍了用于预训练多摄像机感知模型的二元几何占据分类任务。 该任务的目标是训练网络以准确预测基于多视点图像的三维场景的几何占据分布。 考虑到空白体素的数量相当大,预测占据格网存在一个不平衡的二元分类问题。为了解决这个问题,论文使用预测的占据值P和真实的占据体素T来计算二元占据分类的焦点损失: l o s s = − 1 b a t c h 1 n ∑ i = 1 b a t c h ∑ j = 1 n α t ( 1 − P t i j ) γ log ( P t i j ) loss= -\frac{1}{batch}\frac{1}{n}\sum_{i=1}^{batch}\sum_{j=1}^{n}\alpha_t(1-\boldsymbol P_{t}^{ij})^\gamma \log (\boldsymbol P_{t}^{ij}) loss=−batch1n1i=1∑batchj=1∑nαt(1−Ptij)γlog(Ptij) P t i j \boldsymbol P_{t}^{ij} Ptij是第 i i i 个训练样本中体素 j j j 的预测概率。 n = D × H × W n = D \times H \times W n=D×H×W 是体素总数,batch是批大小的数目。 对于类别1,设置 α t = α \alpha_t = \alpha αt=α 和 P t i j = P i j P_{t}^{ij} = P^{ij} Ptij=Pij;对于类别0,设置 α t = 1 − α \alpha_t = 1 - \alpha αt=1−α 和 P t i j = 1 − P i j P_{t}^{ij} = 1 - P^{ij} Ptij=1−Pij。
环境语义占据预测的预训练
直接预测多视点图像的三维语义需要大量的三维语义标注来进行训练,代价高昂且耗时。论文提出提出将多摄像头统一预训练算法扩展到周围语义场景完成任务,即首先进行几何占据预测,然后在语义场景完成任务上进行微调,以预测多视角图像的3D语义,更好地理解环境中的物体和场景,避免了为训练模型收集大量 3D 语义注释的开销和时间成本。
预训练模型的微调损失函数可以表示为以下公式:
L = − 1 N ∑ i = 1 N [ y i log ( p i ) + log ( 1 − p i ) ] − λ 1 M ∑ j = 1 M [ y j s e m log ( p j s e m ) + ( 1 − y j s e m ) log ( 1 − y j s e m ) ] L=-\frac {1}{N} \sum_{i=1}^{N}[y_i \log (p_i)+\log (1-p_i)] - \lambda \frac{1}{M} \sum_{j=1}^{M}[y_{j}^{sem}\log(p_{j}^{sem})+(1-y_{j}^{sem})\log (1-y_{j}^{sem})] L=−N1i=1∑N[yilog(pi)+log(1−pi)]−λM1j=1∑M[yjsemlog(pjsem)+(1−yjsem)log(1−yjsem)] N N N是体素的数量, y i y_i yi是真实值, p i p_i pi是预测值 y j s e m y_{j}^{sem} yjsem是周围语义标签的真实值, p j s e m p_{j}^{sem} pjsem是预测的周围语义标签, M M M是周围语义标签的数量, λ \lambda λ是微调损失函数的权重系数。
三维场景重建可视化
几个重建的3D场景。可以观察到,使用单帧点云作为占据格网生成的监督会导致不完整的重建结果,这是由于LiDAR点云的稀疏性。另一方面,使用三个关键帧及其相应的非关键帧作为监督信息可以实现更完整的3D场景重建。
优势
(1) 空时集成:通过利用多个摄像头视角的空间和时间信息,模型可以更好地理解环境的动态性,并做出更准确的预测。
(2) 统一表示:统一的预训练方法使模型能够在不同摄像头视角之间学习共享表示,促进更好的知识迁移,并减少对特定任务预训练的需求。
(3) 对遮挡区域的感知:单目深度估计只能预测物体的表面位置,而提出的多摄像头统一预训练方法使得对遮挡物体的整体三维重建成为可能。
与知识蒸馏的比较:论文旨在利用3D点云中丰富的空间信息,并将其转化为多摄像头算法所使用。独特的预训练算法消除了对注释或预训练LiDAR检测模型的需求,从而大大降低了对3D注释的要求。
局限性
(1)Decoder 中的 3D 卷积限制了它对需要高分辨率占用重建的任务的适用性。
(2)主要依靠激光雷达来获取地面真值占据网格。
(3)动态目标会导致定位不准确。
参考:Occ-BEV:通过3D场景重建助力多目预训练不断突破!