Loading...

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

点击下方卡片,关注「AI视界引擎」公众号

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

本论文提出了一种使用单目摄像头图像进行深度估计的目标检测器。之前的检测研究通常集中在检测具有2D或3D边界框的对象上。3D边界框由中心点、尺寸参数和朝向信息组成。然而,预测复杂的输出组合通常会导致模型的性能较低,并且对于自动驾驶的风险评估来说并不是必要的。

本文专注于预测每个目标的单一深度,这对于自动驾驶的风险评估至关重要。本文的网络架构基于YOLO v4,这是一个快速而准确的单阶段目标检测器。作者在输出层添加了一个额外的通道用于深度估计。为了训练深度预测,作者从数据集中的GT标签的3D边界框坐标中提取最近的深度。

本文的模型与使用KITTI目标检测基准的最新3D检测研究进行了比较。结果显示,本文的模型在具有可比较深度精度的现有模型中实现了更高的检测性能和检测速度。

1、简介

在自动驾驶任务中,识别和避免障碍物是确定车辆与障碍物之间距离的重要任务。在自动驾驶情境中,进行基于深度学习的目标检测并估计物体距离是至关重要的。

在2D目标检测方面,研究在性能方面取得了显著的改进,但由于缺乏距离信息,它们不能应用于自动驾驶情境。在自动驾驶中,既需要目标检测,又需要深度估计。为了实现这一任务,近期的研究聚焦于为每个目标检测一个3D边界框。3D边界框由中心坐标、尺寸参数(宽度、长度和高度)以及朝向(偏航角)组成。通常基于LiDAR点云或立体图像来进行3D目标检测研究,但这两种方法都存在一些弱点。

当前的3D边界框检测模型存在以下效率问题:使用点云时,由于物体形状的对称性,很难准确预测偏航角。另一种方法使用立体相机图像对。立体图像可以用来估计视差图和2D深度图,但仅检测到的边界框是感兴趣区域,预测完整深度图效率较低。

近期,还开展了基于单目图像的目标检测和绝对距离预测研究。本论文提出的模型由两个网络组合而成,一个用于深度图预测,另一个用于目标检测。他们尝试通过使用2D目标检测器而不是3D检测器来简化网络架构,但模型仍然具有深度图预测网络,这会导致像上述提到的效率低下的计算问题。

对于完全自动驾驶来说,预测3D边界框、偏航角以及平移和旋转速度至关重要,但旋转的3D边界框不一定需要在先进驾驶辅助系统(ADAS)中进行风险评估。如果知道每个目标的深度信息,就可以预测未来的碰撞风险,这对于机器人或ADAS的自动驾驶足够了。

为了为自动驾驶的风险评估预测每个目标的深度,作者提出了一种基于YOLO v4 的单一深度估计的目标检测方法。与YOLO v4一样,本文的网络使用单目摄像头图像作为输入数据。作者增加了一个额外的输出通道用于深度预测,可以通过从3D框标签中提取的GT深度进行训练。

在这项研究的结果中,本文的模型在KITTI 3D目标检测数据集中为汽车和行人分别实现了71.68%和62.12%的AP,并实现了平均误差率为3.71%,检测速度为25 FPS。本文的贡献如下:

  1. 本文的模型使用单目摄像头图像进行2D目标检测和深度估计,采用了简单直接的模型架构。文献中的近期3D目标检测器通常需要额外的数十个3D框信息通道,而本文的模型仅在2D目标检测模型中添加了一个单一通道。因此,本文模型的检测性能和检测速度远远优于最新的3D检测模型。

  2. 作者设计了一种新颖的损失函数来训练深度估计,平衡了近距离和远距离的准确性。

2、相关工作

2D目标检测任务和深度估计任务是自动驾驶中最重要的任务之一。由于车辆可以在检测到障碍物时避免碰撞,对危险的感知是通过各种方式进行研究的。

2D目标检测模型具有边界框定位任务和类别分类任务。根据是否同时处理这两个任务还是分别处理,2D目标检测模型分为单阶段模型或两阶段模型。如CornerNet、CenterNet、EffificientDet、YOLOv3以及YOLOv4等模型通常被称为单阶段检测器。YOLOv4和YOLOv3在每个尺度上提取一个网格单元形式的特征图,并训练网格单元中的物体中心点。它们还使用Anchor Box,这些Anchor Box代表每个尺度的边界框的基本大小,用于训练边界框的中心坐标和框的大小(宽度和高度)。

