Object Detection in 20 Years: A Survey 论文阅读

前言

如果要学习目标检测,那了解目标检测发展历程和各个技术将有助于更好地学习。所以今天我们看一篇来自IEEE的综述。

论文名:Object Detection in 20 Years: A Survey
论文作者:Zhengxia Zou et.al.
期刊/会议名:IEEE
发表时间:2019-5
​论文地址:https://arxiv.org/abs/1905.05055

1.简介

近年来,深度学习技术的快速发展极大地推动了目标检测的进步,取得了显著的突破,使其成为一个研究热点,受到前所未有的关注。目前,目标检测已广泛应用于许多现实应用中,如自动驾驶、机器人视觉、视频监控等。无花果。图1显示了过去二十年中与“目标检测”相关的出版物数量的增长。

 2.物体检测技术二十年发展概览

图2以2014年为分水岭,目标检测在过去的二十年中可大致分为两个时期:
2014年前的“传统目标检测期”及之后的“基于深度学习的目标检测期”。接下来我们详细
谈论两个时期的发展。

A.目标检测路线图

1)里程碑:传统检测器:大多数早期的目标检测算法都是基于手工特征构建的。由于当时缺乏有效的图像表示,人们不得不设计复杂的特征表示和各种加速技巧。

Viola Jones检测器:VJ检测器遵循一种最直接的检测方式,即滑动窗口:通过图像中所有可能的位置和比例,看看是否有任何窗口包含人脸。虽然这看起来是一个非常简单的过程,但其背后的计算远远超出了当时计算机的能力。VJ检测器通过结合三种重要技术:“积分图像”、“特征选择”和“级联检测”(将在第三节介绍),极大地提高了其检测速度。

 HOG检测器:HOG可以被认为是对当时尺度不变特征变换[29,30]和形状上下文[31]的重要改进。为了平衡特征不变性(包括平移、比例、光照等)和非线性,尽管HOG可以用于检测各种对象类别,但其主要动机是行人检测问题。为了检测不同大小的物体,HOG检测器在保持检测窗口大小不变的情况下,对输入图像进行多次缩放。

可变形零件模型(DPM): 它遵循“分而治之”的检测理念,训练可以简单地看作是学习一种合适的分解对象的方法,推理可以看作是对不同对象部分的检测的集合。例如,检测“汽车”的问题可以分解为检测车窗、车身和车轮。这部分工作又称“star-model”,是P. Felzenszwalb等人[13]引入的。

2)里程碑:基于CNN的两阶段检测器:随着手工特征的性能趋于饱和,2010年后,目标检测的研究进入平台期。2012年,世界见证了卷积神经网络的重生[35]。深度学习时代有两类检测器:“两阶段检测器”和“单阶段检测器”,前者将检测定义为“由粗到精”的过程,而后者将其定义为“一步完成”。

RCNN: RCNN背后的思想很简单:它首先通过选择性搜索提取一组对象建议(对象候选框)[45]。然后将每个提案重新缩放为固定大小的图像,并将其输入在ImageNet(例如AlexNet[35])上预训练的CNN模型中以提取特征。最后,使用线性支持向量机分类器预测每个区域内物体的存在并识别物体类别。RCNN在VOC07上的性能得到了显著提升,平均平均精度(mAP)从33.7% (DPM-v5[46])大幅提高到58.5%。尽管RCNN已经取得了很大的进步,但它的缺点也很明显:在大量重叠的建议(来自一张图像的2000多个盒子)上进行冗余的特征计算导致检测速度极慢(使用GPU时每张图像14秒)。同年晚些时候,SPPNet[17]被提出并解决了这个问题。

SPPNet: 2014年,K. He等提出了空间金字塔池网络(Spatial Pyramid Pooling Networks, SPPNet)[17]。以前的CNN模型需要固定大小的输入,例如,AlexNet的224x224图像[35]。SPPNet的主要贡献是引入了空间金字塔池(SPP)层,它使CNN能够生成固定长度的表示,而不需要重新缩放图像区域的大小。当使用SPPNet进行目标检测时,只需从整个图像中计算一次特征映射,然后生成任意区域的固定长度表示用于训练检测器,从而避免了重复计算卷积特征。SPPNet比R-CNN快20倍以上,而不牺牲任何检测精度(VOC07 mAP=59.2%)。尽管SPPNet有效地提高了检测速度,但它仍然存在一些缺点:第一,训练仍然是多阶段的,第二,SPPNet只微调其全连接层,而简单地忽略所有之前的层。第二年晚些时候,Fast RCNN[18]被提出并解决了这些问题。

