原文链接:https://arxiv.org/pdf/2106.10823.pdf

II.传感器


        分为被动传感器(如摄像机)和主动传感器(如激光雷达)。优缺点如下:


传感器

优点

缺点

单目摄像机

提供色彩和纹理信息

成本低

对光照条件敏感

不提供深度信息

立体摄像机

提供深度信息

计算复杂;视野有限

激光雷达

受光照影响小;360°视野

无纹理色彩;稀疏不规则;贵

固态激光雷达

比普通激光雷达可靠;成本低

视野有限


        关于摄像机-激光雷达融合可以提高检测精度和预测确定性,可靠性通过传感器校准和系统冗余保证。



III. 基本概念


__A. 问题描述__


        目标检测问题可描述为


\{\{B_i,C_i\}=\Phi(D_i;\Theta):i=1,\cdots ,M\}


其中B_i为3D边界框(使用7个参数描述,即中心点坐标、长宽高和朝向角;假定边界框紧贴地面),C_i为类别,D_i为点集;\Phi(D,\Theta)表示参数为\Theta的可训练模型。



__B. 坐标变换__


        激光雷达坐标系:x朝前,y朝左,z朝上;摄像机坐标系:x朝右,y朝下,z朝前。


\bold{y}=P_{rect}^{(i)}R_{rect}^{(0)}T_{velo}^{cam}p


p=[x,y,z,1]^\mathrm{T}是点在激光雷达坐标系下的坐标;\bold{y}=[u,v,1]^{\mathrm{T}}是对应第__i__个摄像机图像中像素坐标。__T__是激光雷达坐标系到摄像机坐标系的坐标变换矩阵;R是旋转矩阵(摄像机坐标系相对于参考摄像机的角度;假定所有摄像机的__x-y__平面都在同一平面上),P是投影矩阵(与摄像机的内部参数以及相对参考摄像机的基线相关)。



IV. 3D目标检测方法


        分类:基于图像的3D目标检测;基于点云的3D目标检测;基于多模态融合的3D目标检测。


        基于点云的3D目标检测进一步可分为基于多视图的、基于体素的、基于点的、以及基于点和体素的方法。



__A.基于图像的方法__


        可分为基于模板匹配的方法基于几何属性的方法


        对于前者而言,区域提案是关键,提出区域提案的方法包括传统的手工分组、窗口评分以及后来的区域提案网络(RPN)。


        后者可以简化为透视n点问题(PnP),通过几何特性和经验观测粗略估计物体的3D姿态,通过2D检测头提供精确的2D边界框。


        此外,最近还有一种方法,通过计算视差将图像投影回3D空间模拟激光雷达点(称为基于伪激光雷达的方法)。



(1)基于模板匹配的方法


        通过对3D提案采样和打分,并将其作为代表性模板进行2D/3D匹配。



  • 3DOP,它通过一对立体图像计算深度,将图像投影回3D空间成为点云;通过带有potential(如物体大小先验、地平面、点云密度)的马尔可夫随机场的能量最小化来生成目标提案,然后使用FastR-CNN来回归得到物体位置。
  • Mono3D用于使单目图像达到同样性能。它假设地平面垂直于图像所在平面,物体均位于地平面上,使用滑动窗口直接从3D空间采样候选目标,而不必计算深度。使用potential(如语义信息,实例级信息、位置先验等)为候选目标评分,选择最可能的一个通过FastR-CNN检测。

3DOP和Mono3D都输出针对类别的提案,所以potential需要针对每个类别设计。但它们过度依赖专业知识,无法泛化到复杂场景。


  • Deep MANTA:使用定制的2D检测头,输出2D边界框,以及部分2D坐标、部分可见性、3D模板相似度(由大型3D模型数据库监督)。选择3D模板中相似度最高的进行2D/3D匹配,以恢复几何信息。缺点是需要大型3D数据库,且无法识别数据库中不存在的物体。

