目标检测20年(Object Detection in 20 Years)

Object Detection in 20 Years: A Survey

Zhengxia Zou, Zhenwei Shi, Member, IEEE, Yuhong Guo, and Jieping Ye, Senior Member, IEEE

https://arxiv.org/pdf/1905.05055.pdf

0.概述

【导读】视觉目标检测(Object Detection)作为近年来的研究热点之一,受到了广泛关注,每年在计算机视觉三大会议(ICCV, CVPR, ECCV)上大量相关文章发表。密歇根大学Zhengxia Zou博士等人近期发布了《Object Detection in 20 Years: A Survey》,这篇综述论文对近四分之一世纪(20世纪90年代至2019年)的400余篇论文进行了广泛回顾与总结。

【摘要】目标检测作为计算机视觉中最基本、最具挑战性的问题之一,近年来受到了广泛的关注。它在过去二十年的发展可以说是计算机视觉历史的缩影。如果我们把今天的目标检测看作是深度学习力量下的一种技术美学,那么让时光倒流20年,我们将见证冷兵器时代的智慧。本文从目标检测技术发展的角度,对近四分之一世纪(20世纪90年代至2019年)的400余篇论文进行了广泛的回顾。本文涵盖了许多主题,包括历史上的里程碑检测器、检测数据集、度量、检测系统的基本构建模块、加速技术以及最新的检测方法。本文还综述了行人检测、人脸检测、文本检测等重要的检测应用,并对其面临的挑战以及近年来的技术进步进行了深入分析。

索引词-目标检测,计算机视觉,深度学习,卷积神经网络,技术进化。

1.介绍

目标检测是一项重要的计算机视觉任务,它处理数字图像中检测特定类(如人、动物或汽车)的视觉对象实例。目标检测的目标是开发计算模型和技术,提供计算机视觉应用程序所需的最基本的信息之一: What objects are where?

作为计算机视觉的基本问题之一,目标检测是许多其他计算机视觉任务的基础,例如实例分割[1-4],图像捕捉[5-7],目标跟踪[8]等。从应用的角度来看,物体检测可以分组为两个研究课题“通用目标检测”和“检测 - “应用”,前者旨在探索一个统一的框架下检测不同类型物体的方法来模拟人类的视觉和认知,后者指的是检测特定的应用场景,如行人检测,人脸检测,文本检测等。近年来,深度学习技术的飞速发展给目标检测带来新鲜血液,取得了显著的突破,并将其推向了前所未有的关注。相应的研究热点,物体检测现在已被广泛用于许多现实世界的应用程序中 如自动驾驶,机器人视觉,视频监控等等。图1显示了在过去的二十年中,与“目标检测”相关的出版物数量的增长。

和其它相关综述的不同处

近几年,视觉目标检测的研究工作非常多,发表了许多关于一般目标检测的综述[24-28]。本文与上述综述的主要区别如下:

1. 基于技术演进的全面回顾:本文广泛回顾了目标检测发展史上的40

多篇论文,时间跨度超过25年(上世纪90年代至2019年)。以前的大多数综述仅仅关注一个较短的历史时期或一些特定的检测任务,而没有考虑它们整个生命周期中的技术演进。站在历史的高速公路上,不仅有助于读者建立一个完整的知识体系,而且有助于找到这个快速发展领域的未来方向。

2.深入探索关键技术及最新技术状态:经过多年的发展,目前的目标检测系统已与“多尺度检测(multiscale detection)”、“难例挖掘(hard negative mining)”、“ 检测框回归(bounding box regression)”等大量技术相结合。然而,以前的综述缺乏基本的分析来帮助读者理解这些复杂技术的本质,例如,“它们从哪里来,它们是如何进化的?”“每种方法的优缺点是什么?”本文针对上述问题对读者进行了深入的分析。

3.对检测加速技术的全面分析:

目标检测的加速一直是一项关键而等具有挑战性的任务。本文从多个层面对20多年来目标检测历史上的提速技术进行了广泛的回顾,包括“检测通道(detection pipeline)”(如级联检测、特征图共享计算)、“检测骨干(detection backbone)”(如网络压缩、轻量级网络设计)、“数值计算(numerical computation)”(如积分图像、矢量量化)等。以前的综述很少涉及这个主题。

•目标检测的困难和挑战

尽管人们总是问“在目标检测中有哪些困难和挑战?”,事实上,这个问题并不容易回答,甚至过于笼统。因为不同的检测任务有完全不同的目标和约束,因此他们的困难也可能各不相同。除了一些常见的挑战在其他计算机视觉任务,例如不同视角下的物体,照明,和内部变化,目标检测中的挑战包括但不限于以下方面:目标旋转和尺度变化(例如小物体),精确的目标定位,密集和遮挡的目标检测、加速检测等。在第4和第5节中,我们将对这些主题进行更详细的分析。

本文的其余部分组织如下。在第二部分中,我们回顾了20年来目标检测的发展历史。第3节将介绍一些加速目标检测的技术。第四部分总结了近三年来一些最先进的检测方法。第5节将回顾一些重要的检测应用。第六部分对本文进行了总结,并对进一步的研究方向进行了分析。

2. 目标检测二十年

在本节中,我们将多方面回顾目标检测的历史,包括里程碑检测器,目标检测数据集,指标,和关键技术的演变。

2.1 目标检测的路线图

在过去的二十年里,人们普遍认为目标检测的进展已基本完成包含历史上两个时期:“传统的目标探测时期”(2014年以前)和基于深度学习的检测期(2014年以后)”,如图2所示

图2 目标检测的路线图。图中的里程碑检测器: VJ Det. [10,11], HOG Det. [12], DPM [13-15], RCNN [16], SPPNet [17], Fast RCNN [18], Faster RCNN [19], YOLO [20], SSD [21], Pyramid Networks [22], Retina-Net[23]。

2.1.1里程碑:传统探测

如果我们把今天的目标检测看作是一种深度学习力量下的技术美学,那么回过头20年来看我们将见证“冷兵器时代的智慧”。早期的目标检测算法大多是基于手工特征构建的。由于当时缺乏有效的图像表示,人们别无选择,只能设计复杂的特征表示,以及各种加速技术来耗尽有限的计算资源。

•Viola Jones 检测

18年前,P. Viola and M. Jones首次在没有任何约束条件(如肤色分割)的情况下实现了人脸实时检测。该检测器运行在700MHz的奔腾III CPU上,在同等的检测精度下,其速度是其他算法的数十倍甚至数百倍。该检测算法,后来被称为“维奥拉-琼斯(VJ)检测器”,在这里由作者的名字命名,以纪念他们的重大贡献。

VJ检测器采用最直接的检测方法,即,滑动窗口:查看图像中所有可能的位置和比例,看看是否有窗口包含人脸。虽然这似乎是一个非常简单的过程,但它背后的计算远远超出了计算机当时的能力。VJ检测器通过加入三个重要的技术显著提高了检测速度:“积分图像”、“特征选择”、“检测级联”。

1)积分图像:积分图像是一种加速盒滤波或卷积过程的计算方法。与当时的其他目标检测算法一样[29-31],在VJ检测器中使用Haar小波作为图像的特征表示。积分图像使得VJ检测器中每个窗口的计算复杂度与其窗口大小无关。

2)特征选择:作者没有使用一组人工选择的Haar基滤波器,而是使用Adaboost算法[32]从一组巨大的随机特征池(约180k维)中选择一组对人脸检测最有帮助的小特征。

3)检测级联:在VJ检测器中引入多级检测范式(又称“检测级联”),通过减少背景窗口的计算量,增加对人脸目标的计算量,从而降低计算量。

• HOG Detector

方向梯度直方图(HOG)特征描述最初是由N. Dalal和B.Triggs在2005年提出的[12]。HOG可以被认为是对尺度不变特征变换[33,34]和当时形状上下文[35]的重要改进。为了平衡特征不变性(包括平移、尺度、光照等)和非线性(在区分不同目标类别上),将HOG描述设计为在密集的均匀间隔单元网格上计算,并使用重叠局部对比度归一化(在“块”上)来提高精度。虽然HOG可以用来检测各种目标类,但它的主要动机是行人检测问题。为了检测不同大小的目标,HOG检测器在保持检测窗口大小不变的情况下,对输入图像进行多次重标。

多年来,HOG检测器一直是许多目标检测器[13,14,36]和各种计算机视觉应用的重要基础

•基于可变形部件模型(Deformable parts -based Model, DPM)DPM作为voco -07、-08和-09检测挑战赛的获胜者,是传统目标检测方法的巅峰。作为HOG检测器的扩展,DPM最初是由P. Felzenszwalb[13]于2008年提出,作为HOG检测器的扩展,之后R. Girshick又进行了各种改进和提升[14,15,37,38]。DPM遵循“分而治之”的检测思想,训练可以简单地看作是学习一种正确的分解对象的方法,推理可以看作是对不同对象部分的描述的集合。例如,检测“汽车”的问题可以看作是检测它的窗口、车身和车轮。工作的这一部分,也就是。“star model”由P. Felzenszwalb等人完成。后来,R. Girshick将star模型进一步扩展到“混合模型”[14、15、37、38]处理的对象在现实世界下的变化更为显著。一个典型的DPM检测器由一个根过滤器和一些部分过滤器组成。本文提出了一种基于DPM的弱监督学习方法,该方法不需要手工指定零件滤波器的配置(如尺寸和位置),而是可以自动学习零件滤波器的所有配置

作为潜在变量。R. Girshick将此过程进一步表述为多实例学习[39]的特殊情况,以及其他一些重要的技术,如“硬负挖掘”、“边界框回归”和“上下文”

“启动”也用于提高检测精度(将在第2.3节中介绍)。为了加快检测速度,Girshick开发了一种技术,将检测模型“编译”成一个更快的实现级联的模型

体系结构,在不牺牲任何精度的情况下实现了超过10倍的加速度[14,38]。

虽然目前的目标检测器在检测精度上已经远远超过了DPM,但其中很多仍然深受其有价值的见解的影响,如混合模型、难例挖掘、边界框回归等。2010年,P. Felzenszwalb和R. Girshick被PASCAL VOC授予“终身成就奖”。

2.1.2里程碑:

基于CNN的两阶段检测器随着手工特征的性能趋于饱和,2010年以后目标检测达到了一个平台。R。Girshick说:“…在2010-2012年期间,进展缓慢,通过构建集成系统和使用方法成功“[38]”的较小变体,取得了较小的进展。2012年,卷积神经网络[40]在全世界得到了重生。由于深卷积网络能够学习图像的鲁棒性和高层次特征表示,一个自然的问题是我们能否将其应用到目标检测中?R. Girshick等人在2014年率先打破僵局,提出了具有CNN特征的区域(RCNN)用于目标检测[16,41]。从那时起,目标检测开始以前所未有的速度发展。

在深度学习时代,目标检测可以分为两类:“两步检测”和“一步检测”,前者将检测框架视为一个“由粗到精”的过程,而后者将检测框架视为“一步完成”。

•RCNN

RCNN背后的想法很简单:它首先通过选择性搜索[42]提取一组目标提名(目标候选框)。然后,将每个proposa重新调整为固定大小的图像,并将其输入到基于ImageNet(例如AlexNet[40])的CNN模型中,以提取特征。最后,利用线性SVM分类器对每个区域内的目标进行预测,识别目标类别。

RCNN在VOC07上产生了显著的性能提升,平均精度(mAP)从33.7% (DPM-v5[43])大幅提高到58.5%。

虽然Fast-RCNN成功地融合了R-CNN和SPPNet的优点,但其检测速度仍然受到目标提名检测的限制(详见2.3.2节)。然后,一个问题自然而然地出现了:“我们能用CNN模型生成对象提名吗?”稍后,Faster R-CNN[19]回答了这个问题。