Faster RCNN: 2015年,S. Ren等人在Fast RCNN之后不久提出了Faster RCNN检测器[19,47]。更快的RCNN是第一个接近实时的深度学习检测器(COCO mAP@.5=42.7%, VOC07mAP=73.2%, ZF-Net的17fps[48])。fast - rcnn的主要贡献是引入了区域提议网络(RPN),使几乎没有成本的区域提议成为可能。从R-CNN到Faster RCNN,目标检测系统的大多数独立块,如提案检测、特征提取、边界盒回归等,已经逐渐集成到一个统一的端到端学习框架中。尽管Faster RCNN突破了Fast RCNN的速度瓶颈,但在后续检测阶段仍然存在计算冗余。后来,人们提出了各种改进方法,包括RFCN[49]和Light head RCNN[50]。

特征金字塔网络(FPN): 2017年,T - Y.Lin等人提出FPN[24]。在FPN之前,大多数基于深度学习的检测器仅在网络顶层的特征映射上运行检测。虽然CNN的深层特征有利于类别识别,但不利于对象的定位。为此,FPN开发了一种具有横向连接的自顶向下架构,用于在所有尺度上构建高级语义。由于CNN通过前向传播自然形成特征金字塔,因此FPN在检测各种尺度的物体方面显示出很大的进步。在基本的Faster R-CNN系统中使用FPN,它在COCO数据集上实现了最先进的单模型检测结果,没有花哨的花哨(COCO mAP@.5=59.1%)。FPN现在已经成为许多最新探测器的基本组成部分。

3)里程碑:基于CNN的单阶段检测器:大多数两阶段检测器遵循从粗到精的处理范式。粗的是努力提高召回能力,而细的是在粗的检测基础上细化定位,更强调区分能力。它们可以很容易地达到高精度,没有任何铃铛和哨子,但很少在工程中使用,由于速度慢和巨大的复杂性。相反,单阶段检测器可以在一步推理中检索所有对象。它们在具有实时和易于部署特性的移动设备中很受欢迎,但在检测密集和小物体时,它们的性能明显受到影响。

You Only Look Once (YOLO): YOLO是由R.Joseph et al .提出的, 2015。YOLO的速度非常快。YOLO遵循与两级检测器完全不同的范式:将单个神经网络应用于整个图像。该网络将图像划分为多个区域,并同时预测每个区域的边界框和概率。虽然YOLO的检测速度有了很大的提高,但与两级检测器相比,它的定位精度有所下降,特别是对于一些较小的目标。

单射多盒探测器(Single Shot MultiBox Detector, SSD): SSD[23]由W. Liu等人于2015年提出。固态硬盘的主要贡献是引入了多参考点和多分辨率检测技术(将在第II-C1节中介绍),显著提高了一级探测器的检测精度,特别是对一些小物体的检测精度。SSD在检测速度和精度方面都有优势(COCO mAP@.5=46.5%,快速版本运行59fps)。SSD与以前的检测器的主要区别在于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认为一个对象是一个单点(对象的中心),并基于参考中心点回归其所有属性(如大小、方向、位置、姿态等)。该模型简洁美观,可以将三维目标检测、人体姿态估计、光流学习、深度估计等任务集成到一个框架中。尽管使用了如此简洁的检测概念,CenterNet也可以获得比较检测结果(COCO mAP@.5=61.1%)。

DETR:近年来Transformers深刻影响了整个深度学习领域,尤其是计算机视觉领域。为了克服cnn的局限性,Transformers抛弃了传统的卷积算子,转而采用注意力单独计算,从而获得全局尺度的接受场。2020年,N. Carion等人提出了DETR[28],他们将目标检测视为一个集合预测问题,提出了一种端到端的变压器检测网络。到目前为止,物体检测已经进入了一个新的时代,在这个时代,物体检测可以不使用锚盒或锚点。后来,X. Zhu等人提出了transformable DETR[43],解决了DETR收敛时间长、检测小目标性能有限的问题。它在MSCOCO数据集上达到了最先进的性能(COCO mAP@.5=71.9%)。

