选自arXiv
作者:Yilin Wang等
机器之心编译
编辑:Panda
目标检测一直是计算机视觉领域中一大难题。近日,来自阿尔伯塔大学的研究者对目标检测领域的近期发展进行了综述,涵盖常见数据格式和数据集、2D 目标检测方法和 3D 目标检测方法。
目标检测任务的目标是找到图像中的所有感兴趣区域,并确定这些区域的位置和类别。由于目标具有许多不同的外观、形状和姿态,再加上光线、遮挡和成像过程中其它因素的干扰,目标检测一直以来都是计算机视觉领域中一大挑战性难题。
本文将概述性地总结一些当前最佳的目标检测相关研究。第 2 节将简要介绍目标检测任务常用的数据格式,同时还会给出一些著名的数据集。
然后会概述一些预处理方法。第 3 节会介绍与 2D 目标检测相关的技术,包括传统方法和深度学习方法。最后第 4 节会概括性地讨论 3D 目标检测这一主题。
2 数据格式
2.1 数据集
在计算机图形学中,深度图(Depth Map)是包含场景中目标表面与视点之间距离信息的图像或图像通道。深度图类似于灰度图像,只不过深度图中每个像素都是传感器与目标之间的实际距离。一般来说,RGB 图像和深度图是同时采集的,因此两者的像素之间存在一一对应关系。RGB-D 格式的数据集包括 Pascal VOC、COCO、ImageNet 等。
雷达数据对目标检测问题也很有用。雷达数据的收集方式是:先向目标表面发射声波,然后使用反射信息来计算目标的速度以及与目标的距离。但是,仅靠雷达可无法收集到用于检测和分类的信息,因此不同类型数据的融合是非常重要的。
点云数据是三维坐标系中的一组向量。这些向量通常用 X、Y、Z 的三维坐标表示,是一种常用的外表面形状表示方式。不仅如此,除了由 (X,Y,Z) 表示的几何位置信息之外,每个点云还可能包含 RGB 颜色像素、灰度值、深度和法线。大多数点云数据都由 3D 扫描设备生成,比如激光雷达(2D/3D)、立体相机和 TOF(飞行时间)相机。这些设备可自动测量目标表面上大量点的信息,然后以 .LAS 和 .LAZ 这两种标准文件格式输出点云。这些点云数据是由扫描设备采集的。在用于训练的数据集中,除了点云数据,还有相应的 RGB 图像。这类数据集包括 KITTI [4]、nuScenes [5]、Waymo Open [6] 等。
本文将使用 nuScenes 数据集来训练和评估模型。nuScenes 数据集来自 nuTonomy,是一个大规模自动驾驶数据集,其中的数据进行了 3D 目标标注。与其它很多数据集相比,nuScenes 数据集不仅规模更大,目标标注更多,而且还提供了整套传感器套件,包括激光雷达、声波雷达、GPS 和 IMU。图 1 展示了 nuScenes 中一个激光雷达点云的示例。
图 1:nuScenes 中的激光雷达点云示例。
2.2 预处理
尽管数据集中的图像质量很高,但在实际应用中,天气等因素都可能影响图像的质量,并因此降低检测准确率。近期提出的一些用于交通场景的去雾算法可以解决这类问题。比如 [8] 提出了一种基于伽马校正和引导滤波的去雾算法:先使用伽马校正方法在去雾之前校正图像,然后再在校正后图像上执行三种不同尺度的引导滤波过程,过滤后的图像再使用 Retinex 模型修改,最后使用加权融合得到去雾的结果。通过此方法得到的去雾图像具有更高的对比度和颜色一致性。Wang [9] 重点研究了如何解决雾浓度分布不均的问题。根据波长与雾浓度的关系,他们针对交通监控图像构建了一个与波长相关的物理成像模型。然后,再根据波长与颜色的相关性,他们又基于最大模糊相关图切割设计了一种透射率估计算法。
除了提升图像质量之外,人们也常使用相机校准来确定图像在 3D 空间中的位置。尽管相机校准这一问题已得到广泛研究,但大多数校准方法都会固定相机位置并使用某个已知的校准模式。Basu [10] 提出了一种使用场景中的清晰边缘自动校准相机的方法,该方法可移动相机且无需事先定义一种模式。
除了上述问题之外,某些数据集还存在严重的类别不平衡问题,比如 nuScenes 数据集。[11] 提出了一种有效解决该问题的方法,并在这个新数据集上取得了优秀表现。他们首先使用数据增强策略,然后使用一些经过改进的 3D 特征提取网络,最后改进训练流程和对损失的评估,进而实现整体性能的提升。
3 2D目标检测
3.1 传统方法
传统的目标检测算法通常基于不同类型的特征描述子。方向梯度直方图(HOG)[12] 就是其中一种著名的描述子,它统计在已定位的图像部分中梯度方向的出现次数。HOG 特征结合 SVM 分类器的方法已在目标检测领域得到广泛应用,在行人检测方面尤其成功。
特征检测在传统方法中尤其重要。近些年,出现了很多特征提取方面的有趣研究。
霍夫变换(Hough transform)是图像处理过程中一种识别图像中几何形状的基本方法。举个例子,针对人脸跟踪问题,[13] 使用了一种基于梯度的霍夫变换来定位眼睛虹膜的位置。但是,对于非单视点(SVP)标准的图像,这样的变换无法直接用于特征识别。[14] 提出了一种解决该问题的数学模型。
雷登变换(Radon Transform)[15] 在医学影像处理方面应用广泛,它也可用于识别任务。[16] 使用雷登变换来进行视觉手势识别,得到了很不错的识别率。
Yin [17] 提出了一种跟踪鼻子形状的方法,以前的研究通常会忽略这个特征。这一研究使用面积增长方法来确定鼻子所在的区域,而鼻尖和鼻翼的形状则是通过预定义模板分别提取。最后,再使用提取出的特征指示人脸跟踪的效果。
一旦检测到相关特征,就使用 Kanade–Lucas–Tomasi(KLT)等特征跟踪器跟踪下一帧中的特征。2005 年时,有作者 [18] 提出了一种方法,即使用高斯拉普拉斯算子(Laplace of Gaussian)和高斯加权函数来提升会受噪声影响的 KLT 跟踪性能。该加权函数耦合了边缘特征,从而得到了一种用于选取最优加权函数的确定性公式。这种方法仅会增加少量计算时间,但却为跟踪性能带来极大提升。
有时候,除了特征提取,还会涉及到图像分割。[19] 描述了一种方法,即使用梯度向量流 - 蛇(GVF snake)模型来提取相关轮廓。通过加入边缘检测和使用气道 CT 切片先验知识的蛇位移(snake shifting)技术,作者对原始 GVF - 蛇方法进行了改进,得到了更好的结果。这一技术可能也很有用。
另一个问题则来自相机移动,随着收集数据的设备类型的增多,来自移动相机的数据也越来越多。至于背景消除问题,很多方法在静止相机采集的数据上表现优良,比如在事先知道每帧中前景和背景有较大距离的前提下,聚类可以在一次迭代中完成,而且仅需两个聚类,[20] 能在背景消除任务上取得较高的准确率。但是,如果相机在移动,难度就会大得多。[21] 首先使用了鲁棒型主成分分析(RPCA)来提取背景运动,其假设背景场景可以描述为一种低秩矩阵,然后将帧分割为子像素以提升将光流转换为运动的幅度和角度的准确率,由此改善结果。
3.2 深度学习方法
目标识别是指与识别图像或视频中目标相关的任务,旨在找到图像中所有相关目标并确定其 2D 位置。
现今,目标检测领域的深度学习方法主要分为两大类:两阶段式目标检测算法和单阶段式目标检测算法。前者是先由算法生成一系列候选边界框作为样本,然后再通过卷积神经网络分类这些样本。后者则是直接将目标边界定位问题转换成回归问题,其中不涉及生成候选边界框。两种方法的区别也导致其性能也不同。前者在检测准确率和定位准确率方面更优,而后者胜在算法速度。
此外,通用框架也主要有两种。
第一种是两阶段框架。这类框架首先生成候选区域(region proposal),然后将其分类成不同的目标类别,所以这也被称为「基于区域的方法」。这类模型主要包括 R-CNN [22]、Fast R-CNN [23]、Faster R-CNN [24]、基于区域的全卷积网络(R-FCN)等。
在单阶段框架中,模型将目标检测任务视为一个统一的端到端回归问题。在这类框架中,图像会被缩放到同一尺寸,并以网格形式均等划分。如果目标的中心位于某个网格单元中,该网格就负责预测目标。通过这种方式,模型仅需处理图像一次就能得到位置和分类结果。单阶段框架主要包括 MultiBox [26]、YOLO [27]、单次多框检测器(SSD)[28]。相比于第一类框架,这种框架通常结构更简单,检测速度也更快。
4 3D目标检测
这一节将简要讨论与 3D 目标检测相关的工作,这里基于不同的数据信息将这些研究工作分为了三大类别。
4.1 使用 RGB 图像的目标检测
RGB 图像包含充足的语义信息,因此非常适合目标检测。图 2 展示了一个使用 2D 图像检测目标的示例。3D-GCK [29] 等方法仅使用单目 RGB 图像就能实现实时的汽车检测:它首先预测 2D 边界框,然后使用神经网络来估计缺失的深度信息,将 2D 边界框提升到 3D 空间。
图 2:使用 2D 图像的目标检测示例。
近期一项研究 [30] 使用了 RGB-D 传感器,但只使用了灰度信息来识别无纹理的目标。它首先将传感器获得的 RGB 图像转换成灰度图像,然后再分割背景和前景。在移除噪声后,再使用 5 个分类模型执行特征提取,最终预测出目标的类别。
4.2 使用点云的目标检测
仅使用点云数据的分类网络主要有两种。第一种是直接使用三维点云数据。这类方法没有信息丢失的问题,但是由于 3D 数据非常复杂,所以往往计算成本较高。第二种方法则是将点云处理成二维数据,这可以降低计算量,但不可避免地会丢失原始数据的一些特征。图 3 给出了一个使用 3D 激光雷达点云数据执行检测的例子。
图 3:通过 YOLO 使用 3D 点云的目标检测示例。
将点云处理成二维数据的方法有很多。Jansen [31] 提出从多个 2D 角度表示 3D 点云。在其数据预处理阶段,通过取点云图像的中心作为原点,并通过旋转固定的弧度角来截取 64 张不同角度的点云图像。这种方法能在一定程度上减少信息损失,因为其中加入了额外的旋转,并在分类阶段使用了许多实例。[32] 等研究则是将点云投射到一个圆柱面上,以尽可能多地保留信息。
BirdNet [33] 是基于目标检测框架 BirdNet [34] 的改进版。BirdNet 为基于激光雷达数据的 3D 目标检测提供了一种端到端的解决方案。它用到了鸟瞰视角表征,这是从激光雷达点云转换而来的带有三个通道的 2D 结构,依赖于一个两阶段架构来获取面向 3D 的边界框。
近期,[35] 提出了一种计算高效的端到端式鲁棒型点云对齐和目标识别方法,该方法使用了无监督深度学习,并被命名为深度点云映射网络(DPC-MN)。该模型的训练无需标签,而且能高效地实现从 3D 点云表征到 2D 视角的映射函数。
4.3 结合 RGB 图像与点云的目标检测
Frustum PointNets [36] 同时使用 RGB 图像和激光雷达点云数据来执行 3D 目标检测。该算法使用成熟的 2D 目标检测器来缩小搜索空间。它是通过从图像检测器得到的 2D 边界框来提取 3D 边界视锥,然后再在经过 3D 视锥修整过的 3D 空间中执行 3D 目标实例分割。
MV3D [37] 也同时使用 RGB 图像和激光雷达点云数据作为输入,它是将 3D 点云投影成鸟瞰图和正视图。鸟瞰图表征是通过高度、强度和密度编码的,而正视图则是将点云投影到一个圆柱面上生成的。鸟瞰图可用于生成 3D 先验边界框,然后将该 3D 先验边界框投影到前视图和图像上,这三个输入生成一个特征图。该方法采用 ROI 池化来将三个特征图整合到同一个维度。整合后的数据再在网络上进行融合,然后输出分类结果和边界框。
图 4:使用 MV3D 的目标检测示例。