R-CNN、SPP-Net、Fast R-CNN和FasterRCNN是两阶段检测器,它们从边界框的定位任务中提取提议区域,然后使用所提议的区域作为输入进行分类。在单阶段检测器中,所提议的框起到了Anchor Box的作用。

通常,单阶段检测器的计算成本较低,因此比两阶段检测器更快。然而,两阶段检测器通常具有更好的性能。2D目标检测器可以检测图像中的目标,但不能估计与之之间的距离。

为了确定检测到的目标与车辆之间的距离,近期的研究着重于以3D边界框的形式检测目标。通常,3D边界框可以通过3D坐标系中的立方体中心点来表示,以及框的宽度、长度和高度,以及框的旋转角度。由于3D边界框的元素由来自相机的3D坐标系上的点表示,3D框包含了相机与目标之间的距离信息。

大多数最先进的3D目标检测模型使用LiDAR传感器,但它们根据原始LiDAR信息的处理方式和用作模型输入的方式而不同。一般来说,有两种处理原始LiDAR数据的方法。

  • 一种依赖于体素化,将原始LiDAR数据转换为体素数据,并将其作为3D卷积网络的输入。

  • 另一种方法使用2D鸟瞰图方法,将LiDAR点云投影到地面上以减小z轴,并将2D鸟瞰图作为2D卷积网络的输入图像。

虽然鸟瞰图像和点云的体素数据减少了许多点以降低计算成本,但制作它们的过程仍需要额外的处理步骤。本文的模型仅需要用于评估的单目图像,不需要任何其他预处理。

为了克服LiDAR传感器的稀疏输出数据,许多研究使用了多通道LiDAR。虽然使用多通道LiDAR可以产生更多可用的数据,但成本较高。如果资源有限,基于图像的方法可能是很好的替代方案。主流的基于图像的3D目标检测方法有两种类型:

  1. 基于单目的方法
  2. 基于立体相机的方法

M3D-RPN等单目3D目标检测中的方法与2D目标检测有类似的框架,但预测输出以3D边界框的形式呈现。单目的方法有时使用LiDAR点云来训练深度图,并使用预测的深度图与图像一起预测3D边界框。近期的研究提出了仅需要单目图像进行评估的新方法。D4LCN提出了深度引导的卷积核,其中深度图信息可用于为2D图像生成卷积核。

另一种基于图像的3D目标检测方法利用了基于立体的方法。在Stereo R-CNN中,提出了一种基于图像的立体成对的新方法来执行区域检测,并使用其自身的网络预测设计用于3D边界框顶点估计的2D关键点。Triangulation Learning Network提出使用3D Anchor来明确构建左右感兴趣区域(RoIs)之间的目标级对应关系,并训练它们在3D空间中对目标物体进行三角测量。这些方法侧重于在没有3D信息的情况下训练3D边界框的各种复杂组件,但仍然使用了复杂的模型网络。

本文的网络仅具有一个附加通道,用于深度预测,并且它通过2D边界框检测带有深度信息的目标。因此,本文的网络可以通过以简单的方式提供带有深度信息的目标检测结果,用于机器人或ADAS的自动驾驶情景。

3、本文方法

本文提出了一种基于YOLO v4的简单的2D目标检测与深度估计方法。基本结构以及边界框回归和类别分类的方法与YOLO v4类似,但本文的网络有一个额外的分支用于每个目标的深度信息的训练和预测,如图1所示。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

3.1 基于图像的2D目标检测

3.1.1 Backbone网络和检测Neck

对于模型的Backbone网络,采用了来自YOLO v4的CSPDarknet53。CSPDarknet53是YOLO v3中Darknet53和CSPNet的结合体。CSPNet可以使每一层的操作均匀分布,从而消除计算瓶颈。

对于检测Neck,使用了PAN来缩短较低层和顶层之间的信息路径,以实现准确的定位。

3.1.2 检测Head

本文的模型具有类似于YOLO v4的检测Head,但它还有一个用于深度估计输出的额外通道。输出通道的组成如下:

  • ,:边界框中心点的坐标
  • ,:边界框的高度和宽度
  • :表示目标的置信度分数
  • :每个类别的概率
  • :目标的估计深度

在之前的通道来自于YOLO v4。

3.1.3 目标检测的损失函数