(2)基于几何属性的方法



  • Deep3DBox:利用“3D角的透视投影至少应该紧贴2D边界框的一侧”这一几何信息。
  • GS3D:使用单目图像,在FastR-CNN上加入额外的方向预测分支,预测2D边界框和观测方向,称为2D+O子网络。然后根据自动驾驶的经验,认为3D边界框的顶部中心与2D边界框的顶部中心接近,来生成粗略的3D边界框。从2D边界框和3D边界框的3个可见表面提取特征进行融合,输入到3D子网络进行细化。此方法效果比其他基于单目图像的效果好得多,但从经验知识得到的假设不准确。
  • Stereo R-CNN:充分利用立体图像的语义属性和密集约束。分别使用共享权重的两个网络(ResNet-101+FPN)处理左右图像,再进行感兴趣区域(RoI)对齐和裁剪操作。RoI特征被拼接,输入到立体回归分支;通过模拟MaskR-CNN,使用RoI特征预测4个语义关键点。最后3D边界框可以通过几何约束(即3D角和2D框之间的投影关系以及关键点)估计。

(3)基于伪激光雷达的方法


        首先进行深度估计,再用基于点云的方法处理。这种方法大幅提高了检测精度。



  • Pseudo-LiDAR:首先使用金字塔立体匹配网络(PSMNET)估计深度,然后根据视差图将图像投影到3D空间(伪激光雷达点云),使用基于激光雷达点云的方法处理。


缺点:因为深度估计误差与距离成二次关系,故Pseudo-LiDAR仅在近距离目标检测上效果好。




  • MF3D:先通过单目深度估计模块计算视差,获得3D点云。然后将视差图的前视图特征与RGB图像融合,输入到2D区域提案网络,得到2D区域提案。最后将RGB图像的特征与伪激光雷达的特征拼接,进一步细化。



  • Mono3D-PLiDAR:通过单目深度估计方法(如DORN),将图像转换为点云,然后使用Frustum PointNets(见后面)处理。由于单目深度估计的误差,伪激光雷达含有大量噪声,表现在两方面:局部偏差和深度伪影。使用2D-3D边界框一致性损失(BBCL)处理前一个问题;使用Mask R-CNN估计的实例mask而非2D边界框,减少Frustum中的无关点,从而减轻后一个问题。

__B.基于点云的方法__



(1)基于多视图的方法


        将点云转换为前视域或鸟瞰图(BEV),以使用CNN和2D检测方法。



  • VeloFCN将点云投影到前视域,使用现成的2D检测器。
  • PIXOR将点云投影到BEV,减少遮挡,避免物体大小随距离变化;但舍弃了高度上的信息。

(2)基于体素的方法


        将点云转化为体素,使用3D CNN提取特征。因其在离散化过程中舍弃了细粒度的坐标信息而计算高效。


        分为硬体素化(划分体素,分配每一个点,超出限制的点会被丢掉,如SECOND和PointPillars使用)和动态体素化,区别如下图所示。



        体素中每个点的坐标信息可被加强为原始坐标和相对体素中心的偏移。


        将点的特征聚合为体素的特征,主要有3种方法:取平均、随机采样和用MLP(PointNet)处理(如VoxelNet、PointPillars、F-ConvNet采用此法)。



  • VoxelNet:3个组成部分——特征学习网络(引入类似PointNet的体素特征编码(VFE)层将点云转化为体素),卷积中间层(3D卷积),区域提案网络(RPN,输出检测结果)。


缺点:3D卷积的复杂性和内存占用。




  • SECOND:使用稀疏卷积减小内存占用、加速计算。


缺点:耗时的3D卷积仍然存在。




  • PointPillars:将点云转化为垂直柱体的集合,使用2D卷积进行目标检测。同样包含3个部分:特征编码网络(点云转化为柱体,生成BEV伪图像),2D卷积网络(下采样、上采样),检测头(回归3D边界框)。