B.目标检测数据集和指标

1)数据集:构建更大、更少偏差的数据集对于开发先进的检测算法至关重要。在过去的10年中,已经发布了许多知名的检测数据集,表1给出了这些数据集的统计数据。图4给出了这些数据集的一些图像示例。图3显示了2008 - 2021年VOC07、VOC12和MS-COCO数据集检测精度的改进情况。

Pascal VOC: Pascal Visual Object Classes (VOC) Challenges1(从2005年到2012年)[54,55]是早期计算机视觉社区最重要的比赛之一。Pascal-VOC在目标检测中使用最多的有两个版本:VOC07和VOC12,前者由5k张tr图像+ 12k个标注对象组成,后者由11k张tr图像+ 27k个标注对象组成。

ILSVRC: ImageNet大规模视觉识别挑战(ILSVRC)2[56]推动了通用目标检测的最新技术。ILSVRC从2010年到2017年每年举办一次。它包含使用ImageNet图像的检测挑战[61]。ILSVRC检测数据集包含200类视觉对象。它的图像/对象实例的数量比VOC大两个数量级。

MS-COCO: MS-COCO3[57]是目前最具挑战性的目标检测数据集之一。基于MS-COCO数据集的年度竞赛自2015年开始举办。它的对象类别数量比ILSVRC少,但对象实例数量更多。例如,MS-COCO-17包含来自80个类别的164k图像和897k注释对象。与VOC和ILSVRC相比,MS-COCO最大的进步在于,除了边界框标注之外,MS-COCO还使用逐实例分割对每个对象进行标记,以帮助精确定位。此外,MS-COCO包含更多的小物体(其面积小于图像的1%)和更密集的物体。就像当时的ImageNet一样,MS-COCO已经成为对象检测社区事实上的标准。

Open Images:2018年,继MS-COCO之后,以前所未有的规模引入了开放图像检测(Open Images Detection, OID)挑战[62]。Open Images有两个任务:1)标准对象检测,2)视觉关系检测,即检测特定关系中的成对对象。对于标准检测任务,数据集由1,910k图像和15,440k在600个对象类别上标注的边界框组成。

2)指标:我们如何评估探测器的准确性?这个问题在不同的时间可能有不同的答案。

在早期的检测研究中,对于检测精度并没有一个被广泛接受的评价指标。例如,在行人检测的早期研究中[12],通常使用“缺失率vs.误报率(FPPW)”作为度量标准。然而,逐窗口测量可能存在缺陷,无法预测完整图像的性能[63]。2009年,加州理工学院引入了行人检测基准[63,64],此后,评估指标从FPPW改为假阳性图像(false positive perimage, FPPI)。

近年来,最常用的检测评价是“平均精度(AP)”,最初是在VOC2007中引入的。AP定义为不同召回下的平均检测精度,通常用一种特定类别的方式。所有类别的平均AP (mAP)通常用作性能的最终度量。为了测量目标定位精度,使用预测框和地面真实值之间的IoU来验证它是否大于预定义的阈值,例如0.5。如果是,则标识为“检测到”,否则标识为“未发现”。随后,0.5 iou mAP成为了物体检测的实际度量标准。

2014年以后,由于MS-COCO数据集的引入,研究人员开始更加关注物体定位的准确性。MS-COCO AP不是使用固定的IoU阈值,而是在0.5到0.95之间的多个IoU阈值上进行平均,这鼓励更准确的对象定位,并且对于一些现实世界的应用程序可能非常重要(例如,想象有一个机器人试图抓住扳手)。

C.目标检测的技术演变

首先介绍了模型设计中的多尺度和上下文启动,然后介绍了训练过程中的样本选择策略和损失函数的设计,最后介绍了推理中的非极大值抑制。图表和文本中的时间戳由论文的发表时间提供。图中显示的进化顺序主要是为了帮助读者理解,可能有时间重叠。

1)多尺度检测技术的发展:“不同尺寸”和“不同长宽比”目标的多尺度检测是目标检测的主要技术挑战之一。近20年来,多尺度探测经历了多个历史时期,如图5所示。

