前言
如果你要学目标检测,那了解目标检测发展历程和各个技术将有助于你更好地学习。所以今天我们看一篇来自IEEE的综述。
论文地址:https://levir.buaa.edu.cn/publications/od_survey.pdf
目录
二、OBJECT DETECTION IN 20 YEARS—物体检测技术二十年发展概览
三、SPEED-UP OF DETECTION—检测速度的提升
四、RECENT ADVANCES IN OBJECT DETECTION—近年来物体检测的最新进展
五、CONCLUSION AND FUTURE DIRECTION—结论与未来方向
脑图
Abstract —摘要
作为计算机视觉领域中最基础且最具挑战性的问题之一,物体检测近年来受到了广泛关注。在过去的二十年里,我们见证了物体检测技术的飞速发展及其对整个计算机视觉领域产生的深远影响。如果将当今的物体检测技术视为由深度学习驱动的一场革命,那么回溯到20世纪90年代,我们可以看到早期计算机视觉中创新思维和长远规划的设计。本文广泛回顾了这一快速发展的研究领域,从技术演进的角度出发,时间跨度超过四分之一个世纪(从20世纪90年代到2022年)。文中涵盖了多个主题,包括历史上的里程碑式检测器、检测数据集、评估指标、检测系统的基本构建模块、加速技术以及最新的先进检测方法。
一、INTRODUCTION—简介
物体检测是计算机视觉中的一个重要任务,涉及在数字图像中识别特定类别(如人类、动物或车辆)的视觉对象实例。物体检测的目标是开发计算模型和技术,为计算机视觉应用提供最基本的知识需求之一:哪些物体位于何处?衡量物体检测性能的两个最关键指标是准确性(包括分类准确性和定位准确性)和速度。
物体检测作为许多其他计算机视觉任务的基础,比如实例分割[1-4]、图像描述[5-7]、对象追踪[8]等。近年来,深度学习技术[9]的迅速发展极大地推动了物体检测的进步,带来了显著的突破,并使其成为了一个前所未有的研究热点,受到极大关注。物体检测现已广泛应用于众多实际场景中,例如自动驾驶、机器人视觉、视频监控等。图1展示了过去二十年与“物体检测”相关的出版物数量的快速增长。

不同的检测任务因其目标和约束条件完全不同,其难度也各不相同。除了需要面对计算机视觉其他任务中常见的挑战,如不同视角、光照条件下的物体以及类别内部的变化外,物体检测特有的挑战还包括但不限于以下方面:物体的旋转与尺度变化(例如,小尺寸物体的检测)、精确的物体定位、密集及遮挡物体的检测、检测速度的提升等。在第四节中,我们将对这些话题进行更详细的分析。
本综述旨在从多角度为初学者提供对物体检测技术全面的理解,重点放在其发展历程上。其核心特点可归纳为三点:一是基于技术演进的综合回顾,二是深入探讨关键技术及最新研究成果,三是全面分析检测速度提升技术。主要线索围绕着过去、现在与未来展开,并补充介绍了物体检测中其他必要的组成部分,如数据集、评估指标以及加速技术。立足于技术发展的快车道上,本综述旨在展示相关技术的演变过程,使读者能够把握核心概念并探索潜在的研究方向,而无需深究具体的技术细节。
本文其余部分组织结构如下:第二章回顾了物体检测技术过去二十年的发展历程;第三章回顾了物体检测中的速度提升技术;第四章综述了近三年的前沿检测方法;第五章总结了本文,并对未来的进一步研究方向进行了深入分析。
二、OBJECT DETECTION IN 20 YEARS—物体检测技术二十年发展概览
在本节中,我们将从多个视角回顾物体检测的历史,涵盖里程碑式的检测器、数据集、评估指标以及关键技术的演变过程。
A. 物体检测的发展脉络
在过去二十年里,普遍认为物体检测技术的进步大致经历了两个历史时期:“传统物体检测时期(2014年以前)”和“基于深度学习的检测时期(2014年以后)”,如图2所示。接下来,我们将根据这些时期的标志性检测器,以其出现时间和性能为主要线索进行总结,以突出背后推动技术的发展,详情请见图3。