•Faster-RCNN

2015年,S. Ren等人在Fast RCNN之后不久提出了Faster RCNN检测器[19,44]。Faster RCNN是第一个端到端的,也是第一个接近实时的深度学习检测器(COCO mAP@.5=42.7%, COCO mAP@[.5,.95]=21.9%,VOC07mAP=73.2%, VOC12 mAP=70.4%, 17fps with ZF-Net[45])。Faster- RCNN的主要贡献是引入了区域提名网络(RPN),使几乎免费的区域提名成为可能。从R-CNN到Faster RCNN,一个目标检测系统的大部分独立块,如提名检测、特征提取、框回归等,都逐渐集成到一个统一的端到端学习框架中。

虽然Faster RCNN突破了Fast RCNN的速度瓶颈,但是在后续的检测阶段仍然存在计算冗余。后来提出了多种改进方案,包括RFCN[46]和Light head RCNN[47]。(详见第3节。)

•特征金字塔网络(Feature Pyramid Networks)

2017年,T.-Y。Lin等人基于Faster RCNN提出了特征金字塔网络(FPN)[22]。在FPN之前,大多数基于深度学习的检测器只在网络的顶层进行检测。虽然CNN较深层的特征有利于分类识别,但不利于目标的定位。为此,在FPN中开发了一个具有横向连接的自顶向下体系结构,用于在所有级别上构建高级语义。由于CNN通过前向传播自然形成了一个特征金字塔,所以FPN在检测具有多种尺度的目标时显示出了很大的进步。在一个基本的Faster R-CNN系统中使用FPN,它在MSCOCO数据集上实现了最先进的单模型检测结果,没有任何附加条件(COCO mAP@.5=59.1%, COCO mAP@[.5,.95]= 36.2%)。FPN现在已经成为许多最新探测器的构建模块。

2.1.3里程碑:基于CNN的单级检测

•You Only Look Once (YOLO)

YOLO由R. Joseph等人于2015年提出。它是深度学习时代[20]的第一个单级检测器。YOLO非常快:YOLO的一个快速版本运行速度为155fps, VOC07 mAP=52.7%,而它的增强版本运行速度为45fps, VOC07 mAP=63.4%, VOC12 mAP=57.9%。

YOLO是“You Only Look Once”的缩写。从它的名字可以看出,作者完全抛弃了之前的“提名检测+验证”的检测范式。相反,它遵循一个完全不同的哲学:将单个神经网络应用于整个图像。该网络将图像分成多个区域,并同时为每个区域预测边界框和概率。后来R. Joseph在YOLO的基础上进行了一系列改进,提出了其v2和v3版本[48,49],在保持很高检测速度的同时进一步提高了检测精度。

虽然YOLO的检测速度有了很大的提高,但是与两级检测器相比,它的定位精度有所下降,特别是对于一些小目标。YOLO的后续版本[48,49]和后者提出的SSD[21]更关注这个问题。

•Single Shot MultiBox DetectorSSD)

SSD[21]由W. Liu等人于2015年提出。这是深度学习时代的第二款单级检测器。SSD的主要贡献是引入了多参考和多分辨率检测技术(在2.3.2节介绍),这显著提高了单级探测器的检测精度,特别是对于一些较小的目标。SSD在检测速度和准确度上都有优势(VOC07 mAP=76.8%, VOC12 mAP=74.9%, COCO mAP@.5=46.5%,mAP@[.5,.95]=26.8%,快速版本运行速度为59fps)。SSD与以往任何检测器的主要区别在于,前者可以在网络的不同层上检测到5个不同尺度的目标,而后者只在其顶层运行检测。

•RetinaNet

尽管单级检测器速度快、结构简单,但多年来一直落后于两级检测器的精度。T.-Y。Lin等人发现了背后的原因,并在2017年[23]提出了RetinaNet。他们声称,在密集探测器训练过程中所遇到的极端的前-后级不平衡是主要原因。为此,在RetinaNet中引入了一个新的损失函数“focal损失”,通过对标准交叉熵损失的重构,使检测器在训练过程中更加关注难分类的样本。Focal损失使得单级检测器在保持很高的检测速度的同时,可以达到与两级探测器相当的精度。(COCOmAP@.5 = 59.1%, mAP@ [.5,.95]= 39.1%)。

2.2目标检测数据集和指标(Object Detection Datasets and Metrics)

建立更大的数据集和更少的偏见是开发先进的计算机视觉算法的关键。在目标检测方面,近10年来发布了众多-著名的数据集和基准,包括PASCAL VOC Challenges [50,51] (e.g., VOC2007, VOC2012)、ImageNet Large Scale Visual Recog nition Challenge(如ILSVRC2014) [52], MS-COCO Detection Challenge[53]等。表1给出了这些数据集的统计数据。图4显示了这些数据集的一些图像示例。图3为2008 - 2018年VOC07、VOC12和MS-COCO数据集检测精度的提高情况。

图3。在VOC07、VOC12和MS-COCO数据集上对目标检测精度的提高。图中检测器:DPM-v1 [13], DPM-v5 [21]0, RCNN [16], SPPNet [17], Fast RCNN [18], Faster RCNN [19], SSD [21], FPN [22], Retina-Net [23], RefineDet [55], TridentNet[56]。

图4 (a) PASCAL-VOC07、(b) ILSVRC、(c) MS-COCO和(d) Open images中的一些示例图像和标注。

表1 一些常用的目标检测数据集及其统计数据。

•Pascal VOC

PASCAL Visual Object Classes (VOC)挑战赛1(2005 - 2012)[50,51]是早期计算机视觉界最重要的比赛之一。PASCAL VOC有多种任务,包括图像分类、目标检测,语义分割和动作检测。两种版本的Pascal-VOC主要用于目标检测:VOC07和VOC12,前者由5k tr. images + 12k annotated objects组成,后者由11k tr. images + 27k annotated objects组成。在这两个数据集中(人物:人;动物:鸟、猫、牛、狗、马、羊;交通工具:飞机、自行车、船、公共汽车、小汽车、摩托车、火车;室内:瓶子,椅子,餐桌,盆栽植物、沙发、电视/显示器)。近年来,随着ILSVRC、MS-COCO(即将推出)等大型数据集的发布,VOC逐渐淡出人们的视野,成为大多数新型探测器的试验台。

•ILSVRC

ImageNet大规模视觉识别挑战(ILSVRC) [52]推动了通用目标检测技术的发展。ILSVRC从2010年到2017年每年举办一次。它包含一个使用ImageNet图像[57]的检测挑战。ILSVRC检测数据集包含200类视觉对象。它的图像/目标实例的数量比VOC大两个数量级。例如,ILSVRC-14包含517k图像和534k带注释的目标。

MS-COCO

MS-COCO [53]是目前最具挑战性的目标检测数据集。基于MS-COCO数据集的年度比赛从2015年开始举办。它的目标类别比ILSVRC少,但是目标实例多。例如,MS-COCO-17包含来自80个类别的164k图像和897k带注释的对象。与VOC和ILSVRC相比,MS-COCO最大的进步是除了边框标注外,每个目标都进一步使用实例分割进行标记,以帮助精确定位。此外,MS COCO包含更多的小目标(其面积小于图像的1%)和比VOC和ILSVRC更密集的定位对象。

所有这些特性使得MS-COCO中的对象分布更接近真实世界。就像当时的ImageNet一样,MS-COCO已经成为目标检测社区事实上的标准。

•Open Images

继MS-COCO之后,在2018年推出了开放图像检测(OID)挑战[58],但是这次规模空前。在开放图像中有两个任务:1)标准目标检测,和2)视觉关系检测,检测成对的对象之间的特定关系。对于目标检测任务,数据集由1,910k和15,440k个带注释的边界框图像组成,这些边界框位于600个目标类别上。

• 除了通用的目标检测外其他检测任务数据集在过去的20年里也在特定领域见证了检测应用繁荣,如行人检测、人脸检测、文本检测、交通标志/灯光检测、遥感目标检测等。表2-6列出了一些流行的数据集 在第5节详细介绍了这些任务的检测方法。

2.2.1Metrics指标

我们如何评估目标检测器的有效性?这个问题甚至可能在不同的时间有不同的答案。在早期的检测社区中,对于检测性能的评价标准并没有得到广泛的认可。例如,在行人检测[12]的早期研究中,通常使用“每个窗口的漏检率与假阳性FPPW)”作为度量。然而,每个窗口测量(FPPW)可能存在缺陷,在某些情况下不能预测完整的图像性能。2009年,加州理工学院建立了行人检测基准,从那时起,评估指标从每个窗口(FPPW)改为每个图像的假阳性(FPPI)。近年来,对目标检测最常用的评估方法是“平均精度(AP)”,该方法最早是在VOC2007中引入的。平均精度定义为不同召回情况下的平均检测精度,通常以类别特定的方式进行评估。为了比较所有目标类别的性能,通常使用所有目标类别的平均AP (mAP)作为性能的最终度量。为了测量目标定位精度,使用区域上的交集(IoU)来检查预测框和真实值(ground truth)之间的IoU是否大于预定义的阈值,比如0.5。如果是,则将该对象标识为“成功检测到”,否则将标识为“未检测到”。因此,基于0.5 IoU的平均检测精度多年来已成为目标检测问题的事实上的度量标准。

