2023年的目标检测综述A comprehensive review of object detection with deep learning以及3D Object Detection for Autonomous Driving: A Comprehensive Survey,之前写了一些单阶段和双阶段的2D目标检测,可以好好回顾一下.
Abs
本综述详细介绍了物体检测及其各个方面。随着用于检测物体的深度学习算法逐渐发展,物体检测模型的性能也有了显著提高。但是,这并不意味着在深度学习出现之前已经发展了几十年的传统物体检测方法已经过时。在某些情况下,具有全局特征的传统方法是更优的选择。本综述论文首先简要概述了物体检测,然后介绍了物体检测框架、骨干卷积神经网络、常见数据集概述以及评估指标。此外,还详细研究了物体检测问题和应用。还讨论了设计深度神经网络的一些未来研究挑战。最后,比较了对象检测模型在 PASCAL VOC 和 MS COCO 数据集上的性能,并得出结论。
Intro
物体检测的主要目的是检测特定类别的视觉物体,如电视/显示器、书籍、猫、人类等,并使用边界框定位它们,然后将它们归入特定物体的类别中。
通用对象检测还有其他几个术语,例如通用对象类别检测、对象类别检测、类别级对象检测和对象类别检测。它也侧重于识别一些预设类别的实例.
物体检测的发展通常分为两个历史阶段。2014 年之前是传统方法阶段,2014 年之后则是基于深度学习的方法阶段。本文将重点讨论基于深度学习的方法。由于 CNN 在物体检测算法的实施中发挥着重要作用,因此本文将利用 CNN 来获得最佳结果。这两个阶段的架构在精度、速度和硬件资源方面各不相同。将 CNN 与传统技术相比,CNN 具有更好的架构和更强的表现力。
在讨论基于深度学习的物体检测算法之前,重要的是要了解传统技术的工作原理,并知道为什么基于深度学习的方法要优越得多。这将有助于研究人员更好地理解现代物体检测方法。
传统方法
传统目标检测方法分为三个阶段。这些阶段及其各自的缺点如下:
区域选择 – 由于对象具有不同的大小和纵横比,因此它们可能出现在图像的不同区域。因此,在第一阶段,必须确定物体的区域。因此,使用多尺度滑动窗口方法检查整个图像以检测物体。然而,这种方法的计算成本很高,并且还会导致大量非必要的选择。
特征提取 – 定位对象后,执行特征提取过程以提供可靠的表示。HOG、Haar-like 、SIFT 等方法用于提取特征以进行目标识别,以提供有意义的表示。然而,由于对比鲜明的背景、照明环境和透视差异,手动构建一个能够正确识别各种对象的综合特征描述符是极其困难的。
分类 – 在这个阶段,使用分类器(如 Adaboost )来识别目标对象,并构建更有条理、更有意义的视觉感知模型。
从以上几点可以清楚地看出,在传统方法中,手工制作的特征并不总是足以正确表示对象。除此之外,用于生成边界框的滑动窗口方法在计算上成本高昂且效率低下。传统的技术包括HOG、SIFT 、Haar、VJ检测器和其他算法,如。在HOG 中,识别一个物体需要很长时间,因为它采用滑动窗口方法来提取特征。SIFT算法速度极慢,计算成本高,也不擅长光照变化。在VJ检测器中,训练持续时间非常长,仅限于二元分类。因此,深度学习技术正在被用于克服传统方法的问题
深度学习的出现有可能解决传统技术的一些局限性。最近,深度学习方法在自动从数据中学习特征表示方面变得突出。这些方法显著改善了目标检测。基于深度学习的方法有 Faster RCNN、SSD、YOLO 等等。
由于深度 CNN 具有很高的特征表示能力,因此它们被用于对象检测架构。有两种类型的探测器:两级和一级探测器.
两阶段目标检测框架将目标定位和目标分类任务分开。简单来说,首先在对象所处的地方生成区域建议,然后根据其特定类别对该区域进行分类。这就是为什么它被称为两阶段的原因。两级目标探测器的主要优点是检测精度高,缺点是检测速度慢。
RCNN
基于区域的卷积神经网络(RCNN)在使用深度学习方法检测目标方面进行了深入研究。其架构如图所示。RCNN的过程在下面分四个阶段进行解释
第 1 阶段 :使用选择性搜索方法提取区域建议。选择性搜索根据不同的比例、外壳、纹理和颜色模式来识别这些区域。它从每张图像中提取大约 2000 个区域
第 2 阶段 – 由于全连接层需要固定长度的输入向量,因此所有这些区域建议都重新缩放为相同的图像大小以匹配 CNN 输入大小。使用 CNN 提取每个候选区域的特征。
第 3 阶段 – 提取特征后,使用 SVM 分类器检测对象是否存在于每个区域中。
第 4 阶段 – 最后,对于图像中的每个已识别对象,使用线性回归模型在其周围生成更紧密的边界框。尽管RCNN在目标检测方面取得了很大的进步,但仍然存在一些局限性,如目标检测速度慢、多阶段流水线训练和选择性搜索方法的僵化。
SPP-Net
由于 RCNN 为每张图像生成 2000 个区域建议,因此从这些区域提取 CNN 特征是主要障碍。固定输入大小的约束只是因为全连接层。因此,为了克服这一困难,引入了一种称为空间金字塔池化网络层(SPP-Net)的新技术。将 SPP 层添加到最终卷积层的顶部,以生成全连接层的固定长度特征,无论 RoI(感兴趣区域)的大小如何,并且不会重新缩放它,这可能会导致信息丢失(相当于替代RCNN中的warp操作).
通过使用SPPNet层,RCNN的速度有了很大的提高,而检测质量没有任何损失。这是因为卷积层只需要在完整的测试图像上运行一次,就可以为随机大小的区域建议创建固定长度的特征。这里 SPP 层的输出是 256×M-d 向量。256 是卷积滤波器的数量,M 是bin的数量。全连接层接收固定长度的维向量。
Fast RCNN
尽管SPPNet在效率和准确性方面优于RCNN,但它仍然存在一些问题,例如它大致遵循与RCNN相同的过程,包括网络微调、特征提取和边界框回归。
Girshick, R. 在 RCNN 和 SPPNet 方面表现出进一步的改进,并提出了一种名为 Fast RCNN 的新探测器 。它允许对检测器进行端到端训练,同时学习 softmax 分类器和特定于类的边界框回归,同时进行多任务损失,而不是像在 RCNN 和 SPPNet 中那样单独训练它们。
在 Fast RCNN 中,它不是对每张图像执行 2000 次 CNN,而是只运行一次并获取所有感兴趣的区域。然后,在最终卷积层和初始全连接层之间添加RoI池化层,从而提取出所有区域建议的固定长度向量特征。
1st – Fast RCNN 获取完整的输入图像并将其传递给 CNN 以生成特征图。
第 2 个 – 感兴趣区域 (RoI) 是使用选择性搜索方法生成的。
第三 – 在提取的 RoI 上应用 RoI 池化层以生成固定长度的特征向量。它确保所有区域都具有相同的量级。
第 4 次 – 然后将提取的特征发送到全连接层,同时使用 softmax 层和线性回归层进行分类和定位。
Fast RCNN消耗的计算时间更少,检测精度更高。然而,它基于传统的区域建议方法,使用选择性搜索方法,使其非常耗时。
Faster RCNN
尽管Fast RCNN在速度和准确性方面取得了长足的进步,但它使用选择性搜索方法生成了2000个region proposals,这是一个非常缓慢的过程。任,S.等人致力于这个问题,并开发了一种新的检测器,名为Faster RCNN,作为第一个端到端深度学习检测器。它还通过将传统的region proposal算法(如选择性搜索、多尺度组合分组或边缘框)替换为称为区域建议网络(RPN)的CNN,提高了Fast RCNN的检测速度。
a) CNN 将图像作为输入,并提供图像的特征图作为输出。
b) RPN 应用于生成的特征图,返回对象建议 (RoI) 及其对象性分数。
c) 提取 RoI 后,将 RoI 池化层应用于其,以将所有提案置于固定维度。
d) 将派生的特征向量提供给连续的全连接层中,顶部有一层 softmax 和回归层,用于对对象的边界框进行分类和输出
RPN 的工作 – 区域提案网络是一个完全卷积网络,它连接到骨干网络的最后一个卷积层 。它接收特征图,并使用这些特征图上的滑动窗口输出多个对象建议。在每个窗口上,网络生成 k 个不同大小和纵横比的锚框(也称为参考框)。
只有从锚点框获得的特征是特定于类的,而不是锚点的位置。
每个对象提案由 4 个坐标和一个分数组成,用于确定对象是否存在。每个锚点映射到一个低维向量,并传递给两个全连接层,一个是对象类别分类层,另一个是box回归层
Feature pyramid network
Lin, T. Y. et al. 提出了特征金字塔网络 (FPN)
DCNN 固有的多尺度金字塔层次结构,以低成本构建特征金字塔。它将任何大小的图像作为输入,并在多个级别输出相同大小的特征图。这种方法在许多应用中显示出相当大的增强。
FPN 不是对象检测器。它是一种特征提取器,与对象检测器结合使用。FPN的架构使用自上而下的通路和横向连接将语义上较强的低分辨率特征与语义较弱的高分辨率特征相结合。FPN使用CNN架构的序列,通过横向连接构建自下而上的路径和自上而下的路径。在自下而上的路径(红色)中,图像作为输入传递给 CNN,它使用池化层将特征图设置为相同的大小。对于FPN的每个阶段(即每个分辨率级别),定义了一个金字塔级别
在自上而下的路径(以蓝色显示)中,通过将特征图上采样回与自下而上部分相同的大小来使用更高分辨率的特征。然后使用横向连接,这些特征通过自下而上途径的特征进行增强。每个横向连接都从自下而上和自上而下路径组合了相同大小的特征图
FPN 的过程为生成具有大量语义内容的多尺度特征图提供了广泛的解决方案。FPN 不依赖于 CNN 的架构,可以强制执行到对象检测的不相同阶段,例如 RPN、Fast RCNN.尽管DCNN具有强大的表征能力,但有必要通过金字塔表示来解决多尺度挑战
Mask RCNN
He, K. et al.设计了一款名为Mask RCNN的目标检测器,这是对Faster RCNN的增强,用于解决进行目标检测和语义分割作业的实例分割问题。这两个任务是自力更生的过程。Mask RCNN 的目标是执行像素级分割。蒙版RCNN检查每个像素并估计它是否是对象的一部分。
Mask R-CNN 遵循 Faster R-CNN 的架构;两者都使用相同的RPN,但区别在于掩码RCNN对每个对象提案有三个输出,即.class标签,边界框偏移量和对象检测掩码。在 Mask RCNN 中,RoIAlign 层用于将提取的特征与对象的输入位置相关联。RoIAlign 层的目的是修复 RoI 池化层中的错位问题。它无需测量 RoI 阈值,而是使用双线性插值来评估每个采样点的实际特征值。Mask RCNN 在实例分割方面实现了最先进的性能
基于区域提案的框架由各个阶段组成,这些阶段相互连接并分别进行训练。这些是区域建议生成、使用 CNN 提取特征、分类和边界框回归。尽管这些方法能够实现高精度,但仍存在一些与实时速度相关的问题。这个问题可以通过统一的阶段检测器来克服,方法是删除区域建议阶段,并在单个CNN中实现特征提取、建议回归和预测
损失或成本函数,如Hinge损失、L1 和 L2 损失、对数损失 [52]是预期输出和预测输出之间差异的度量。建议读者参考相应的物体检测器论文以获取更多信息
One-stage object detectors
单阶段对象检测框架使用 DCNN 同时进行定位和分类,而无需将它们划分为两个部分。
在这种情况下,只需要通过神经网络进行一次传递。它具有前馈神经网络,可以一次预测所有边界框。它们将图像像素直接映射到边界框坐标和类概率。
DetectorNet
Szegedy, C.等将DetectorNet框架实现为回归问题。
它能够学习特征进行分类并获取一些几何信息。它使用 AlexNet 作为骨干网络,并将 softmax 层替换为回归层。为了预测前景像素,DetectorNet 将输入图像分割成coarse grid。它的训练过程非常缓慢,因为网络要针对每种对象类型和掩码类型进行训练。此外,DetectorNet 无法处理类似类的多个对象。当它与多尺度从粗到细方法结合使用时,基于 DNN 的对象掩码回归会产生出色的结果
Overfeat
Sermanet, P.等提出了一种统一的结构,即使用卷积网络通过多尺度滑动窗口方法进行定位、分类和检测。它是最强大的目标检测框架之一,应用于 ImageNet 大规模视觉识别挑战赛 2013 (ILSVRC),在检测和定位方面排名第一 。它是第一个基于全卷积深度网络的单级检测器,它通过全卷积层使用单次前向通道来检测物体。
OverFeat 充当后来出现的算法的基础模型,即 YOLO 及其版本、SSD 等。主要区别在于分类器和回归器的训练是在 OverFeat 中连续完成的
YOLO
You Only Look Once(YOLO)是由Redmon, J.等人设计的单级目标检测器,其中目标检测作为回归问题进行。它预测对象的边界框的坐标,并确定它所关联的类别的可能性。由于仅使用单个网络,因此可以实现端到端优化。它使用有限的候选区域选择直接预测检测。与基于区域的方法不同,这些方法使用来自特定区域的特征,而YOLO广泛使用来自整个图像的特征
在YOLO目标检测中,图像被划分为S×S网格;每个网格由五个元组(x、y、w、h 和置信度分数)组成。单个对象的置信度分数基于概率。这个分数是给每个类的,无论哪个类的概率很高,该类都会优先。
边界框的参数宽度 (W) 和高度 (H) 是根据对象的大小来预测的。从重叠的边界框中,选择具有最高 IOU 的框,并删除其余框。
YOLOv2是YOLOv1的增强版本,由Redmon, J.等人]给出。在这个版本中,应用了不同的思想,如批量归一化、卷积锚框、高分辨率分类器、细粒度特征和多尺度训练来提高 YOLO 的性能。它使用 Darknet-19 作为包含 19 个卷积层和 5 个最大池化层的骨干分类,这些层需要更少的过程来分析图像,同时实现最佳精度
YOLOv3 是 YOLOv2 的渐进形式,它使用逻辑回归来估计每个边界框的客观性分数。边界框中包含多个类,为了预测这些类,使用了多标签分类。它还使用二进制交叉熵损失、数据增强技术和批量归一化。YOLOv3 使用一个名为 Darknet-53 的健壮特征提取器
YOLOv4 是一种先进的目标检测器,比以前所有版本的YOLO更准确、更快。它包括一种称为“Bag of freebies”的方法,该方法在不影响推理时间的情况下增加了训练时间。该方法利用数据增强技术、自对抗训练、交叉小批量归一化 (CmBN)、CIoU 损失 、DropBlock 正则化、余弦退火调度器来改进训练。YOLOv4 还包含了那些只影响推理时间的方法,称为“Bag of specials”;它包括 Mish 激活、多输入加权残差连接 (MiWRC)、SPP 模块 [26]、PAN 路径聚合模块 [58]、跨级部分连接 (CSP)和空间注意力模块模块。YOLOv4 可以在单个 GPU 上训练,并使用遗传算法来选择超参数
在 YOLOv4 发布后不久,Ultralytics 公司推出了 YOLOv5 存储库,与以前的 YOLO 模型相比,它有相当大的增强,由于 YOLOv5 不是作为同行评议的研究发表的,因此它引起了许多关于其合法性的争论;但它仍然被用于各种应用,并在产生模型可靠性的同时提供有效的结果。它以 140 fps 的推理速度运行。YOLOv5使用PyTorch,这使得模型的部署更快、更容易、更准确[60]。虽然 YOLOv4 和 YOLOv5 框架相似,因此很难比较它们之间的区别,但后来,YOLOv5 在某些情况下获得了比 YOLOv4 更高的性能。YOLOv5 模型有五种类型:nano、small、medium、large、extralarge。根据数据集选择模型类型。此外,YOLOv5 模型的轻量级模型随 6.0 版本发布;推理速度提高至 1666 fps.
SSD
SSD是一种用于多个类别的快速单次多box检测器,由Liu, W.等人实现。它构建了一个统一的检测器框架
该框架与 YOLO 一样快,与 Faster-RCNN 一样准确。SSD的设计结合了YOLO模型的回归思想和Faster R-CNN算法的锚定过程。通过使用 YOLO 的回归,SSD 降低了神经网络的计算复杂性,以确保实时性能。通过锚点程序,SSD能够提取各种大小和纵横比的特征,以确保检测精度。SSD 使用 VGG-16 作为骨干检测器
SSD的过程基于前馈CNN,该CNN为这些框中是否存在对象类实例生成固定大小和对象性分数的边界框,然后应用NMS(非最大抑制)进行最终检测。它还使用RPN的概念来获得快速的检测速度,同时保持高检测质量。通过一些辅助数据增强和硬负挖掘方法,SSD 在各种基准数据集上实现了最先进的性能
Backbone networks
DCNN作为目标检测模型的骨干网络。为了改善特征表示行为,网络的结构变得更加复杂,这意味着网络层会变得更深,其参数也会增加。骨干CNN用于提取基于DCNN的目标检测系统的特征。
骨干网络作为目标检测方法的主要特征提取器,将图像作为输入,并为每个输入图像生成特征图作为输出。根据精度和效率的需要;可以使用密集连接的骨干网,如ResNet 、ResNext等。当需要高精度和构建精确的应用程序时,需要复杂的主干网。
AlexNet是一种重要的CNN架构,由5个卷积层和3个全连接层组成。在为图像提供固定大小(224 × 224)的输入后,网络一遍又一遍地卷积并汇集激活,然后将结果传输到完全连接的层。该网络在ImageNet上进行训练,并结合了多种正则化方法,例如数据增强,dropout等。为了加速数据处理,提高收敛速度,首次使用了ReLu激活函数和GPU。
ZFNet
在AlexNet取得成功之后,研究人员想知道卷积层可视化背后的机制,以了解CNN如何学习特征以及如何检查每层图像特征图的差异。
因此,Zeiler, M. D. et al. 设计了一种使用反卷积层、解池层和ReLU非线性来可视化特征图的方法。与 AlexNet 一样,第一层的滤波器大小为 11×11,步幅为 4,但在 ZFNet 中,它减少到 7×7,步幅设置为 2 而不是 4。这样做的原因是第一层的滤波器包含频率信息的变化;它可以是高的,也可以是低的,并且具有非常小的中频百分比。该方法的性能优于AlexNet,并证明了网络的深度会影响深度学习模型的性能
VGGNet
VGG 进一步将AlexNet的深度扩大到16-19层,从而细化了网络的特征表示。VGG16 和 VGG19 是两种流行的 VGG 网络架构。在每一层中,它采用大小为 3×3 的内核,步幅为 1。小内核和步幅更有利于提取图像中物体位置的细节。它的好处是通过合并额外的卷积层来扩展网络的深度。最小化参数可以提高网络的特征表示能力
GoogLeNet 或 inception v1
GoogleNet 的主要目的Inception v1 架构旨在通过降低计算成本来实现高精度。向网络添加 1×1 卷积层,其深度增加。这种滤波器大小首先用于名为Network-in-Network的技术,主要用作降维以消除计算瓶颈并增加网络的宽度和高度。
GoogleNet 是一个 22 层的深度架构,是 ILSVRC 2014 竞赛的获胜者。基于这一思路,作者开发了一个具有降维功能的初始模块。通过使用 inception 模块,GoogLeNet 参数的数量减少了。Inception 模块由 1x1、3x3 和 5x5 滤波器大小的卷积层和相互平行组装的最大池化层组成。Inception v2 系列是第一个提出批量归一化的网络 ,从而实现快速训练
ResNet
随着网络深度的增加,可能会出现精度在达到饱和点后下降的情况。这被称为退化问题,为了解决这个问题,提出了一个残差学习(ResNet)模块。与早期设计的架构(如AlexNet 和VGGNet)相比,它的计算复杂度更低。通常使用层数为50和101层的ResNet骨干网络。在 ResNet50 中,使用跳过连接来保留更深层的梯度,并且精度有所提高。在 ResNet101 中,该模块的性能与 VGG 网络相同,但参数数量较少,遵循 GoogLeNet 中的全局平均池化和瓶颈
DenseNet
Huang, G. et al. 提出了由密集块组成的 DenseNet 架构,该架构以前馈方式将每一层与其他层连接起来,从而带来特征重用、参数有效性和隐式深度监督等好处。DenseNet 减少了梯度消失的问题
Problems of object detection and its solutions
Small object detection
检测小尺寸物体是物体检测中最困难的问题之一。Faster RCNN 和 YOLO等目标检测算法在检测小尺寸物体方面不足。在深度卷积神经网络中,由于独立特征层在实际图像中仅占据很小的像素尺寸,因此缺乏足够的知识。由于低分辨率的小尺寸物体携带有限的上下文细节,因此很难检测到它们。为了克服这个问题,可以通过增强生成更多的数据,或者可以提高模型的输入分辨率等
Multi-scale object detection
在目标检测领域,多尺度目标检测是一项具有挑战性的任务。深度CNN的每一层都会生成特征图,而这些特征图生成的信息是相互独立的。多尺度对象的判别细节可以出现在骨干网络的任一层中,而对于小尺度对象,它出现在初始层中,并在后面的层中消散。在目标检测算法(一级和两级)中,预测是从最顶层进行的,这给检测多尺度对象(通常是小对象)的方式造成了障碍。为了克服这个困难;该文提出信息融合与DCNNs分层结构相结合的多层检测和特征融合
代表性方法包括多尺度深度CNN 、深度监督目标检测(DSOD)和SSD。为了提高多尺度目标检测的可靠性,可以合并多层特征融合和多层检测。这包括特征金字塔网络(FPN)、反卷积单次检测器(DSSD)、尺度可转移检测网络(STDN)、与对象先验网络的反向连接(RON)、自上而下的调制(TDM)等几个具有代表性的框架。
Intraclass variation
类内variation是指同一类的不同图像之间发生的variation。它们的形状、大小、颜色、材料、质地等各不相同。对象实例看起来很灵活,可以在缩放和旋转方面轻松转换。这些被称为内在因素。外部因素也会产生一些明显的影响。它包括照明不当、天气条件、照明、低质量相机等。这种差异可能由多种因素引起,如遮挡、照明、位置、透视等。这个问题可以通过验证训练数据是否具有良好的多样性(包括上述所有因素)来克服
Class imbalance
类之间的不规则数据分布称为类不平衡。简单来说,可以说当类包含不成比例数量的实例时,即在一个数据集中比另一个数据集中的标本多。从对象检测的角度来看,类不平衡可以分为两种类型:前景-背景不平衡和前景-前景不平衡。前者发生在训练过程中,与数据集中的类别数量无关。后者是指在样本数量范围内批次水平的不平衡,涉及正类。一般来说,一级目标探测器的精度低于两级目标探测器,其背后的原因之一是类别不平衡。为了解决这个问题,可以对类进行上采样和下采样,或者使用合成少数过采样技术(SMOTE)等生成合成数据
Generalization issues
当模型欠拟合或过拟合时,就会出现目标检测中的泛化问题。欠拟合可以在训练阶段的初始阶段识别出来,这个问题可以通过增加训练周期的数量或模型的复杂性来解决。对于过拟合,我们可以使用重要的方法,例如增加训练数据、提前停止、正则化方法(L1、L2)或丢弃层
3D Object Detection for Autonomous Driving: A Comprehensive Survey
abs
近年来,自动驾驶因其减轻驾驶员负担和提高驾驶安全性的潜力而受到越来越多的关注。在现代自动驾驶管道中,感知系统是不可或缺的组成部分,旨在准确估计周围环境的状态,并为预测和规划提供可靠的观测结果。3D 物体检测旨在预测自动驾驶汽车附近 3D 物体的位置、大小和类别,是感知系统的重要组成部分。本文综述了自动驾驶三维目标检测的研究进展。首先,我们介绍了3D目标检测的背景,并讨论了该任务的挑战。其次,我们从模型和感官输入方面对3D目标检测的进展进行了全面调查,包括基于激光雷达、基于相机和多模态检测方法。我们还对每类方法的潜力和挑战进行了深入分析。此外,我们还系统地研究了3D目标检测在驾驶系统中的应用。最后,对三维目标检测方法进行了性能分析,进一步总结了多年来的研究趋势,并展望了该领域的未来发展方向。
intro
自动驾驶技术已广泛应用于许多场景,包括自动驾驶卡车、机器人出租车、送货机器人等,能够减少人为错误并增强道路安全性。作为自动驾驶系统的核心组成部分,汽车感知帮助自动驾驶汽车通过感官输入了解周围环境。感知系统通常以多模态数据(摄像头图像、激光雷达扫描仪点云、高清地图等)为输入,预测道路上关键要素的几何和语义信息。高质量的感知结果可作为目标跟踪、轨迹预测和路径规划等后续步骤的可靠观测
3D 对象检测旨在根据感官输入预测驾驶场景中 3D 对象的边界框。3D 目标检测的一般公式可以表示为
f~det~ 是 3D 对象检测模型,I~sensor~ 是一个或多个感官输入,B = {B1, · · · , BN } 是场景中 N 个 3D 对象的集合。
如何表示 3D 对象 Bi 是此任务中的一个关键问题,因为它决定了应为以下预测和规划步骤提供哪些 3D 信息。在大多数情况下,3D 对象表示为包含此对象的 3D 长方体,
其中 (x~c~, y~c~, z~c~) 是长方体的 3D 中心坐标,l、w、h 分别是长方体的长度、宽度和高度,θ 是长方体在地平面上的航向角,即偏航角,class 表示 3D 对象的类别,例如汽车、卡车、行人、骑自行车的人。此外也有其他模型使用了更多参数的.
Sensory inputs
有许多类型的传感器可以为 3D 物体检测提供原始数据。在传感器中,雷达、摄像头和LiDAR(光探测和测距)传感器是三种最广泛采用的传感类型。雷达具有较长的探测范围,并且对不同的天气条件具有鲁棒性。由于多普勒效应,雷达可以提供额外的速度测量。摄像头价格便宜且易于获取,对于理解语义(例如交通标志的类型)至关重要。尽管价格便宜,但相机在用于 3D 物体检测方面存在固有的局限性。相机只能捕获外观信息,无法直接获取场景的 3D 结构信息。另一方面,3D物体检测通常需要在3D空间中进行精确定位,而从图像中估计的3D信息(例如深度)通常具有较大的误差。图像的变形通常容易受到极端天气和时间条件的影响。在夜间或雾天从图像中检测物体比在晴天检测要困难得多,这导致了实现自动驾驶的足够鲁棒性的挑战。
作为替代解决方案,LiDAR 传感器可以通过发射激光束然后测量其反射信息来获得场景的细粒度 3D 结构。一个激光雷达传感器发射 m 束并在一个扫描周期内进行 n 次测量,可以产生 I~range~ ∈ R^m×n×3^ 的距离图像,其中,范围图像的每个像素都包含球面坐标系中的距离 r、方位角α和倾角φ以及反射强度。
范围(Range)图像是LiDAR传感器获得的原始数据格式,可以通过将球面坐标转换为笛卡尔坐标来进一步转换为点云。
点云可以表示为 I~point~ ∈ R^N×3^,其中 N 表示场景中的点数,每个点有 3 个 xyz 坐标通道。距离图像和点云都包含由LiDAR传感器直接获取的精确3D信息。
因此,与相机相比,LiDAR 传感器更适合检测 3D 空间中的物体,并且 LiDAR 传感器也不太容易受到时间和天气变化的影响。然而,LiDAR 传感器比摄像头贵得多,这可能会限制在驾驶场景中的应用
2D 目标检测旨在在图像上生成 2D 边界框,是计算机视觉中的一个基本问题。
3D 目标检测方法借鉴了 2D 对应物的许多设计范式:region proposals生成和细化、锚点、非最大抑制等。然而,从很多方面来看,3D目标检测并不是2D目标检测方法对3D空间的简单改变。
(1)3D目标检测方法必须处理异构数据表示。点云检测需要新型算子和网络来处理不规则的点数据,而点云和图像的检测需要特殊的融合机制。
(2) 3D 目标检测方法通常利用不同的投影视图来生成对象预测。
与从透视图检测对象的 2D 对象检测方法相反,3D 方法必须考虑不同的视图来检测 3D 对象,例如从鸟瞰图、点视图和圆柱视图。(3)3D物体检测对物体在3D空间中的精确定位有很高的要求。分米级的定位误差可能导致行人和骑自行车的人等小物体的检测失败,而在二维物体检测中,几个像素的定位误差仍可能在预测边界框和地面实况边界框之间保持较高的交并 (IoU)。因此,精确的 3D 几何信息对于从点云或图像进行 3D 物体检测是必不可少的。
(1) LiDAR 和 RGB-D 传感器的点云分布不同。在室内场景中,点相对均匀地分布在扫描表面上,大多数 3D 对象在其表面上接收到足够数量的点。然而,在驾驶场景中,大多数点都落在 LiDAR 传感器的附近,而那些远离传感器的 3D 物体只会获得几个点。因此,在驾驶场景中,特别需要处理各种点云密度的三维物体,并准确检测那些远距离和稀疏的物体。
(2)驾驶场景下的检测对推理时延有特殊要求。驾驶场景中的感知必须是实时的,以避免事故发生。因此,这些方法必须具有计算效率,否则它们将无法应用于实际应用。
Datasets
LiDAR-based 3D Object Detection
我们将介绍基于LiDAR数据的3D目标检测方法,即点云或距离图像。回顾和分析了基于不同数据表示的基于 LiDAR 的 3D 目标检测模型,包括基于点、基于网格、基于点体素和基于距离的方法。(point-based, grid-based, point-voxel based, and range-based)
Data representations for 3D object detection
与像素有规律地分布在图像平面上的图像相比,点云是一种稀疏且不规则的 3D 表示,需要专门设计的模型进行特征提取。范围图像是一种密集而紧凑的表示形式,但范围像素包含 3D 信息而不是 RGB 值。因此,在范围图像上直接应用传统的卷积网络可能不是最佳解决方案。另一方面,自动驾驶场景中的检测通常具有实时推理的要求。因此,如何开发一个既能有效处理点云或范围图像数据又能保持高效率的模型,仍然是研究界面临的一个公开挑战。
Point-based 3D object detection
基于点的3D目标检测方法通常继承了点云深度学习技术的成功,并提出了直接从原始点检测3D对象的多种架构。
点云首先通过基于点的骨干网络,在该网络中,点逐渐采样,点云操作学习特征。然后,根据下采样点和特征预测 3D 边界框。
基于点的 3D 对象检测器有两个基本组件:点云采样和特征学习。
Point Cloud Sampling:PointNet++中的最远点采样(FPS)已被广泛用于基于点的检测器中,其中最远的点是从原始点集中依次选择的。PointRCNN 是一项开创性的工作,它采用 FPS 逐步对输入点云进行下采样,并从下采样点生成 3D 建议。类似的设计范式也被用于后续的许多工作,并进行了改进,如分割引导滤波、特征空间采样、随机采样、基于体素的采样(voxel-based sampling)和坐标细化(coordinate refinement)。
Point Cloud Feature Learning:具体来说,首先通过球查询(ball query)在预定义的半径内收集上下文点。然后,通过多层感知器和maxpooling对上下文点和特征进行聚合,得到新的特征。还有其他使用不同点云算子的工作,包括图算子,注意力算子和Transformer。
基于点的检测器的表示能力主要受两个因素的限制:特征学习中采用的上下文点数和上下文半径。增加上下文点的数量将获得更多的表示能力,但代价是增加大量的内存消耗。球查询中合适的上下文半径也是一个重要因素:如果半径太小,上下文信息可能不足,如果半径过大,细粒度的 3D 信息可能会丢失。必须仔细确定这两个因素,以平衡检测模型的有效性和效率。
增加上下文点的数量将获得更多的表示能力,但代价是增加大量的内存消耗。球查询中合适的上下文半径也是一个重要因素:如果半径太小,上下文信息可能不足,如果半径过大,细粒度的 3D 信息可能会丢失。必须仔细确定这两个因素,以平衡检测模型的有效性和效率。可并行进行随机均匀采样,效率高。然而,考虑到LiDAR扫描中的点不是均匀分布的,随机均匀采样可能倾向于对那些高点云密度的区域进行过度采样,而对那些稀疏区域进行采样不足,这通常会导致与最远点采样相比性能较差。
最远点采样及其变体可以通过从现有点集中依次选择最远的点来获得更均匀的采样结果。然而,最远点采样本质上是一种顺序算法,不能变得高度并行。因此,最远点采样通常很耗时,并且无法进行实时检测。
Grid-based 3D object detection
基于网格的 3D 对象检测器首先将点云栅格化为离散的网格表示,即体素、柱子和鸟瞰图 (BEV) 特征图。然后,他们应用传统的 2D 卷积神经网络或 3D 稀疏神经网络从网格中提取特征。最后,可以从BEV网格单元中检测到3D物体。基于网格的 3D 目标检测图如图 所示。基于网格的检测器有两个基本组件:基于网格的表示和基于网格的神经网络
Grid-based representations:
voxels。如果将检测空间栅格化为规则的 3D 格网,则体素就是格网像元。如果点云落入此格网像元中,则体素可以为非空。由于点云分布稀疏,因此 3D 空间中的大多数体素单元格都是空的,不包含任何点。在实际应用中,只有那些非空体素才会被存储并用于特征提取。VoxelNet是一项开创性的工作,它利用稀疏的体素网格,提出了一种新的体素特征编码(VFE)层,从体素单元内的点中提取特征。
随后的一系列工作采用了类似的体素编码策略。此外,还有两类方法试图改进 3D 目标检测的体素表示:(1) 多视图体素。一些方法从不同的视角提出了动态体素化和融合方案,例如鸟瞰图和透视图、圆柱面和球面视角、距离视角。(2)多尺度体素。一些论文生成不同尺度的体素或使用可重构的体素
Pillars:柱子可以看作是特殊的体素,其中体素大小在垂直方向上是无限的。支柱特征可以通过PointNet从点聚合,然后散射回来,构建2D BEV图像进行特征提取。PointPillars 是一部开创性的著作,它引入了Pillar表示
BEV feature maps:鸟瞰图特征图是一种密集的 2D 表示,其中每个像素对应于一个特定区域,并对该区域中的点信息进行编码。BEV特征图可以通过将3D特征投影到鸟瞰图中,从体素和柱子中获取,也可以通过汇总像素区域内的点统计数据,直接从原始点云中获取。
Grid-based neural networks:基于网格的网络主要有两种类型:用于 BEV 特征图和Pillar的 2D 卷积神经网络,以及用于体素的 3D 稀疏神经网络。
2D convolutional neural networks:传统的 2D 卷积神经网络可以应用于 BEV 特征图,以从鸟瞰图检测 3D 对象。在大多数作品中,2D网络架构通常都是从2D目标检测中的成功设计中改编而来的,比如ResNet,区域建议网络(RPN)和特征金字塔网络(FPN)
3D 稀疏神经网络。3D稀疏卷积神经网络基于两个专门的3D卷积算子:sparse convolutions和submanifold convolutions,它们只能在那些非空体素上有效地进行3D卷积。与在整个体素空间上执行标准3D卷积相比,稀疏卷积算子效率更高,可以获得实时推理速度。
SECOND是一项开创性的工作,它使用基于 GPU 的哈希表实现了这两个稀疏算子,并构建了一个稀疏卷积网络来提取 3D 体素特征。
这种网络架构已在许多工程中得到应用,并成为基于体素的探测器中使用最广泛的骨干网络。还有一系列工作试图改进稀疏算子,将扩展为两级检测器,并将Transformer架构引入基于体素的检测。
与 BEV 特征图和Pillar等 2D 表示相比,体素包含更结构化的 3D 信息。此外,深度体素特征可以通过 3D 稀疏网络学习。然而,3D 神经网络会带来额外的时间和内存成本。BEV 特征图是最有效的网格表示,可直接将点云投影到 2D 伪图像中,而无需专门的 3D 运算符,如稀疏卷积或柱状编码。2D检测技术也可以无缝应用于BEV特征图,无需太多修改。基于BEV的检测方法通常可以获得高效率和实时推理速度。但是,简单地汇总像素区域内的点统计数据会丢失太多的 3D 信息,与基于体素的检测相比,这会导致检测结果的准确性较低。基于Pillar的检测方法利用 PointNet 对Pillar内的 3D 点信息进行编码,然后将特征分散回 2D 伪图像中以实现高效检测,从而平衡了 3D 目标检测的有效性和效率
challenges of the grid-based detection methods:所有基于网格的方法都必须面对的一个关键问题是选择适当大小的网格单元。网格表示本质上是点云的离散格式,通过将连续的点坐标转换为离散的网格索引。
量化过程不可避免地会丢失一些 3D 信息,其有效性很大程度上取决于网格单元的大小:网格尺寸越小,网格就越高分辨率,因此可以保留更细粒度的细节,这对于准确的 3D 对象检测至关重要,然而,减小网格单元的大小会导致 2D 网格表示(如 BEV 特征图或支柱)的内存消耗呈二次增加。至于像体素这样的 3D 网格表示,问题可能会变得更加严重。因此,如何平衡较小网格尺寸带来的功效和内存增加影响的效率仍然是所有基于网格的三维目标检测方法面临的一个悬而未决的挑战。
Point-voxel based 3D object detection
基于点体素的方法采用混合架构,利用点和体素进行 3D 对象检测。这些方法可以分为两类:单阶段和两阶段检测框架。
Single-stage point-voxel detection frameworks.
基于单级点体素的 3D 目标检测器试图将点和体素的特征与骨干网络中的点到体素和体素到点变换联系起来
点包含细粒度的几何信息,体素的计算效率很高,在特征提取阶段将它们组合在一起自然会从这两种表示中受益。在骨干网中利用点-体素特征融合的思想已被许多著作探索,其贡献包括点-体素卷积,辅助点网络和多尺度特征融合.
Two-stage point-voxel detection frameworks
基于点体素的两级 3D 对象检测器针对不同的检测阶段采用不同的数据表示。
具体来说,在第一阶段,采用基于体素的检测框架来生成一组 3D 对象建议,在第二阶段,首先从输入点云中对关键点进行采样,然后通过新的点算子从关键点进一步细化3D建议。
基于点体素的方法自然可以受益于从点获得的细粒度 3D 形状和结构信息以及体素带来的计算效率。然而,这些方法仍然存在一些挑战。对于混合点-体素骨干网,点-体素特征的融合一般依赖于体素-点和点-体素变换机制,可以带来不可忽视的时间成本。对于两阶段点体素检测框架,一个关键的挑战是如何有效地聚合 3D 提案的点特征,因为现有的模块和运算符通常非常耗时。综上所述,与纯基于体素的检测方法相比,基于点体素的检测方法可以获得更好的检测精度,但代价是增加了推理时间。
Range-based 3D object detection
范围图像是一种密集而紧凑的 2D 表示,其中每个像素都包含 3D 距离信息,而不是 RGB 值。基于距离的方法从两个方面解决了检测问题:设计适合距离图像的新模型和算子,以及选择合适的视图进行检测。
Range-based detection models
由于距离图像是与RGB图像一样的2D表示,因此基于范围的3D对象检测器可以自然地借用2D对象检测中的模型来处理范围图像。
LaserNet 是一项开创性的工作,它利用深层聚合网络 (DLA-Net)从距离图像中获取多尺度特征并检测 3D 对象。一些论文还采用了其他 2D 目标检测架构
Range-based operators
距离图像的像素包含 3D 距离信息而不是颜色值,因此传统 2D 网络架构中的标准卷积算子对于基于范围的检测来说不是最佳选择,因为滑动窗口中的像素在 3D 空间中可能彼此相距很远。一些工作采用新颖的算子来有效地从范围像素中提取特征,包括范围扩展卷积、图算子和元核卷积
Views for range-based detection
范围图像是从范围视图 (RV) 捕获的,理想情况下,范围视图是点云的球面投影。
然而,从距离视图进行检测时,不可避免地会受到球面投影带来的遮挡和尺度变化问题的影响。
为了规避这些问题,许多方法都在利用其他视图来预测3D物体,例如中采用的圆柱视图(CYV),在中采用的距离视图、鸟瞰视图(BEV)和/或点视图(PV)的组合
Analysis: potentials and challenges of the range-based methods
范围图像是一种密集而紧凑的 2D 表示,因此传统或专用的 2D 卷积可以无缝地应用于范围图像,这使得特征提取过程非常高效.然而,与鸟瞰图检测相比,距离图检测容易受到遮挡和尺度变化的影响。因此,从距离视图中提取特征,从鸟瞰图进行目标检测,成为基于距离的3D目标检测最实用的解决方案。
Learning objectives for 3D object detection
学习目标在对象检测中至关重要。由于 3D 物体相对于整个检测范围非常小,因此在 3D 检测中非常需要特殊的机制来增强小物体的定位。另一方面,考虑到点云稀疏且物体通常具有不完整的形状,准确估计 3D 物体的中心和大小是一项长期存在的挑战。
Anchor-based 3D object detection
锚点(anchors)是具有固定形状的预定义长方体,可以放置在 3D 空间中。
3D 对象可以基于与真实值具有高交集 (IoU) 的正锚点进行预测。将从锚点配置和损失函数方面介绍基于锚点的三维目标检测方法。
Anchor configurations:基于锚点的 3D 对象检测方法通常从鸟瞰图检测 3D 对象,其中 3D 锚框放置在 BEV 特征图的每个网格单元上。3D 锚点通常对每个类别具有固定大小,因为同一类别的对象具有相似的大小
Loss functions:基于锚点的方法利用分类损失Lcls来学习正负锚点,利用回归损失Lreg来学习基于正锚点的物体的大小和位置。此外,L~θ~ 用于学习物体的航向角。
回归目标可以进一步应用于这些正锚点,以学习 3D 对象的大小和位置.
p 是每个锚点的预测概率,如果锚点为正,则目标 q 为 1,否则为 0
此外还有使用Focal Loss,
使用SmoothL1 loss用于回归
为了学习航向角 θ,弧度方向偏移量可以直接用 SmoothL1 损失回归
然而,由于回归范围较大,直接回归弧度偏移通常很困难,另外,基于bin的航向估计是学习航向角的较好解,其中首先将角度空间划分为bin,并采用基于bin的分类L~dir~和残差回归.
正弦函数也可用于对弧度偏移进行编码
除了分别学习物体大小、位置和方向的损失函数外,将所有物体参数视为一个整体的交并(IoU)损失也可以应用于3D物体检测
其中 C^G^ ~i~ 和 C~I~ 分别是地面实况和预测长方体的第 i 个角。
基于锚点的方法可以从同一类别的 3D 对象应该具有相似形状的先验知识中受益,因此它们可以在 3D 锚点的帮助下生成准确的对象预测。然而,由于3D物体相对于检测范围相对较小,因此需要大量的锚点来确保整个检测范围的完全覆盖,例如,在KITTI 数据集的中使用了大约70k个锚点。此外,对于那些非常小的物体,如行人和骑自行车的人,应用基于锚点的分配可能非常具有挑战性。考虑到锚点通常放置在每个网格单元的中心,如果网格单元较大而单元中的对象较小,则该单元的锚点可能与小对象具有较低的 IoU,这可能会阻碍训练过程。
Anchor-free 3D object detection
无anchor box方法消除了复杂的anchor box设计,可以灵活地应用于不同的视图,例如鸟瞰图、点视图和范围视图。
基于锚点和无锚点方法之间的主要区别在于正样本和负样本的选择。
Grid-based assignment:与依赖于带有锚点的 IoU 来确定正负样本的基于锚点的方法相比,无锚点方法利用各种基于grid的分配策略来评估 BEV 网格单元、Pillar和体素
PIXOR是一项开创性的工作,它利用地面实况 3D 物体内部的网格单元作为正例,而其他则作为负例。Pillar-based object detection for autonomous driving.采用了这种内部对象分配策略,并在中通过选择最接近对象中心的网格单元进一步改进。CenterPoint利用每个对象中心的高斯核来分配正标签。
损失函数上,分类损失基本不变.但回归损失改变如下
DX 和 DY 是正grid cells和对象中心之间的偏移量。
Point-based assignment.
大多数基于点的检测方法采用无锚点和基于点的分配策略,其中首先对点进行分割,然后选择 3D 对象内部或附近的前景点作为正样本,最后从这些前景点中学习 3D 边界框。大多数基于点的检测器都采用了这种前景点分割策略,并进行了改进,例如增加了中心度分数
Range-based assignment
无锚点分配也可以用于范围图像。一种常见的解决方案是选择 3D 对象内部的范围像素作为正样本。与其他回归目标基于全局三维坐标系的方法不同,基于范围的方法采用以对象为中心的坐标系进行回归。
Set-to-set assignment.DETR是一种颇具影响力的 2D 检测方法,它引入了一种集到集的分配策略,通过匈牙利算法自动将预测分配给相应的地面实况
其中 M 是从每个阳性样本到 3D 对象的一对一映射。
3D object detection with auxiliary tasks
许多方法都采用辅助任务来增强空间特征,并为精确的 3D 目标检测提供隐式指导。常用的辅助任务包括语义分割、交集并集预测、对象形状补全和对象部分估计。
Semantic segmentation:语义分割可以从3个方面帮助3D目标检测:(1)前景分割可以提供对象位置的隐性信息。在大多数基于点的 3D 目标检测器 中,逐点前景分割已被广泛采用,用于生成提案。(2)空间特征可以通过分割来增强。在文献[347]中,利用语义上下文编码器来增强具有语义知识的空间特征。(3)语义分割可以作为预处理步骤,过滤掉背景样本,使3D目标检测更加高效。
IoU prediction:交集并集 (IoU) 可以作为纠正对象置信度分数的有用监督信号。Cia-ssd: Confident iou-aware single-stage object detector from point cloud. In: AAAI提出了一个辅助分支来预测每个检测到的 3D 对象的 IoU 分数 S~IoU~。
在推理过程中,来自传统分类分支的原始置信度分数 S~con~f = S~cls~ 被 IoU 分数 SIoU 进一步校正.其中,超参数β控制抑制低 IoU 预测和增强高 IoU 预测的程度。通过 IoU 校正,更容易选择高质量的 3D 对象作为最终预测。
Object shape completion
由于LiDAR传感器的性质,远处物体通常只在其表面上接收到几个点,因此3D物体通常是稀疏和不完整的。提高检测性能的一种直接方法是从稀疏点云中完成物体形状。完整的形状可以为准确和稳健的检测提供更多有用的信息。在3D检测中已经提出了许多形状补全技术,包括形状解码器、形状特征和概率占用网格
Object part estimation.
识别对象内部的零件信息有助于 3D 对象检测,因为它可以显示对象的更细粒度的 3D 结构信息。
3D 对象检测与许多其他 3D 感知和生成任务具有内在关联性。与独立训练 3D 目标检测器相比,3D 检测和分割的多任务学习更有利,形状补全也有助于 3D 目标检测。还有其他任务可以帮助提高 3D 对象检测器的性能。例如,场景流估计可以识别静态和移动对象,在点云序列中跟踪相同的 3D 对象可以更准确地估计该对象。因此,将更多的感知任务集成到现有的3D目标检测管道中将是有希望的。