1)里程碑:传统检测器
如果将当前的物体检测技术视为深度学习驱动的革命,那么回溯到20世纪90年代,我们会发现早期计算机视觉中蕴含的巧妙设计和长远眼光。当时的大多数物体检测算法都是基于手工特征构建的。由于当时缺乏有效的图像表示方法,研究人员不得不设计复杂的特征表示方法及多种加速技术来应对。
Viola-Jones检测器:2001年,P. Viola和M. Jones首次实现了无限制条件(例如,无需肤色分割)下的人脸实时检测[10, 11]。该检测器在700MHz奔腾III CPU上运行,相比当时其他具有相似检测精度的算法,其检测速度提高了数十甚至数百倍。Viola-Jones(VJ)检测器遵循了一种最直接的检测方式,即滑动窗口法:遍历图像中所有可能的位置和尺度,检查是否任一窗口包含人脸。虽然这个过程看似简单,但背后的计算量远超当时计算机的能力。VJ检测器通过集成三项关键技术:“积分图像”、“特征选择”以及“级联检测”(将在第三部分介绍)大幅提升了检测速度。
HOG检测器:2005年,N. Dalal和B. Triggs提出了方向梯度直方图(Histogram of Oriented Gradients, HOG)特征描述符[12]。HOG可以看作是对当时尺度不变特征变换[SIFT][29, 30]和形状上下文[31]的重要改进。为了平衡特征的不变性(包括平移、尺度、光照等)和非线性,HOG描述符设计为在均匀间隔的密集网格上的单元格上计算,并采用重叠局部对比度归一化(在“块”上)。尽管HOG可用于检测多种物体类别,但它最初主要是为了解决行人检测问题。为了检测不同大小的物体,HOG检测器多次调整输入图像的大小,同时保持检测窗口尺寸不变。多年以来,HOG检测器一直是许多物体检测器[13, 14, 32]和计算机视觉应用的重要基础。
可变形部件模型(DPM):DPM作为VOC-07、-08和-09年度检测挑战赛的获胜者,是传统物体检测方法的缩影。DPM最初由P. Felzenszwalb于2008年提出[13],作为HOG检测器的扩展。它遵循“分而治之”的检测理念,训练过程可以简单理解为学习一种适当的对象分解方法,推理过程则视为在不同物体部件上的检测结果集成。例如,检测“汽车”的问题可以分解为检测车窗、车身和轮子。这部分工作,即所谓的“星型模型”,由P. Felzenszwalb等人[13]提出。后来,R. Girshick进一步将星型模型扩展到“混合模型”,以处理现实世界中变化更大的物体,并做出了一系列其他改进[14, 15, 33, 34]。
尽管今天的物体检测器在检测精度上已经远远超过了DPM,但很多检测器仍然深受其宝贵见解的影响,比如混合模型、困难负样本挖掘、边界框回归、环境预处理等。2010年,P. Felzenszwalb和R. Girshick因在PASCAL VOC中的杰出贡献被授予“终身成就奖”。
2)里程碑:基于CNN的两阶段检测器
随着手工特征性能的饱和,物体检测研究在2010年后进入了一个平台期。2012年,卷积神经网络(Convolutional Neural Networks, CNN)的复兴为这一领域带来了转机[35]。鉴于深度卷积网络能够学习图像的鲁棒性和高层次特征表示,一个自然的问题出现了:我们能否将它应用于物体检测中?
R. Girshick等人于2014年率先打破了僵局,提出了带有CNN特征的区域(Regions with CNN features, R-CNN)[16, 36],自此物体检测开始以前所未有的速度发展。深度学习时代下的物体检测器主要分为两大类:“两阶段检测器”和“一阶段检测器”,前者将检测过程构架为“粗到精”,后者则倾向于“一步到位”。
R-CNN: R-CNN的基本思想直观明了:首先利用选择性搜索[45]提取一组物体候选框(提案)。接着,每个候选框被调整到固定尺寸并输入到预训练于ImageNet(如AlexNet[35])的CNN中提取特征。最后,使用线性支持向量机(SVM)分类器预测每个区域内的物体存在与否及识别物体类别。R-CNN在VOC07数据集上取得了显著性能提升,平均精度(mAP)从DPM-v5的33.7%跃升至58.5%。尽管R-CNN取得了重大进展,其缺点也很明显:对大量重叠提案(一张图片超过2000个框)进行冗余特征计算导致检测速度极慢(GPU上每张图片需要14秒)。同年晚些时候,SPPNet被提出,解决了这一问题。
SPPNet: 2014年,K. He等人提出了空间金字塔池化网络(Spatial Pyramid Pooling Networks, SPPNet)[17]。以往的CNN模型要求固定的输入尺寸,如AlexNet需要224x224的图像。SPPNet的主要贡献在于引入了空间金字塔池化(SPP)层,使得CNN能够在不改变图像或感兴趣区域尺寸的情况下生成固定长度的表示。在物体检测中,使用SPPNet只需对整张图片计算一次特征图,随后即可为任意区域生成固定长度的表示用于训练检测器,避免了重复计算卷积特征。SPPNet的速度比R-CNN快20多倍,且检测精度并未牺牲(VOC07 mAP=59.2%)。尽管SPPNet有效提升了检测速度,但其训练仍然是多阶段的,且仅微调全连接层,忽略了之前的所有层。次年,Fast R-CNN应运而生,解决了这些问题。
Fast R-CNN: 2015年,R. Girshick提出了Fast R-CNN检测器[18],这是对R-CNN和SPPNet的进一步改进。Fast R-CNN允许在相同的网络配置下同时训练检测器和边界框回归器。在VOC07数据集中,Fast R-CNN将mAP从R-CNN的58.5%提升到了70.0%,检测速度更是R-CNN的200多倍。虽然Fast R-CNN成功整合了R-CNN和SPPNet的优点,但其检测速度仍受制于提案生成环节。这引出了一个问题:“我们能否用CNN模型生成物体提案?”不久后,Faster R-CNN给出了答案。
Faster R-CNN: 2015年,S. Ren等人在Fast R-CNN之后迅速提出了Faster R-CNN检测器[19, 47]。Faster R-CNN是首个接近实时的深度学习检测器(COCO mAP@.5=42.7%,VOC07 mAP=73.2%,使用ZF-Net时速率为17fps[48])。Faster R-CNN的主要创新在于引入了区域提案网络(Region Proposal Network, RPN),几乎免费地提供了区域提案。从R-CNN到Faster R-CNN,物体检测系统的各个组成部分,如提案检测、特征提取、边界框回归等,逐渐被整合进一个统一的端到端学习框架中。尽管Faster R-CNN突破了Fast R-CNN的速度瓶颈,但在后续的检测阶段仍有计算冗余。此后,一系列改进方案被提出,包括RFCN[49]和Light head RCNN[50]。(更多细节见第三部分。)
特征金字塔网络(FPN):2017年,T.-Y. Lin等人提出了FPN[24]。在FPN之前,多数基于深度学习的检测器仅在神经网络顶层的特征图上执行检测。尽管CNN深层的特征有利于类别识别,却不利于物体定位。为此,FPN设计了一种自顶向下的架构并辅以横向连接,以便在所有尺度上构建高层次语义。由于CNN通过前向传播自然形成特征金字塔,FPN在检测各种尺度的物体上取得了显著进步。将FPN应用于基础的Faster R-CNN系统,在没有额外复杂操作的情况下,在COCO数据集上达到了当时单模型检测的最先进成果(COCO mAP@.5=59.1%)。FPN现已成为许多最新检测器的基本构建模块。
3)里程碑:基于CNN的一阶段检测器
大部分两阶段检测器遵循从粗到细的处理范式,粗略阶段致力于提高召回率,精细阶段则在粗略检测的基础上细化定位,更注重区分能力。它们能够轻松达到高精度,但因速度慢和复杂度过高,在工程实践中较少采用。相反,一阶段检测器能够在一步推理中检测所有物体,因其实时性和易于部署的特点受到移动设备的青睐,但在检测密集和小物体时性能明显下降。
You Only Look Once(YOLO):YOLO由R. Joseph等人于2015年提出,是深度学习时代首个一阶段检测器[20]。YOLO极其快速:其快速版本在VOC07数据集上以155fps的速度达到mAP=52.7%,增强版则以45fps的速度实现mAP=63.4%。YOLO与两阶段检测器完全不同,它将单一神经网络应用于整个图像,将图像划分为区域并同时预测每个区域的边界框和概率。尽管检测速度大幅提升,YOLO在定位准确性上相比两阶段检测器有所下降,特别是在一些小物体上。YOLO的后续版本[21, 22, 51]以及随后提出的SSD[23]更加关注这一问题。最近,来自YOLOv4团队的后续作品YOLOv7[52]被提出,通过引入动态标签分配和模型结构重参数化等优化结构,在速度和精度上(从5 FPS到160 FPS)超越了多数现有物体检测器。
单发多框检测器(SSD):SSD由W. Liu等人于2015年提出[23]。SSD的主要贡献在于引入了多参考和多分辨率检测技术(将在第二部分C1节介绍),显著提高了单阶段检测器的检测精度,特别是对于小物体。SSD在检测速度和精度上均有优势(COCO mAP@.5=46.5%,快速版本运行速度为59fps)。SSD与之前的检测器主要区别在于,它在神经网络的不同层级检测不同尺度的物体,而之前的检测器仅在顶层执行检测。
RetinaNet:尽管速度快且简单,一阶段检测器多年来在精度上一直落后于两阶段检测器。T.-Y. Lin等人在2017年探讨了原因并提出了RetinaNet[25]。他们发现,在密集检测器训练过程中遇到的极端前景-背景类别不平衡是核心原因。因此,RetinaNet引入了一种名为“焦点损失”的新损失函数,通过重塑标准交叉熵损失,使检测器在训练期间更多地关注难分类和错误分类的样本。焦点损失使一阶段检测器能在保持极高检测速度的同时,达到与两阶段检测器相当的精度(COCO mAP@.5=59.1%)。
CornerNet:以往方法主要使用锚框提供分类和回归参考。物体经常在数量、位置、尺度、比例等方面表现出变化。为了实现高性能,不得不采取设置大量参考框以更好地匹配真实标注的路径。然而,这会导致网络面临更严重的类别不平衡、众多手工设计的超参数和较长的收敛时间。为解决这些问题,H. Law等人[26]抛弃了先前的检测范式,将任务视作关键点(边界框的角点)预测问题。获得关键点后,利用额外的嵌入信息解耦并重组角点以形成边界框。CornerNet在当时超越了多数一阶段检测器(COCO mAP@.5=57.8%)。
**CenterNet:**X. Zhou等人于2019年提出了CenterNet[40]。它也遵循基于关键点的检测范式,但消除了基于组的关键点分配(如在CornerNet[26]、ExtremeNet[53]等)和NMS等成本高昂的后期处理步骤,形成了一个完全端到端的检测网络。CenterNet将物体视为一个点(物体中心),并基于参考中心点回归所有属性(如大小、方向、位置、姿态等)。该模型简洁优雅,能将3D物体检测、人体姿态估计、光流学习、深度估计等任务整合到单一框架中。尽管采用了如此简洁的检测概念,CenterNet也能达到相当的检测效果(COCO mAP@.5=61.1%)。
DETR:近年来,Transformer深刻影响了整个深度学习领域,尤其是在计算机视觉领域。Transformer摒弃了传统的卷积运算,仅依赖注意力机制计算,以克服CNN的局限性并获得全局范围的感受野。2020年,N. Carion等人提出了DETR[28],他们将物体检测视为集合预测问题,并提出了基于Transformer的端到端检测网络。至此,物体检测进入了一个新时代,无需使用锚框或锚点即可进行检测。随后,X. Zhu等人提出了Deformable DETR[43],以解决DETR收敛时间长和小物体检测性能有限的问题。它在MSCOCO数据集上达到了最先进的性能(COCO mAP@.5=71.9%)。
B. 物体检测数据集与评估指标
1)数据集:构建更大且偏见更少的数据集对于开发先进的检测算法至关重要。过去十年间,已发布了多个知名检测数据集,包括PASCAL VOC挑战赛[54, 55]的数据集(如VOC2007, VOC2012)、ImageNet大规模视觉识别挑战赛(如ILSVRC2014)[56]、MS-COCO检测挑战[57]、Open Images数据集[58, 59]、Objects365[60]等。这些数据集的统计信息在表1中给出,图4展示了一些数据集中的图像示例。图3则展示了从2008年至2021年间,在VOC07、VOC12和MS-COCO数据集上检测精度的提升情况。