2014年以后,由于MS-COCO数据集的普及,研究人员开始更加关注边界框位置的准确性。MS-COCO AP没有使用固定的IoU阈值,而是在多个IoU阈值上取平均值,阈值介于0.5(粗定位)和0.95(完美)之间本地化)。这种度量的变化鼓励了更精确的对象定位,并且对于一些实际的应用程序(例如,假设有一个。不再使用固定的借据阈值,MS-COCO AP在多个借据上求平均值

阈值介于0.5(粗定位)和0.95(完美)之间

这种度量的变化鼓励了更精确的对象定位,并且对于一些实际的应用程序(例如,假设有一个机械手尝试抓住一个扳手。

近年来,对开放图像数据集的评价有了进一步的发展,如考虑了盒组和非穷举的图像级类别层次结构。一些研究者也提出了一些替代指标,如“定位回忆精度”[94]。尽管最近发生了一些变化,基于VOC/ co - co的mAP仍然是最常用的目标检测评估指标。

表二:一些流行的行人检测数据集概述

表三:一些流行的人脸检测数据集概述

2.3 目标检测技术的发展

在本节中,我们将介绍检测系统的一些重要构件及其在过去20年中的技术发展。

2.3.1 Early Time’s Dark Knowledge(早期的黑暗知识)

早期的物体检测(2000年之前)没有遵循统一的检测理念,如滑动窗口检测。 当时的探测器通常基于低级和中级视觉设计,如下。

•Components, shapes and edges(组件,形状和边缘)

作为一种重要的认知理论,“按组件识别”长期以来一直是图像识别和物体检测的核心思想。一些早期的研究人员将物体检测定义为对象组件,形状和轮廓之间相似性的度量,包括距离变换,形状上下文和Edgelet(小边特征)等。尽管初始结果很有希望,但在更复杂的检测问题上,工作并不顺利。因此,基于机器学习的检测方法开始繁荣起来。

表四:一些流行的场景文本检测数据集概述

表五:一些流行的交通灯检测和交通标志检测数据集概述

基于机器学习的检测经历了多个时期,包括外观统计模型(1998年之前),小波特征表示(1998-2005)和基于梯度的表示(2005-2012)。

构建目标的统计模型,如图5(a)所示的Eigenfaces(特征脸),是目标检测历史中第一波基于学习的方法。 1991年,M.Turk等人通过使用特征脸分解在实验室环境中实现实时人脸检测。与当时基于规则或基于模板的方法相比,统计模型通过从数据中学习特定于任务的知识,更好地提供了目标外观的整体描述。

自2000年以来,小波特征变换开始主导视觉识别和目标检测。这组方法的本质是通过将图像从像素变换为一组小波系数来学习。在这些方法中,Haar小波由于其高计算效率,主要用于许多目标检测任务,例如一般目标检测,人脸检测,行人检测等。图5(d)显示了一组Haar小波VJ探测器作为人脸学习的基础。

表六:一些遥感目标检测数据集概述。

Early time’s CNN for object detection(目标检测早期的CNN)

使用CNN检测物体的历史可以追溯到20世纪90年代,当时Y. LeCun等人做出了巨大的贡献。由于计算资源的限制,当时的CNN模型比现在的模型要小得多,也要浅得多。尽管如此,在早期基于CNN的检测模型中,计算效率仍然被认为是难以破解的难题之一。Y. LeCun等人对“共享权重复制神经网络”、“空间位移网络”等进行了一系列改进,通过扩展卷积网络的每一层,覆盖整个输入图像,减少了计算量,如图5(b)-(c)所示。这样,只需一次网络的正向传播,就可以提取出整个图像任意位置的特征。这可以被认为是当今全卷积网络(FCN)的原型,FCN是在近20年后提出的。CNN也被应用到其他任务中,如人脸检测和手部跟踪。

图五:早期一些著名的检测模型:(a) Eigenfaces [95],(b) Shared weight networks [96],(c) Space displacement networks (Lenet-5) [97], (d) Haar wavelets of VJ detector [10]。

2.3.2 Technical Evolution of Multi-Scale Detection(多尺度检测技术的发展)

“不同尺寸”和“不同宽高比”目标的多尺度检测是目标检测的主要技术挑战之一。近20年来,多尺度检测经历了多个历史时期:“特征金字塔和滑动窗口(2014年前)”、“基于目标建议(object proposals)的检测(2010-2015年)”、“深度回归(2013-2016年)”、“多参考检测(2015年后)”、“多分辨率检测(2016年后)”,如图6所示。

图六:从2001年到2019年,多尺度检测技术在目标检测中的发展:1)特征金字塔和滑动窗口,2)基于object proposals的检测,3)深度回归,4)多参考检测,5)多分辨率检测。图中检测器: VJ Det. [10], HOG Det. [12], DPM [13, 15], Exemplar SVM [36], Overfeat [103], RCNN [16], SPPNet [17], Fast RCNN [18], Faster RCNN [19], DNN Det. [104], YOLO [20], YOLO-v2 [48], SSD [21], Unified Det. [105], FPN [22], RetinaNet [23], RefineDet [55], TridentNet [56].

• Feature pyramids + sliding windows (before 2014)(金字塔+滑动窗口)

随着VJ检测器后计算能力的提高,研究者们开始更加关注一种直观的检测方法,即构建“特征金字塔+滑动窗口”。从2004年到2014年,基于这种检测范式构建了许多里程碑式的检测器,包括HOG检测器、DPM,甚至深度学习时代的Overfeat检测器(ILSVRC-13定位任务获奖者)。

早期的检测模型,如VJ检测器和HOG检测器,都是专门设计用来检测“固定长宽比”的对象(如人脸和直立的行人),只需要简单地构建特征金字塔,并在其上滑动固定大小的检测窗口。当时没有考虑检测“各种长宽比”(various aspect ratios)。为了检测像PASCAL VOC等外观更复杂的物体,R. Girshick等人开始在特征金字塔外寻找更好的解决方案。“混合模型”[15]是当时最好的解决方案之一,它通过训练多个模型来检测不同长宽比的物体。除此之外,基于范例的检测通过为训练集的每个对象实例(范例)训练单独的模型,提供了另一种解决方案。

随着现代数据集中的对象(例如MS-COCO)变得更加多样化,混合模型或基于范例的方法不可避免地会导致更多的杂类检测模型。于是一个问题就自然而然地产生了:是否存在一种统一的多尺度方法来检测不同长宽比的对象?“目标提案(object proposals)”(即将提出)的提出已经回答了这个问题。

• Detection with object proposals (2010-2015)(目标提名检测(2010-2015))

目标提名引用一组可能包含任何目标的与类无关的候选框。它于2010年首次应用于目标检测。使用目标提名进行检测有助于避免对图像进行彻底的滑动窗口搜索。

目标提名检测算法应满足以下三个要求:1)高召回率,2)高定位精度,3)在前两个要求的基础上,提高精度,减少运算时间。现代的提名检测方法可以分为三类:1)分割分组方法、窗口评分方法和基于神经网络的方法。我们建议读者阅读以下的论文来全面回顾这些方法[129,130]。

早期的提名检测方法遵循自底向上的检测理念,深受视觉显著性检测的影响。后来,研究人员开始转向低水平的视觉(如边缘检测)和更精细的手工技巧,以改进候选框的定位。2014年以后,随着深度CNN在视觉识别领域的普及,自上而下、基于学习的方法在这个问题上开始显现出更多的优势。从那时起, 目标提名检测已经从自底向上的视觉发展到“对一组特定对象类的过度拟合”,并且检测器和建议生成器之间的区别正在变得模糊。

随着“目标提名(object proposal)”对滑动窗口检测的革命性变革,并迅速主导基于深度学习的检测器,2014-2015年,许多研究者开始提出以下问题: 目标提名(object proposal)在检测中的主要作用是什么?是为了提高准确度,还是仅仅为了加快检测速度?为了回答这个问题,一些研究者试图弱化提名(proposa)的作用,或者只是对CNN的特征进行滑动窗口检测,但都没有得到令人满意的结果。在单级检测器和“深度回归技术(即将引入)”的兴起之后,提案检测很快就淡出了人们的视线。

•Deep regression (2013-2016) (深度回归(2013-2016))

近年来,随着GPU计算能力的提高,人们处理多尺度检测的方式变得越来越直接和暴力。使用深度回归来解决多尺度问题的思想非常简单,即,基于深度学习特征直接预测边界框的坐标。这种方法的优点是简单易行,缺点是定位不够准确,特别是对于一些小对象。“多参考检测(Multi-reference detection)”(待介绍)解决了这一问题。

•Multi-reference/-resolution detection (after 2015)(多参考/-分辨率检测(2015年后)

多参考检测是目前最流行的多尺度目标检测框架[19,21,44,48]。它的主要思想是在图像的不同位置预先定义一组不同大小和宽高比的参考框(即锚框),然后根据这些参考框预测检测框。

每个预定义锚盒的典型损失包括两部分:1)类别识别的交叉熵损失和2)目标定位的L1/L2回归损失。损失函数的一般形式可以写成:

其中t和t是预测的位置,而ground-truth是边界框,p和p ∗是它们的类别概率。IOU {a, a ∗}是锚点a和它的ground-truth a之间的 IOU。η是一个IOU阈值,假设是0.5。如果锚点没有覆盖任何目标,其定位损失不计入最终损失。

近两年来另一种流行的技术是多分辨率检测,即在网络的不同层检测不同尺度的目标。自CNN在正向传播过程中自然形成了一个特征金字塔,更容易在较深的层中检测到较大的物体,在较浅的层中检测到较小的物体。多参考和多分辨率检测已成为当前最先进的目标检测系统的两个基本组成部分。

2.3.3边界框回归的技术演化

边界框(BB)回归是一种重要的目标检测技术。它的目标是在初始建议或锚框的基础上细化预测边界框的位置。在过去的20年里,BB回归的演变经历了三个历史时期:无BB(边界框回归)(2008年以前,从BB到BB(2008-2013),从特征(feature)到BB(2013年以后)。图7为边界框回归的演化过程。

图七: 2001 - 2019年bounding box regression技术在目标检测中的发展。图中检测器: VJ Det. [10], HOG Det. [12], Exemplar SVM [36], DPM [13, 15], Overfeat [103], RCNN [16], SPPNet [17], Fast RCNN [18], Faster RCNN [19], YOLO [20], SSD [21], YOLO-v2 [48], Unified Det. [105], FPN [22], RetinaNet [23], RefineDet [55], TridentNet [56].

•Without BB regression(没有BB回归2008年以前)

早期的检测方法,如VJ检测器和HOG检测器,大多不使用BB回归,通常直接将滑动窗口作为检测结果。为了获得一个物体的精确位置,研究人员已经别无选择,只能建造非常密集的金字塔,并在每个位置上密集地滑动探测器。

•From BB to BB(从BB到BB 2008-2013)

第一次将BB回归引入目标检测系统是在DPM中。那时的BB回归通常作为一个后处理块,因此它是可选的。由于PASCAL VOC的目标是预测每个对象的单个边界框,因此DPM生成最终检测的最简单方法应该是直接使用其根过滤器位置。后来,R. Girshick等人提出了一种更复杂的方法来预测一个基于对象假设完整配置的边界框,并将这个过程表示为一个线性最小二乘回归问题。该方法对PASCAL标准下的检测有明显的改进。

•From features to BB(从特征到BB 2013年后)

2015年引入更快的RCNN后,BB回归不再作为单独的后处理模块,而是与检测器集成,以端到端的方式进行训练。同时,BB回归已经演化为直接基于CNN特征预测BB。为了得到更鲁棒的预测,通常使用smooth-L1函数,

或者root-square函数,

作为回归损失,其对异常值的鲁棒性优于DPM中使用的最小二乘损失。一些研究人员还选择将坐标标准化以获得更健壮的结果。

2.3.4 上下文启动的技术演进(Technical Evolution of Context Priming)

视觉对象通常嵌入在周围环境的典型环境中。 我们的大脑利用物体和环境之间的联系来促进视觉感知和认知。 长期以来,上下文启动一直被用于改进检测。 在其进化历史中有三种常见的方法:1)用局部上下文检测,2)用全局上下文检测,和3)上下文交互,如图8所示。

图八:2001 - 2019年context priming在目标检测中的演变: 1)局部上下文检测,2)全局上下文检测,3)上下文交互检测。图中检测器: Face Det. [139], MultiPath [140], GBDNet [141, 142], CC-Net [143], MultiRegion-CNN [144], CoupleNet [145], DPM [14, 15], StructDet [146], YOLO [20], RFCN++ [147], ION [148], AttenContext [149], CtxSVM [150], PersonContext [151], SMN [152], RetinaNet [23], SIN [153].

• 使用局部上下文环境检测(Detection with local context)

局部上下文是指要检测的对象周围区域的视觉信息。长期以来,人们一直认为局部上下文有助于改进目标检测。在21世纪初,Sinha和Torralba[139]发现,包含面部边界轮廓等局部上下文区域可以显著提高人脸检测性能。Dalal和Triggs还发现,加入少量的背景信息可以提高行人检测[12]的准确性。最近的基于深度学习的检测器也可以通过简单地扩大网络的接受域或目标提名(object proposals)的大小来根据局部上下文进行改进。

•全局上下文检测(Detection with global context)

全局上下文利用场景配置作为目标检测的额外信息源。对于早期的目标检测器,集成全局上下文的一种常见方法是集成组成场景的元素的统计摘要,比如Gist。对于现代的基于深度学习的检测器,有两种方法来集成全局上下文。第一种方法是利用CNN特性的大接受域(甚至比输入图像更大)或全局池操作。第二种方法是把全局上下文看作是一种序列信息,然后用递归神经网络来学习它。

• 上下文交互(Context interactive)

上下文交互是指通过视觉元素的交互(如约束和依赖关系)来传达的信息。对于大多数目标检测器,在不利用对象实例之间的关系的情况下分别检测和识别对象实例。最近的一些研究表明,考虑上下文的交互作用可以改进现代的目标检测器。最近的一些改进可以分为两类,第一类是研究单个对象之间的关系,第二类是研究对象和场景之间的依赖关系建模。