缺点:BEV丢失信息。




  • Part-\mathrm{A^2}:由于3D边界框可以无遮挡地提供物体内part的信息,设计两个阶段(part感知阶段和part聚合阶段)。前一阶段使用类似UNet的网络卷积和反卷积非空体素来分割前景点以及预测part;同时,RPN输出粗糙的3D提案。后一阶段使用感兴趣区池化模块消除3D边界框的模糊性,并学习3D提案中点的空间关系。最后3D稀疏卷积聚合part信息,评分并细化位置。



  • HVNet:包含3个部分:多尺度体素化和特征提取、多尺度特征融合和动态特征投影、检测头。首先将点云体素化为不同尺度,再输入到注意体素特征编码器(AVFE)。然后高级语义特征被投影回原来位置,形成伪图像。最后使用FPN预测实例。

(3)基于点的方法


        通常有两种主干网络:PointNet及其变体、图卷积网络(GNN)。


        (A)PointNet++分层递归调用PointNet;密度自适应层(含多尺度分组MSG和多分辨率分组MRG)使其能自适应地抓取局部信息和细粒度模式;使用SA层下采样,FP层上采样。可以通过堆叠SA层获得灵活的感受野。



PointRCNN和3DSSD基于PointNet++建立模型,使用3D RPN生成以每个点为中心的高质量提案,在最后阶段进行细化。


  • PointRCNN:两阶段检测网络,将2D检测网络Faster RCNN移植到3D域。使用PointNet++语义分割生成前景点,然后自底向上地生成高质量3D提案;使用3D感兴趣区池化来汇集每个提案内的点及其语义特征,从而细化边界框和预测置信度。

缺点:PointNet++和细化模块都很耗时。





  • 3DSSD:移除了耗时的FP层,最远点采样时融合使用欧氏距离度量和特征度量,以弥补下采样时前景点的丢失;提出anchor-free的回归头,减小内存和增加精度。

        (B)GNN



  • Point-GNN:将点云中的每个点看作图的节点,距离足够近的点之间建立边。三个步骤:从下采样点云中建立图;利用邻域信息更新节点,用于检测类别和位置;从多个节点中融合3D边界框。

缺点:建立图的时间和推断时间很长。


        基于点的方法没有平移不变性。



为了减轻这一问题,Point-GNN提出自动配准机制,使用中心节点的结构特征,预测邻居相对坐标的对齐偏差;3DSSD预测前景点的偏移,由点和其所属实例中心的偏移的相对位置监督。


(4)基于点和体素的方法



  • PVConv



  • Fast Point R-CNN:第一阶段,通过VoxelRPN自下而上地体素化,生成少量高质量提案。第二阶段,一个轻型PointNet,RefinerNet,通过注意力机制融合点和其卷积特征,作为第一阶段体素化丢失定位信息的补充。



  • STD:与PointRCNN类似。创新在于提出球形anchor,比矩形anchor有更高的召回率。





  • PV-RCNN:集成了3D稀疏卷积的效率以及PointNet SA层感受野的灵活性。首先和SECOND一样使用3D稀疏卷积作为主干编码场景;然后使用__体素到关键点__的场景编码以及__关键点到网格__RoI的特征抽取以节省计算、细化定位。具体而言,前者使用体素SA(VSA)模块,来聚合多尺度体素级语义特征为关键点特征(关键点由原始点云的最远点采样得到)。




  • SA-SSD:先使用稀疏卷积逐步下采样;再将卷积特征均匀离散化为具有原始体素级单位的点级特征。然后真实3D边界框内的点,以及来自边界框中心的偏移量,联合优化一个辅助网络。前者使特征对物体边界敏感,后者建立了体素间的物体内关系。辅助网络在训练后被丢弃。

        无论是3D还是2D的目标检测,分类得分和定位精度的不匹配性都很显著(例如,非最大抑制(NMS)可能会删掉具有低分类分数的高质量边界框)。



  • STD增加了一个3D IoU估计分支,将每个边界框的置信度与3D IoU相乘;PV-RCNN直接将3D IoU作为训练目标
  • SA-SSD开发了一种部分敏感的warp操作,在通道维度上采样特征来进行分类。

        总的来说,基于体素的方法利于硬件实现,效果好;但计算量大,且对体素参数敏感;基于点的方法保留原始点的几何信息,其中基于PointNet的方法,最远点采样和FP层会花费比体素化更长的时间,而基于GNN的方法更容易抓取几何信息,但花费时间比PointNet更长。