Pascal VOC: PASCAL视觉对象类别(VOC)挑战赛(2005年至2012年)[54, 55]是早期计算机视觉领域最重要的竞赛之一。在物体检测中,主要使用的Pascal-VOC版本有VOC07和VOC12,前者包含5千张训练图像及1万2千个标注对象,后者包含1万1千张训练图像及2万7千个标注对象。这两个数据集共标注了20种生活中常见的物体,如“人”、“猫”、“自行车”、“沙发”等。
ILSVRC: ImageNet大规模视觉识别挑战赛(ILSVRC)[56]极大地推动了通用物体检测技术的进步。ILSVRC从2010年至2017年每年举办,其中包含使用ImageNet图像的检测挑战。ILSVRC检测数据集包含200类视觉对象,其图像/对象实例的数量比VOC数据集高出两个数量级。
MS-COCO: MS-COCO[57]是目前最具挑战性的物体检测数据集之一。自2015年起,基于MS-COCO数据集的年度竞赛开始举行。它拥有的物体类别数量虽少于ILSVRC,但包含更多的对象实例。例如,MS-COCO-17包含16万4千张图像和89万7千个来自80个类别的标注对象。与VOC和ILSVRC相比,MS-COCO最大的进步在于除了边界框注释之外,每个对象还进一步进行了实例分割标注,以辅助精确定位。此外,MS-COCO包含更多小物体(面积小于图像总面积的1%)和密集分布的物体。就像其时代的ImageNet一样,MS-COCO已成为物体检测社区的实际标准。
Open Images: 2018年,Open Images检测挑战[62]问世,规模空前,紧跟MS-COCO的脚步。Open Images包含两项任务:1)标准物体检测,2)视觉关系检测,即检测特定关系中的配对物体。对于标准检测任务,数据集包含1910万张图像,拥有1544万个标注边界框,覆盖600个物体类别。
2)评估指标:如何评估检测器的准确性?这一问题在不同的时间可能有不同的答案。在早期的检测研究中,没有广泛接受的检测精度评估指标。例如,在行人检测的早期研究中[12],常用“漏检率与每窗口假阳性(FPPW)”作为指标。然而,每窗口的测量方式可能存在缺陷,无法准确预测全图性能[63]。2009年,Caltech行人检测基准被引入[63, 64],从此评估指标从FPPW转变为每图像假阳性(FPPI)。
近年来,物体检测中最常用的评估指标是“平均精度(Average Precision, AP)”,这一指标最初在VOC2007中被引入。AP定义为在不同召回率下检测精度的平均值,通常按类别特定的方式进行评估。所有类别上的平均AP(mean Average Precision, mAP)通常被用作性能的最终度量标准。为了衡量物体定位的准确性,使用预测框与真实标注框之间的交并比(Intersection over Union, IoU)来判断其是否大于一个预设的阈值,比如0.5。如果大于这个阈值,则认为物体被“检测到”,否则视为“漏检”。由此,0.5-IoU mAP成为了物体检测事实上的评估标准。
2014年后,随着MS-COCO数据集的引入,研究人员开始更加重视物体定位的准确性。MS-COCO不再使用固定的IoU阈值,而是将AP在0.5到0.95之间的多个IoU阈值上进行平均,这一做法鼓励了更精确的物体定位,并可能对某些实际应用(例如,想象一个机器人试图抓取扳手的情景)具有重要意义。
C. 物体检测中的技术演进
本节将介绍检测系统中一些重要组成部分及其技术发展。首先,我们将描述模型设计中的多尺度检测与上下文预处理,随后讨论训练过程中的样本选择策略和损失函数设计,最后是推理阶段的非极大值抑制。图表和文本中的时间戳依据相关论文发表时间提供。图中所示的技术演进顺序主要是为了帮助读者理解,实际可能存在时间上的重叠。
1)多尺度检测的技术演进:对具有“不同尺寸”和“不同宽高比”的物体进行多尺度检测是物体检测中的主要技术挑战之一。在过去二十年里,多尺度检测经历了多个历史阶段,如图5所示。