2.3.5非极大值抑制的技术演化

非极大值抑制(NMS)是一组重要的目标检测技术。由于相邻窗口的检测分数往往相近,因此本文采用非最大抑制作为后处理步骤,去除复制的边界框,得到最终的检测结果。在目标检测的早期,NMS并不总是集成的。这是因为当时目标检测系统的期望输出并不完全清楚。在过去的20年里,NMS逐渐发展成以下三组方法:1)贪心选择,2)边界框聚合,3)学习NMS,如图9所示。

图九:从1994年到2019年,non-max suppression (NMS)技术在目标检测中的发展: 1) Greedy selection,2) Bounding box aggregation,3) Learn to NMS。该图中的检测器有: VJ Det. [10], Face Det. [96], HOG Det. [12], DPM [13, 15], RCNN [16], SPPNet [17], Fast RCNN [18], Faster RCNN [19], YOLO [20], SSD [21], FPN [22], RetinaNet [23], LearnNMS [154], MAP-Det [155], End2End-DPM [136], StrucDet [146], Overfeat [103], APC-NMS [156], MAPC [157], SoftNMS [158], FitnessNMS [159].

•贪心选择(Greedy selection)

贪心选择是一种老式但最流行的目标检测方法。该过程背后的思想简单直观:对于一组重叠检测,选择检测分值最大的边界框,并根据预定义的重叠阈值(如0.5)删除相邻框。上述处理以贪心的方式迭代执行。

虽然贪心选择已成为NMS的实际方法,但仍有一定的改进空间,如图11所示。首先,得分最高的检测框可能不是最合适的。其次,它可能会抑制附近的对象。最后,它不抑制假阳性。近年来,尽管为了提高它的性能158,159,163,最近进行了一些手工修改 ,据我们所知,贪心选择仍然是当今目标检测的最强基准。

•BB聚合

BB聚合是另一组用于NMS的技术,其思想是将多个重叠的边界框组合或聚类到一个最终检测中。这种方法的优点是充分考虑了对象关系及其空间布局。

目前已有一些著名的检测器使用这种方法,如VJ检测器[10]和Overfeat。

•学习NMS(Learning to NMS)

最近一组受到广泛关注的NMS改进是学习NMS。这类方法的主要思想是将NMS看作一个过滤器,对所有原始检测进行重新评分,并以端到端方式将NMS训练为网络的一部分。与传统的手工NMS方法相比,这些方法在改善遮挡和密集目标检测方面取得了良好的效果。

2.3.6难例挖掘技术演化

目标检测器的训练本质上是一个不平衡的数据学习问题。在基于滑动窗口的检测器的情况下,每个对象的背景和对象之间的不平衡可能高达10^4∼10^5个背景窗口。现代检测数据集要求对目标长宽比进行预测,进一步将不平衡比提高到10^6∼10^7。在这种情况下,使用所有的背景数据对训练都是有害的,因为大量简单的否定会压倒学习过程。难例挖掘(HNM)旨在解决训练过程中数据不平衡的问题。HNM在目标检测中的演化如图10所示。

图十: 从1994年到2019年,目标检测中hard negative mining技术的发展。图中检测器有: Face Det. [164], Haar Det. [29], VJ Det. [10], HOG Det. [12], DPM [13, 15], RCNN [16], SPPNet [17], Fast RCNN [18], Faster RCNN [19], YOLO [20], SSD [21], FasterPed [165], OHEM [166], RetinaNet [23], RefineDet [55].

图十一:使用标准的基于贪心选择的非最大抑制时可能失败的例子:(a)得分最高的框可能不是最佳匹配,(b)它可能抑制附近的对象,(c)它不抑制假阳性。图像来自R. Rothe等人,在ACCV2014 [156]。

•自助迭代$(Bootstrap)

目标检测中的Bootstrap是一组训练技巧,其中训练从一小部分背景样本开始,然后在训练过程中迭代地添加新的误分类背景。在早期的目标检测器中,最初引入bootstrap的目的是减少对数百万个背景样本的训练计算。后来成为DPM和HOG检测器中解决数据不平衡问题的标准训练技术。

•基于深度学习的HNM检测器(HNM in deep learning based detectors)

在深度学习时代后期,由于计算能力的提高,在2014-2016年的目标检测中,bootstrap很快被丢弃[16-20]。为了缓解训练过程中的数据不平衡问题,像图12这样的检测器速度更快。

RCNN和YOLO只是在正面和负面窗口之间平衡权重。然而,研究人员后来发现,权重平衡不能完全解决不平衡的数据问题[23]。为此,2016年以后,bootstrap被重新引入到基于深度学习的检测器中。例如,在SSD[21]和OHEM中,只有很小一部分样本(损失值最大的样本)的梯度会被反向传播。在RefineDet[55]中,设计了一个“锚定细化模块”来过滤easy negatives$$$。另一种改进是设计新的损失函数,通过重新定义标准的交叉熵损失,使其更关注于困难的、分类错误的样例[23]。

3. 检测加速(SPEED-UP OF DETECTION)

加速目标检测一直是一个重要而又具有挑战性的问题。在过去的20年里,目标检测领域已经发展了复杂的加速技术。这些技术大致可以分为“检测通道$$加速”、“检测引擎加速”和“数值计算加速”三个层次,如图12所示。

图十二:目标检测中加速技术的概述

3.1特征图共享计算(Feature Map Shared Computation)

在目标检测器的不同计算阶段中,特征提取通常占主导地位。对于基于滑动窗口的检测器,计算冗余从位置和尺度两方面入手,前者是由相邻窗口之间的重叠引起的,后者是由相邻尺度之间的特征相关性引起的。

3.1.1空间计算冗余和加速(Spatial Computational Redundancy and Speed Up)

减少空间计算冗余最常用的方法是特征图共享计算,即,在滑动窗口前只计算一次整个图像的特征图。传统探测器的“图像金字塔”可以看作是一个“特征金字塔”。例如,为了加快HOG行人检测器的速度,研究者通常会将整个输入图像的“HOG map”进行累加,如图13所示。然而,这种方法的缺点也很明显,即, 特征图分辨率(此特征图上滑动窗口的最小步长)将受到单元格大小的限制。如果一个小对象位于两个单元格之间,那么所有检测窗口都可以忽略它。解决这个问题的一个方法是构建一个完整的特征金字塔,这将在第3.6节中介绍。

特征图共享计算的思想在基于卷积的检测器中也得到了广泛的应用。一些相关的著作可以追溯到20世纪90年代[96,97]。近年来,大多数基于CNN的探测器,如SPPNet[17]、Fast-RCNN[18]、Faster-RCNN[19],都采用了类似的思路,实现了数十倍甚至数百倍的加速。

图十三:说明如何计算图像的HOG映射。

3.1.2缩放计算冗余并加速(Scale Computational Redundancy and Speed Up)

为了减少尺度计算冗余,最成功的方法是直接缩放特征而不是图像,这种方法首次应用于VJ检测器[10]。然而,由于模糊效果,这种方法不能直接应用于类似于HOG的特性。对于这个问题,P.Dollr等人通过广泛的统计分析,发现了HOG和整体信道特征的相邻尺度之间的强(对数线性)相关性[171]。这种相关性可以通过近似相邻尺度的特征图来加速特征金字塔的计算[172]。此外,构建“检测器金字塔”是避免尺度计算冗余的另一种方法,即,通过简单地在一个特征图上滑动多个检测器来检测不同尺度的对象,而不是对图像或特征进行重新缩放[173]。

3.2分类器加速(Speed up of Classifiers)

传统的基于滑动窗口的检测器,如HOG检测器和DPM,由于计算复杂度较低,更喜欢使用线性分类器而不是非线性分类器。核SVM等非线性分类器的检测精度较高,但同时也带来较高的计算开销。作为一种标准的非参数方法,传统的核函数法没有固定的计算复杂度。当我们有一个非常大的训练集时,检测速度会变得非常慢。

在目标检测中,有很多方法可以加快核分类器的速度,其中最常用的是“模型近似(model approximation)”[30,174]。由于经典核支持向量机的决策边界只能由一小组训练样本(支持向量)确定,因此推理阶段的计算复杂度与支持向量的个数成正比: O(Nsv)。简化集合向量(Reduced Set Vectors)[30]是核支持向量机的一种近似方法,其目的是用少量的合成向量来获得一个等价的决策边界。

另一种提高核SVM在目标检测中的速度的方法是将其决策边界近似为分段线性形式,从而获得一个恒定的推理时间[174]。核方法也可以通过稀疏编码方法来加速[175]。

3.3级联检测(Cascaded Detection)

级联检测是一种常用的目标检测技术[10,176]。它需要一个由粗到精的检测理念:使用简单的计算过滤掉大部分简单的背景窗口,然后用复杂的窗口处理那些更困难的窗口。VJ检测器是级联检测的代表。在此之后,许多后续的目标检测器,如HOG检测器和DPM,都使用了这种技术来加速。近年来,级联检测也被应用到基于深度学习的检测器中,特别是对于“大场景中的小对象”的检测任务,如人脸检测[179,180],行人检测[165,177,181]等。除了算法加速外,级联检测还被应用于解决其他问题,如提高对难例的检测[182-184],整合上下文信息[143,185],提高定位精度[104,125]。

3.4网络修剪与量化

“网络剪枝”和“网络量化”是加速CNN模型的两种常用技术,前者是指对网络结构或权值进行剪枝以减小其大小,后者是指减少激活或权值的码长。

3.4.1网络修剪

“网络修剪”的研究最早可以追溯到20世纪80年代。当时,Y. LeCun等人提出了一种称为“最优脑损伤”的方法来压缩多层感知器网络的参数[186]。该方法利用二阶导数逼近网络的损失函数,从而去除一些不重要的权重。基于这一思想,近年来的网络剪枝方法通常采用迭代的训练和剪枝过程,即:在每个训练阶段后只移除一小部分不重要的权值,并重复这些操作[187]。传统的网络剪枝只是简单地去除不重要的权值,这可能导致filter中存在一些稀疏连接模式,不能直接应用于CNN模型的压缩。解决这个问题的一个简单方法是删除整个filter而不是独立的权重[188,189]。

3.4.2网络量化(Network Quantification)

最近的网络量化工作主要集中在网络二值化上,其目的是通过将网络的激活或权值量化为二进制变量(如0/1),从而将浮点运算转换为AND或NOT逻辑运算,从而加快网络的速度。网络二值化可以显著加快计算速度,并减少网络的存储,从而更容易部署到移动设备上。上述思想的一种可能实现是用二进制变量最小二乘法近似卷积[190]。使用多个二进制卷积的线性组合可以得到更精确的近似[191]。此外,一些研究人员进一步开发了GPU加速库进行二值化计算,获得了更显著的加速结果[192]。

3.4.3网络蒸馏(Network Distillation)

蒸馏是将大型网络(“teacher net”)的知识压缩成小型网络(“student net”)的一般框架[193,194]。最近,这一思想被用于加速目标检测[195,196]。这个想法的一个直接的方法是使用teacher net来指导一个(轻量级) student net的训练,后者可用于加速检测[195]。另一种方法是对候选区域进行变换,使student net和teacher net的特征距离最小化。该方法使检测模型的速度提高了2倍,同时达到了相当的精度[196]。

3.5轻量级网络设计(Lightweight Network Design

最后一组加速基于CNN的检测器的方法是直接设计一个轻量级的网络,而不是使用现成的检测引擎。研究人员长期以来一直在探索网络的正确配置,以便在有限的时间成本下获得准确性。除了一些通用的设计原则如“更少的通道,更多的层”[197],近年来也提出了一些其他的方法:1)分离卷积,2)群卷积,3)深度可分离卷积,4)瓶颈(bottle-neck)设计,5)神经架构搜索。

