Ground-aware Monocular 3D Object Detection for Autonomous Driving论文

1 摘要

摘要:使用单个RGB相机估计环境中物体的3D位置和方向是低成本城市自主驾驶和移动机器人的一项至关重要的挑战性任务。大多数现有算法基于二维-三维对应中的几何约束,这源于一般的6D目标姿态估计。我们首先确定地平面如何在驾驶场景的深度推理中提供额外的线索。在此基础上,我们改进了3D锚点的处理,并引入了一种新颖的神经网络模块,以在深度学习框架中充分利用这种应用特定的先验知识。最后,我们介绍了一种嵌入该模块的高效神经网络,用于3D物体检测。我们进一步利用设计用于单目深度预测的神经网络验证了所提出模块的性能。两个所提出的网络在KITTI 3D物体检测和深度预测基准测试中分别达到了最先进的性能。
https://github.com/Owen-Liuyuxuan/visualDet3D

1 介绍

使用单个校准良好的RGB相机图像同时估计自主驾驶场景中物体的位置、方向和尺寸是一个通常不适定的问题。基于激光雷达测量深度和基于立体视觉的方法可以从激光测量和三角测量中分别获得深度和距离信息,从而实现更高的性能[1][2][3][4]。与激光雷达设置相比,单目设置更便宜、更灵活,并且比立体相机对外部参数变化更具鲁棒性。因此,尽管缺乏深度信息,使用单个相机进行3D检测仍然是一个热门的研究方向。

最近在单目3D物体检测方面的发展主要利用了三维物体与其在二维图像上的投影之间的几何约束。ShiftRCNN [5],SS3D [6]和RTM3D [7]通过解决存在噪声观测的透视n点问题来优化深度和方向的估计。这些想法中的大多数来自单目6D姿态估计这个更普遍的问题。单目6D姿态估计基准测试如LINEMOD [8]是基于所涉及对象的CAD模型是已知的假设。然而,在自动驾驶场景中,我们无法获得每辆车的准确汽车模型;因此,单目3D物体检测器在自动驾驶场景中的性能受到了限制。

在自动驾驶和移动机器人应用中,我们可以通常假设最重要的动态物体在地面平面上,摄像头安装在离地面一定高度处。一些传统的深度预测方法也注意到地面平面的重要性,并为室内环境引入了类似的“地板墙面”假设 [9],[10]。这种关于地面平面的透视先验,在一般的单目6D姿态估计问题中不存在,为单目3D物体检测在驾驶场景中的几何推理提供了大量信息。最近的一些工作明确地将地面平面上的透视先验注入到神经网络中。

本文提出了两种新颖的方法,允许单目物体检测器明确地推理地面平面。

第一个方法是锚点过滤,我们明确地打破了神经网络预测的不变性。给定锚点与其到相机的距离之间的先验距离,我们将锚点反投影到三维空间中。由于所有感兴趣的对象都位于地面平面周围,因此在训练和测试期间,我们过滤掉远离地面平面的三维锚点。此操作将网络聚焦于可能出现感兴趣物体的位置。我们将在III-A节中进一步介绍该程序。

第二个程序是地面感知卷积模块。该模块的动机如图1所示。对于人来说,车辆周围的地面像素有助于估计车辆的3D位置、方向和尺寸。对于基于锚点的检测器,中心处的特征负责估计所有车辆的3D参数。然而,为了像人一样使用地面像素推断深度,网络模型需要从对象中心(例如图中的红点)执行以下步骤:
1)识别物体与地面平面的接触点(例如车下方的蓝色曲线)。
2)使用透视几何计算接触点的3D位置。
3)从这些接触点收集信息,具有向下聚焦的接收域。

标准的物体检测或深度预测网络被设计为具有统一的接收域,不存在透视几何先验和相机参数提供给网络。因此,训练标准神经网络像人一样进行推断是非常困难的。

地面感知卷积模块旨在指导网络将地面推理纳入网络推理中。我们将每个像素点的先验深度值编码为附加特征图,并指导特征图的每个像素点合并来自下面像素的特征。该模块的详细信息将在III-B节中介绍。

将这两个提出的程序纳入网络中,我们提出了一个明确地使用地面平面假设的单阶段框架。该网络结构干净,因此速度快,在现代GPU上可以以约20帧每秒的速度运行。

我们还将地面感知卷积模块纳入基于U-Net的单目深度预测结构中。这两个网络在KITTI数据集上均取得了最先进的性能。