特征金字塔+滑动窗口:在VJ检测器之后,研究人员开始更加关注一种更为直观的检测方式,即构建“特征金字塔+滑动窗口”。自2004年起,基于这一模式构建了一系列里程碑式的检测器,包括HOG检测器、DPM等。它们常在图像上滑动固定大小的检测窗口,对“不同宽高比”的关注较少。为了检测外观更复杂的物体,R. Girshick等人开始在特征金字塔之外寻找更好的解决方案。当时的“混合模型”[15]是一种解决方法,即为不同宽高比的物体训练多个检测器。除此之外,基于示例的检测[32, 70]通过为每个物体实例(示例)训练单独的模型提供了另一种解决方案。
基于物体提案的检测:物体提案是指一组可能包含任何物体的类别不可知的参考框。使用物体提案进行检测有助于避免在图像上进行耗时的滑动窗口搜索。关于这一主题的全面回顾,请参阅以下论文[71, 72]。早期的提案检测方法遵循自下而上的检测理念[73, 74]。2014年后,随着深度CNN在视觉识别中的普及,自上而下、基于学习的方法开始在此问题上展现出更多优势[19, 75, 76]。如今,随着一阶段检测器的兴起,提案检测逐渐淡出人们的视线。
深度回归与无锚点检测:近年来,随着GPU计算能力的提升,多尺度检测变得越来越直接且强力。利用深度回归解决多尺度问题的想法变得简单,即直接基于深度学习特征预测边界框的坐标[20, 66]。2018年后,研究者开始从关键点检测的角度思考物体检测问题。这些方法通常遵循两种思路:一是基于分组的方法,先检测关键点(如角点、中心或代表性点),再进行基于对象的分组[26, 53, 69, 77];二是无分组方法,将对象视为一个/多个点,然后参考这些点回归物体属性(大小、宽高比等)[40, 41]。
多参考/多分辨率检测:多参考检测现已成为最常用的多尺度检测方法[19, 22, 23, 41, 47, 51]。其主要思想是在图像的每个位置定义一组参考(即锚框,包括框和点),然后基于这些参考预测检测框。另一种流行技术是多分辨率检测[23, 24, 44, 67, 68],即在网络的不同层检测不同尺度的物体。多参考和多分辨率检测现已成为最先进物体检测系统中的两个基本构建模块。
2)上下文预处理的技术演进:视觉对象通常嵌入在与周围环境相关的典型上下文中。我们的大脑利用对象和环境之间的关联来促进视觉感知和认知[96]。上下文预处理长期以来被用于改善检测性能。图6展示了物体检测中上下文预处理的演进。

带有局部上下文的检测:局部上下文指的是包围待检测对象区域的视觉信息。长久以来,人们认识到局部上下文有助于提高物体检测性能。2000年代初,Sinha和Torralba[78]发现,包含如面部边界轮廓这样的局部上下文区域能显著提升人脸识别性能。Dalal和Triggs也发现,融入少量背景信息可以提高行人检测的准确性[12]。近期基于深度学习的检测器也可通过简单扩大网络的感受野或对象提议的尺寸来利用局部上下文进行改进[79-84, 97]。
带有全局上下文的检测:全局上下文利用场景配置作为物体检测的附加信息源。对于早期的检测器,集成全局上下文的一种常见方式是整合构成场景元素的统计概要,如Gist[96]。对于近期的检测器,有两种方法整合全局上下文。第一种方法是利用深度卷积、空洞卷积、可变形卷积、池化操作[39, 87, 88]来获得大的感受野(甚至超过输入图像)。但现在,研究者已经探索了基于注意力机制(如非局部、变压器等)的应用潜力,以实现全图感受野,并取得了巨大成功[28, 89]。第二种方法是将全局上下文视为一种序列信息,并通过循环神经网络来学习[86, 98]。
上下文交互:上下文交互指的是视觉元素之间传递的约束和依赖关系。最近的一些研究表明,考虑上下文交互可以改进现代检测器。一些近期的改进可以归为两类:一类是探索单个对象之间的关系[15, 85, 90, 92, 93, 95];另一类是探索对象与场景之间的依赖关系[91, 94]。
3)难负样本挖掘的技术演进:检测器的训练本质上是一个不平衡学习问题。在基于滑动窗口的检测器情况下,背景与物体之间的不平衡比例可能高达1亿:1[71]。在这种情况下,使用所有背景样本对训练是有害的,因为大量的简单负样本会淹没学习过程。难负样本挖掘(HNM)旨在解决这个问题。HNM的技术演进如图7所示。

