在自动驾驶的技术中,3D目标检测能够提更加丰富的信息,如:目标的类别、位置和姿态。因此,与2D检测相比,3D目标检测的难度更大。目前很多的方法都是使用激光雷达进行3D目标检测,但激光雷达的方案成本高且寿命短,而相机的方案成本低且寿命长。
单目3D目标检测的优点和难点
优点:在自动驾驶中,相比于使用昂贵的激光雷达等传感器,相机传感器成本低廉,且寿命长、易于安装,同时图像的检测技术相对更加成熟,有利于研究工作的快速进行。
难点:单目3D目标检测的难点就在于对深度信息的预测,而这也恰恰是激光雷达的优势所在。在单目的方案中,将实例从3D空间投影到2D图像平面就必然会损失图像的深度信息。因此,对于深度信息的处理一直是单目目标检测的重点研究内容。
单目3D目标检测方法分类
单目3D目标检测的方法通常都需要生成中间表示来辅助三维检测任务。基于这些表示,方法可以分为三类,分别是直接检测、基于深度检测和基于网格检测。
直接检测:直接检测的方法可以结合二维图像平面和三维空间之间的关系来辅助检测,例如通过关键点检测的方法,并使用已知的几何特征来协助3D box的构建。这类方法较为简单高效,但由于没有显式的学习深度信息,因此性能不如其他的方法。
基于深度检测:基于深度的方法通常都会创建一个深度预测的分支,输出结果是一张深度图来辅助对于深度的检测。深度图可以和图像结合使用,也可以转化为点云。但由于在训练时,检测和深度预测是分离训练的,这可能会到导致一些信息的损失,从而影响网络的整体效果。
基于网格的方法:基于网格的方法通过预测BEV网格作为3D目标检测的输入,从而避免了对深度信息的直接预测。如OFT的方法提出了一种体素网格,通过把体素投影到图像平面上进而采样图像特征将其转换成BEV的形式。但缺点是多个体素会投影到相同的图像特征上,造成特征的重叠,而导致网络性能的降低。
CaDDN网络的提出
CaDDN网络结合了上面提到三种方法的优点,所提出的网络通过以端到端的方式联合执行深度估计和3D目标检测,并利用深度估计生成具有准确和局部特征的有意义的鸟瞰图表示,网络结构图如下。
网络结构图
CaDDN网络的创新点:
(1)网络预测像素级分类深度分布以准确定位 3D 空间中的图像信息。每个预测分布描述了像素属于一组预定义深度容器的概率。
(2)网络以端到端的方式学习深度分布,联合优化精确的深度预测和准确的3D目标检测。
(3)网络提出使用分类深度分布和投影几何从单个图像生成高质量鸟瞰图场景表示的新方法。
CaDDN的性能表现:网络在KITTI 3D目标检测数据集中的汽车和行人的检测任务中,在文章发表时,在所有的方法中排名第一。同时也是第一个在Waymo数据集下提交检测结果的网络。
CaDDN的具体实现
文章大体上分为几个部分,为每个像素预测深度网格分布、体素网格映射、生成鸟瞰图和3D检测,下面是每个部分的具体解析。
(1)图像特征--->视锥特征
在这一步骤中,将会每个像素预测深度网格分布。网络的输入是(H×W×3)的彩色图片,输出是(H×W×D×C)的视锥特征图,其中C为特征通道数,D为划分好的深度网格。在这步骤中间有几个过程,过程如下图所示:
首先输入的彩色图像需要经过image backbone提取图像特征,通道数为C。之后会分为二个分支,第一个分支进行图像特征的降维,对图像特征进行提炼。第二个分支是进行分类深度分布计算,为图像特征中的每个像素预测D个概率,其中每个概率表示深度值属于指定depth bin的置信度。
然后,图像特征和分类深度分布做外积操作生成视椎体特征网格。具体的操作过程如下图所示。
使用(u, v, c) 表示图像特征F中的坐标,(u, v, di)表示分类深度分布D中的坐标,其中(u, v)是特征像素位置,c是通道索引,di是深度bin索引。为了生成视锥特征网格G,每个特征像素F(u,v)由其关联的D(u,v)中的depth bin概率加权,以填充到深度轴di处。特征像素可以使用外积按深度概率加权,定义如下:
分类深度分布D与图像特征F外积之后得到视椎体特征矩阵G(WF×HF×D×C),即(WF×HF)每个像素处对应着一个D×C的矩阵。
(2)视锥特征-->体素特征
这一步的主要目的是进行视锥到3D空间的映射过程,即对于体素空间中的点(x,y,z),找到其在视锥空间中的映射点,通过trilinear interpolation获取视锥体网格采样点深度值,将其填充至体素空间。具体的操作过程如下图。
体素采样点[x, y, z]在每个体素的中心产生并变换到视锥网格,形成视锥网格采样点[u, v, dc],其中dc是连续的沿视锥深度轴di的深度值。深度离散化方法将每个连续深度值dc转换为离散深度bin索引di,形成视锥网格采样点[u, v, di]。最后通过trilinear interpolation获取视椎体网格采样点[u, v, di]处的数值,并将该数值复制到体素采样点[x, y, z]处。
(3)体素特征-->鸟瞰图(BEV)
直接折叠体素特征V(X×Y×Z×C)就可以得到鸟瞰图B(X×Y×C)。具体的操作过程是:将Z轴和C轴拼接起来,然后采用1x1 convolution + BatchNorm +ReLU layer将(Z×C)通道降维至C,就得到了鸟瞰图B(X×Y×C)。
(4)3D目标检测
文章在生成的鸟瞰图上执行3D目标检测,这里作者使用了PointPillar的方法,并对网络结构进行了一定的调整,最终完成检测过程。
对深度进行网格化的估计是本文的创新点,文章给出了深度网格的监督,其实核心方法是如何将连续值离散化。这里作者给出了3种离散方式,分别是均匀离散(UD)、间距增加的离散(SID)和线性增加的离散化(LID)。并最终选用LID,因为LID的离散化为不同深度提供了平衡的深度估计。
三种离散方式
实验
作者在KITTI和Waymo二大数据集上进行了实验,实验结果如下。
KITTI数据集:在汽车和行人的检测任务上,CaDDN取得了较好的效果,在骑行者的检测中,效果虽然不如MonoPSR效果好,但较其余的方法则有大幅度的提升。下表是KITTI数据集下的检测结果。
KITTI数据集检测结果
Waymo数据集:由于CaDDN是一个提交结果,所以作者和M3D-RPN进行了比较,同样取得了较好的检测结果。下表是Waymo数据集车辆类别的检测结果。
Waymo数据集检测结果
本文提出了一种新的单目3D目标检测的方法,该方法可以精确的估计每个像素的分类深度分布。将深度分布和图像特征相结合,生成保留深度置信度的鸟瞰图表示,并用于3D目标检测。
转载自CV研习社,文中观点仅供分享交流,不代表本公众号立场,如涉及版权等问题,请您告知,我们将及时处理。
-- END --
领取专属 10元无门槛券
私享最新 技术干货