__C.基于多模态融合的方法__


        一般的多模态融合分为早期融合和晚期融合。但在自动驾驶领域中分类为顺序融合和并行融合。


(1)顺序融合


        顺序利用多阶段特征。



  • Frustum PointNets:首先用2D检测器提取感兴趣区,然后转换到3D空间来获得棱台提案。然后棱台中的每个点被一个类PointNet的网络分割,获得兴趣点用于回归。


2D检测器减小了3D搜索范围,提供先验。


缺点:非常依赖2D检测器的精度。




  • PointPainting:利用图像的语义信息整合到点云中。首先对图像进行语义分割,然后将分类分数直接加到激光雷达点云上。然后对激光雷达点云使用3D检测器用于分类和定位。

缺点:不是端到端的训练;要求高精度语义分割。




  • Pseudo-LiDAR++:基于Pseudo-LiDAR的缺点,Pseudo-LiDAR++考虑对齐远处物体。它提出基于图的深度修正(GDC)算法,即使用稀疏而精确的激光雷达点来修正估计的深度。激光雷达点被投影到图像上,作为对应的伪激光雷达点的真实深度。仍使用PSMNET估计深度,但修正时先用kNN建立图,然后利用真实深度更新图的权重。最后,信息在整个图上传播。

缺点:不是端到端的深度学习方法。后来的Pseudo-LiDAR E2E解决了这一问题。


(2)并行融合


        在特征空间融合模态为多模态表达,然后输入到监督学习器。



  • MV3D:使用图像、激光雷达的BEV和前视图为输入。首先用BEV生成精确的3D候选边界框,然后根据其裁剪出各视图的相应区域。然后深度多视图融合网络融合RoI特征。


缺点:使用手工特征;小物体检测困难(下采样容易丢失)。




  • AVOD:将融合策略延伸到RoI预测阶段。给定3D锚框,从特征金字塔顶部的图像和BEV特征图中裁剪和缩放相应区域。使用平均融合特征,输入到全连接层中检测物体。这样可以生成高召回率的提案,对提高小物体的检测精度有帮助。

缺点:区域融合进发生在特征金字塔的顶部,而中部特征对检测很重要。



        MV3D和AVOD都是RoI级别上的融合。后来提出了像素级融合。





  • ContFuse:使用连续卷积像素级地融合多尺度卷积特征。

由于激光雷达点云中不是所有点都能在图像中看到,因此寻找BEV中每个像素最近的k个激光雷达点,然后根据激光雷达点的坐标,使用双线性插值检索对应的k个图像特征。然后使用MLP编码插值后的图像特征,以及这k个点和目标像素之间的偏移(用于建模每个点对最终表达的贡献),生成BEV像素的最终表达。


(对于BEV的每个像素,k个最近点被投影到图像获取图像特征,然后用类PointNet网络处理这k个图像特征。)


缺点:受限于远距离激光雷达点的稀疏性。




  • MMF:使用多个相关任务(如地面估计、深度补全和目标检测),通过不同层次的特征融合促进表达学习。这些辅助任务通过提供几何先验和跨模态关联促进融合。

使用像素级融合和RoI融合。前者对于BEV中每个像素,通过将最近的点投影到图像上来检索相应图像特征;后者分别在图像和BEV上进行RoI对齐操作,提取RoI用于融合和细化。缺点:深度补全确实增加了远距离激光雷达点的密度,但估计误差在多大程度上影响系统鲁棒性是不可知的。




  • 3D-CVF:体素化后使用3D稀疏卷积下采样到1/8,然后转化为BEV。同时使用预训练的ResNet-18提取相应的图像特征。

为了解决图像和BEV不对齐的问题,第一阶段采用简化的连续融合层自动校准特征投影,对齐BEV和图像:直接将体素的中心坐标投影到图像,插值图像特征;使用自适应注意力机制从图像特征和点云特征过滤信息。