Bootstrap方法: 在物体检测中,Bootstrap指的是一系列训练技术,这些技术初始只使用背景样本的小部分,然后迭代地加入新的误分类样本。在早期的检测器中,Bootstrap常被用来减少需处理数百万背景样本的计算量[10, 99, 100]。后来,它成为DPM和HOG检测器解决数据不平衡问题的标准技术[12, 13]。
深度学习基检测器中的HNM: 进入深度学习时代,由于计算能力的增强,在2014至2016年间,Bootstrap很快就被物体检测所弃用[16-20]。为了缓解训练过程中的数据不平衡问题,像Faster R-CNN和YOLO这样的检测器简单地平衡了正负样本窗口的权重。然而,研究者后来发现这并不能完全解决不平衡问题[25]。因此,自2016年后,Bootstrap被重新引入物体检测中[23, 38, 101, 102]。另一种改进是设计新的损失函数[25],通过调整标准交叉熵损失函数,使其更关注于那些难以分类的错误样本[25]。
个人理解:误分类样本,也称为难分类样本或者硬负样本,在机器学习特别是对象检测的语境下,指的是那些被错误分类或者难以正确分类的训练样本。具体到对象检测任务中,这些通常是背景样本,它们因为外观与目标对象相似或者存在复杂的环境干扰,容易被模型错误地预测为包含对象的区域。由于对象检测面对的是极端不平衡的数据问题,即背景区域远远多于实际对象区域,模型可能会过多关注于容易区分的背景而忽略了真正需要学习的困难案例。因此,误分类样本通常是指那些被错误地标记为正类(即预测为对象存在)的背景区域,或者是应该被识别为目标对象但实际上被忽视或错误分类的情况。为了改善这种情况,研究者引入了“难负样本挖掘”(Hard Negative Mining, HNM)的技术。HNM旨在从大量的背景样本中挑选出这些具有误导性的样本,确保它们在训练过程中得到足够的重视,从而帮助模型更好地学习区分对象与非对象边界,提高检测的准确性。在深度学习时代,HNM技术经历了重新审视和改进,例如通过调整损失函数的设计(如Focal Loss)来自动加重对这些难分类样本的学习,或者通过重新引入类似Bootstrap的策略来迭代地加入错分样本至训练集中,以此来优化模型训练过程,克服数据不平衡带来的挑战。
4)损失函数的技术演进:损失函数衡量模型与数据匹配的好坏(即预测与真实标签的偏差)。计算损失可以得到模型权重的梯度,进而通过反向传播更新权重以更好地适应数据。分类损失和定位损失共同构成了物体检测问题的监督,如方程1所示。损失函数的一般形式可写为:
其中, t和t*分别是预测边界框和真实边界框的位置,p和p*是它们所属类别的概率。IoU{a,a*} 是参考框/点a与其真实框a*的交并比。η 是一个IoU阈值,例如0.5。如果一个锚框/点没有匹配到任何物体,其定位损失就不会计入最终的损失中。
分类损失: 分类损失用于评估预测类别与实际类别的偏离程度。在之前的工作中,如YOLOv1 [20]和YOLOv2 [51]使用均方误差(MSE/L2损失),并未深入研究。后来,通常采用交叉熵损失(CE损失)[21, 23, 47]。L2损失是欧几里得空间中的度量,而CE损失能够衡量分布差异(被称为一种似然形式)。分类预测是一个概率,因此相对于L2损失,CE损失更优,因为它具有更大的分类错误成本和更低的梯度消失效应。为了提高分类效率,提出了标签平滑(Label Smooth)来增强模型的泛化能力并解决噪声标签上的过度自信问题[103, 104],而焦损(Focal loss)则是为了解决类别不平衡和分类难度差异问题而设计的[25]。
定位损失: 定位损失用于优化位置和尺寸的偏差。L2损失在早期研究中很普遍[16, 20, 51],但它很容易受到异常值的影响,并且容易导致梯度爆炸。为了结合L1损失和L2损失的优点,研究者提出了Smooth L1损失[18],其公式如下所示,
其中,x 表示目标值与预测值之间的差异。在计算误差时,上述损失将表示边界框的四个数值(x,y,w,h)分别代表边界框的中心坐标偏移、宽度和高度)当作独立变量来处理,但实际上它们之间存在关联性。此外,在评估时,交并比(IoU)被用来判断预测框是否与实际的地面真实框对应。具有相同Smooth L1损失值的预测框可能具有完全不同的IoU值,因此引入了IoU损失[105],定义如下:
随之而来的是,几种算法对IoU损失进行了改进。GIoU(广义IoU)[106]解决了IoU损失在处理非重叠边界框(即IoU=0的情况)时无法优化的问题。根据Distance-IoU[107]的见解,一个成功的检测回归损失应满足三个几何度量:重叠区域、中心点距离和长宽比。因此,基于IoU损失和GIoU损失,DIoU(距离IoU)定义为预测框和真实框中心点之间的距离,而CIoU(完整IoU)[107]在DIoU的基础上考虑了长宽比的差异。
5)非最大抑制技术的演进:由于相邻窗口通常具有相似的检测得分,非最大抑制作为一种后处理步骤被用来移除重复的边界框,从而获得最终的检测结果。在物体检测的早期,NMS并不总是被集成[121]。这是因为当时对物体检测系统的期望输出尚不完全明确。图8展示了过去20年间NMS的演进过程。

