标题:Object Detection in 20 Years: A Survey
单位:Beihang University; Shanghai Artificial Intelligence Laboratory; Carleton University; Alibaba Group
1、简介:
目标检测是一个重要的计算机视觉任务,涉及在数字图像中检测某一类别的视觉物体实例(如人类、动物或汽车)。目标检测的目标是开发计算模型和技术,以提供计算机视觉应用所需的最基本信息:有哪些物体?这些物体在哪里?目标检测的两个最重要的指标是准确性(包括分类准确性和定位准确性)和速度。
由于不同的检测任务有完全不同的目标和约束,其难度可能有所不同。除了其他计算机视觉任务中的一些常见挑战,如物体在不同视角、照明条件下以及组内微小差异,目标检测还面临以下挑战:物体旋转和尺度变化(如微小物体)、准确的物体定位、密集和遮挡情况下的目标检测、检测速度的提高等。
如下图所示,在过去的二十年里,目标检测的进展大致经历了两个历史时期:“传统目标检测时期(2014年之前)”和“基于深度学习的目标检测时期(2014年之后)”,其中后者又可以分为单阶段检测和两阶段检测。
图2 物体检测发展路线图与里程碑
(1) 传统检测器
图3 Viola-Jones检测器原理图
HOG检测器:2005年,Dalal和Triggs提出了方向梯度直方图(HOG)特征描述算子。HOG可以被认为是当时尺度不变特征变换和形状上下文的一个重要改进。为了平衡特征不变性和非线性,HOG特征描述算子被设计为在均匀间隔的密集网格上计算,并使用重叠的局部对比度归一化。虽然HOG可以用于检测各种类别的物体,但它主要是为了行人检测而提出的。为了检测不同大小的物体,HOG检测器会多次重新缩放输入图像,同时保持检测窗口的大小不变。多年来,HOG检测器一直是许多目标检测器和各种计算机视觉应用的重要基础。
图4 HOG检测器原理
Deformable Part-Based Model(DPM):DPM作为VOC-07、-08和-09检测挑战的冠军,是传统目标检测方法的缩影。DPM最初由Felzenszwalb等人在2008年提出,作为HOG检测器的扩展。它遵循“分而治之”的检测理念,训练可以简单地视为 学习一种适当的对象分解方式,推理则可以看作是对不同物体部件的检测集成。例如,检测“汽车”可以分解为检测其窗户、车身和车轮。
图5 DPM检测器原理
随着手工设计特征的性能趋于饱和,目标检测研究在2010年后进入了停滞期。2012年,卷积神经网络(CNN)的复兴为目标检测带来了新希望。深度卷积网络能够学习到图像的鲁棒且高级的特征表示,因此引发了一个自然的问题:我们能否将其引入目标检测?Girshick等人在2014年率先打破僵局,提出了基于区域的卷积神经网络(RCNN)。自此,目标检测开始以前所未有的速度演变。在深度学习时代,有两类检测器:“两阶段检测器”和“单阶段检测器”,前者将检测定为“由粗到细”的过程,后者则“一步到位”。
RCNN:RCNN的思路很简单。首先通过选择性搜索提取一组物体候选框,然后将每个候选框重新缩放为固定大小的图像,并输入预训练的CNN模型(如AlexNet)以提取特征。最后,使用线性SVM分类器预测每个区域内是否存在物体并识别物体类别。尽管RCNN取得了很大进展,但其缺点也很明显:对大量重叠候选框的冗余特征计算导致检测速度极慢。随后在同年,SPPNet提出并解决了这一问题。
图6 R-CNN原理图
图7 SPPNet原理图
SPPNet:2014年,He等人提出了空间金字塔池化网络(SPPNet)。之前的CNN模型要求固定大小的输入,例如,AlexNet需要224×224的图像。SPPNet的主要贡献是引入了空间金字塔池化层,使CNN能够生成固定长度的表示,无论图像/区域的大小如何,而不需要重新缩放。当使用SPPNet进行目标检测时,只需对整个图像计算一次特征图,然后生成任意区域的固定长度表示以训练检测器,从而避免了重复计算卷积特征。SPPNet在不牺牲检测精度的情况下,比RCNN快了20多倍。然而,SPPNet仍然存在一些缺点:首先,训练仍然是多阶段的;其次,SPPNet只对其全连接层进行微调,而忽略了之前的所有层。次年,Fast RCNN提出并解决了这些问题。
Fast RCNN:2015年,Girshick提出了Fast RCNN检测器,这是对RCNN和SPPNet的进一步改进。Fast RCNN使我们能够在相同的网络配置下同时训练检测器和边界框回归器。在VOC07数据集上,Fast RCNN将平均精度从RCNN的58.5%提高到70.0%,而检测速度比RCNN快了200多倍。尽管Fast RCNN成功地整合了RCNN和SPPNet的优点,但其检测速度仍然受到候选检测的限制。随后,自然提出了一个问题:“我们能否用CNN模型生成物体候选框?”Faster RCNN回答了这个问题。
Faster RCNN:2015年,Ren等人提出了Faster RCNN检测器,紧随Fast RCNN之后。Faster RCNN是第一个接近实时的深度学习检测器。Faster RCNN的主要贡献是引入了区域建议网络(RPN),几乎不需额外成本便能生成区域建议。从RCNN到Faster RCNN,大多数目标检测系统的独立模块,如候选检测、特征提取和边界框回归,逐渐整合到一个统一的端到端学习框架中。尽管Faster RCNN突破了Fast RCNN的速度瓶颈,但在随后的检测阶段仍然存在计算冗余。
特征金字塔网络(FPN):2017年,Lin等人提出了FPN。在FPN之前,大多数基于深度学习的检测器仅在网络顶层的特征图上运行检测。虽然CNN中更深层的特征有利于类别识别,但不利于物体定位。为此,FPN开发了一种带有横向连接的自上而下的架构,用于在所有尺度上构建高层次语义特征。由于CNN在其前向传播过程中自然形成了特征金字塔,FPN在检测各种尺度的物体方面显示出了很大的优势。在一个基本的Faster RCNN系统中使用FPN,在COCO数据集上实现了最先进的单模型检测结果。
(3) 基于CNN的单步检测器
SSD:2015年,Liu等人提出了SSD。SSD的主要贡献是引入了多参考和多分辨率检测技术,这显著提高了单阶段检测器的检测准确性,尤其是小物体的检测准确性。SSD在检测速度和准确性方面都具有优势(COCO数据集平均精度为46.5%,快速版本以59帧每秒的速度运行)。SSD与之前的检测器的主要区别在于,SSD在网络的不同层上检测不同尺度的物体,而之前的检测器仅在其顶层进行检测。
RetinaNet:尽管单阶段检测器速度快且结构简单,但多年来其准确性一直落后于两阶段检测器。2017年,Lin等人探讨了这一背后的原因,并提出了RetinaNet。他们发现,训练密集检测器时遇到的极端前景-背景类别不平衡是主要原因。为此,RetinaNet引入了一种新的损失函数“焦点损失”,通过重新塑造标准的交叉熵损失,使检测器在训练期间更加关注困难、分类错误的样本。焦点损失使单阶段检测器在保持高检测速度的同时,实现了与两阶段检测器相当的准确性。
图11 CornerNet原理图
图12 CenterNet原理
DETR:近年来,Transformer对整个深度学习领域产生了深远影响,尤其是计算机视觉领域。Transformer抛弃了传统的卷积运算,转而采用仅基于注意力的计算,以克服CNN的限制,并获得全局尺度的感受野。2020年,Carion等人提出了DETR,将目标检测视为一个集合预测问题,并提出了一个基于Transformer的端到端检测网络。从此,目标检测进入了一个新的时代,不再需要使用锚框或锚点。
(4) 目标检测数据集
构建更大且偏差更小的数据集对于开发先进的检测算法至关重要。过去十年中发布了许多知名的检测数据集,包括PASCAL VOC挑战赛的数据集(如VOC2007、VOC2012)、ImageNet大规模视觉识别挑战赛的数据集(如ILSVRC2014)、MS-COCO检测挑战赛的数据集、开放图像数据集、Objects365等。下图展示了一些这些数据集的图像示例。
图14 部分数据集的示例图像和注释
PASCAL VOC:PASCAL视觉对象类(VOC)挑战赛(2005年至2012年)是早期计算机视觉社区中最重要的比赛之一。PASCAL VOC的两个版本主要用于目标检测:VOC07和VOC12,这两个数据集标注了生活中常见的20类物体,如“人”、“猫”、“自行车”和“沙发”。
ILSVRC:ImageNet大规模视觉识别挑战赛推动了通用目标检测的进展。ILSVRC每年从2010年到2017年举办一次。它包含一个使用ImageNet图像的检测挑战。检测数据集包含200类视觉物体。其图像/物体实例的数量比VOC大两个数量级。
MS-COCO:MS-COCO是今天最具挑战性的目标检测数据集之一。与VOC和ILSVRC相比,MS-COCO的最大进步在于,除了边界框注释,每个物体还进一步使用实例分割进行标注,以帮助精确定位。此外,MS-COCO包含更多的小物体(其面积小于图像的1%)和更多密集分布的物体。正如ImageNet在其时代一样,MS-COCO已成为目标检测社区的事实标准。
如何评估检测器的准确性?在不同的时间,这个问题可能有不同的答案。在早期的检测研究中,没有公认的检测准确性评估指标。
近年来,检测最常用的评估指标是“平均精度(AP)”,它最早在VOC2007中引入。AP定义为不同召回率下检测精度的平均值,通常以类别为单位进行评估。平均精度(mAP)通常作为性能的最终指标。
为了衡量物体定位的准确性,使用预测框与真实框之间的交并比(IoU)来验证其是否大于预定义的阈值,例如0.5。如果是,则物体被视为“检测到”;否则,视为“漏检”。0.5-IoU mAP已成为目标检测的事实标准。
2014年以后,由于MS-COCO数据集的引入,研究人员开始更加关注物体定位的准确性。MS-COCO AP在多个IoU阈值(0.5到0.95之间)下取平均值,鼓励更精确的物体定位。
3、目标检测的加速:
特征图共享计算:在检测器的不同计算阶段,特征提取通常占主导地位。减少特征计算冗余的最常用方法是只对整个图像计算一次特征图,从而实现几十倍甚至上百倍的加速。
级联检测:级联检测是一种常用的技术,它采用粗到细的检测理念:通过简单的计算过滤掉大多数简单的背景窗口,然后对那些更困难的窗口进行复杂处理。近年来,级联检测特别应用于那些“大场景中的小物体”检测任务,如人脸检测和行人检测。
网络剪枝和量化:网络剪枝和网络量化是加速CNN模型的两种常用方法。前者是指修剪网络结构或权重,后者是指减少其编码长度。近年来的网络剪枝方法通常采取迭代训练和修剪过程,即在每个训练阶段后只移除一小部分不重要的权重,并重复这些操作。最近的网络量化工作主要集中在网络二值化,旨在通过将激活或权重量化为二进制变量来压缩网络,从而将浮点运算转换为逻辑运算。
轻量化网络设计:加速基于CNN的检测器的最后一组方法是直接设计轻量化网络。除了一些通用设计原则,如“减少通道数、增加层数”,近年来还提出了一些其他方法。
1. 卷积因子化:卷积因子化是构建轻量化CNN模型的最直接方法。卷积因子化有两种方法:第一种是将大卷积滤波器因子化为一组小滤波器。第二种是将卷积在通道维度上因子化。
2. 组卷积:组卷积旨在通过将特征通道分成不同的组,然后在每组上独立卷积,以减少卷积层的参数数量。如果我们将特征均匀分成m组,在不改变其他配置的情况下,计算量将理论上减少到之前的1/m。
3. 深度可分离卷积:深度可分离卷积可以视为组卷积的一种特殊情况,当组数等于通道数时。通常,使用一组1×1滤波器进行维度变换,以便最终输出具有所需的通道数。通过使用深度可分离卷积,计算量可以从O(dk2c)减少到O(ck2)+O(dc)。
4. 瓶颈设计:神经网络中的瓶颈层包含的节点比前几层少。近年来,瓶颈设计广泛用于设计轻量化网络。在这些方法中,检测器的输入层可以被压缩,从一开始就减少计算量。
使用NAS进行检测:基于深度学习的检测器变得越来越复杂,严重依赖于手工设计的网络架构和训练参数。神经架构搜索(NAS)主要关注定义候选网络的适当空间,提高快速准确搜索的策略,并以低成本验证搜索结果。在设计检测模型时,NAS可以减少人为干预的需求。
数值加速:数值加速旨在从实现底层加速目标检测器。
1. 使用积分图像加速:积分图像是图像处理中的一种重要方法,有助于快速计算图像子区域的求和。积分图像的本质是信号处理中卷积的积分微分可分离性。积分图像还可以用于加速更一般的特征,如颜色直方图和梯度直方图。
2. 频域加速:卷积是目标检测中的一种重要数值运算。由于线性检测器的检测可以视为特征图与检测器权重之间的窗口内积,这可以通过卷积实现,傅里叶变换是加速卷积的一种非常实用的方法,其理论基础是信号处理中的卷积定理。
矢量量化:矢量量化是一种经典的信号处理量化方法,旨在通过一小组原型向量来近似大量数据的分布。它可以用于数据压缩和加速目标检测中的内积运算。
图 17 "积分HOG图"计算方法
在过去二十年中,新技术的不断涌现对目标检测产生了重大影响,而其基本原理和内在逻辑保持不变。在上述部分中,我们介绍了过去二十年技术的演变,帮助读者理解目标检测;在本部分中,我们将更多地关注最近几年的最先进算法,帮助读者了解目标检测。
超越滑动窗口检测:由于图像中的物体可以通过其左上角和右下角的地面真实框唯一确定,因此检测任务可以等效地框定为成对关键点的定位问题。最近的一个实现是预测角点的热图。其他一些方法遵循这一思路,利用更多的关键点(角点和中心点、极点和中心点、代表点)以获得更好的性能。另一种范式将物体视为点,直接预测物体的属性(如高度和宽度)而无需分组。
图18 多尺度目标检测的不同训练策略
更好的骨干网络:检测器的准确性/速度在很大程度上取决于特征提取网络(骨干网络)。为了改善检测器的性能,最近的检测器开始使用更强大的特征提取网络。
定位的改进:为了提高定位准确性,最近检测器中有两组方法:边界框优化和用于精确定位的新损失函数。
学习与分割损失:目标检测和语义分割是计算机视觉中的两个基本任务。最近的研究表明,通过学习语义分割损失可以提高目标检测性能。
对抗训练:生成对抗网络(GAN)自2014年由Goodfellow等人引入以来,在许多任务中受到了极大关注。最近,对抗训练也被应用于目标检测,特别是改善小物体和遮挡物体的检测。
弱监督目标检测:训练基于深度学习的目标检测器通常需要大量的手动标注数据。弱监督目标检测旨在通过仅使用图像级别标注而不是边界框进行训练,来减少对数据标注的依赖。
域适应检测:大多数目标检测器的训练过程可以本质上视为在独立同分布(i.i.d.)数据下的似然估计过程。对非i.i.d.数据的目标检测,特别是一些现实世界的应用仍然是一个挑战。域适应提供了缩小域间差距的可能性。
4、结论和未来发展方向:
在过去的20年中,目标检测取得了显著的成就。本文广泛回顾了其20年历史中的一些里程碑检测器、关键技术、加速方法、数据集和指标。以下是一些有前景的未来研究方向,这些方向可能有助于读者在上述方案之外获得更多见解。
1. 轻量化目标检测:轻量化目标检测旨在加快检测推理速度,以便在低功耗边缘设备上运行。一些重要的应用包括移动增强现实、自动驾驶、智慧城市、智能摄像头、人脸验证等。尽管近年来取得了很大进展,但机器与人眼在检测速度上的差距仍然很大,特别是在检测一些小物体或使用多源信息时。
2. 端到端目标检测:尽管已经开发了一些方法,可以使用一对一标签分配训练以完全端到端方式(从图像到框)检测物体,但大多数方法仍然使用一对多标签分配方法,其中非极大值抑制操作是单独设计的。未来关于此主题的研究可能会集中在设计既能保持高检测精度又能保持高效率的端到端管道。
3. 小目标检测:在大场景中检测小物体一直是一个挑战。这一研究方向的一些潜在应用包括在人群中计数人数或在露天中计数动物数量,以及从卫星图像中检测军事目标。一些进一步的方向可能包括集成视觉注意机制和设计高分辨率轻量化网络。
4. 3D目标检测:尽管最近在2D目标检测方面取得了进展,但如自动驾驶等应用依赖于获取物体在三维世界中的位置和姿态。未来的目标检测将更加关注3D世界和多源、多视图数据的利用(例如,来自多个传感器的RGB图像和3D激光雷达点)。
5. 视频中的检测:在高清视频中进行实时目标检测/跟踪对于视频监控和自动驾驶具有重要意义。传统的目标检测器通常设计用于图像检测,简单地忽略了视频帧之间的关联。在计算限制下,通过探索空间和时间关联来改进检测是一个重要的研究方向。
6. 跨模态检测:使用多源/多模态数据(例如,RGB-D图像、激光雷达、流、声音、文本、视频等)进行目标检测,对于构建更准确的检测系统(类似于人类的感知能力)具有重要意义。一些开放的问题包括:如何将训练良好的检测器迁移到不同模态的数据,如何进行信息融合以改进检测等。
7. 开放世界检测:域外泛化、零样本检测和增量检测是目标检测中新兴的主题。大多数方法通过减少灾难性遗忘或利用补充信息来实现。人类具有发现环境中未知类别物体的本能。当提供相应的知识(标签)时,人类会从中学习新知识,并保持这些模式。然而,对于当前的目标检测算法来说,掌握未知类别物体的检测能力是困难的。开放世界检测旨在当监督信号未明确给出或部分给出时,发现未知类别的物体,这在机器人和自动驾驶等应用中具有巨大潜力。
站在技术演进的高速公路上,我们相信本文将帮助读者建立目标检测的完整路线图,并找到这个快速发展研究领域的未来方向。