使用与YOLO v4相同的边界框回归和分类损失函数。对于边界框回归的损失函数,采用CIoU损失来训练边界框,以及二元交叉熵损失来训练目标置信度分数。CIoU损失旨在弥补IoU损失的弱点,通过添加中心点之间的距离和高度和宽度的比率差异。对于类别分类,使用二元交叉熵损失来训练每个类别的概率。

3.2 深度估计

3.2.1 激活函数

由于预测的深度必须为正值,作者尝试了3种不同的激活函数,这些函数总是从任何卷积输出产生正值。在下面的方程中,代表预测的深度,代表卷积输出。

方程(1)中的第一个激活函数输出从0到无穷大的值,而方程(1)中的第二个函数输出从1到无穷大的值。这两个函数都可以将任意卷积输出转换为有效的深度范围,但它们的梯度在从1到50米的深度范围内不均匀分布。

为了使梯度变得平坦,作者尝试了如方程(3)中的对数函数。这使得模型在感兴趣的深度范围内可以有效地训练。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

在各种激活函数中,函数在时表现最佳。

3.2.2 深度损失

为了训练深度参数,设计了一种新的损失函数,以精确地预测近距离和远距离的深度。损失函数是2个损失的组合。第一个是鲁棒回归的Huber损失函数,定义如下:

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

其中,,为真实的深度标签,为1。

由于方程(4)抑制了绝对差异,可能会导致短距离的相对误差相对较大。为了减小近距离范围内的相对误差,添加了第二个损失,如下所示。深度损失是2个损失函数的和,如方程(6)所示。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

4、实验

4.1 数据集和设置

4.1.1 KITTI 数据集

在3D目标检测挑战中,广泛使用KITTI 3D目标检测数据集,因为它具有LiDAR传感器数据和立体图像对。该数据集包括7481个训练图像和7518个测试图像,以及相应的点云和校准矩阵。作者将训练数据分为6980个用于训练和500个用于验证的图像。

4.1.2 数据准备

为了训练和评估深度输出,需要一个代表性的真实深度。由于3D目标检测数据集提供3D边界框,需要将它们转换为深度。最重要的深度信息是目标最近的深度,因为作者的目标是为自动驾驶车辆提供风险评估。最近的深度通过在边界框的顶点中取最小深度来提取,如方程(7)所示。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

其中,是第个顶点的深度坐标。示例数据如图2所示。边界框在相机图像中绘制,最近车辆的深度在俯视图图像中表示。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

4.1.3 评估指标

使用方程(8)定义每个目标的深度误差率。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

由于误差可以通过一对GT和预测深度计算,只计算真正的目标对的误差。总误差将被计算为误差率的总和,除以GT的数量。

4.1.4 详细设置

使用两种不同的类别(即汽车和行人)对YOLO MDE模型进行训练,以与其他模型进行性能比较。输入图像的尺寸调整为384 × 1248(大模型)和256 × 832(小模型)。

对于Anchor Box参数,使用k-means聚类,得到以下9个基本Anchor对:(30,37),(94,38),(46,78),(69,132),(180,85),(98,202),(173,214),(159,299)和(191,396)。

网络使用Adam进行优化,将学习率设置为0.0001;在进行最终的第60个epoch之前,每20个epoch学习率会减少0.1倍。在单个Nvidia GeForce RTX 3090(24 GB)上使用批大小为4。

4.2. 训练结果和性能

4.2.1. 性能比较

本文的模型在KITTI 3D目标检测基准的验证集上进行评估,并与现有的研究进行比较,即D4LCN 和GM3D。这两项研究都是从单张图像预测3D边界框。由于本文的模型仅预测每个目标的单一深度,因此只对现有模型的预测3D框的最近深度进行评估。深度的提取方式与前面部分描述的数据准备方法相同。结果总结如表1所示。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

在计算平均精度(AP)时,非最大抑制(NMS)的分数阈值会有所不同,但应固定以评估深度误差率。在现有模型的GitHub源代码中使用了默认值。对于本文的模型,选择了0.85作为分数阈值。

将最大深度值限制在60米以内,以计算误差率。D4LCN检测到汽车和行人,深度误差率为4.07%,精度为74%,召回率为37%。在Ground-Aware Monocular 3D Object Detection中,精度和召回率分别提高到89%和42%,而深度误差率降低到2.77%;