贪婪选择,边界框聚合,学习型NMS,无NMS检测。
图中所涉及的检测器包括: Face Det.[108],HOG Det.[12],DPM[13, 15],RCNN[16],SPPNet[17],Fast RCNN[18],Faster RCNN[19],YOLO[20],SSD[23],FPN[24],RetinaNet[25],FCOS[41],StrucDet[85],MAP-Det[109],LearnNMS[110],RelationNet[93],Learn2Rank[111],SoftNMS[112],FitnessNMS[113],SofterNMS[114],AdaptiveNMS[115],DIoUNMS[107],Overfeat[65],APC-NMS[116],MAPC[117],WBF[118],ClusterNMS[119],CenterNet[40],DETR[28],POTO[120]。
贪婪选择: 贪婪选择是一种古老但最流行的执行NMS的方式。其背后的思路简单直观:对于一组重叠的检测结果,选择具有最大检测得分的边界框,同时根据预定义的重叠阈值移除其邻近的边界框。尽管贪婪选择已成为NMS的实际标准方法,但仍有一些改进空间。首先,最高得分的框不一定是最合适的。其次,它可能会抑制附近的物体。最后,它不能抑制假阳性[116]。许多工作已提出解决上述问题的方法[107, 112, 114, 115]。
边界框聚合: 边界框聚合是NMS的另一组技术[10, 65, 116, 117],其思想是将多个重叠的边界框合并或聚类为一个最终的检测结果。这类方法的优点是充分考虑了物体之间的关系及其空间布局[118, 119]。一些著名的检测器使用这种方法,如VJ检测器[10]和ILSVRC-13定位任务的获胜者Overfeat[65]。
基于学习的NMS: 最近引起广泛关注的一系列NMS改进是基于学习的NMS[85, 93, 109-111, 122]。其主要思想是将NMS视为一个过滤器,重新对所有原始检测进行打分,并以端到端的方式训练NMS作为网络的一部分,或者训练一个网络模仿NMS的行为。这些方法在改进遮挡和密集物体检测方面显示出了优于传统手工设计NMS方法的前景。
无NMS检测器: 为了摆脱NMS并实现一个全端到端的物体检测训练网络,研究者开发了一系列方法完成一对一标签分配(即一个物体仅对应一个预测框)[28, 40, 120]。这些方法常常遵循一条规则,即使用质量最高的框进行训练以实现无NMS。无NMS检测器更接近人类视觉感知系统,也是物体检测未来的一个可能方向。
三、SPEED-UP OF DETECTION—检测速度的提升
检测器的加速历来都是一个具有挑战性的问题。物体检测中的提速技术可以分为三个层次的类别:“检测流程”、“检测器主干”及“数值计算”层面的提速,如图9所示。有关更详细的内容,请参考[123]。

A. 特征图共享计算
在检测器的不同计算阶段中,特征提取通常占据了计算量的大头。减少特征计算冗余的最常用方法是仅对整幅图像计算一次特征图[18, 19, 124],这种方法实现了数十倍乃至数百倍的加速效果。
B. 级联检测
级联检测是一种常用技术[10, 125],它采取了一种从粗到精的检测理念:首先使用简单的计算过滤掉大部分简单的背景窗口,然后再用更复杂的计算处理那些较难处理的窗口。近年来,级联检测特别适用于“大场景中的小物体”这类检测任务,例如人脸检测[126, 127]、行人检测[101, 124, 128]等。
C. 网络剪枝与量化
“网络剪枝”和“网络量化”是两种常用的加速卷积神经网络(CNN)模型的方法。前者指的是修剪网络结构或权重,后者则是减少它们的编码长度。网络剪枝的研究可以追溯到20世纪80年代[129]。最近的网络剪枝方法通常采用迭代训练和剪枝过程,即在每次训练阶段后仅移除一小部分不重要的权重,并重复这些操作[130]。近期的网络量化研究主要集中在网络二值化上,目的是通过将激活或权重量化为二进制变量(如0/1)来压缩网络,从而使浮点运算转换为逻辑运算。
D. 轻量级网络设计
加速基于CNN的检测器的最后一类方法是直接设计轻量级网络。除了“少通道多层”等一般设计原则[131]外,近年来还提出了一些其他方法[132-136]。
-
卷积分解:卷积分解是构建轻量级CNN模型最直接的方式。这分为两组分解方法。第一组是将大的卷积滤波器分解为一组小滤波器[50, 87, 137],如图10(b)所示。例如,可以将一个7x7的滤波器分解为三个3x3的滤波器,它们共享相同的感受野,但后者更高效。第二组是在通道维度上分解卷积[138, 139],如图10(c)所示。
-
分组卷积:分组卷积通过将特征通道划分为不同的组,并对每个组独立进行卷积来减少卷积层的参数数量[140, 141],如图10(d)所示。如果我们均匀地将特征分为m组,在不改变其他配置的情况下,理论上计算量可以减少到之前的1/m。
-
深度可分离卷积:深度可分离卷积[142],如图10(e)所示,当组数设置为通道数时,可以看作是分组卷积的一个特例。通常,使用一系列1x1滤波器进行维度变换,以便最终输出具有期望的通道数。通过使用深度可分离卷积,计算量可以从O(
)减少到O(
)+O(
)。这个想法最近被应用于物体检测和细粒度分类[143-145]。
-
瓶颈设计:神经网络中的瓶颈层相对于前一层包含较少的节点。近年来,瓶颈设计已被广泛用于设计轻量级网络[50, 133, 146-148]。在这些方法中,可以通过压缩检测器的输入层来从一开始就减少计算量[133, 146, 147]。也可以压缩特征图,使其变得更薄,从而加速后续的检测[50, 148]。
-
使用NAS进行检测:基于深度学习的检测器变得日益复杂,严重依赖手工设计的网络架构和训练参数。神经架构搜索(NAS)主要关注于定义候选网络的合适空间,改进快速准确的搜索策略,并以低成本验证搜索结果。在设计检测模型时,NAS可以减少对网络主干和锚框设计的人工干预需求[149-155]。
图10展示了卷积神经网络(CNN)中卷积层的加速方法概览及其计算复杂度比较: (a) 标准卷积:计算复杂度为O(dk^2c)。 (b) 分解卷积滤波器(k×k → (k' ×k' ) 2 或 1×k, k×1):计算复杂度为O(dk'^2c) 或 O(dkc)。 (c) 通道分解卷积:计算复杂度为O(d'k^2c) + O(dk^2d')。 (d) 分组卷积(#组=m):计算复杂度为O(dk^2c/m)。 (e) 深度可分离卷积:计算复杂度为O(ck^2) + O(dc)。
E. 数值加速
数值加速旨在从实现的基础层面加速物体检测器。
1)利用积分图加速:积分图是图像处理中的一个重要方法,它能帮助快速计算图像子区域的累积和。积分图的核心在于信号处理中卷积的积分-微分可分离性:
其中,dg(x)/dx是一个稀疏信号,卷积可以通过该等式右侧的部分来加速[10, 156]。
积分图同样可用于加速物体检测中更一般的特征计算,例如颜色直方图、梯度直方图等[124, 157-159]。一个典型的例子是通过计算积分HOG图来加速HOG特征的计算[124, 157],如图11所示。积分HOG图已被用于行人检测中,并在不损失任何精确度的前提下实现了数十倍的加速[124]。