特征金字塔+滑动窗:在VJ探测器之后,研究者开始关注一种更直观的检测方式,即构建“特征金字塔+滑动窗”。从2004年开始,许多里程碑探测器都是基于这种范式建立的,包括HOG探测器、DPM等。他们经常在图像上滑动一个固定大小的检测窗口,很少关注“不同的长宽比”。为了检测具有更复杂外观的物体,R.Girshick等人开始在特征金字塔之外寻求更好的解决方案。“混合模型”[15]是当时的一种解决方案,即针对不同长宽比的物体训练多个检测器。除此之外,基于样本的检测[32,70]通过为每个对象实例(样本)训练单独的模型提供了另一种解决方案。

Detection with object proposals:对象建议指的是一组与类无关的参考框,这些参考框可能包含任何对象。使用目标建议进行检测有助于避免在图像上进行穷举滑动窗口搜索。早期的提案检测方法遵循自下而上的检测理念[73,74]。2014年以后,随着深度CNN在视觉识别领域的普及,自上而下的、基于学习的方法开始在该问题上显示出更多的优势[19,75,76]。

深度回归和无锚点检测:近年来,随着GPU计算能力的提高,多尺度检测变得越来越简单。使用深度回归解决多尺度问题的思路变得简单,即基于深度学习特征直接预测边界框的坐标[20,66]。2018年之后,研究人员开始从关键点检测的角度思考目标检测问题。这些方法通常遵循两种思路:一种是基于分组的方法,检测关键点(角、中心或代表性点),然后进行对象分组[26,53,69,77];另一种是无群法,将一个目标视为一个或多个点,然后在点的参考下回归目标属性(大小,比例等)[40,41]。

多参考/分辨率检测:多参考检测是目前多尺度检测使用最多的方法[19,22,23,41,47,51]。多参考点检测[19,22,23,41,47,51]的主要思想是首先在图像的每个位置定义一组参考点(又称锚点,包括方框和点),然后根据这些参考点预测检测框。另一种流行的技术是多分辨率检测[23,24,44,67,68],即通过在网络的不同层检测不同尺度的对象。多参考点和多分辨率检测已经成为当前最先进的目标检测系统的两个基本组成部分。

2)语境启动的技术演变:视觉对象通常与周围环境嵌入在一个典型的语境中。我们的大脑利用物体和环境之间的联系来促进视觉感知和认知[96]。长期以来,语境启动一直被用来提高检测能力。图6显示了上下文启动在目标检测中的演化过程。

local context检测:local context是指被检测对象周围区域的视觉信息。长期以来,人们一直认为当地环境有帮助改进目标检测。在21世纪初,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)硬负挖掘的技术演变:检测器的训练本质上是一个不平衡学习问题。在基于滑动窗口的检测器的情况下,背景和目标之间的不平衡可能达到107:1[71]。在这种情况下,使用所有的背景对训练是有害的,因为大量简单的否定会淹没学习过程。硬负挖掘(HNM)旨在克服这一问题。HNM的技术演进如图7所示。

Bootstrap: Bootstrap在目标检测中是指从一小部分背景样本开始训练,然后迭代地增加新的未分类样本的一组训练技术。在早期的检测器中,bootstrap通常用于减少数百万个背景下的训练计算[10,99,100]。后来,它成为DPM和HOG检测器中解决数据不平衡问题的标准技术[12,13]。

HNM in deep learning based detectors:为了缓解训练过程中的数据不平衡问题,像Faster RCNN和YOLO这样的检测器只是在正窗和负窗之间平衡权重。然而,研究人员后来注意到,这并不能完全解决失衡问题。为此,自举在2016年之后被重新引入到目标检测中[23,38,101,102]。另一种改进是通过重塑标准交叉熵损失来设计新的损失函数[25],使其更加关注难分类、错误分类的例子[25]。

4)损失函数的技术演变:损失函数衡量模型与数据的匹配程度(即预测与真实标签的偏差)。计算损失产生模型权重的梯度,随后可以通过反向传播更新以更好地适应数据。分类损失和定位损失构成了目标检测问题的监督,见式1。损失函数的一般形式为:

其中t和t∗是预测和真边界框的位置,p和p∗是它们的类别概率。IoU{a, a *}是参考点a与其真值a *之间的借据。η是一个IoU阈值,比如0.5。如果锚框/锚点不匹配任何对象,其定位损失不计入最终损失。