3.5.1分离卷积(Factorizing Convolutions)

分离卷积是构建轻量级CNN模型最简单、最直接的方法。有两组分解方法。

第一组的方法是因式分解一个大的卷积filter一组的小空间维度(147、198),如图14所示(b)。例如,一个人可以因式分解7x7 filter为三个3x3 filter,它们共享相同的感受野但后者更有效率。另一个例子是将k×k filter分解为k×1 filter和1×k filter [198,199],这对于非常大的filter来说可能更有效,比如15x15[199]。该思想最近被用于目标检测[200]。

第二种方法是将一组大卷积分解为通道维数为两组的小卷积[201,202],如图14所示(c)。例如,可以近似一个具有d个filter卷积层与c通道的特征图通过 filters+一个非线性激活+另一个d filters( d’< d)。在这种情况下,原始层的复杂度O(dk^2 c)可以降低到O(d’k^2 c) + O(dd’)。

3.5.2 群卷积(Group Convolution)

群卷积的目的是通过将特征通道划分为多个不同的组,然后分别对每个组进行卷积,从而减少卷积层中参数的数量[189,203],如图14 (d)所示。如果我们将特征通道平均分成m组,不改变其他构型,理论上卷积的计算复杂度将降低到原来的1/m。

3.5.3深度可分离卷积(Depth-wise Separable Convolution)

图14 (e)所示的深度可分离卷积是近年来流行的一种构建轻量级卷积网络的方法[204]。当组数等于通道数时,它可以看作是群卷积的一个特例。假设我们有一个卷积层,带有d个filters和一个c通道的特征图。每个filter的大小为k×k。对于深度可分卷积,每个k×k×c滤波器首先被分割成c个片,每个片的大小为k×k×1,然后在每个通道中对filter的每个片分别进行卷积。最后,使用多个1x1 filter进行维度转换,以便最终的输出应该具有d通道。利用深度可分卷积,将计算复杂度从O(dk^2 c)降低到O(ck^2) + O(dc)。该思想最近被应用于目标检测和细粒度分类[205-207]。

3.5.4 Bottle-neck 设计

与前一层相比,神经网络中的bottleneck层只包含很少的节点。它可以用来学习降维输入的高效数据编码,这在深度自编码中得到了广泛的应用[208]。近年来,bottle-neck设计一直是广泛用于设计轻量级网络[47,209 - 212]。在这些方法中,一种常见的方法是压缩检测器的输入层,以减少从检测通道开始的计算量[209-211]。另一种方法是压缩检测引擎的输出,使feature map变薄,使其在后续检测阶段更加高效[47,212]。

3.5.5神经架构搜索(Neural Architecture Search)

近年来,人们对利用神经架构搜索(NAS)自动设计网络体系结构而不是依赖于专家经验和知识产生了浓厚的兴趣。NAS已应用于大规模图像分类[213,214],目标检测[215]和图像分割[216]任务。NAS最近在设计轻量级网络方面也显示出了很好的结果,其中在搜索过程中考虑了预测精度和计算复杂度的限制[217,218]。

3.6数值加速

在这一节中,我们主要介绍了四种重要的数值加速方法,它们在目标检测中经常使用:1)积分图像加速,2)频域加速,3)向量量化,4)降阶近似。

3.6.1积分图像加速

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

如果dg(x)/dx是一个稀疏信号,那么卷积可以被方程右边的部分加速。虽然VJ探测器[10]以积分图像加速而闻名,但在它诞生之前,积分图像已经被用来加速CNN模型[219],并达到了10倍以上的加速度。

除了上述例子外,积分图像还可以用来加速目标检测中更一般的特征,如颜色直方图、梯度直方图[171,177,220,221]等。一个典型的例子是通过计算积分HOG映射来加速HOG maps[177, 220]。积分HOG map不是在传统的积分图像中积累像素值,而是在图像中积累梯度方向,如图15所示。由于cell的直方图可以看作是某一区域梯度向量的和,利用积分图像可以计算任意位置和大小的矩形区域的直方图,计算开销是恒定的。积分HOG地图已被应用于行人检测中,并在不损失任何精度的前提下实现了数十倍的加速度[177]。

图十五:如何计算“积分HOG映射”的说明[177]。利用积分图像技术,我们可以在计算复杂度不变的情况下,有效地计算任意位置和任意大小的直方图特征。

2009年晚些时候,P. Dollar等人提出了一种新的图像特征,称为积分通道特征(ICF),可以认为是积分图像特征的一种更为普遍的情况,并成功地应用于行人检测[171]。ICF在其所处的时间内,以接近实时的检测速度实现了最先进的检测精度。

3.6.2频域加速(Speed Up in Frequency Domain)

卷积是目标检测中的一种重要的数值运算形式。由于线性检测器的检测可以看作是特征图与检测器权值之间的窗口内积,因此该过程可以通过卷积来实现。

卷积可以在很多方面得到加速,傅里叶变换是一个非常实用的选择尤其是对于加速那些大的feature。频域加速卷积的理论基础是信号处理中的卷积定理,即在合适的条件下,两个信号卷积的傅里叶变换是其傅里叶空间的点乘:

其中F是傅里叶变换, 是傅里叶反变换,I和W是输入图像和filter,∗是卷积运算, 是点积。利用快速傅里叶变换(FFT)和快速傅里叶逆变换(IFFT)可以加速上述计算。FFT和IFFT现在经常被用来加速CNN模型[222-225]和一些经典的线性目标检测器[226],这使得检测速度提高了一个数量级。图16是在频域加速线性目标检测器(如HOG和DPM)的标准通道(pipeline)。

图十六:利用快速傅立叶变换和反快速傅立叶变换在频域中加速线性检测器(如HOG检测器、DPM等) [226]。

3.6.3向量量化(Vector Quantization)

向量量化(VQ)是信号处理中的一种经典的量化方法,其目的是通过一组小的原型向量来近似一组大数据的分布。它可用于数据压缩和加速目标检测中的内积运算[227,228]。例如,使用VQ,可以将HOG直方图分组并量化为一组原型直方图向量。然后在检测阶段,通过查表操作实现特征向量与检测权值之间的内积。由于该过程中没有浮点乘法和除法,因此DPM和样本SVM检测器的速度可以提高一个数量级[227]。

3.6.4降秩近似(Reduced Rank Approximation)

在深度网络中,全连接层的计算本质上是两个矩阵的乘法。当参数矩阵 较大时,检测器的计算量较大。例如,在Fast RCNN检测器[18]中,近一半的正向传播时间用于计算全连接层。降秩近似是一种加速矩阵乘法的方法。它的目的是对矩阵W进行降秩分解:

u是由w的第一个t左奇异向量构成的u×t矩阵,∑t是包含w的上t奇异值的t×t对角矩阵,v是由w的第一个t右奇异向量构成的v×t矩阵。上述过程也称为截断奇异值分解(截断SVD),将参数数量从uv减少到t(u+v),如果t比min(u,v)小得多,这一点可能很重要。截断SVD用于加Fast RCNN检测器[18]并实现x2加速。

4.目标检测的最新进展 (RECENT ADVANCES IN OBJECT DETECTION)

在本节中,我们将回顾近三年来最先进的物体检测方法。

4.1使用更好的引擎进行检测(Detection with Better Engines)

近年来,deep CNN在许多计算机视觉任务中发挥了核心作用。由于检测器的精度在很大程度上取决于其特征提取网络,因此本文将主干网络(如ResNet和VGG)称为检测器的“引擎”。 图17为三种知名检测系统的检测精度:Faster RCNN [19],R-FCN[46]和有着不同选择引擎[27]的SSD[21]。

图十七:三种检测器的检测精度的比较:Faster RCNN [19], R-FCN [46] 和SSD [21] 在具有不同检测引擎的MS-COCO数据集上。图片来自J. Huang et al. CVPR2017 [27]。

在本节中,我们将介绍深度学习时代的一些重要的检测引擎。关于这个话题的更多细节,我们请读者参考下面的调查[229]。

AlexNet: AlexNet[40]是一个八层深度网络,是第一个开启计算机视觉深度学习革命的CNN模型。AlexNet赢得了2012年ImageNet LSVRC-2012竞赛中,错误率大幅领先[15.3% VS . 26.2%(第二名)]。截至2019年2月,Alexnet论文被引用超过3万次。

VGG: VGG是2014年由牛津视觉几何小组(Visual Geometry Group, VGG)提出的[230]。VGG将模型的深度增加到16-19层,使用非常小的卷积filter(3x3),而不是以前AlexNet中使用的5x5和7x7。VGG在当时的ImageNet数据集上实现了最先进的性能。

GoogLeNet: GoogLeNet a.k.Inception[198,231 - 233]是谷歌Inc.自2014年以来提出的CNN模型的一个大家族。GoogLeNet增加了CNN的宽度和深度(多达22层)。Inception系列的主要贡献是引入了因子卷积和批处理标准化。

ResNet: Deep Residual Networks (ResNet)[234],由K. He(何凯明)等人于2015年提出,是一种新型的卷积网络架构,它比以前使用的卷积网络结构要深很多(高达152层)。ResNet的目标是简化网络的训练,将其层重新构造为参照层输入学习残差函数。ResNet在2015年多次计算机视觉大赛中获奖,包括ImageNet检测、ImageNet定位、COCO检测、COCO分割。

DenseNet: DenseNet[235]由G. Huang、Z. Liu等人于2017年提出。ResNet的成功表明,CNN的short cut连接使我们能够训练更深入、更准确的模型。作者接受了这一观察结果,并引入了一个紧密连接的块,它以前馈方式将每一层连接到每一层。

SENet: Squeeze and Excitation Networks (SENet)是由J. Hu和L. Shen等人于2018年提出的[236]。它的主要贡献是集成了global pooling和shuffling,以了解特征图在通道方面的重要性。SENet在ILSVRC 2017年分类竞赛中获得第一名。

•带有新引擎的目标探测器(Object detectors with new engines)

近三年来,许多最新的引擎已应用于目标检测。例如,一些最新的目标检测模型,如STDN [237], DSOD [238], TinyDSOD [207], Pelee[209],都选择DenseNet[235]作为检测引擎。Mask RCNN[4]作为实例分割的最先进模型,采用了下一代ResNet: ResNeXt[239]作为其检测引擎。此外,为了加快检测速度,在MobileNet[205]、LightHead RCNN[47]等检测器中也采用了由Incepion改进版Xception[204]引入的深度可分离卷积运算。

4.2更好特征的检测(Detection with Better Features)

特征表示的质量是目标检测的关键。近年来,许多研究人员在一些最新的引擎的基础上,进一步提高了图像特征的质量,其中最重要的两组方法是:1)特征融合和2)学习具有较大接受域的高分辨率特征。

4.2.1为什么特征融合很重要?(Why Feature Fusion is Important?)

不变性和等方差是图像特征表示的两个重要性质。分类需要不变的特征表示,因为它的目的是学习高级语义信息。由于目标定位的目的是区分位置和尺度的变化,所以目标定位需要等变表示。由于目标检测由目标识别和定位两个子任务组成,因此检测器必须同时学习不变性和等方差。

近三年来,特征融合在目标检测中得到了广泛的应用。由于CNN模型由一系列卷积层和池化层组成,更深层次的特征具有更强的不变性,但等方差较小。虽然这有利于分类识别,但在目标检测中定位精度较低。相反,较浅层次的特征不利于学习语义,但它有助于目标定位,因为它包含更多关于边缘和轮廓的信息。因此,CNN模型中深度和深度特征的融合有助于提高不变性和等方差。