2)频域加速:卷积是物体检测中一种重要的数值运算。线性检测器的检测可以看作是特征图与检测器权重之间的窗口内积运算,这可以通过卷积来实现。傅立叶变换是加速卷积的一种非常实用的方法,其理论基础是信号处理中的卷积定理,即在适当条件下,两个信号I和W卷积的傅立叶变换F是它们在傅立叶空间中的点乘:
其中,F表示傅立叶变换,表示逆傅立叶变换,⊙表示点乘。上述计算可通过使用快速傅立叶变换(FFT)和逆快速傅立叶变换(IFFT)[160-163]来加速。
3)向量量化:向量量化(VQ)是信号处理中的一种经典量化方法,旨在通过一小组原型向量来近似描述大量数据的分布情况。它可以用于数据压缩,并加速物体检测中的内积运算[164, 165]。
四、RECENT ADVANCES IN OBJECT DETECTION—近年来物体检测的最新进展
过去二十年间不断涌现的新技术对物体检测产生了显著影响,尽管其基本原理和底层逻辑保持不变。在前文中,我们从宏观时间跨度介绍了过去二十年技术的演进,以帮助读者理解物体检测;本章我们将着重于近年来的前沿算法,时间跨度较短,旨在帮助读者深入了解物体检测领域。部分内容是对先前讨论技术的拓展(例如,第四节A至E部分),而其他部分则为新颖的概念融合(例如,第四节F至H部分)。
A. 超越滑动窗口检测
考虑到图像中物体可以通过其真实边界框的左上角和右下角唯一确定,因此检测任务可以等效地表述为一对关键点定位问题。近期对该思想的一种实现是预测角落的热图[26]。其他一些方法遵循这一思路,利用更多的关键点(如角落和中心点[77]、极点和中心点[53]、代表性点[69])以获得更好的性能。另一种范式将物体视为点或点集合,直接预测物体属性(如高度和宽度)而无需聚类。这种做法的优势在于,它可以在语义分割框架下实施,且无需设计多尺度的锚框。此外,通过将物体检测视为集合预测,DETR[28, 43]在一个基于引用的框架中彻底解放了物体检测的传统约束。
B. 旋转与缩放变化的鲁棒性检测
近年来,人们致力于提高对物体旋转和尺寸变化的鲁棒性检测能力。
-
旋转鲁棒性检测:物体旋转在面部检测、文本检测及遥感对象检测中十分常见。解决这一问题最直接的方法是对数据进行增强,确保任何方向的物体都能被增强后的数据分布良好覆盖[166],或者为每个方向单独训练检测器[167, 168]。近期流行的一种解决方案是设计旋转不变的损失函数,在检测损失上施加约束,使旋转物体的特征保持不变[169-171]。另一个新近方法是学习物体候选区域的几何变换[172-175]。对于两阶段检测器,ROI池化旨在提取任意位置和尺寸的物体提议的固定长度特征表示。由于特征池化通常在笛卡尔坐标系中执行,因此不适用于旋转变换。最近的改进是在极坐标系中执行ROI池化,使得特征能够对抗旋转变化[167]。
-
缩放鲁棒性检测:近期研究针对训练和检测阶段的尺寸鲁棒性进行了探索。
-
缩放自适应训练:现代检测器通常将输入图像缩放到固定尺寸,并反向传播所有尺度物体的损失。这样做存在的问题是会出现“尺度不平衡”问题。在检测时构建图像金字塔可以缓解这一问题,但不能从根本上解决[49, 178]。最近的改进是图像金字塔的尺度标准化(SNIP)[176],它在训练和检测阶段都构建图像金字塔,并仅反向传播某些选定尺度的损失,如图12所示。进一步的研究提出了更高效的训练策略:结合高效重采样的SNIP(SNIPER)[177],即裁剪并重新缩放图像到一组子区域,从而利于大规模批次训练。
图12展示了多尺度物体检测的不同训练策略: (a) 在单一分辨率图像上训练,反向传播所有尺度物体的损失[17-19, 23]。 (b) 在多分辨率图像(图像金字塔)上训练,仅为选定尺度的物体反向传播损失。如果物体太大或太小,其梯度将被舍弃[39, 176, 177]。 -
缩放自适应检测:在基于CNN的检测器中,锚框的大小和长宽比通常需要精心设计。这样做的一大缺点是配置无法自适应意外的尺寸变化。为了改善小物体的检测,一些最新的检测器提出了“自适应放大”技术,以自适应地将小物体放大为“大物体”[179, 180]。另一项最近的改进是预测图像中物体的尺寸分布,然后根据该分布自适应地重新缩放图像[181, 182]。
-
C. 使用更优的主干网络进行检测
检测器的准确性和速度极大程度上取决于特征提取网络,即所谓的“主干网络”,例如ResNet [178]、CSPNet [183]、Hourglass [184]和Swin Transformer [44]。关于深度学习时代一些重要的检测主干网络的详细介绍,请参阅以下综述文献[185]。图13展示了三个知名检测系统(Faster R-CNN [19]、RFCN [49]和SSD [23])采用不同主干网络时的检测准确性对比[186]。物体检测领域最近得益于Transformer强大的特征提取能力,在COCO数据集上,排名前10的检测方法均为基于Transformer的。Transformer与CNN之间的性能差距正逐渐扩大。