分类损失(Classification loss):分类损失用于评估预测类别与实际类别的偏离程度,在先前的工作中,如YOLOv1[20]和YOLOv2[51],使用MSE/L2损失(Mean Squared Error,均方误差)并未对其进行深入研究。后来,通常使用CE loss (CrossEntropy)[21,23,47]。L2损耗是欧几里得空间的度量,而CE损耗可以度量分布差异(称为似然的一种形式)。分类预测是一个概率,因此CE损失优于L2损失,误分类代价大,梯度消失效应小。为了提高分类效率,提出了Label Smooth来增强模型泛化能力,解决噪声标签上的过信度问题[103,104],设计Focal loss来解决类别不平衡和分类难度差异问题[25]。

定位损失:定位损失用于优化位置和尺寸偏差。L2损耗在早期研究中普遍存在[16,20,51],但受离群值影响较大,容易发生梯度爆炸。结合L1损耗和L2损耗的优点,研究者提出平滑L1损耗[18],公式如下:

 

其中x表示目标值与预测值之间的差值。在计算误差时,上述损失将表示边界框的四个数字(x, y, w, h)视为自变量,但它们之间存在相关性。在评价中,利用IoU确定预测框是否与实际地面真值框相对应。相等的Smooth L1值会产生完全不同的IoU值,因此IoU损耗[105]介绍如下:

 5)非最大抑制的技术演变:由于相邻窗口通常具有相似的检测分数,因此使用非最大抑制作为后处理步骤,去除重复的边界框,获得最终的检测结果。在早期的目标检测中,并不总是集成NMS[121]。这是因为当时目标检测系统的期望输出并不完全清楚。图8显示了近20年来NMS的演变。

贪婪选择:贪婪选择是执行NMS的一种过时但最流行的方式。其背后的思想简单直观:对于一组重叠检测,选择检测得分最高的包围框,而根据预定义的重叠阈值去除其相邻框。虽然贪婪选择现在已经成为NMS事实上的方法,但它仍然有一些改进的空间。首先,得分最高的盒子可能不是最合适的。其次,它可能会抑制附近的物体。最后,它不能抑制假阳性[116]。为了解决上述问题,已经提出了许多工作[107,112,114,115]。

边界框聚合:BB聚合是另一组用于NMS的技术[10,65,116,117],其思想是将多个重叠的边界框组合或聚类成一个最终检测。这种方法的优点是充分考虑了对象关系及其空间布局[118,119]。一些著名的探测器使用了这种方法,如VJ探测器[10]和Overfeat (ILSVRC-13定位任务的获胜者)[65]。

基于学习的NMS:最近受到广泛关注的一组NMS改进是基于学习的NMS[85,93,109 - 11,122]。主要思想是将NMS视为一个过滤器,重新对所有原始检测进行评分,并以端到端方式将NMS作为网络的一部分进行训练,或者训练网络来模仿NMS的行为。这些方法在改善遮挡和密集目标检测方面比传统的手工制作的NMS方法显示出有希望的结果。

无NMS检测器:为了从NMS中解脱出来,实现完全端到端的目标检测训练网络,研究人员开发了一系列方法来完成一对一的标签分配(即一个对象只有一个预测框)[28,40,120]。这些方法经常遵循一个规则,即要求使用最高质量的训练箱,以实现免费的NMS。无纳米粒子探测器更类似于人类的视觉感知系统,也是未来物体检测的一种可能方式。

3.检测加速

 探测器的加速一直是一个具有挑战性的问题。物体检测中的加速技术可以分为三个层次:“检测”加速组“管道”、“探测器骨干”和“数值计算”。如图9所示。参考[123]获得更详细的版本。

A. Feature Map共享计算 

在检测器的不同计算阶段中,特征提取通常占计算量的主导地位。减少特征计算冗余最常用的思路是只计算一次整幅图像的特征映射[18,19,124],这种方法已经实现了数十倍甚至数百倍的加速。

B.级联检测

级联检测是一种常用的技术[10,125]。它采用了一种由粗到精的检测理念:用简单的计算过滤掉大多数简单的背景窗口,然后用复杂的窗口处理那些更困难的窗口。近年来,级联检测特别适用于“大场景中的小物体”的检测任务,如人脸检测[126,127]、行人检测[101,124,128]等。