本文的贡献有三个方面。
•我们确定了在城市场景中从地面平面先验中学习3D推理的好处。
•我们介绍了一种处理方法和一个地面感知卷积模块,在单目3D物体检测中使用地面平面假设。
•我们在KITTI 3D物体检测基准测试和深度预测基准测试上评估了所提出的模块和设计方法,并取得了具有竞争力的结果。

在这里插入图片描述

图1:与地面平面的接触点对推断物体的3D信息非常重要。预测背景像素(例如棕色点)的深度也依赖于地面平面的几何形状。最好使用彩色查看。

2 related work

A. 基于单目图像的伪LiDAR用于3D物体检测
伪LiDAR的想法,即通过单目或双目图像重建点云,已经引领了3D检测的最新研究进展[11][12][13][14][15]。伪LiDAR方法通常使用现成的深度预测网络从单个RGB图像重建点云,这限制了它们的性能。此外,当前的SOTA单目深度预测网络每帧通常需要约0.05秒,这显著限制了伪LiDAR检测管道的推理速度。

B. 基于单目图像的一阶段检测用于3D物体检测
最近在单目3D物体检测领域中出现了一些重大进展,直接在一阶段物体检测框架中回归3D边界框。
基于优化的方法:SS3D[6]同时估计2D边界框、深度、方向、尺寸和3D角点。采用非线性优化方法来合并所有这些预测。Shift-RCNN [5]也在2D锚点中估计了3D信息,并应用了一个小型子网络代替非线性求解器。更近期的方法,SMOKE [16]和RTM3D [7]将上述优化方案结合到基于锚点的无锚定物体检测器CenterNet [17]中。
基于3D锚点的方法:M3D-RPN [18]在2D锚点中引入了3D先验,强调了地面平面假设的重要性。同时引入了以高度为依据的卷积,而D4LCN [19]引入了深度引导卷积。这两种技术的代价非常高效率低下,并且只隐含地利用了地面平面假设。
我们指出,与基于无锚定的方法相比,基于锚点的方法在3D检测方面仍然更好。无锚定探测器隐含地要求网络学习物体的表观尺寸和其距离值之间的相关性。相反,在基于锚点的探测器中,可以将这个过程嵌入到锚点的预处理中。因此,我们的框架是基于锚点的探测器中在单目3D检测中明确利用驾驶场景地面平面假设的首个3D锚点方法,并且在撰写时实现了SOTA性能。

C. 基于深度学习的监督单目深度预测
监督单目深度预测是另一个与单目3D物体检测密切相关的热门研究课题。
DORN [20]和SoftDorn [21]提出将深度估计问题视为序数回归问题,以提高收敛速度。BTS [22]提出了局部平面导向模块,并将法向信息融入到场景中的深度预测结果中进行限制。同时,BANet [23]提出了一种双向注意力网络,以提高深度预测网络的感受野和全局信息理解能力。
上述许多方法侧重于多个数据集和场景的深度预测。像NYUv2[24]和DIODE [25]这样的数据集中的图像来自各种视角,很难提取地面先验,不像驾驶场景中的情况。因此,上述神经网络不利用相机的外部参数提取环境先验,而在网络推理过程中缺少绝对尺度。

在这里插入图片描述

3 方法

本节中,我们详细介绍了本文中使用的方法。首先,我们介绍了检测网络推理结果和数据预处理步骤的公式。其次,我们介绍了地面感知卷积模块,该模块从地面平面假设中提取深度先验。最后,我们介绍了网络的架构及其训练和推理过程中的其他主要修改。