D. 改善定位精度
为了提升定位精度,近期的检测器采用了两组方法:1)边界框精细化,以及2)用于精确定位的新损失函数。
- 边界框精细化:提升定位精度最直观的方法是边界框精细化,这可视为检测结果的后处理步骤。一种近期方法是迭代地将检测结果输入到边界框回归器中,直至预测收敛至正确的地点和大小[187-189]。然而,也有研究者指出这种方法并不能保证定位精度的单调递增,并且如果多次应用精细化过程,可能会导致定位质量退化。
- 用于精确定位的新损失函数:在大多数现代检测器中,物体定位被视为坐标回归问题。然而,这种范式的缺点很明显。首先,回归损失并不直接对应于最终的定位评估,特别是对于那些具有非常大纵横比的物体。其次,传统的边界框回归方法没有提供定位的置信度。当多个边界框相互重叠时,这可能导致非最大抑制失败。通过设计新的损失函数可以缓解上述问题。最直观的改进是直接使用IoU(交并比)作为定位损失[105-107, 190]。此外,一些研究者尝试在概率推理框架下改进定位,与直接预测边界框坐标不同,这种方法预测边界框位置的概率分布[191]。
E. 利用分割损失进行学习
物体检测和语义分割是计算机视觉中的两个基础任务。最近研究表明,利用语义分割的损失能提升物体检测性能。 为了通过分割改进检测,最简单的方式是将分割网络视为固定的特征提取器,并将其整合到检测器中作为辅助特征[83, 192, 193]。这种方法的优点是易于实现,缺点是分割网络可能带来额外的计算负担。 另一种方式是在原检测器的基础上增加一个额外的分割分支,并使用多任务损失函数(分割+检测)来训练这个模型[4, 42, 192]。这样做的好处是在推理阶段可以移除分割分支,不影响检测速度;不利之处在于训练需要像素级的图像标注信息。
F. 对抗性训练
生成对抗网络(GAN)[194]由A. Goodfellow等人于2014年引入,已在诸如图像生成[194, 195]、图像风格迁移[196]和图像超分辨率[197]等众多任务中受到广泛关注。最近,对抗性训练也被应用于物体检测中,尤其是在改善小物体和遮挡物体的检测方面。对于小物体检测,GAN可以通过缩小小物体与大物体表征之间的差异来增强小物体的特征[198, 199]。为了提高遮挡物体的检测,一个最近的想法是使用对抗性训练生成遮挡掩模[200]。与在像素空间生成样本不同,对抗性网络直接修改特征以模仿遮挡效果。
G. 弱监督物体检测
基于深度学习的物体检测器训练通常需要大量的手动标注数据。弱监督物体检测(WSOD)旨在减轻对数据注释的依赖,通过仅使用图像级注释而非边界框来训练检测器[201]。多实例学习是一组广泛应用在WSOD中的监督学习算法[202-209]。与学习单个标记实例集不同,多实例学习模型接收一组带标签的包,每个包包含多个实例。如果将图像中的物体候选视为一个包,将图像级注释视为标签,则WSOD可以被构造成一个多实例学习过程。
类别激活映射是WSOD的另一组近期方法[210, 211]。关于卷积神经网络(CNN)可视化的研究表明,即使没有对物体位置进行监督,CNN的卷积层也能表现得像物体检测器。类别激活映射揭示了如何使一个仅在图像级标签上训练的CNN具备定位能力[212]。
除了上述方法,一些研究者将WSOD视为提案排序过程,通过选择信息量最大的区域,并用图像级注释来训练这些区域[213]。其他研究者建议遮盖图像的不同部分。如果检测分数急剧下降,则被遮盖的区域可能以高概率包含物体[214]。最近,生成对抗性训练也被用于WSOD中[215]。
H. 域适应下的检测
大多数物体检测器的训练过程本质上可以看作是在独立同分布(i.i.d.)数据假设下的似然估计过程。对于非i.i.d.数据的物体检测,特别是在某些实际应用中,仍然是一个挑战。除了收集更多数据或应用适当的数据增强外,域适应提供了缩小域间差距的可能性。为了获得域不变的特征表示,已经在图像、类别或物体级别探索了基于特征正则化和对抗性训练的方法[216-221]。循环一致性变换[222]也被用来弥合源域和目标域之间的差距[223, 224]。还有一些方法结合了这两种思想[225]以获得更好的性能。
五、CONCLUSION AND FUTURE DIRECTION—结论与未来方向
过去二十年里,物体检测领域取得了显著的成就。本文全面回顾了其二十年发展历程中的一些里程碑式检测器、关键技术、加速方法、数据集以及评估指标。除上述方案之外,以下具有前瞻性的未来研究方向或许能为读者提供更多深入见解:
-
轻量化物体检测:旨在加快检测推理速度,使其能在低功耗边缘设备上运行。重要应用包括移动增强现实、自动驾驶、智慧城市、智能摄像头、人脸识别等。尽管近年来已取得较大进展,但机器检测速度与人眼识别之间仍存在较大差距,特别是在小物体检测或利用多源信息检测时[226, 227]。
-
端到端物体检测:尽管已有一些方法实现了从图像到边界框的全端到端检测(网络内一对一标签分配训练),但多数方法仍采用一对多的标签分配方式,非极大值抑制操作单独设计。未来研究可聚焦于设计既保持高检测精度又高效端到端流程[228]。
-
小物体检测:在大场景中检测小物体一直是项挑战。该研究方向的潜在应用包括人群密度估算、户外动物计数及从卫星图像中检测军事目标。进一步的研究方向可能包括视觉注意力机制的整合与高分辨率轻量级网络的设计[229, 230]。
-
三维物体检测:尽管二维物体检测已有显著进步,但对于自动驾驶等应用而言,仍需获取物体在三维世界中的位置和姿态信息。未来物体检测将在三维领域获得更多关注,并利用多源多视角数据(如来自多个传感器的RGB图像和3D激光雷达点云)[231, 232]。
-
视频中的检测:高清视频中的实时物体检测/追踪对于视频监控和自动驾驶至关重要。传统物体检测器通常针对图像级检测设计,忽略了视频帧间的关联。在计算限制下,通过探索时空相关性以提升检测性能是一个重要研究方向[233, 234]。
-
跨模态检测:利用多种来源/模态的数据(如RGB-D图像、激光雷达、光流、声音、文本、视频等)进行物体检测,对于构建类似人类感知的更精确检测系统至关重要。开放问题包括:如何将训练好的检测器迁移到不同模态数据上,如何融合信息以改进检测等[235, 236]。
-
面向开放世界的检测:域外泛化、零样本检测和增量检测是物体检测新兴主题。多数研究致力于减少灾难性遗忘或利用补充信息。人类天生能发现环境中未知类别的物体。一旦获得相应知识(标签),就能从中学习新知识并保留模式。然而,当前物体检测算法难以掌握对未知类别物体的检测能力。开放世界中的物体检测旨在在未明确给出或部分给出监督信号的情况下发现未知类别的物体,这对于机器人学和自动驾驶等应用具有巨大潜力[237, 238]。
站在技术演进的高速公路上,我们相信本文将帮助读者构建物体检测的完整路线图,并为这一快速发展的研究领域指明未来的探索方向。