4.2.2不同方式的特征融合(Feature Fusion in Different Ways)

在目标检测中进行特征融合的方法有很多。本文从两个方面介绍了近年来的一些方法:1)处理流程和2)元素智能操作。

•处理流程(Processing flow)

目前用于目标检测的特征融合方法主要分为两类:1)自底向上融合,2)自顶向下融合,如图18 (a)-(b)所示。自底向上的融合通过跳过连接将浅层特征转发到更深的层[237,240 - 242]。相比之下,自顶向下融合将更深层次的特征反馈给更浅层次的特征[22,55,243-246]。除了这些方法,最近还提出了更复杂的方法,例如跨不同层编织特征[247]。

由于不同层的特征图在空间维度和通道维度上的尺寸可能不同,因此可能需要对特征图进行调整,如调整通道数量、上采样低分辨率特征图或下采样高分辨率特征图,使其大小合适。最简单的方法是使用最接近或双线性插值[22,244]。此外,fractional strided卷积(又称转置卷积)[45,248]是近年来另一种常用的调整feature map大小和调整通道数量的方法。使用fractional strided卷积的优点是,它可以学习一种适当的方法来自己执行上采样[55、212、241-243、245、246、249]。

•Element-wise操作

从局部的角度看,特征融合可以看作是不同特征映射之间的Element-wise操作。有三组方法:1) Element-wise 求和,2) Element-wise乘积,3)拼接(concatenation),如图18 (c)-(e)所示。Element-wise求和是执行特征融合最简单的方法。它已被频繁地用于许多最近的目标检测器[22,55,241,243,246]。element-wise product[245,249 - 251]与element-wise sum非常相似,唯一的区别是使用乘法而不是求和。element-wise product的一个优点是,它可以用来抑制或突出这些特性。在一定区域内,这可能进一步有利于小目标检测[245,250,251]。特征拼接是特征融合的另一种方式[212,237,240,244]。它的优点是可以用来集成不同区域的上下文信息[105,144,149,161],缺点是增加了内存[235]。

图十八:不同的特征融合方法的说明: (a) bottomup fusion, (b) top-down fusion, (c) element-wise sum, (d) element-wise product, 和 (e) concatenation.

4.2.3学习接受域大的高分辨率特征(Learning High Resolution Features with Large Receptive Fields)

接受域和特征分辨率是基于CNN检测器的两个重要特点,前一个是指输入像素的空间范围导致的计算一个单独像素的输出,而后者对应于一个下采样的速度输入和特征图 。具有较大接受域的网络能够捕获更大范围的上下文信息,而具有较小接受域的网络则可能更专注于局部细节。

正如我们前面提到的,特征分辨率越低,就越难检测小对象。提高特征分辨率最直接的方法是去除池化层或降低卷积下采样率。但这将带来一个新的问题,即由于输出步长减小,接收域会变得太小。换句话说,这将缩小探测器的“视线”,并可能导致一些较大的漏检对象。

一种同时提高接收域和特征分辨率的方法是引入膨胀卷积(又称无孔卷积,或带孔卷积)。扩展卷积最初是在语义分割任务中提出的[252,253]。其主要思想是对卷积滤波器进行扩展,使用稀疏参数。

例如,膨胀率为2的3x3滤波器与5x5内核具有相同的接受域,但只有9个参数。膨胀卷积目前已广泛应用于目标检测中[21,56,254,255],在不需要任何额外参数和计算代价的情况下,被证明是提高精度的有效方法。

4.3 超越滑动窗口(Beyond Sliding Window)

虽然目标检测已经从手工特征发展到深度神经网络,但检测仍然遵循“特征图滑动窗口”的模式[137]。最近,有一些超越滑动窗口的检测器。

•子区域搜索检测(Detection as sub-region search)

子区域搜索[184,256-258]提供了一种新的检测方法。最近的一种方法是将检测视为一个路径规划过程,从初始网格开始,最终收敛到所需的ground truth boxs[256]。另一种方法是将检测看作是一个更新迭代过程,对预测边界框的角点进行细化[257]。

•关键点定位检测(Detection as key points localization)

关键点定位是一项重要的计算机视觉任务,有着广泛的应用,如面部表情识别[259]、人体姿态识别[260]等。由于图像中的任何对象都可以由其在ground truth box中的左上角和右下角唯一确定,因此检测任务可以等价地构造为成对的关键点定位问题。这个想法最近时间的一个实现是预测角点的热图[261]。该方法的优点是可以在语义分割框架下实现,不需要设计多尺度的anchor boxes。

4.4本地化改进(Improvements of Localization)

为了提高定位精度,目前的检测方法主要有两种:1)边界框细化法2)设计新的损失函数进行精确定位

4.4.1边界框细化(Bounding Box Refinement)

提高定位精度最直观的方法是对边界框进行细化,可以将其视为检测结果的后处理。尽管边界框回归已经集成到大多数现代目标检测中,但是仍然有一些具有意外规模的对象不能被任何预定义的anchor很好地捕获。这将不可避免地导致对其位置的不准确预测。因此,最近引入了“迭代边界框细化(iterative bounding box refinement)”[262-264],将检测结果迭代地输入BB回归器,直到预测收敛到正确的位置和大小。但也有研究人员认为该方法不能保证定位精度的单调性[262],即多次使用BB回归可能会使定位退化。

4.4.2改进损失函数,实现精确定位

在大多数现代检测中,都考虑目标定位作为一个坐标回归问题。然而,这个范例有两个缺点。首先,回归损失函数不对应于最终本地化求值。例如,我们不能保证一个较低的回归误差总是会产生较高的 IOU预测,特别是当对象具有非常大的纵横比时。第二,传统的边界框回归方法不提供本地化的置信度。当多个BB相互重叠,这可能导致在非极大抑制中失败(请参阅详细信息第2.3.5)。设计新的损失函数可以缓解上述问题。最直观的设计是直接使用IoU作为定位损失函数[265]。其他一些研究人员进一步提出了一种基于人工智能引导的NMS,以提高训练和检测阶段的定位[163]。此外,一些研究者也尝试在概率推理框架下改进定位[266]。与以往直接预测框坐标的方法不同,该方法预测了边界框位置的概率分布。

4.5分割学习(Learning with Segmentation)

目标检测和语义分割是计算机视觉中的重要任务。近年来的研究表明,通过语义分割学习可以提高目标检测能力。

4.5.1为什么分割可以提高检测?(Why Segmentation Improves Detection?)

语义分割提高目标检测能力有三个原因。

• 分割帮助分类识别(Segmentation helps category recognition)

边缘和边界是构成人类视觉认知的基本要素[267,268]。在计算机视觉中,物体(如汽车、人)和物体(如天空、水、草)的区别在于前者通常有一个封闭的、明确的边界,而后者没有。由于语义分割任务的特征能够很好地捕捉到对象的边界,因此分割可能有助于分类识别。

•分割有助于准确定位(Segmentation helps accurate localization)

Ground-truth边界框由其定义良好的边界决定。对于一些特殊形状的物体(例如,想象一只有很长尾巴的猫),很难预测高IOU定位。由于目标边界可以很好地编码在语义分割特征中,分割学习有助于准确的目标定位。

•分割可以作为上下文嵌入(Segmentation can be embedded as context)

日常生活中的物体被不同的背景所包围,如天空、水、草等,这些元素构成了一个物体的语境。整合上下文的语义分割将有助于目标检测,例如,飞机更有可能出现在空中而不是水上。

4.5.2分割如何提高检测?(How Segmentation Improves Detection?)

通过分割提高目标检测的主要方法有两种:1)特征丰富学习2)多任务损失函数学习。

•特征丰富学习(Learning with enriched features)

最简单的方法是将分割网络看作一个固定的特征提取器,并将其作为附加特征集成到检测框架中[144,269,270]。该方法的优点是易于实现,缺点是分割网络可能带来额外的计算。

•使用多任务损失函数学习(Learning with multi-task loss functions)

另一种方法是在原有检测框架的基础上引入额外的分割分支,用多任务损失函数(分割损失+检测损失)训练该模型[4,269]。在大多数情况下,分割分支将在推理阶段被删除。优点是检测速度不受影响,缺点是训练需要像素级的图像标注。为此,一些研究人员采用了“弱监督学习”的思想:他们不是基于像素级注释掩码进行训练,而是基于边界框级注释训练分割分支[250,271]。

4.6旋转和尺度变化的鲁棒检测(Robust Detection of Rotation and Scale Changes)

目标旋转和尺度变化是目标检测中的重要挑战。由于CNN学习到的特征是不受旋转和尺度变化的影响的,近年来很多人在这个问题上做出了努力。

4.6.1旋转鲁棒检测(Rotation Robust Detection)

目标旋转在人脸检测、文本检测等检测任务中非常常见。这个问题最直接的解决方案是数据增强,使任何方向的对象都能被扩充的数据很好地覆盖[88]。另一种解决方案是为每个方向训练独立的检测器[272,273]。除了这些传统的方法,最近还有一些新的改进方法。

•旋转不变损失函数

旋转不变损失函数学习的思想可以追溯到20世纪90年代[274]。最近的一些工作在原有的检测损失函数上引入了一个约束,使旋转对象的特征不改变(275、276)。

•旋转校准(Rotation calibration)

改进旋转不变量检测的另一种方法是对候选对象进行几何变换[277-279]。这对于多级检测器尤其有用,早期的相关关系将有利于后续的检测。这种思想的代表是空间变换网络(STN)[278]。STN目前已被用于旋转文本检测[278]和旋转人脸检测[279]。

•旋转ROI池化(Rotation RoI Pooling)

在两阶段检测器中,特征池化的目标是为任意位置和大小的目标提名提取固定长度的特征表示,首先将提名均匀地划分为一组网格,然后将网格特征串联起来。由于网格划分是在直角坐标系下进行的,其特征对旋转变换不具有不变性。最近的一项改进是在极坐标下对网格进行网格划分,使特征对旋转变化具有鲁棒性[272]。

4.6.2尺度鲁棒检测(Scale Robust Detection)

近年来,在尺度鲁棒检测的训练和检测阶段都有了提升。

•尺度适应性训练(Scale adaptive training)

大多数现代检测器都是将输入图像重新缩放到一个固定的尺寸,并将物体在所有尺度下的损失进行反向传播,如图19 (a)所示。但是,这样做的缺点是会出现“尺度不平衡”问题。在检测过程中构建图像金字塔可以缓解这一问题,但不能从根本上解决[46,234]。最近的改进是尺度归一化的图像金字塔(SNIP)[280],它构建图像金字塔的训练和检测阶段,只有反向传播一些选择尺度的 损失,如图19(b)所示。一些研究人员进一步提出更有效的训练策略:高效重采样SNIP(SNIPER)[281],即裁剪(crop)和缩放(re-scale)图像为一组子区域,以便从大型批量训练中获益。

图十九:多尺度目标检测的不同训练策略:(a):对单个分辨率图像进行训练,对所有尺度的对象进行反向传播[17 - 19,21]。(b)对多分辨率图像(图像金字塔)进行训练,对选定尺度的对象进行反向传播。如果一个物体太大或太小,它的梯度将被丢弃[56,280,281]。

•尺度自适应检测(Scale adaptive detection)

现代检测器大多采用固定的结构来检测不同尺寸的物体。例如,在一个典型的基于CNN的检测器中,我们需要谨慎定义anchor的大小。这样做的一个缺点是配置不能适应意外的规模变化。为了提高对小目标的检测,近年来的一些检测器提出了一些“自适应放大”技术,自适应地将小目标放大为“大目标”[184,258]。最近的另一项改进是学习预测对象在图像中的尺度分布,然后根据分布自适应地重新缩放图像[282,283]。