A. 锚点预处理
1)锚点定义:我们遵循YOLO[26]的思路,使用密集的锚点进行边界框的密集预测。图像上的每个锚点都充当3D对象的一个提议。3D锚点包括由[x,y,w2d,h2d]参数化的2D边界框,其中(x,y)是2D框的中心,(w2d,h2d)是宽度和高度;对象的3D中心显示为[cx,cy,z],其中(cx,cy)是在图像平面上投影的对象中心,z是深度;[w3d,h3d,l3d]对应于3D边界框的宽度,高度和长度,[sin(α),cos(α)]是观察角度α的正弦和余弦值。
2)从锚点中提取先验:锚点或对象的形状和大小与深度高度相关。在一些先前的方法[18]中,对于每个预定义的锚点框,计算深度的平均值,而方差则全局计算。全局方差仅计算用于神经网络的目标归一化。
我们进一步观察到,锚点的深度z的方差与图像中对象的大小成反比。因此,我们将每个锚点视为带有3D对象提议的分布,并在3D锚点中收集先验统计知识。我们遍历训练集,并针对不同形状的每个锚点框收集所有共享大IOU的对象。然后,我们计算每个预定义的锚点框的深度z,sin(α)和cos(α)的平均值和方差。我们可以显著降低大型锚点框/靠近物体的深度z的先验方差。
由于我们将锚点视为3D提议的分布,因此关联的3D目标不应过多偏离期望值。我们利用事实,即大多数感兴趣的对象应该在地面平面上。每个锚点以预先计算的平均深度zˆ为中心,在3D中进行反投影:
x3d = u-cx / fx * z y ˆ 3d = v - cy / fy * zˆ,(1)
其中(cx,cy)是相机的主点,(fx,fy)是相机的焦距。y3d与地面太远的锚点将被过滤掉,不参与训练和测试。这种策略使网络能够在感兴趣区域周围的3D锚点上进行训练,并简化分类问题。

B. 地面感知卷积模块
地面感知卷积旨在指导物体中心提取特征并从接触点推理深度,如图4所示的结构。
为了首先将透视几何引入网络中,我们编码每个像素点的先前深度值z,假设它在地面上。透视几何基础在图3中呈现。
根据理想的针孔相机模型,可以得到深度z与高度y3d之间的关系:
在这里插入图片描述

其中,fy、cy和Ty分别表示焦距、主点坐标和相对平移,v是像素在图像中的y坐标。

在这里插入图片描述
假设我们知道相机到地面的预期高度(在KITTI数据集中为1.65米),则可以从方程2中解出像素到相机的距离z:
在这里插入图片描述
我们注意到,当地平面的消失线(v = cy)附近时,该函数不连续,并且在图3中指示了v < cy时无法实现。为了避免这种问题,我们首先建议将深度值编码为虚拟立体设置的视差(基线B = 0.54m,类似于KITTI立体设置),并根据方程式3中的深度z导出虚拟视差。
在这里插入图片描述

然后,对小于零的视差应用修正线性单元(ReLU)激活(max(x, 0)),因为这对于前置摄像头是不可行的。经过这两个步骤后,图像的深度先验变得空间连续和一致。
受CoordinateConv[28]的启发,我们将这个深度先验视为一个具有与基本特征映射相同空间大小的附加特征映射。现在,特征映射中的每个元素都是在地面上假设的深度先验。
如图1所示的动机,物体中心的像素需要从接触点查询深度和图像特征,这些接触点通常位于对象中心下方。

然后,特征映射中的每个点pi将动态预测一个偏移量δyi,就好像它是前景物体的中心
δyi = δ0yi + ∆i = ˆh/2EL - ˆh·(v - cy) + ∆i,
其中ˆh是物体的高度(我们将其固定为数据集中前景对象的平均高度),∆i是由卷积网络预测的残差。
然后,如图4所示,我们使用线性插值在pi + δyi处提取特征f0i。提取的特征f0i通过残差连接合并回原始点pi。
地面感知卷积模块模仿了人类在深度感知中如何利用地面平面。它从下方的像素中提取几何先验和特征。网络的另一部分负责预测先验和目标之间的深度残差。该模块是可微分的,并且与整个网络一起进行端到端训练。

在这里插入图片描述
图4:地面感知卷积。网络预测垂直方向的偏移量,我们从下方取样对应的特征和深度先验。使用地面平面假设的透视几何计算深度先验。

C.用于单目3D检测的网络架构
网络的推断结构如图2所示。我们采用ResNet-101 [30]作为骨干网络,并且只提取1/16尺度的特征。然后将特征映射送入分类分支和回归分支。
分类分支由两个卷积层组成,而回归分支由一个地面感知卷积模块和一个卷积输出层组成。
来自分类分支C的输出张量的形状为(B,W/16,H/16,K * #anchors),其中K表示类别数,#anchors表示每像素的锚点数。回归分支的输出张量为(B,W/16,H/16,12 * #anchors)。每个锚点有9个参数:2D边界框估计的四个参数,物体中心预测的三个参数,尺寸预测的三个参数,以及观察角度预测的另外两个参数。
1)损失函数:总损失L是目标检测损失Lcls和其他参数回归损失Lreg的聚合。
L = Lcls + Lreg。
我们采用焦点损失[1]、[31]进行目标性分类,采用交叉熵损失进行宽度、高度和长度的多元分类。其他参数[x2d,y2d,w2d,h2d,cx,cy,z,w3d,h3d,l3d,sin(α),cos(α)]根据锚点的先验参数进行归一化,并通过平滑L1损失[32]进行优化。
2)后优化:我们遵循[18]的方法,使用爬山算法作为后优化过程。通过扰动观察角度和深度估计,该算法逐步最大化直接估计的2D边界框和从3D边界框投影到图像平面上的2D边界框之间的IoU。
原始实现同时优化深度和观测角度。通过多次实验,我们发现仅优化观察角度在验证集中产生了更好的结果。同时优化两个变量可能会过度拟合稀疏的3D-2D约束并影响3D预测的准确性。