第二阶段中,利用第一阶段提供的提案,使用RoI池化实现图像和BEV的RoI融合。


缺点:与基于激光雷达点云的方法(如PV-RCNN)仍有差距。


        像素级融合的缺点是引入“特征模糊”,即相距很远的两个激光雷达点可能对应同一个像素。


        顺序融合方法往往不能端到端训练;不同阶段之间存在紧密耦合,即前面阶段效果差会影响后面所有的阶段;富含信息、对检测重要的中间特征被抛弃。并行融合只有一个学习阶段,但多视图之间的对齐问题很棘手。



IV. 评估


        KITTI:覆盖了几乎所有的3D任务(如车道检测、深度估计和补全、目标跟踪和域自适应)。4个高分辨率摄像机,一个激光扫描仪和一个GPS/IMU定位单元。有汽车、行人和自行车3个类别,每个类别分为简单、中等和困难三个难度。


__A.评估指标__


        mAP(\mathrm{IoU_{3D}};TP、FP、TN;准确率P、召回率R;PR曲线;PR曲线的插值方法;AP)


__B.SotA的比较__


        (1)基于点云的方法效果最好,基于多模态融合的方法正在缩小与前者的差距(缺点是多模态处理会增加计算时间,不能在实际中使用);基于图像的方法效果很差(深度估计误差)。


        (2)单阶段检测正在接近两阶段检测的效果;但3D目标检测的性能仍与2D目标检测有一定差距。


        (3)在汽车类别上的检测结果好于其他两类(遮挡对汽车的影响更小)。


        (4)当点数变得相当多的时候,基于点的方法比基于体素的方法性能下降大。



附录


__A. 将点云转化为BEV的算法__



 __B. 将点云转化为前视图的算法__



__D. 实施细节__


(1)数据增广


        “ground truth augmentor”:在相应的场景中裁剪出真实边界框内的点,根据类别建立数据库。然后应用加权抽样,从数据库中随机“复制”真实边界框,无缝“粘贴”到当前场景中。



(2)损失函数


        (a)基础损失:定位损失和类别损失。


        使用(x^{gt},y^{gt},z^{gt},w^{gt},l^{gt},h^{gt},\theta^{gt})表示真实的边界框,(x^{a},y^{a},z^{a},w^{a},l^{a},h^{a},\theta^{a})表示估计的边界框。


\Delta x=\frac{x^{gt}-x^a}{d^a},\Delta y=\frac{y^{gt}-y^a}{d^a},\Delta z=\frac{z^{gt}-z^a}{d^a}


\Delta w=\log\frac{w^{gt}}{w^a},\Delta l=\log\frac{l^{gt}}{l^a},\Delta h=\log\frac{h^{gt}}{h^a}


\Delta\theta=\sin(\theta^{gt}-\theta^a),d^a=\sqrt{(w^a)^2+(l^a)^2}


L_{loc}=\sum_{b\in (x,y,z,w,l,h,\theta)}\mathrm{SmoothL1}(\Delta b)


        为处理类别不平衡问题,使用focal loss(p_t为检测的类别概率):


L_{focal}(p_t)=-\alpha_t(1-p_t)^\gamma \log(p_t)


        (b)IoU损失:解决分类得分和定位精度的不匹配性问题(p为分类分数)。


q=\left\{\begin{matrix} 1 & if\; \; iou>0.75\\ 0 & if\; \; iou<0.25\\ 2iou-0.5 & otherwise \end{matrix}\right.


L_{iou}=-[q\log(p)+(1-q)\log(1-p)]


L=\frac{1}{N_{pos}}(\beta_{loc}L_{loc}+\beta_{iou}L_{iou})


        (c)角点损失:最小化边界框8个角的误差。


L_{corner}=\sum_{k=1}^8 \left \| P_k-G_k \right \|


        (d)基于区间的损失:每个兴趣点在xz方向上离散为区间。将原始的回归操作转换为区间分类和残差回归,复杂性(尤其是角度)被大大降低。