C.网络修剪和量化

“网络修剪”和“网络量化”是两种常用的加速CNN模型的方法。前者是指修剪网络结构或权值,后者是指减少它们的代码长度。“网络修剪”的研究最早可以追溯到20世纪80年代[129]。最近的网络修剪方法通常采用迭代的训练和修剪过程,即在每一阶段的训练后只去除一小组不重要的权值,并重复这些操作[130]。最近关于网络量化的工作主要集中在网络二值化上,其目的是通过将其激活或权重量化为二进制变量(例如0/1)来压缩网络,以便将浮点运算转换为逻辑运算。

D.轻量级网络设计 

最后一组加速基于CNN的检测器的方法是直接设计轻量级网络。除了一些一般的设计原则,如“少通道多层”[131],近年来还提出了一些其他方法[132-136]。

1)分解卷积:分解卷积是构建轻量级CNN模型最直接的方法。有两组分解方法。第一组是将一个大的卷积滤波器分解为一组小的卷积滤波器[50,87,137],如图10 (b)所示。例如,可以将一个7x7滤波器分解为三个3x3滤波器,它们共享相同的接受场,但后者效率更高。第二组是对通道维度的卷积进行因式分解[138,139],如图10 (c)所示。

2)群卷积:群卷积的目的是通过将特征通道分成不同的组,然后在每一组上独立进行卷积,从而减少卷积层中参数的数量[140,141],如图10 (d).如果我们将特征平均分成m组,在不改变其他配置的情况下,理论上计算量将减少到原来的1/m。

3)深度可分卷积:如图10 (e)所示的深度可分卷积[142]可以看作是群卷积的一种特殊情况,当群的数量与通道的数量相等时。通常,使用多个1x1滤波器进行维度转换,以便最终输出将具有所需的通道数量。通过使用深度可分卷积,可以将计算量。这一思想最近被应用于目标检测和细粒度分类[143-145]。

4)瓶颈设计:与前几层相比,神经网络中的瓶颈层包含的节点较少。近年来,瓶颈设计被广泛用于设计轻量级网络[50,133,146-148]。在这些方法中,可以对检测器的输入层进行压缩,以减少从检测开始的计算量[133,146,147]。也可以压缩特征图,使其更薄,从而加快后续的检测[50,148]。

5) NAS检测:基于深度学习的检测器正变得越来越复杂,严重依赖于手工制作的网络架构和训练参数。神经结构搜索(NAS)主要关注的是确定候选网络的适当空间,改进快速准确的搜索策略,并以低成本验证搜索结果。在设计检测模型时,NAS可以减少人为干预网络骨干网和锚盒设计的需要[149-155]。

E.数值加速度

数值加速旨在加速目标探测器从底层实现。

1)利用积分图像加速:积分图像是图像处理中的一种重要方法。它有助于快速计算图像子区域的和。积分图像的本质是信号处理中卷积的积分-微分可分性:

如果dg(x)/dx是一个稀疏信号,那么卷积可以通过这个方程的右边部分来加速[10,156]。

积分图像还可以用来加速物体检测中更一般的特征,如颜色直方图、梯度直方图[124,157 - 159]等。一个典型的例子是通过计算积分HOG映射来加速HOG[124,157],如图11所示。积分HOG地图已被用于行人检测,并在不损失任何精度的情况下实现了数十倍的加速度[124]。

2)频域加速:卷积是目标检测中一种重要的数值运算。

由于线性检测器的检测可以看作是特征映射和检测器权重之间的窗口内积,可以通过卷积来实现。傅里叶变换是一种非常实用的加速卷积的方法,其理论基础是信号处理中的卷积定理,即在适当的条件下,两个信号I * W的卷积的傅里叶变换F是它们的傅里叶空间中的点积:

其中F是傅里叶变换,F−1是傅里叶反变换,⊙是逐点积。使用快速傅里叶变换(Fast Fourier Transform, FFT)和逆傅里叶变换(Inverse FFT, IFFT)可以加速上述计算[160-163]。

3)矢量量化:矢量量化(Vector quantiization, VQ)是信号处理中的一种经典量化方法,其目的是通过一组小的原型向量来近似一组大数据的分布。它可以用于数据压缩和加速目标检测中的内积运算[164,165]。 