D.单目深度预测的网络架构
我们采用U-Net [33]结构作为监督式密集深度预测的网络。我们选择一个预训练的ResNet-34 [30]作为骨干编码器。
在解码阶段,特征进行双线性上采样,然后经过两个卷积层并与跳跃连接进行连接。我们在解码器中添加了一个地面感知卷积模块,在两个卷积层之前。
深度预测网络从每张图片中密集地预测出深度的自然对数,输出为一个(B, 1, H, W)张量y = log z。我们对每个输出尺度l提供监督。总损失是尺度不变(SI)损失LSI[21]和平滑性损失Lsmooth[34]的加和,并且有超参数α:
L = ∑
l
(LSI + αLsmooth)。(5)
SI损失通常用于同时最小化均方误差(MSE)和提高全局一致性。平滑性损失是必需的,因为来自KITTI数据集[27]的监督是稀疏的,缺乏局部一致性。SI损失和平滑性损失计算如下:
在这里插入图片描述
其中,di = log zi −log z∗i,n是有效像素的数量,λ ∈ [0, 1]是平衡绝对MSE损失和相对比例损失的超参数,N是总像素数量,∂x I和∂y I是输入图像的梯度。

实验

在这里插入图片描述

A.数据集和训练设置
我们首先在KITTI基准测试[27]上评估了提出的单目三维检测网络。该数据集包括7,481个训练帧和7,518个测试帧。Chen等人[35]将训练集进一步分成3,712个训练帧和3,769个验证帧。
我们首先使用一组小型网络在Chen的数据集上进行微调,确定网络的超参数。然后,我们使用相同的超参数在整个训练集上重新训练最终网络,然后上传结果以在KITTI服务器上测试。接下来的消融研究也是在Chen的验证集上进行的。
类似于RTM3D [7],我们通过利用左右RGB相机的图像(仅使用左侧相机的RGB图像进行验证和最终测试)将训练集加倍,并使用随机水平镜像作为数据增强(不应用于验证和测试),这大大扩大了训练集并提高了性能。每个图像的前100像素被裁剪以加速推断,并且裁剪的输入图像被缩放为288×1280,这与原始图像的尺度相似。因此,由骨干产生的特征映射具有18×80的形状。回归和分类损失的大小(1e-3)被剪辑以防止过拟合。网络在单个Nvidia 1080Ti GPU上以批量大小8进行训练。在推断期间,网络一次输入一张图像,包括文件 IO 和后处理在内的总平均处理时间为每帧 0.05 秒。

B. 3D检测的评估指标和结果
正如Simonelli等人[29]和KITTI团队所指出的,使用40个召回位置(AP40)而不是在原始Pascal VOC基准测试[38]中提出的11个召回位置(AP11)来评估性能可以消除最低召回阈值中存在的问题。因此,我们在测试集上提供了我们的结果,并且基于AP40进行了消融研究。
结果如表I所示,与基于KITTI基准测试的其他SOTA单目三维检测方法相比较,提出的网络在易于和适度车辆上表现显着优于现有方法。我们确实期望具有地面平面清晰边界的近距离车辆更容易产生更精确的预测。
定性结果如图5所示。此处显示的模型与提交到KITTI服务器的模型具有相同的超参数,但仅在训练子拆分上进行了训练。在图的左侧图像中,汽车大多被准确检测和估计。GAC模块的效果也被可视化。
我们在图5的右侧显示了几种典型的失败情况,
在右上角的图像中,网络没有检测到被严重遮挡的汽车。
在中间右侧的图像中,截断的汽车和距离较远的汽车没有被检测到。我们承认网络仍然可能难以检测到小物体。
在右下角的图像,以证明网络在估计车辆的3D尺寸时可能出现不准确的情况,因为如第III节所述,仅通过图像中的语义信息估计物体的宽度,长度和高度仍然是困难的。我们在第V节提供了模型的消融研究。

