组件比较
本节,作者将比较3D 目标检测器的每个必需组件。与框架级设计相比,下面的设计通常是模块化的,可以灵活地应用于不同的算法。
特征提取
与 CV中的其他任务一样,良好的特征表示是构建高性能基于图像的3D 检测器的关键因素。最近的大多数方法使用标准的 CNN 作为它们的特征提取器,而一些方法偏离了这一点,引入了更好的特征提取方法。
标准骨干网络
虽然一般输入数据只是 RGB 图像,但基于特征提升的方法和基于数据提升的方法便于使用2D CNN [104],[105],[106],[107],[108],3D CNN [109],[110]和点式CNN [111],[112],[113]作为骨干网络。
局部卷积
如下图所示,Brazil an Liu [68]建议使用两个平行的分支来分别提取空间不变特征和空间感知特征。
特别是,为了更好地捕捉单目图像中的空间感知线索,他们进一步提出了一种局部卷积: 深度感知卷积。提出的操作使用非共享卷积内核来提取不同行的特征。最后,在估计最终结果之前,将空间感知特征与空间不变特征相结合。注意,非共享内核将引入额外的计算成本,并且[68]也提出了这个方案的有效实现。
特征注意力机制
自Hu等[114]将注意机制[115]引入 CNN 以来,提出了许多注意力块[114],[116],[117]。尽管这些方法的细节各不相同,但它们通常有着相同的关键思想: 按照特定维度(例如,通道维度)重新加权特性。
深度增强特征学习
为了提供 RGB 图像中不可用的深度信息,一种直观的方案是使用深度图(通常从现成的模型或子网络获得)来增强 RGB 特征[45] ,[58]。此外,还提出了一些有效的深度增强特征学习方法。尤其是,Ding等[60]提出了一种局部卷积网络,他们使用深度图作为指导来学习 RGB 图像不同扩张率的动态局部卷积滤波器。
特征模拟
最近,一些方法提出在 LiDAR 模型的指导下学习基于图像的模型的特征。特别是,Ye等[65]采用伪 LiDAR (数据提升)流程,并强制从伪 LiDAR 信号中学习的特征应与从真正的 LiDAR 信号中学习的特征相似。同样,Guo 等[82]将该机制应用于基于特征提升的方法,并在转换后的体素特征(或 BEV 特征)中进行特征模拟。此外,Chong等[3]将该方案推广到结果提升方法。它们都将所学到的知识从基于激光雷达的模型转移到潜在特征空间中的基于图像的模型,这些工作的成功表明基于图像的方法可以从特征模拟中受益。
特征对齐
在3D检测任务中只考虑了偏航角。然而,当颠簸/俯仰角度不为零时,这种设计将导致不对齐问题,下图说明了这个问题。
为了这个问题,Zhou等[22]提出了一种特征对齐方案。特别地,他们首先使用子网络估计自姿态,然后设计一个特征转移网络,根据估计的相机姿态,在内容级别和风格级别上对齐特征。最后,他们使用校正后的特征来估计 3D 边界框。
特征池化
Li等[118]为基于图像的3D检测提出了一个新的特征池化方案。如下图所示,对于给定的3D anchor,他们从可见表面提取特征,并通过透视变换将其扭曲成规则形状(例如7 × 7特征映射)。
然后,将这些特征映射结合起来,用于提炼最终结果的proposal。请注意,这些特征可以通过深度 ConvNetPest 投影进一步增强。使用 RoI Pool [37]或 RoI Align [38]连接从2D anchor提取的特征。
结果预测
获得 CNN 特征后,从提取的特征预测3D检测结果。作者将结果预测的新颖设计分为不同的方面,并讨论了这些方法。
多尺度预测
基线模型是使用最后一个 CNN 层的特征来预测结果[45] ,[34] ,[63] ,[16]。然而,这个方案的主要挑战来自于目标的不同尺度。特别是,CNN 通常分层提取特征,导致不同层次的特征有不同的感受野和语义层次。因此,很难预测所有的目标使用特定的层特征。为了解决这个问题,人们提出了许多方法,大致分为层次方法和核级方法。比如FPN、可变形卷积等,下图是一个例子:
分布外样本
由于范围、截断、遮挡等原因,不同的目标往往具有不同的特征,从一个统一的网络中预测同一目标可能不是最优的。基于这个问题,[63] ,[16] ,[77]采取了自组合策略。特别是,Ma等人[63]根据深度值(或 KITTI 3D 数据集定义的“难度”级别)将目标分为三个簇,并使用不同的head并行预测它们。Simonelli等[16]扩展了这种设计,为每个head增加了一个重新评分模块。Zhang等[77]根据目标的截断级别将其解耦为两种情况,并对其应用不同的标签分配策略和损失函数。此外,Ma等[72]观察到,一些远距离的目标几乎不可能准确定位,减少它们的训练权重(或直接从训练集中移除这些样本)可以提高整体性能。这种策略的潜在机制具有相同的目标[63] ,[16] ,[77] ,即避免从分布外的样本分散到模型训练。
深度估计的投影建模
与独立的深度估计任务相比,3D 检测中的深度估计有更多的几何先验,投影建模是最常用的一种。特别地,3D目标框的高度与其2D投影的高度之间的几何关系可表示为:
其中d和f 分别表示目标的深度和相机的焦距。2D检测框的高度用来近似 H2D,因此他们可以使用估计的参数来计算粗略的深度。然而,当使用2D 边界框(表示为 Hbbox2D)的高度作为 H2D时,会引入外部噪声,因为 H2D不等于Hbbox2D。为了缓解这个问题,Luet al。[75]提出了一种基于不确定性的方案,该方案在投影建模中对几何不确定性进行建模。此外,Barabanau等[44]利用 CAD 模型对汽车的关键点进行了标注,并利用2D/3D 关键点的高度差来获得深度。与之不同的是,Zhang等人[123]修正了上面的d计算公式,考虑了目标的位置、维度和方向的相互作用,并建立了3D检测框与其2D投影之间的关系。简而言之,GUPNet [75]捕获了噪声透视投影建模中的不确定性,Barabanau等[44]通过重新标记消除了噪声,而 Zhang 等[123]通过数学建模解决了误差。
多任务预测
作为多任务学习的3D 检测。3D检测可以看作是一个多任务的学习问题,因为它需要同时输出类别标签,位置,尺寸和方向。许多工作[131] ,[132] ,[133]已经表明,CNN 可以从多任务的联合训练中受益。同样,Ma等[72]观察到2D检测可以作为单目3D检测的辅助任务,并为神经网络提供额外的几何线索。此外,Guo 等[82]发现这对多目3D检测也是有效的。注意,在某些方法[68]、[30]、[34]、[33]、[63]中,2D 检测是必需的组件,而不是辅助任务。发现额外的关键点估计任务可以进一步丰富 CNN 的特征,估计的关键点可以用来进一步优化深度估计子任务[43] ,[78] ,[74]。此外,深度估计也可以为3D检测模型提供有价值的线索。具体而言,许多工作[23] ,[81] ,[82] ,[3]进行了额外的深度估计任务,以指导共享的 CNN 特征来学习空间特征,Parket 等[135]表明,大规模深度估计数据集的预训练可以显着提高他们的3D检测器的性能。
损失函数
损失函数是数据驱动模型不可缺少的一部分,3D 检测的损失函数可以简化为:
特别地,分类损失用于识别候选框的类别并给予置信度。位置损失 Lloc、维度损失 Ldim 和方向损失 Lori 分别用于回归3D边界框所需的项,即位置、维度和方向。最后三个损失项目是可选的。特别是,lossLjoi,例如角点损失[58] ,可以在一个单损失函数中共同优化位置、维数和方向。置信度损失 Lconf 被设计用来给检测到的检测框更好的置信度。最后,辅助损失可以引入额外的几何线索到 CNN。具体的损失函数细节可详见原文。
后处理
后处理从 CNN 获得结果后,采用一些后处理步骤去除冗余检测结果或改进检测结果。这些步骤大致可以分为两类: 非极大值抑制(NMS)和后优化。
NMS
传统 NMS: 一般来说,原始检测结果有多个冗余边界框覆盖单个目标,NMS 的设计使得单个目标仅被一个估计的边界框覆盖。下图给出了传统 NMS 的伪代码。
选择最大分数的边界框,从检测结果中去除所有与之有高重叠的边界框。这个过程递归地应用于其余的框中,以获得最终的结果。
NMS 的变体: 为了避免移除有效目标,Bodlaet 等[145]只是降低了高重叠目标的分数,而不是丢弃它们(Soft NMS)。[146]观察分类评分与检测框质量之间的不匹配,并提出回归分配评分,即 IoU 评分,以发挥(IoU Guided NMS))作用。由于单目3D 检测器的主要问题是定位误差[72] ,[80] ,其中深度估计是恢复目标位置的核心问题,Shiet 等[127]使用方法来捕获估计深度的不确定性,并使用深度不确定度 σ 深度来标准化应用 NMS (Depth Guided NMS)时的得分 σ 深度。据[147] ,[148] ,非极大分数的检测框也可能具有高质量的定位,并建议通过加权平均高重叠检测框(加权 NMS)来更新。同样,Heet 等[141]也采用加权平均机制,更新平均规则。特别地,他们在高斯分布下建立了检测框各项的不确定度模型,然后设置了仅与 IoU 和不确定度(Softer NMS)相关的平均规则。刘等[149]建议对不同密度的目标使用动态 NMS 阈值 Ω(自适应 NMS)。
注意,上面提到的一些算法[145] ,[141] ,[148] ,[149] ,[146] ,[147]最初被提出用于2D检测,但它们可以很容易地应用于3D检测。此外,[148] ,[141]也可以被视为后优化方法,因为他们除了消除重复检测,还在 NMS 过程中更新预测结果。Kumaret 等[70]提出了一种可区分的 NMS 单目3D 检测方法。通过这种设计,损失函数可以直接对 NMS 后的结果进行操作。此外,对于基于多摄像机的全景数据集,例如 nuScenes和 Waymo Open,需要全局 NMS 来消除重叠图像的重复检测结果。
后优化
为了提高检测框的质量,一些方法选择在后优化步骤中通过建立几何约束来进一步细化 CNN 的输出。
Brazil 和 Liu [68]提出了一种基于投影3D边界框和2D边界框的一致性来调整方向 θ 的后优化方法。特别是,他们迭代添加一个小偏移量的预测取向 θ 和投影更新的3D检测框到2D图像平面。然后,他们选择接受这个更新或通过检查2D 边界框和投影的3D 边界框之间的相似性是增加还是减少来调整偏移量。
另一种后优化方法是建立在目标的3D 关键点和2D 关键点之间的一对一匹配的基础上。具体来说,Li等[74]生成2D 关键点标注(角点版本,可视化参见下图):
然后用它们的3D 检测器中的2D 关键点估计最终结果。之后,他们恢复世界空间中的3D 角点,并将其投射到图像平面中。最后,他们通过使用 Gauss-Newton [150]或 Levenberg-MarQuardt算法[151]最小化配对像素的像素距离来更新估计的参数。
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)