4.7从零开始训练(Training from Scratch)

大多数基于深度学习的检测器首先在大规模数据集(如ImageNet)上进行预训练,然后针对特定的检测任务进行微调。人们一直认为预训练有助于提高泛化能力和训练速度,问题是,我们真的需要在ImageNet上对检测器进行预训练吗?事实上,采用预训练网络进行目标检测存在一定的局限性。第一个限制是ImageNet分类和目标检测之间的分歧,包括它们的损失函数和尺度/类别分布。第二个限制是领域(domain)不匹配。由于ImageNet中的图像是RGB图像,而有时候需要对深度图像(RGB- D)或三维医学图像进行检测,因此无法很好地将预先训练好的知识转移到这些检测任务中。近年来,一些研究人员尝试从零开始训练一种目标探测。为了加快训练速度和提高稳定性,一些研究人员引入密集连接和批量归一化来加速浅层的反向传播[238,284]。K.He(何凯明)等人[285]最近的研究进一步质疑了通过探索相反的组织方法而进一步进行预训练的范式:他们报告了利用随机初始化训练的标准模型在COCO数据集上进行目标检测的竞争结果,唯一的例外是增加训练迭代次数,以便随机初始化的模型可以收敛。即使只使用10%的训练数据,随机初始化的训练也令人惊讶地强大,这表明ImageNet预训练可以加快收敛速度,但不一定提供正则化或提高最终检测精度。

4.8对抗训练(Adversarial Training)

由A. Goodfellow等人于2014年提出的生成对抗网络(GAN)[286]近年来受到了极大的关注。一个典型的GAN由两个神经网络组成:一个生成网络和一个判别网络,它们在极小极大优化框架下相互竞争。通常,生成器学习从潜在空间映射到感兴趣的特定数据分布,而判别器的目标是区分真实数据分布中的实例和生成器生成的实例。GAN广泛应用于图像生成[286,287]、图像风格迁移[288]、图像超分辨率[289]等计算机视觉任务。近年来,GAN也被应用于目标检测,尤其是对小遮挡目标的检测。

GAN被用来通过缩小小目标和大目标之间的表示来增强对小目标的检测[290,291]。为了提高对被遮挡物体的检测,最近的一个想法是使用对抗训练生成遮挡掩模(occlusion masks)[292]。与在像素空间中生成示例不同,对抗性网络直接修改特征来模拟遮挡。

除了这些作品“对抗性攻击(adversarial attack)”[293],它的目的是研究如何用对抗性的案例攻击检测器,近年来引起了越来越多的关注。这一课题的研究对于自动驾驶来说尤为重要,因为在保证其对对抗攻击的鲁棒性之前,不能完全信任它。

4.9弱监督目标检测(Weakly Supervised Object Detection)

现代目标检测器的训练通常需要大量的人工标记数据,而标记过程费时、昂贵、低效。弱监督目标检测(WSOD)的目标是通过训练一个只带有图像级注释而不是边界框的检测器来解决这一问题。

近年来,多实例学习被用于WSOD[294,295]。多实例学习是一种有监督的学习方法[39,296]。多实例学习模型不是使用一组单独标记的实例进行学习,而是接收一组标记的包,每个包包含许多实例。如果将一个图像中的候选对象看作一个包,并将图像级注释看作标签,那么WSOD可以表示为一个多实例学习过程。

类激活映射是最近出现的另一组WSOD方法[297,298]。对CNN可视化的研究表明,尽管没有对目标位置的监控,但是CNN的卷积层表现为目标检测器。类激活映射揭示了如何使CNN在接受图像级标签训练的情况下仍然具有定位能力[299]。

除了上述方法外,还有一些研究者认为WSOD是一个提名排序(proposal ranking)过程,通过选择信息量最大的区域,然后用图像级标注对这些区域进行训练[300]。WSOD的另一个简单方法是屏蔽图像的不同部分。如果检测分值急剧下降,则物体被覆盖的概率较高[301]。此外,交互注释(interactive annotation)[295]在训练中考虑了人的反馈,从而提高了WSOD。最近,生成性对抗性训练被用于WSOD[302]。

5.应用(APPLICATIONS)

在本节中,我们将回顾过去20年来一些重要的检测应用,包括行人检测、人脸检测、文本检测、交通标志/灯光检测和遥感目标检测。

5.1行人检测(Pedestrian Detection)

行人检测作为一种重要的目标检测应用,在自动驾驶、视频监控、刑事侦查等领域得到了广泛的关注。早期的行人检测方法,如HOG检测器[12],ICF检测器[171],在特征表示[12,171],分类器的设计、检测加速器[177]方面,为一般的目标检测奠定了坚实的基础[174]。近年来,一些通用的目标检测算法,如Faster RCNN[19],被引入到行人检测中[165],极大地推动了该领域的发展。

5.1.1困难与挑战(Difficulties and Challenges)

行人检测的挑战和困难可以总结如下。

小行人(Small pedestrian):图20 (a)显示了一些远离摄像机拍摄的小行人的例子。在Caltech数据集[59,60]中,15%的行人身高小于30像素。

难例(Hard negatives):街景图像中的一些背景与行人的视觉外观非常相似,如图20 (b)所示。

密集和闭塞行人(Dense and occluded pedestrian):图20 (c)显示了密集和闭塞行人的一些例子。在Caltech的数据集中[59,60],没有被遮挡的行人只占行人总数的29%。

实时检测(Real-time detection): 通过高清视频实时检测行人对于自动驾驶和视频监控等应用至关重要。

图二十:来自Caltech数据集【59 60】的一些行人检测的难例样本 (a):小行人,(b)负难例,(c):密集和拥挤行人

5.1.2文献综述(Literature Review Pedestrian detection has)

行人检测有着非常悠久的研究历史[30,31,101]。其发展可分为两个技术阶段:1)传统的行人检测;2)基于深度学习的行人检测。关于这个话题的更多细节,我们请读者参考下面的调查[60,303 - 307]。

•传统的行人检测方法

由于计算资源的限制,Haar小波特征在早期行人检测中得到了广泛的应用[30,31,308]。为了提高对遮挡行人的检测,当时流行的一种思想是“组件检测”[31,102,220],即,把检测看作一个多部分检测器的集合,这些探测器分别训练在不同的人体部位,如头部、腿部和手臂上。随着计算能力的提高,人们开始设计更加复杂的检测模型,自2005年以来,基于梯度的表示[12,37,177,220,309]和DPM[15,37,54]已经成为行人检测的主流。2009年,利用积分图像加速,提出了一种有效且轻量级的特征表示:积分通道特征(ICF)[171]。ICF成为当时行人检测的新标杆[60]。除了特征表示,还考虑了一些领域知识,如外观恒常性和形状对称性[310]以及立体信息[173,311]。

•基于深度学习的行人检测方法(Deep learning based pedestrian detection methods)

行人检测是最早应用深度学习的计算机视觉任务之一[312]。

改进小尺度行人检测(To improve small pedestrian detection):虽然Fast/Faster R-CNN等深度学习目标检测器在一般目标检测方面表现出了最先进的性能,但由于卷积特征的分辨率较低,在小尺度行人检测方面的成功率有限[165]。最近解决这一问题的一些方法包括特征融合[165]、引入额外的高分辨率手工特征[313,314]、以及基于多个分辨率的检测结果集成[315]。

改进难例检测(To improve hard negative detection):最近的一些改进包括增强决策树的集成[165]以及语义分割(作为行人上下文语境)[316]。此外,还引入了“跨模态学习”的思想,利用RGB图像和红外图像来丰富难例的特征[317]。

改进密集遮挡行人检测(To improve dense and occluded pedestrian detection):如2.3.2节所述,CNN较深层的特征具有较丰富的语义,但对密集目标检测效果不佳。为此,一些研究人员考虑到目标的吸引力和周围物体的排斥力,设计了新的损失函数[318]。目标遮挡是密集行人经常遇到的另一个问题。局部检测器的集成[319,320]和注意机制[321]是改善遮挡行人检测最常见的方法。

5.2人脸检测(Face Detection)

人脸检测是最老的计算机视觉应用之一[96,164]。早期的人脸检测,如VJ检测器[10],极大地促进了目标检测发展,其许多出色的思想甚至在今天的目标检测中仍然发挥着重要的作用。人脸检测已经应用于各行各业,如数码相机中的“微笑”检测、电子商务中的“刷脸”、移动应用中的人脸化妆等。

5.2.1困难与挑战

人脸检测的难点和挑战可以总结如下:

类内变异(Intra-class variation):人脸可能呈现多种表情、肤色、姿势和动作,如图21(a)所示。

遮挡(Occlusion):人脸可能被其他物体遮挡部分,如图21 (b)所示。

多尺度检测(Multi-scale detection):检测多种尺度下的人脸,尤其是一些微小的人脸,如图21 (c)所示。

实时检测(Real-time detection):移动设备上的人脸检测通常需要CPU的实时检测速度。

图二十一:人脸检测面临的挑战:(a)类内变异,图片来自于WildestFaces Dataset [70]。(b) 面部遮挡,来自UFDD数据集的图像[69]。(c)多尺度人脸检测。图片来自P. Hu et al. CVPR2017 [322].

5.2.2文献综述(Literature review)

人脸检测的研究可以追溯到20世纪90年代初[95,106,108]。然后经历了多个历史时期:早期人脸检测(2001年以前)、传统人脸检测(2001-2015)、基于深度学习的人脸检测(2015-至今)。我们请读者参考以下调查以了解更多详情[323,324]。

•早期人脸检测(Early time’s face detection 2001年以前)

早期的人脸检测算法可以分为三类:1)基于规则的方法。这组方法编码人类的知识,这些知识构成一个典型的面孔,并捕捉面部元素之间的关系[107,108].2)基于子空间分析的方法。这组方法分析了人脸在底层线性子空间中的分布[95,106]。特征脸是这组方法的代表[95].3)基于学习的方法:将人脸检测框架为滑动窗口+二分类(目标vs背景)过程。这一组常用的模型包括神经网络[96,164,325]和SVM[29, 326]。

•传统人脸检测(2000-2015)

这一时期有两组人脸测器。第一组方法是基于增强决策树构建的[10,11,109]。这些方法计算简单,但在复杂场景下检测精度较低。第二组基于早期的卷积神经网络,利用特征共享计算加快检测速度[112,113,327]。

•基于深度学习的人脸检测(2015年后)

在深度学习时代,大多数人脸检测算法都遵循一般的目标检测思想,如Faster RCNN和SSD。

加速人脸检测:级联检测(详见3.3节)是深度学习时代加速人脸检测最常用的方法[179,180]。另一种加速方法是预测图像中人脸的尺度分布[283],然后在选定的尺度上进行检测。

改善多姿态和遮挡人脸检测:“人脸定标”的思想通过估计定标参数[279]或通过多个检测阶段的渐进定标[277]来改进多姿态人脸检测。为了提高对遮挡人脸的检测,最近提出了两种方法。第一个是融入“注意力机制”,突出潜在人脸目标的特征[250]。第二种是“基于部件的检测”[328],它继承了DPM的思想。

改进多尺度人脸检测:近年来多尺度人脸检测研究[322,329-331]采用了与一般目标检测相似的检测策略,包括多尺度特征融合和多分辨率检测(详见2.3.2和4.2.2节)。

5.3文本检测(Text Detection)

几千年来,文字一直是人类的主要信息载体。文本检测的基本目标是确定给定图像中是否含有文本,如果有,则定位并识别它。文本检测有着非常广泛的应用。它帮助视障人士“阅读”街道标识和货币[332333]。在地理信息系统中,对门牌号和街道标识的检测和识别使得构建数字地图更加容易[334335]。