C. 单目深度预测实验
我们进一步在KITTI深度预测基准测试[27]中评估了所提出的深度预测网络。单目深度预测数据集包括42949个训练帧,1000个验证样本和500个用稀疏点云注释的测试样本。在训练和测试过程中,输入图像被裁剪为352×1216的大小。在损失函数中,我们通过对验证集进行网格搜索,应用α=0.3,λ=0.3。该网络还使用单个Nvidia 1080Ti GPU进行批量大小为8的训练。

比例不变的对数误差(SILog)是KITTI基准测试中用于评估深度预测算法的主要指标。结果如表II所示。所提出的网络在KITTI数据集上获得了最佳性能之一,与SOTA方法相比具有竞争力的结果。我们还展示了网络相对于基线U-Net模型的显着改进。图6展示了定性结果。在LiDAR范围内的深度预测通常是一致的。像树木这样的长、垂直物体的深度预测也是一致的,这要归功于地平面感知卷积模块。我们指出,在物体边缘和无监督区域仍然存在伪影,因为网络没有经过后处理和少量的预训练。深度预测结果表明,所提出的模块和所提出的网络可以在自主驾驶场景中从单目图像中改善深度推断。
在这里插入图片描述
在这里插入图片描述

模型分析和讨论

在本节中,我们进一步分析所提出方法的性能,并讨论每个设计选择的有效性。实验将更多地关注单目3D检测。我们进行消融研究,以验证锚预处理和地面感知卷积模块的贡献。

A. 锚预处理
我们首先对锚点过滤进行实验。在实验中,我们在训练和测试期间不过滤不必要的锚点。我们注意到,所提出的过滤将过滤掉一半的负锚点,因此我们还进行了与在线困难样本挖掘(OHEM)相对比的实验,在该实验中,我们在训练期间过滤掉一半的容易负面的锚点。

如表III所示,基线模型表现优于消融模型和OHEM。基线模型在3D推断方面表现更好。我们还指出,在两个模型之间的2D检测几乎没有差异。

通常,单尺度的一阶段物体检测器不仅需要对前景进行分类,而且还需要在前景像素上选择正确比例的锚点,这也意味着选择适当的深度先验。在训练和测试期间过滤掉非地面锚点显著降低了物体检测器分类分支的学习负担。因此,分类分支可以更多地专注于为前景像素选择正确的锚点。这种方法因此也比像OHEM这样的位置不变的过滤方法更优秀。

B. 地面感知卷积模块
直觉上,基本的卷积为每个像素提供了统一的接受域,网络可以通过微调多个卷积层的权重来隐含地学习调整其接收域。变形卷积[40]进一步明确鼓励网络根据每个像素周围的上下文来调整其接收域。与变形卷积相比,地面感知卷积模块固定了搜索方向并允许更大的搜索范围。

我们用基本卷积、视差条件卷积(使用深度先验作为附加特征映射的卷积)和变形卷积替换所提出的模块来检查性能。结果如表III所示。使用变形卷积的实验表现出更好的2D检测结果。

变形卷积可以增强性能,具有通常更大的接受域。而视差条件卷积为网络提供了先验深度,但是网络的接受域缺乏。这两个模块都可以改善性能,但所提出的模块取得了更好的结果。

结论

本文提出了基于地面感知的单目3D物体检测方法,针对自动驾驶场景进行了改进。首先,我们优化了单目3D检测问题的设置,并引入了锚过滤过程,将地面平面先验和统计学先验注入锚中。其次,我们引入了地面感知卷积模块,为网络提供充足的提示和几何先验,以基于地面平面先验进行推理。所提出的单目3D物体检测网络在KITTI检测基准测试中获得了最佳性能。我们进一步在单目深度预测任务中测试了地面感知卷积模块,并在KITTI深度预测基准测试中也取得了具有竞争力的结果。

我们注意到,“地板-墙壁”假设仅适用于具有特定摄像机姿势的场景,并且它仅在复杂的驾驶场景中部分成立。所提出的方法仍然没有明确地考虑地面和其他物体的边界。相反,我们将充分的信息和先验编码到网络中,并采用数据驱动的方法。

尽管如此,所提出的方法将从图像中进行3D检测和深度推断的边界推向了前沿,并为自动驾驶和移动机器人场景提供了强大的神经网络模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值