然而,该模型只能检测汽车。对于本文的模型,尝试了两种输入分辨率和两个类别。较高的输入分辨率可以获得更高的目标检测和深度估计准确性。较大模型的深度误差为3.71%,与其他模型相当,但精度和召回率分别达到96%和56%。此外,较大模型实现了25 FPS的检测速度,比D4LCN快5倍,比GM3D快25%。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

定性结果如图3所示。与现有模型相比,本文的模型能够预测更长距离的精确深度。图中显示,超过40米的深度误差在几米之内。

4.2.2. 消融研究

为了尝试不同的网络架构,作者尝试了两种不同的架构:YOLO v3 和 YOLO v4。YOLO v3结合了Darknet53和FPN 进行特征提取。在使用YOLO v3架构时,使用了384 × 1248大小的图像。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

作者还尝试了使用3种类型的激活函数来解码深度估计的模型输出。表2显示了使用不同的网络架构和激活函数组合的结果。采用激活函数的YOLO v3架构达到了最低的深度误差率,为3.35%,而采用激活函数的YOLO v4架构达到了最高的检测性能。

表2还显示,函数始终在不考虑网络架构的情况下获得了最高的性能。此外,还尝试使用常见的激活函数(如RELU)来训练模型,结果深度误差率为56%,可以认为是深度训练失败。

4.2.3. A2D2数据集

作者尝试了另一个数据集:A2D2数据集。由于A2D2数据集没有2D边界框标签,从语义分割标签中提取了边界框。该数据集提供了3D边界框标签,但3D标签没有映射到提取的2D框上。从2D框内的LiDAR点中提取了每个目标的单一深度,而不是使用3D框,如第4.1.2节所述。

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

为了训练,在方程(1)-(3)中尝试了3种不同的激活函数。只训练了车辆的检测结果,并在表3中显示了结果。由于从LiDAR点中提取的深度标签未经手动校正,可能会包含错误。结果显示了比KITTI数据集更高的深度误差率。这证明从3D边界框中提取深度可以帮助训练深度预测。

5、总结

在自动驾驶情境中,通过低计算成本来检测障碍物并估计几何信息非常重要。作者提出了一种使用单目图像的单一深度估计的2D目标检测模型,以简化网络架构和预测参数。

使用KITTI数据集和单目摄像头成像,将本文的模型与最新的3D目标检测模型进行了比较。本文的模型在汽车类上获得了71.68%的AP,比D4LCN高约4%,比GM3D高12%左右。

此外,本文的模型在行人类上获得了62.12%的AP,比D4LCN高近14%。在检测速度比较方面,YOLO-MDE可以在Tesla V100单个GPU上每秒处理25帧图像,比D4LCN快5倍,比GAM 在相同的计算资源下快25%。对于深度估计,YOLO-MDE达到了3.71%的深度误差率,比D4LCN低0.36%,比GAM 高0.94%。因此,相对于最新的3D目标检测模型,YOLO-MDE能够以更高的速度和准确度检测物体,同时保持了深度误差率。

正如实验所示,所提出的方法可以应用于所有其他目标检测模型。作者只尝试了2种不同的网络架构:YOLO v3 和 YOLO v4。由于关注更高的检测速度,实验中只使用了单阶段检测器。为了提高检测性能,在未来的研究中可以尝试适应不同的目标检测架构,如EfficientDet。

关于进一步的研究,YOLO-MDE可以应用于目标跟踪任务。目标跟踪通过识别视频中的目标并找到它们的轨迹来实现。由于YOLO-MDE可以预测每个物体的最近深度,因此边界框的深度和中心点可以转化为3D点。一个目标的3D点在视频中不会发生显著变化,因此通过跟踪每个目标的3D点可以完成目标跟踪。

6、参考

[1].YOLO MDE: Object Detection with Monocular Depth Estimation.

7、推荐阅读

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

Q-YOLO | 带你学习一个YOLOv5、YOLOv7量化不掉点的PTQ方法

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

TurboViT出世 | 比MobileViT小3倍,速度精度同时完成超车!!!

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

DETR忆往昔 | 全面回顾DETR目标检测的预训练方法,让DETR训练起来更加丝滑

YOLO-MDE多任务框架 | 目标检测+深度估计都可以实现SOTA

点击上方卡片,关注「AI视界引擎」公众号

© 版权声明

相关文章

暂无评论

暂无评论...