5.3.1困难与挑战

文本检测的难点和挑战可以总结如下:

不同字体和语言:文本可能有不同的字体、颜色和语言,如图22(a)所示。

文本旋转和透视变形:文本可能有不同的方向,甚至可能有透视变形,如图22 (b)所示。

密集排列的文本定位:长径比大、布局密集的文本行很难精确定位,如图22 (c)所示。

破碎和模糊的字符:破碎和模糊的字符在街景图像中很常见。

图二十二:文本检测和识别方面的挑战: (a)字体、颜色和语言的变化。图片来自maxpixel(免版权)。(b)文本旋转和透视失真。图片来自Y. Liu et al. CVPR2017 [336]。(c)密集排列的文本局部化。图片来自Y. Wu et al. ICCV2017 [337].

5.3.2文献综述(Literature Review)

文本检测包括两个相关但相对独立的任务:1)文本定位和2)文本识别。现有的文本检测方法可分为“逐步检测”和“集成检测”两大类。我们请读者参考下面的调查以了解更多细节[338,339]。

•逐步检测vs集成检测(Step-wise detection vs integrated detection)

逐步检测方法[340,341]由字符分割、候选区域验证、字符分组、单词识别等一系列处理步骤组成。这组方法的优点是大部分的背景都可以在粗分割步骤中进行过滤,大大降低了后续处理的计算成本。缺点是需要仔细设置所有步骤的参数,这些错误将在每个步骤中发生累计。相比之下,集成方法[342-345]将文本检测定义为一个联合概率推理问题,在统一的框架下处理字符定位、分组和识别的步骤。这些方法的优点是避免了累积误差,易于集成语言模型。缺点是,当考虑到大量字符类和候选窗口时,推理的计算开销会很大[339]。

•传统方法vs深度学习方法(Traditional methods vs deep learning methods)

传统的文本检测方法大多采用无监督的方式生成候选文本,常用的方法有最大稳定极值区域分割(MSER)[341]和形态过滤[346]。这些方法还考虑了文本的对称性和笔画结构等领域知识[340,341,347]。近年来,学者们更多地关注文本的定位问题,而不是识别问题。最近提出了两组方法。第一组方法将文本检测作为一般目标检测的一个特例进行框架化,这些方法都有统一的检测框架,但对于方向或长宽比较大的文本检测效果较差。第二组方法将文本检测框架为图像分割问题[336,337,358 - 360]。这些方法的优点是对文本的形状和方向没有特殊限制,但缺点是根据分割结果很难区分排列密集的文本行。针对上述问题,近年来基于深度学习的文本检测方法提出了一些解决方案。

对于文本的旋转和透视变化(For text rotation and perspective changes):这个问题最常见的解决方案是在锚框(anchor boxes)和RoI池化层中引入额外的参数,这些参数与旋转和透视变化相关[351-353,355-357]。

改进密集排列文本检测(To improve densely arranged text detection):基于分割的方法在检测密集排列文本方面显示出更大的优势。为了区分相邻的文本行,最近提出了两组解决方案。第一个是“分割与连接”,其中“分割”表示字符的热度图,“连接”表示相邻的两个相连分割之间的连接,表示它们属于同一单词或文本行[336,358]。第二组是引入额外的角/边界检测任务,以帮助分离密集排列的文本,其中一组角或封闭的边界对应于单个文本行[337,359,360]。

改进破碎和模糊文本检测(To improve broken and blurred text detection):最近出现的一种处理破碎和模糊文本的方法是使用单词级[77,361]识别和句子级识别[335]。要处理不同字体的文本,最有效的方法是使用合成样本进行训练[77,348]

5.4交通标志和交通灯检测

近年来,随着自动驾驶技术的发展,交通标志和交通灯的自动检测受到了人们的广泛关注。在过去的几十年里,尽管计算机视觉界在很大程度上推动了对一般物体的检测,而不是像交通信号灯和交通标志这样的固定模式,但相信它们的识别不具有挑战性仍然是一个错误。

5.4.1困难和挑战

交通标志/灯光检测的挑战和困难可以概括为:照明变化:在阳光照射下或在夜间行驶时,检测将特别困难,如图23(a)所示。运动模糊:车载摄像机拍摄到的图像由于车辆的运动而变得模糊,如图23(b)所示。恶劣天气:在雨雪等恶劣天气下,图像质量会受到影响,如图23(c)所示。实时检测:这对于自动驾驶特别重要。

图二十三:交通标志检测和交通灯检测面临的挑战:(a)光照变化。图片来自pxhere(免版权)。(b)运动模糊。图片来自GTSRB Dataset [81]。(c) 恶劣天气下的探测。图片来自Flickr和Max Pixel(免版权)。

5.4.2文献综述

现有的交通标志灯检测方法可分为两类:1)传统检测方法2)基于深度学习的检测方法。有关此主题的详细信息,请参阅以下调查[80]。

•传统检测方法

基于视觉的交通标志/灯光检测研究可以追溯到20年前[362363]。交通标志/灯光具有特殊的形状和颜色,传统检测方法通常基于颜色阈值[364–368],视觉显著性检测[369],形态过滤(morphological filtering)[79]和边缘/轮廓分析[370371]。以上方法只是基于低级视觉的设计,他们通常在复杂的环境下失败(如图23所示),因此,一些研究人员开始除基于视觉的方法外,寻找其他解决方案,例如:结合GPS和数字地图进行交通灯检测[372373]。尽管“特征金字塔+滑动窗口”已成为当时一般目标检测和行人检测的标准框架,除了极少量的工作[374],主流的交通标志/灯光检测方法直到2010年才遵循这一范式[375-377]。

•基于深度学习的检测方法

在深度学习时代,一些著名的检测器(如Faster RCNN和SSD)被应用于交通标志/灯光检测任务[83、84、378、379]。在这些检测器的基础上,一些新的技术,如注意力机制和对抗性训练被用来改善复杂交通环境下的检测[290,378]。

5.5遥感目标检测(Remote Sensing Target Detection)

遥感成像技术为人们更好地了解地球打开了一扇门。近年来,随着遥感图像分辨率的提高,遥感目标检测(如飞机、船舶、油罐等的检测)已成为研究热点。遥感目标检测在军事调查、灾害救援、城市交通管理等方面有着广泛的应用。

5.5.1困难和挑战

遥感目标检测面临的挑战和困难总结如下:

“大数据”中的检测(Detection in “big data”):由于遥感图像数据量巨大,如何快速准确地检测遥感目标仍然是一个问题。图24 (a)为遥感图像与自然图像数据量对比图。

遮挡目标(Occluded targets):每天超过50%的地球表面被云层覆盖。图24 (b)给出了一些被遮挡目标的例子。

领域适应(Domain adaptation):不同传感器(如不同调制和分辨率)获取的遥感图像存在很大差异。

图二十四:遥感目标检测面临的挑战:(a)“大数据”检测:单视图遥感图像与VOC、ImageNet、MS-COCO平均图像大小的数据量比较。(b)被云遮挡的目标。图片来自邱S.等人。JSTARS2017[380],邹泽明等。TGRS2016 [381]。

5.5.2文献综述

有关此主题的更多详细信息,请参阅以下综述[90,382]。

•传统检测方法

传统的遥感目标检测方法大多遵循两个阶段的检测范式:1)候选提取和2)目标验证。在候选提取阶段,一些常用的方法包括基于灰度值滤波的方法[383,384]、基于视觉显著性的方法[385–388]、基于小波变换的方法[389]、基于异常检测的方法[390]等。上述方法的一个相似之处是它们都是未知的。在复杂的环境中通常会失败。

在目标验证阶段,一些常用的特征包括HOG[390,391]、LBP[384]、SIFT[386,388,392]等,此外,还有一些遵循滑动窗口检测范式的其他方法[391–394]。

为了检测特定结构和形状的目标,如油罐和近海船舶,使用了一些领域知识。例如,油罐检测可以视为圆/弧检测问题[395396]。近岸船舶检测可以看作是对前甲板还有船尾[397398]的检测。为了提高对遮挡目标的检测,一种常用的方法是“局部检测”[380399]。为了检测不同方向的目标,采用“混合模型”对不同方向的目标训练不同的检测器[273]。

•基于深度学习的检测方法

在2014年RCNN取得巨大成功之后,深度CNN很快就被应用于遥感目标检测[275,276,400,401]。像Faster RCNN和SSD这样的一般目标检测框架在遥感界引起了越来越多的关注[91,167,381,402-405]。

由于遥感图像与日常图像的巨大差异,对CNN深度遥感图像特征的有效性进行了一些调查[406-408]后,人们发现,尽管深度CNN取得了巨大的成功,但它并不比传统的光谱数据处理方法更好[406]。为了检测不同方向的目标,一些研究人员改进了ROI池化层以获得更好的旋转不变性[272409]。为了提高适应领域,一些研究人员从贝叶斯的角度阐述了检测过程,即在检测阶段,根据检测图像的分布自适应更新模型[91]。此外,注意力机制和特征融合策略也被用于改进小目标检测[410,411]。

6. 结论与未来方向

近20年来,目标检测领域取得了令人瞩目的成就。本文不仅广泛地回顾了一些里程碑式检测器(如VJ检测器、HOG检测器、DPM、Faster RCNN、YOLO、SSD等)、关键技术、加速方法、检测应用、数据集和20年来的度量标准,而且还讨论了目前合作伙伴所面临的挑战。以及如何进一步扩展和改进这些检测器。

未来对目标检测的研究可能集中在但不限于以下几个方面:

轻量目标检测:加快检测速度使其在移动设备上平稳运行算法。一些重要的应用包括移动增强现实、智能摄像头、人脸验证等,尽管近年来做了大量的努力,但机器和人眼之间的速度差距仍然很大,特别是对于检测一些小物体。

检测遇上AutoML:最近基于深度学习的检测器变得越来越复杂,并且严重依赖于经验。未来的一个方向是在使用神经架构搜索设计检测模型(例如,如何设计引擎和如何设置anchor boxes)时减少人为干预。AutoML可能是目标检测的未来。

检测遇上领域适应性:任何目标检测器的训练过程基本上都可以看作是在独立同分布(i.i.d..)数据假设下的似然估计过程。使用非i.i.d.数据进行目标检测,特别是对于一些实际应用程序,仍然是一个挑战。GAN在领域自适应方面取得了很好的效果,对今后的目标检测有很大的帮助。

弱监督检测:在大场景中检测小物体一直是一个挑战。该研究方向的一些潜在应用包括利用遥感图像计算野生动物的数量和检测一些重要军事目标的状态。一些进一步的方向可能包括视觉注意机制的集成和高分辨率轻量级网络的设计。

小目标检测:在大场景中检测小物体一直是一个挑战。这一研究方向的一些潜在应用包括利用遥感图像计算野生动物种群和探测一些重要军事目标的状态。一些进一步的方向可能包括视觉注意力机制的集成和高分辨率轻型网络的设计。

视频中的检测:高清视频中的实时目标检测/跟踪对于视频监控和自主驾驶具有重要意义。传统的目标检测器通常设计用于图像检测,而只需忽略视频帧之间的相关性。通过探索时空相关来改进检测是一个重要的研究方向。

信息融合检测:RGB-D图像、三维点云、激光雷达等多数据源/多模式的目标检测对自主驾驶和无人机应用具有重要意义。目前存在的问题包括:如何将训练有素的检测器移植到不同的数据模式,如何进行信息融合以提高检测能力等。

站在技术发展的高速公路上,我们相信这篇论文将帮助读者建立一个目标检测的大致画卷,并找到这个快速发展的研究领域的未来方向。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值