4.目标检测的最新进展

A.超越滑动窗口检测

由于图像中的目标可以通过其地面真值框的左上角和右下角唯一确定,因此检测任务可以等效地框架为成对关键点定位问题。这个想法最近的一个实现是预测角落的热图[26]。其他一些方法也遵循这一思路,利用更多的关键点(拐角和中心点[77]、极值点和中心点[53]、代表性点[69])来获得更好的效果。另一种范式将对象视为一个/多个点,并直接预测对象的属性(例如:高度和宽度),不分组。该方法的优点是可以在语义分割框架下实现,不需要设计多尺度锚盒。此外,通过将目标检测视为集合预测,DETR[28,43]将其完全解放在基于参考的框架中。

B.旋转和尺度变化的鲁棒检测

1)旋转鲁棒检测:物体旋转在人脸检测、文本检测、遥感目标检测中都很常见。这个问题最直接的解决方案是执行数据增强,这样任何方向的对象都可以被增强的数据分布很好地覆盖[166],或者为每个方向分别训练独立的检测器[167,168]。设计旋转不变损失函数是最近流行的一种解决方案,其中增加了对检测损失的约束,使旋转对象的特征保持不变[169-171]。另一个最近的解决方案是学习候选对象的几何变换[172-175]。在两阶段检测器中,ROI池的目的是为任意位置和大小的目标提案提取固定长度的特征表示。由于特征池化通常是在直角坐标系下进行的,因此对旋转变换不具有不变性。最近的改进是在极坐标中执行ROI池,以便特征可以对旋转变化具有鲁棒性[167]。

2)尺度鲁棒检测:近年来在训练阶段和检测阶段都进行了尺度鲁棒检测的研究。

尺度自适应训练:现代检测器通常将输入图像重新缩放到固定大小,并在所有尺度上反向传播对象的损失。这样做的缺点是会出现“规模不平衡”问题。在检测过程中构建图像金字塔可以缓解这一问题,但不能从根本上解决[49,178]。最近的改进是图像金字塔的尺度归一化(SNIP)[176],它在训练和检测阶段都构建图像金字塔,并且只反向传播一些选定尺度的损失,如图12所示。一些研究者进一步提出了一种更有效的训练策略:SNIP with efficient Resampling (SNIPER)[177],即:将图像裁剪并重新缩放到一组子区域,以便从大批量训练中获益。

尺度自适应检测:在基于CNN的检测器中,锚点的大小和纵横比通常是经过精心设计的。这样做的缺点是配置不能适应意外的规模变化。为了提高对小目标的检测,最近一些检测器提出了一些“自适应放大”技术,将小目标自适应地放大为“较大的目标”[179,180]。最近的另一个改进是预测图像中物体的比例分布,然后根据它自适应地重新缩放图像[181,182]。

C.更好的主干检测

检测器的准确性/速度在很大程度上取决于特征提取网络,即主干网络,例如ResNet [178], CSPNet [183], Hourglass[184]和Swin Transformer[44]。图13显示了三种知名检测系统的检测精度:更快的RCNN[19]、RFCN[49]和不同主干的SSD[23]。最近,变形金刚强大的特征提取能力使目标检测受益匪浅。在COCO数据集上,排名前10位的检测方法都是基于变压器的。Transformers与cnn的性能差距逐渐拉大。

D.本地化改进

为了提高定位精度,最近的检测器有两组方法:1)边界盒改进和2)新的精确定位损失函数。

1)边界盒细化:提高定位精度最直观的方法是边界盒细化,可以看作是对检测结果的后处理。最近的一种方法是迭代地将检测结果输入到BB回归器中,直到预测收敛到正确的位置和大小[187-189]。然而,也有研究者认为这种方法不能保证定位精度的单调性[187],如果多次进行细化,可能会使定位退化。

2)新的精确定位损失函数:在大多数现代检测器中,目标定位被认为是一个坐标回归问题。然而,这种范式的缺点是显而易见的。首先,回归损失并不对应于定位的最终评估,特别是对于一些具有非常大宽高比的目标。其次,传统的BB回归方法没有提供定位的置信度。当有多个BB相互重叠时,这可能导致非最大值抑制失败。通过设计新的损失函数可以缓解上述问题。最直观的改进是直接使用IoU作为定位损失[105 - 107,190]。此外,也有研究者尝试在概率推理框架下改进定位[191]。与以往直接预测框坐标的方法不同,该方法预测了边界框位置的概率分布。

E.分割损失的学习

目标检测和语义分割是计算机视觉的两个基本任务。最近的研究表明,可以通过学习语义分割损失来改进目标检测。

为了改进分割检测,最简单的方法是将分割网络视为一个固定的特征提取器,并将其作为辅助特征集成到检测器中[83,192,193]。该方法的优点是易于实现,缺点是分割网络可能带来额外的计算量。

另一种方法是在原始检测器的基础上引入一个额外的分割分支,并使用多任务损失函数(seg)来训练该模型。+ det.)[4,42,192]。优点是隔离。早午餐将在推理阶段被删除,检测速度不会受到影响。然而,缺点是训练需要像素级的图像注释。

F.对抗性训练

A. Goodfellow等人在2014年引入的生成式对抗网络(Generative Adversarial Networks, GAN)[194]得到了很大的反响。关注许多任务,如图像生成[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)数据假设下的似然估计过程。非id对象检测。数据,特别是对于一些现实世界的应用程序,仍然是一个挑战。除了收集更多的数据或应用适当的数据扩展之外,领域适应还提供了缩小领域之间差距的可能性。为了获得域不变的特征表示,已经在图像、类别或对象级别探索了特征正则化和基于对抗训练的方法[216-221]。循环一致变换[222]也被用于弥合源域和目标域之间的差距[223,224]。其他一些方法也结合了这两种思想[225],以获得更好的性能。

5.结论和未来方向

轻量级对象检测:轻量级对象检测旨在加快检测推理,以便在低功耗边缘设备上运行。一些重要的应用包括移动增强现实、自动驾驶、智慧城市、智能摄像头、人脸验证等。虽然近年来已经做出了很大的努力,但机器与人眼的速度差距仍然很大,特别是在检测一些小物体或多源信息检测时[226,227]。

端到端目标检测:虽然已经开发了一些方法,使用一对一的标签分配训练,以完全端到端方式(网络中的图像到盒子)检测目标,但大多数仍然使用一对多的标签分配方法,其中非最大抑制操作单独设计。未来对该主题的研究可能集中于设计端到端管道,以保持较高的检测精度和效率[228]。

小物体检测:在大场景中检测小物体一直是一个挑战。该研究方向的一些潜在应用包括计算人群或露天动物的数量以及从卫星图像中探测军事目标。一些进一步的方向可能包括视觉注意机制的整合和高分辨率轻量级网络的设计[229,230]。

3D物体检测:尽管最近在2d物体检测方面取得了进展,但自动驾驶等应用仍依赖于获取物体在3D世界中的位置和姿态。未来的目标检测将在3D世界和多源、多视角数据(例如RGB图像和来自多个传感器的3D激光雷达点)的利用中受到更多关注[231,232]。

视频中的检测:高清视频中的实时目标检测/跟踪对于视频监控和自动驾驶具有重要意义。传统的目标检测器通常被设计为基于图像的检测,而忽略了视频帧之间的相关性。通过探索计算限制下的时空相关性来改进检测是一个重要的研究方向[233,234]。

跨模态检测:利用RGB-D图像、激光雷达、流量、声音、文本、视频等多种数据源/模态进行目标检测,对于实现像人类感知一样更精确的检测系统至关重要。一些悬而未决的问题包括:如何将训练有素的检测器迁移到不同的数据模式,如何进行信息融合以提高检测等[235,236]。

面向开放世界检测:域外泛化、零射击检测和增量检测是目标检测领域的新兴课题。他们中的大多数人想出了减少灾难性遗忘或利用补充信息的方法。人类有一种本能,能在环境中发现未知类别的物体。当给出相应的知识(标签)时,人类会从中学习新的知识,并保持模式。然而,目前的目标检测算法很难掌握未知类别目标的检测能力。开放世界中的物体检测旨在发现未明确给出或部分给出监督信号时未知类别的物体,这在机器人和自动驾驶等应用中具有很大的前景[237,238]。

参考文献

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值