目录
摘要
1.介绍
1.1与以前的评论比较
2.背景
2.1问题
2.2.主要挑战
2.2.1准确性相关的挑战
2.2.2效率相关的挑战
2.3过去二十年的进展
3.框架
3.1基于区域(两阶段框架)
3.2一阶段方法
4.基本的子问题
4.1DCNN基于对象表示
4.1.1流行的CNN结构
4.1.2改进对象表示的方法
4.2 上下文建模
4.3检测proposal方法
4.4其他特殊问题
5数据集和性能评估
5.1数据集
目标监测旨在从自然图像中定位出大量预定义类别的实例对象,是机器视觉中最基本也是最具挑战的问题。近年来,深度学习技术作为直接从数据学习特征表示的强大方法而出现,并在通用物体检测领域取得了显着的突破。鉴于这个快速发展的时期,本文的目的是提供对深度学习技术带来的这一领域最近成就的全面的综述。本综述包括250多项重要贡献,涵盖了通用对象检测研究的许多方面:领先的检测框架和基本的子问题,包括对象特征表示,对象 proposal生成,上下文信息建模和训练策略;评估问题,特别是基准数据集,评估指标,和最先进的表现。最后,我们明确未来的方向。
作为计算机视觉中长期存在的,基本的和具有挑战性的问题,物体检测几十年来一直是一个活跃的研究领域。对象检测的目标是确定某些给定图像中是否存在来自给定类别(例如人,汽车,自行车,狗和猫)的任何对象实例。如果存在,则返回每个对象实例的空间位置和范围(例如,通过边界框[53,179])。作为图像理解和计算机视觉的基石,物体检测构成了解决更复杂或更高级别视觉任务(如分割,场景理解,对象跟踪,图像字幕,事件检测和活动识别)的基础。物体检测在人工智能和信息技术的许多领域具有广泛的应用,包括机器人视觉,消费电子,安全,自动驾驶,人机交互,基于内容的图像检索,智能视频监控和增强现实。
最近,深度学习技术[81,116]已经成为从数据中自动学习特征表示的有力方法。特别是,这些技术为物体检测提供了显着的改进,这一问题在过去五年中引起了极大的关注,尽管心理,物理学家,神经科学家和工程师已经研究了几十年。
对象检测可以分为两种类型之一[69,240]:特定实例的检测和特定类别的检测。第一种类型旨在检测特定对象的实例(例如唐纳德特朗普的脸,五角大楼的建筑物,或我的狗Penny),而第二种类型的目标是检测预定义对象类别的不同实例(例如人类,汽车,自行车和狗)。从历史上看,物体检测领域的许多努力都集中在检测单一类别(如面部和行人)或少数特定类别。相比之下,在过去几年中,研究界已经开始朝着建立通用物体检测系统的挑战性目标迈进,该系统的物体检测能力的广度可与人类相媲美。
然而在2012年,Krizhevsky等人。 [109]提出了一种名为AlexNet的深度卷积神经网络(DCNN),它在大规模视觉识别挑战赛(ILSRVC)中在图像分类准确性[179]破了纪录。从那时起,许多计算机视觉应用领域的研究重点一直是深度学习方法。基于深度学习的通用对象检测的许多方法如雨后春笋般涌现[65,77,64,183,176]并取得了巨大进步,但我们在过去五年中并未意识到对该主题的全面调查。鉴于这个快速发展的时代,本文的重点深度学习的通用对象检测,以便在获得通用物体监测的清晰概括。
通用对象检测问题本身定义如下:给定任意图像,确定是否存在来自预定义类别的语义对象的任何实例,并且如果存在,则返回空间位置和范围。对象是指可以看到和触摸的物质事物。虽然在很大程度上与对象类检测同义,但是通用对象检测更加强调旨在检测广泛的自然类别的方法,而不是对象实例或专门类别(例如,面部,行人或汽车)。通用物体检测受到了极大的关注,最近在物体检测竞赛中取得了进展,例如2006年至2012年的PASCAL VOC检测挑战[53,54],自2013年以来ILSVRC大规模检测挑战[179]以及自2015年以来MS COCO 的大规模检测挑战[129]。近年来的显着改进如图1所示。
图1:近期物体检测性能的演变。自深度学习于2012年进入现场以来,我们可以观察到显着的性能(平均精度)改善。最佳的检测性能每年都在稳步增长。(a)PASCAL VOC数据集的结果:VOC2007-2012竞赛中获奖作品的检测结果(仅使用提供的训练数据)。 (b)ILSVRC2013-2017中的物体检测竞赛结果(仅使用提供的训练数据)。
已公布了一些值得注意的物体检测调查,如表1所示。这些包括许多关于特定物体检测问题的优秀调查,例如行人检测[51,60,48],人脸检测[226,232],车辆检测[196]和文本检测[227]。Ponce [169],Dickinson [46],Galleguillos和Belongie [59],Grauman和Leibe [69],以及Andreopoulos和Tsotsos [5]等人也做出了重要贡献。
最近的调查很少直接关注通用物体检测问题,只有Zhang等人[240]对物体类检测主题进行调查的工作然而,[69],[5]和[240]中调查的研究大多是2012年之前的研究,在深度学习和相关方法取得巨大成功之前。
深度学学习可以由多个层组成的计算模型来学习极其复杂,微妙和抽象的表示。在过去几年中,深度学习在广泛的问题上取得了重大进展,例如视觉识别,物体检测,语音识别,自然语言处理,医学图像分析,药物发现和基因组学。在不同类型的深度神经网络中,深度卷积神经网络(DCNN)[115,109,116]在处理图像,视频,语音和音频方面带来了突破。 鉴于这个快速发展的时期,Bengio等 [12],LeCun等 [116],Litjens等 [133],顾等人 [71],最近在ICCV和CVPR中最近发表了关于深度学习的不同方面的调查。
尽管已经提出了许多基于深度学习的方法用于物体检测,但我们并未意识到在过去五年中对该主题的全面调查,这是本调查的重点。对现有工作进行彻底的审查和总结对于物体检测的进一步进展至关重要,特别是对于希望进入该领域的研究人员而言。用于特定物体检测的CNN的工作将不包括在我们的讨论中。例如面部检测[120,237,92],行人检测[238,85],车辆检测[247]和交通标志检测[253]。
1.2 分类方法
自深度学习火起来以后发表的关于通用物体检测的论文数量令人叹为观止。事实上,许多人已经提出了编写对现有技术的全面审查的论文的可能性。有必要建立一些选择标准,例如论文的完整性和对该领域的重要性。我们倾向于包括顶级期刊和会议论文。由于空间和我们的知识限制,我们诚挚地向那些作品未包含在本文中的作者道歉。对于相关主题的调查,读者可参考表1中的文章。该调查主要关注过去五年取得的重大进展; 但为了完整性和更好的可读性,还包括一些早期的相关工作。我们将自己限定于静态图片并将视频对象检测作为单独的主题。
本文的其余部分安排如下:
第2节中总结相关背景,包括问题,主要挑战和过去二十年取得的进展。
第3节中描述物体检测的里程碑。
第4节介绍了物体检测所涉及的基本子问题和相关问题。
第5节中给出了流行数据库和最新性能的总结。
我们在本文结束时讨论了几个有希望的方向。
通用对象检测(即,通用对象类别检测),也称为对象类检测[240]或对象类别检测,定义如下:给定图像,通用对象检测的目标是,确定图像中是否存在来自许多预定义类别的对象的实例,并且如果存在,则返回每个实例的空间位置和范围。与特定对象类别检测不同,它更加强调检测广泛的自然类别,定对象类别检测其中可能仅存在较窄的预定义兴趣类别(例如,面部,行人或汽车)。虽然成千上万的物体占据了我们生活的视觉世界,但目前研究界主要对高度结构化物体(例如汽车,面部,自行车和飞机)和结构(例如人类,牛和马)而不是非结构化的场景(如天空,草地和云)。
通常,可以使用边界框粗略地定义对象的空间位置和范围-轴对齐的矩形紧紧地绑定对象 [53, 179],精确的像素级语义分割或紧贴物体的边界,如图3所示。据我们所知,在当前的文献中,边界框被更广泛地用于评估通用对象检测算法[53,179],并且也将是我们在该调查中采用的方法。然而,检测正在向深度场景理解(从图像级对象分类到单个对象定位,到通用对象检测,以及逐像素对象分割),因此预计未来的挑战将在像素级别[129]。
图3与通用对象检测相关的识别问题。 (a)图像级别对象分类,(b)边界框级别通用对象检测,(c)像素级语义分割,(d)实例语义分割。
存在许多与通用对象检测密切相关的问题。对象分类(图3(a))是评估图像中给定数量的对象类的对象的存在;即,将一个或多个对象类标签分配给给定图像,确定实例的存在无需定位位置。很明显,在图像中定位出实例的要求使得检测比分类更具挑战性。物体识别问题表示发现和识别图像中存在的感兴趣物体,包括物体检测和物体分类的问题[53,179,156,5]。通用对象检测与语义图像分割密切相关(图3(c)),语义分割旨在为图像中的每个像素分配到语义类标签。对象实例分割(图3(d))旨在区分同一对象类的不同实例,而语义分割不区分不同实例,实例检测还区分同一对象的不同实例。 检测与分割不同,对象检测包括边界框中可能对分析有用的背景区域。
通用对象检测旨在定位和识别广泛的自然对象类别。通用对象检测的理想目标是开发通用对象检测算法,实现两个相互限制的目标:高质量/准确性和高效率,如图4所示。如图5所示,高质量检测必须精确地定位和识别图像或视频帧中的对象,使得可以区分现实世界中的各种对象类别(即,高独特性),并且可以定位和识别来自同一类别的对象实例(受到类内外观变化的影响)(即,高稳定性)。高效率要求整个检测任务以足够高的帧速率运行,并具有可接受的内存和存储使用。尽管经过了数十年的研究和重大进展,但可以说,准确性和效率的综合目标尚未实现。
对于准确性,挑战源于1)广泛的类内差异 2)大量的对象类别
我们从类内差异开始,可以分为两种类型:内在因素和成像条件。对于前者,每个对象类别可以具有许多不同的对象实例,可能在颜色,纹理,材料,形状和大小中的一个或多个方面变化,例如图5(h)中所示的“椅子”类别。即使在一个更狭义的类中,例如人或马,对象实例也可以出现在不同的姿势中,具有非刚性变形和可以穿着不同的衣服。对于后者,变化是由成像条件的变化和不受约束的环境引起的,这可能对物体外观产生显着影响。特别地,捕获不同的实例甚至相同的实例会有差异,其受到许多因素的影响:不同的时间,位置,天气条件,相机,背景,照明,视点和观看距离。所有这些条件在物体外观上产生显着变化,例如照明,姿势,比例,遮挡,背景杂波,阴影,模糊和运动,其中的例子如图5(a-g)所示。数字化伪像,噪声损坏,分辨率差和滤波失真可能会增加进一步的挑战。
除了类内差异之外,大量的对象类别(大约10000-100000)要求检测器具有很大的辨别能力以区分微妙不同的类间变化,如图5(i)所示。在实践中,主流的检测网络主要关注结构化对象类别,例如PASCAL VOC [53],ILSVRC [179]和MS COCO [129]中的20,200和91对象类别。显然,现有基准数据集中所考虑的对象类别的数量远远小于人类可识别的对象类别。
指数增加的图像数量需要有效且可扩展的检测器。社交媒体网络和移动/可穿戴设备的普及导致对分析视觉数据的需求不断增加。然而,移动/可穿戴设备具有有限的计算能力和存储空间,在这种情况下,高效的物体检测器是关键的。
为了提高效率,挑战源于需要定位和识别大量对象类别的所有对象实例,以及单个图像中可能的大量位置和比例,如图5中的示例所示(c)。进一步的挑战是可扩展性:探测器应该能够处理看不见的物体,未知情况和快速增加的图像数据。例如,ILSVRC [179]的规模已经对可获得的手动注释施加了限制。随着图像的数量和类别的数量变得更大,可能无法手动注释它们,迫使算法更多地依赖于弱监督的训练数据。
早期关于物体识别的研究基于模板匹配技术和基于简单部件的模型[57],侧重于空间布局大致刚性的特定物体,例如面部。在1990年之前,对象识别的主要范式是基于几何表示[149,169],随后焦点从几何和先验模型转向使用统计分类器(如神经网络[178],SVM [159]和 Adaboost [213,222])基于外观特征[150,181]。这一成功的物体检测器系列为该领域的大多数后续研究奠定了基础。
在20世纪90年代末和21世纪初,物体探测研究取得了显着的进步。近年来物体检测的里程碑如图2所示,其中突出显示了两个主要时代(SIFT与DCNN)。外观特征从全局表示[151,197,205]移动到局部表示,这些表示对于平移,缩放,旋转,照明,视点和遮挡的变化是不变的。从尺度不变特征变换(SIFT)特征[139]开始,手工制作的局部不变特征获得了巨大的普及,并且各种视觉识别任务的进展基本上都基于使用局部描述符[145],例如Haar之类的特征[213],SIFT [140],形状上下文[11],梯度直方图(HOG)[42]和局部二元模式(LBP)[153],协方差[206]。这些局部特征通常通过简单连接或特征池编码器聚合,例如由Sivic和Zisserman [194]和Csurka等人引入的有影响力和有效的Bag of VisualWords方法 [37],BoW模型的空间金字塔匹配(SPM)[114]和Fisher矢量[166]。
多年来,手工制作的局部描述符和判别分类器的多级手动管道在计算机视觉的各个领域占据主导地位,包括物体检测,直到2012年深度卷积神经网络(DCNN)[109]取得破纪录的结果,是图像分类的重大转折点。DCNN在图像分类[109]的成功应用,转移到物体检测,Girshick等人提出了CNN(RCNN)检测器[65]。从那时起,对象检测领域已经发展迅速,并且已经开发了许多基于深度学习的方法,这部分归功于可用的GPU计算资源以及大规模数据集的可用性以及ImageNet [44,179]和MS COCO等挑战[129]。利用这些新的数据集,针对更现实和复杂的问题[129,179],研究人员可以在从具有大的类内变化和类间相似性的图像中检测数百个类别的对象时。
研究界已经开始朝着建立通用目标检测系统的挑战性目标迈进,该系统能够检测许多物体类别与人类相匹配的能力。这是一项重大挑战:根据认知科学家的观点,人类可以识别大约3,000个入门级别类别和30,000个视觉类别,并且可以区分为100000[14]类别数量。尽管过去几年取得了显着进步,但设计一个准确,强大,高效的检测和识别系统,在10000-100000类别上达到人类水平的性能,无疑是一个很困难的问题。
用于识别的对象特征表示和分类器已经取得了稳步进展,从手工制作的特征[213,42,55,76,212]到学习的DCNN特征[65,160,64,175,40]的显着变化证明了这一点。
相比之下,本地化的基础“滑动窗口”策略[42,56,55]仍然是主流,尽管在[113,209]中有一些吃力。然而,窗口的数量很大并且随着像素的数量呈二次方增长,并且需要在多个尺度和宽高比上进行搜索,这进一步增加了搜索空间。巨大的搜索空间导致高计算复杂性。因此,高效有效的检测框架的设计起着关键作用。 常用的策略包括级联,共享特征计算和减少每窗口计算。
在本节中,我们将回顾通用对象检测中存在的里程碑检测框架,因为深度学习进入了该领域,如图6所示并总结在表10中。在过去几年中提出的几乎所有探测器都基于这些里程碑探测器中的一个,试图改进一个或多个方面。从广义上讲,这些探测器可分为两大类:
A.两阶段检测框架,其中包括区域建议的预处理步骤,使整个框架分两个阶段。
B.一阶段检测框架,或 region proposal free框架,这是一种一阶段的方法,不分 region proposal,使整个框架为一个阶段。
第4节将基于以下内容,通过更详细地讨论检测框架中涉及的基本子问题,包括DCNN特征,检测建议,上下文建模,边界框回归和类不平衡处理。
在基于区域的框架中,从图像生成与类别无关的区域提议,从这些区域提取CNN [109]特征,然后使用类别特定的分类器来确定提议的类别标签。从图6可以看出,DetectorNet [198],OverFeat [183],MultiBox [52]和RCNN [65]独立且几乎同时提出使用CNN进行通用对象检测。
图6基于第一个arXiv版本的时间点的通用对象检测的里程碑。RCNN:受CNN获得的突破性图像分类结果的启发以及手工制作特征区域提案中选择性搜索的成功[209],Girshick等人首次探索了CNN的通用物体检测,并开发了RCNN [65 67] ],它将AlexNet [109]与区域提案方法选择性搜索[209]集成在一起。如图7所示,RCNN框架中的训练由多阶段组成:
尽管实现了高质量的物体检测,RCNN仍有明显的缺点[64]:
SPPNet:在测试过程中,CNN特征提取是RCNN框架的主要瓶颈,需要从数千个proposal区域提取图像中提取CNN特征。注意到这些明显的缺点,He等人[77]将传统的空间金字塔(SPP)[68,114]引入了CNN架构。由于卷积层可以接受任意大小的输入,CNN中固定大小图像的要求仅仅是由于完全连接(FC)层,He等人发现了这一事实,在最后一个卷积(CONV)之上添加了一个SPP层用于提取FC层的需要的固定长度的特征。使用此SPPnet,RCNN可在不牺牲任何检测质量的情况下获得显着的加速,因为它只需要在整个测试图像上运行一次卷积层,为任意大小的proposal生成固定长度的特征。虽然SPPnet使RCNN检测速度加快了几个数量级,但是它对训练过程增速有限。此外,SPPnet [77]中的微调不能更新SPP层之前的卷积层,这限制了非常深的网络的准确性。
Fast RCNN: Girshick [64]提出了Fast RCNN,它解决了RCNN和SPPnet的一些缺点,同时提高了它们的检测速度和质量。如图8所示,Fast RCNN通过简化训练过程实现端到端检测器训练(当忽略区域建议生成的过程时),该过程同时学习softmax分类器和使用多任务损失的类特定边界框回归 而不是像RCNN / SPPnet那样在三个阶段独立的训练SVM和BBR。Fast RCNN采用跨region proposals共享卷积计算的想法,并在最后的卷积层和第一个全连接层之间添加感兴趣区域(RoI)池化,以为每个region proposals(即RoI)提取固定长度特征。本质上,RoI池在特征级别使用变形来近似图像级别的变形。RoI池化层之后的特征被送到一系列的全连接层中,最终分支成两个输出层:一个用softmax概率对象类别预测,一个用于特定类别proposals的边框偏移回归。与RCNN / SPPnet相比,Fast RCNN大大提高了效率 - 通常训练速度提高3倍,测试速度提高10倍。 总之,快速RCNN具有较高的检测质量,单级的训练过程,更新所有网络层,和不需要存储特征的优点。
Faster RCNN:尽管Fast RCNN显着加快了检测过程,但它仍然依赖于外部的region proposals。region proposals计算是Fast RCNN中的新瓶颈。最近的研究表明,CNN具有显着的在卷积层中[243,244,36,158,75]中定位物体的能力,这种能力在全连接层中被削弱。因此,selective search可以被CNN中生成region proposals代替。Ren等人提出的Faster RCNN框架。提出了一个有效和准确的区域提案网络(RPN)来生成region proposal。他们利用单一网络,RPN完成区域提议的任务和Fast RCNN完成region proposal分类任务。在Faster RCNN中,RPN和Fast RCNN共享大量卷积层。最后共享卷积层的提取的特征用于来自不同分支的区域建议和区域分类。RPN首先在每个卷积层的特征图的不同位置和纵横比初始化K个n*n的参考框(即所谓的anchors)。每个n * n的anchors被映射到较低维向量(例如对于ZF为256,对于VGG为512),其被馈送到两个全连接层 - 对象类别分类层和盒子回归层。与Fast RCNN不同,RPN中用于回归的特征具有相同的大小。与Fast RCNN不同,RPN中用于回归的特征具有相同大小的尺寸。RPN网络与FastRCNN共享卷积层提取的特征,这样可以提高region proposal的计算。事实上,RPN是一个全卷积网络(FCN)。因此,Faster RCNN是纯粹基于CNN的框架,而不使用手工制作的特征。对于VGG16网络,Faster RCNN在GPU上可以到达5fps(包括所有的步骤)进行测试,同时在PASCAL VOC 2007上每个图像使用300个proposals,实现最先进的物体检测精度。最初的Faster RCNN包含几个交替的训练步骤。然后通过一步联合训练简化了这一过程。
在Faster Rcnn发展的同时,Lenc和Vedaldi [117]质疑区域提案生成方法的作用,例如选择性搜索,研究了区域建议生成在基于CNN的探测器中的作用,并发现在CNN包含足够的几何信息,用于在卷积层而不是全连接层中进行精确的物体检测。他们证明了构建集成,更简单,更快速的物体探测器的可能性,这些探测器完全依赖于CNN,去除了区域建议生成方法(例如选择性搜索)。
RFCN(Region based Fully Convolutional Network):虽然Faster RCNN比快速RCNN快一个数量级,但是每个RoI仍然需要应用区域性子网(每个图像几百个RoI)这一事实导致Dai等人。 [40]提出完全卷积(没有隐藏的FC层)的RFCN检测器,几乎所有计算都在整个图像上共享。如图8所示,RFCN与Faster RCNN仅仅在RoI子网中的不同。在Faster RCNN中ROI池化之后的计算并不能共享,一个自然的想法是尽量减少无法共享的计算量,因此Dai等人提出了ROI子网全部使用卷积层来构建,并且在预测之前从最后一个卷积层中提取ROI crops.但是Dai等人[40]发现这种天真的设计的检测精度特别差,他们推测更深的卷积层对分类更加敏感,但是对目标检测(需要尊重翻译方差的本地化表示)不太敏感。根据这一观察,Dai等人通过构建了一组特殊的卷积层产生对位置信息敏感的特征图作为FCN网络的输出,并添加了与标准的ROI池化层比起来对位置信息更敏感的ROI池化层。他们表明,使用ResNet101 最为主干网络的RFCN可以达到与Fasteer RCNN相当的精度,但速度上要更快。
Mask RCNN:He等人遵循概念简洁,高效和灵活的精神。提出了Mask RCNN,通过扩展Faster RCNN来实现像素级的实例分割。Mask RCNN采用两阶段法,具有相同的第一阶段(RPN)。在第二阶段,在为每个ROI预测类别和盒子偏移的同时,新增加了一个分支,为每一个ROI输出二进制mask.新的分支是在CNN特征映射之上的完全卷积网络(FCN)[138,185]。为了避免由原始RoI池(RoIPool)层引起的未对准,提出了RoIAlign层以保持像素级空间对应。利用骨干训练很简单,概括性很好,并且只增加了一小部分开销给速度较快的RCNN,运行速度为5 FPS [80]。网络ResNeXt101-FPN [223,130],Mask RCNN实现了COCO数据集对象实例分割和边界框对象检测的最佳结果。训练很简单,概括性很好,并且对于Faster RCNN速度上,只增加了一小部分开销,运行速度为5 FPS [80]。
Light Head RCNN:为了进一步加快RFCN的检测速度[40],Li等人提出了 Light Head RCNN,使检测网络的头部尽可能轻,以减少RoI区域计算。尤其是li等人,应用一个大的内核可分离卷积生成了一个通道数少和廉价的RCNN子网络的手薄的特征图。从而实现速度和精度的极佳折衷。
自RCNN [65]以来,第3.1节中介绍的基于区域的策略已经在检测准确率上占优势。第3.1节中引入的重要努力使得检测器更快,更准确,目前流行的基准数据集的主要结果都基于Faster RCNN [175]。尽管取得了这些进展,但基于区域的方法在移动/可穿戴设备上的计算成本可能很高,而移动/可穿戴设备的存储和计算能力有限。因此,研究人员已经开始开发统一的检测策略,而不是试图优化复杂的基于区域的检测的各个组成部分。
一阶段法广泛地指代直接预测类概率的体系结构和具有完整图像的边界框偏移,一个前馈CNN网络,不涉及区域方案生成或 后分类的过程。该方法简单而优雅,因为它完全消除了区域建议生成和后续像素或特征重采样阶段,将所有计算封装在单个网络中。由于整个检测是单个网络,因此可以直接在检测性能上进行端到端优化。
DetectorNet:Szegedy等人 [198]是最早探索CNN进行物体检测的人之一。DetectorNet为物体检测问题指定为对象边界mask回归问题。他们使用AlexNet [109]并用回归层替换最终的softmax分类器层。给定一个图像窗口,他们使用一个网络来预测粗网格上的前景像素,以及四个额外的网络来预测对象的顶部,底部,左侧和右侧。然后,分组过程将预测的mask转换为检测到的边界框。人们需要根据每个对象类型和mask类型训练网络。它不能扩展到多个类。DetectorNet 需要从一张图像中提取多个crops,并且每个crops的每部分都需要执行多个网络。
OverFeat:Sermanet等人提出。是第一个基于全卷积深度网络的单阶段物体探测器之一。它是最成功的对象检测框架之一,赢得了ILSVRC2013竞赛。OverFeat以多尺度滑动窗口方式通过单向传播CNN执行对象检测,其除了最终分类/回归层之外仅由卷积层组成。通过这种方式,它们自然地在重叠区域之间共享计算。OverFeat生成一个特征向量网格,每个特征向量表示输入图像中略微不同的上下文视图位置,并且可以预测对象的存在。一旦识别出对象,则使用相同的特征来预测单个边界框回归。此外,OverFeat,通过将原始图像放大缩小到6个不同的尺度,送入网络并迭代融合到一起,导致评估的上下文视图(最终特征向量)的数量显着增加。OverFeat通过这种多尺度特征的方法提高整体的表现。与相同时期提出的RCNN [65]相比,OverFeat具有明显的速度优势,但由于在该阶段难以训练完全卷积网络,因此其准确度要低得多。速度优势源于完全卷积网络共享重叠窗口之间的卷积计算。
YOLO (You Only Look Once):Redmon等人提出了YOLO,一个一阶段的物体检测器,将物体检测定义为一个图像级别的空间分离的bounding boxes,和相关类概率的回归问题。YOLO的设计如图8所示。由于区域建议生成阶段完全被丢弃,YOLO直接使用一小组候选区域预测检测。与基于区域的方法不同,例如 Faster RCNN,根据部分区域的特征预测检测,YOLO全局的使用整个图像的特征。特别是,YOLO将图像分成S*S的网格。每个网格预测C个类的概率,B个bounding box的位置和他们的置信度得分。这些预测被编码为S*S*(5*B+C)个张量。通过完全抛弃region proposal生成步骤的设计,YOLO非常快速,以45 FPS实时运行,并且快速的YOLO版本,即Fast YOLO [174],以155 FPS运行。由于YOLO在进行预测时会得到整个图像的信息,这就是会让它的编码得到类的上下文信息,不太可能在预测背景上有误报。由于边界框位置,比例和纵横比的粗略划分,YOLO会产生更多的定位误差。正如[174]中所讨论的,YOLO可能无法定位某些对象,特别是小对象,可能是因为网格划分非常粗糙,并且因为构造的每个网格单元只能包含一个对象。目前尚不清楚YOLO在具有更多对象的数据集上能够在多大程度上转化为良好的性能,例如ILSVRC检测挑战。
YOLOv2 and YOLO9000:Redmon and Farhadi提出了YOLOv2,YOLO的提升版,其中自定义GoogLeNet [200]网络被更简单的DarkNet19替换,加上利用现有工作中的一些策略,例如批量标准化[78],删除完全连接的层,并使用通过kmeans和多尺度训练学习好的anchor 。YOLOv2在标准检测任务上取得了最新的成果,如PASCAL VOC和MS COCO。此外,Redmon和Farhadi [173]介绍了YOLO9000,它可以实时检测超过9000个对象类别,提出了一种联合优化方法,可以在ImageNet和COCO上同时使用WordTree进行训练,以组合来自多个来源的数据。
SSD (Single Shot Detector):为了在不牺牲太多检测精度的情况下保持实时速度,Liu等人[136] 提出的SSD比YOLO [174]更快,并且具有与最先进的基于区域的探测器相比的准确性,包括Faster RCNN [175]。SSD有效的结合了Faster RCNN 的RPN,YOLO,和多尺度卷积特征的思想,在保持高检测质量的同时实现快速检测速度。与YOLO一样,SSD预测固定数量的边界框和在这些框中存在对象类实例的分数,然后是NMS步骤以产生最终检测。SSD中的CNN网络是完全卷积的,其前面的几层基于标准体系结构的,例如VGG [191](在进入分类层之前截断),其被称为基础网络。然后,将几个逐渐减小尺寸的辅助卷积层添加到基础网络的末端。在具有低分辨率最后一层卷积层中的信息在空间太粗略以至于不能精确定位。SSD使用较浅的层和较高的分辨率来检测小物体。对于不同大小的对象,SSD通过操作多个CONV特征图执行多个尺度的检测,每个CONV特征图预测适当大小的边界框的类别得分和框偏移。对于300*300的输入,SDD在VOC2007达到map 74.3%,在nivida Titan X上,测试59FPS每张。
在本节中,描述了重要的子问题,包括特征表示,区域提议,上下文信息挖掘和训练策略。对每种方法的主要贡献进行审查。
作为任何探测器中的主要组件之一,良好的特征表示在物体探测中是最重要的[46,65,62,249]。在过去,大量的努力致力于设计局部特征描述(例如,SIFT [139]和HOG [42])并探索方法(例如,Bag of Words [194]和Fisher Vector [166])来分组,并把这些特征抽象为更高级的表示,为了让辨别对象部分开始出现。但是这些特征表示方法需要仔细的工程和相当多的领域专业。
相比之下,由多个处理层组成的深度学习方法(特别是深度CNN或DCNN)可以直接从原始图像中学习具有多级抽象的强大特征表示[12,116]。由于学习过程减少了传统特征工程中所需的特定领域知识和复杂过程的依赖性[12,116],因此特征表示的负担已转移到更好的网络体系结构的设计中。
回顾第3节中的深度学习模型(RCNN [65],Fast RCNN [64], Faster RCNN [175], YOLO [174], SSD [136])持续的提升了检测的精度和速度,人们普遍认为CNN特征的表示起着至关重要的作用,它是CNN架构,也是探测器的引擎。结果是最近大多数的检测精度的提升是通过设计发展新颖的网络。因此,我们首先回顾一下通用对象检测中使用的流行CNN架构,然后回顾一下用于改进对象特征表示的工作,例如开发不变特征以适应对象尺度,姿势,视点,部分变形等几何变化以及执行多尺度分析以改善各种尺度的物体检测。
在第3节介绍的检测框架中,CNN架构作为主干网络。表2中总结了有代表性框架,包括AlexNet [110],ZFNet [234] VGGNet [191],GoogLeNet [200],Inception系列[99,201,202],ResNet [79],DenseNet [94]和SENet [91],从图9中可以看出物体识别的网络改进。最近的CNN进展的进一步回顾可以在[71]中找到。
简而言之,CNN具有分层结构,并由多个层组成,如卷积,归一化,池化等。从浅到更深的层,图像重复经历滤波卷积,并且对于每个层,这些滤波器的感受野(支撑区域)增加。例如,开创性的AlexNet [110]有五个卷积层和两个完全连接(FC)层,第一层包含96个大小为11*11*3的滤波器。通常,CNN第一层提取低级特征(例如边缘),中间层提取复杂性增加的特征,例如低级特征的组合,以及后面的卷积层检测对象时将前面卷积部分的特征组合[234,12,116,157].
从表2中可以看出,架构演变的趋势是网络越来越深入:AlexNet由8层组成,VGGNet 16层,最近ResNet和DenseNet都超过了100层,尤其是VGGNet [191]和GoogLeNet [200],它表明增加深度可以提高深层网络的表示能力。有趣的是,从表2中可以看出,AlexNet,OverFeat,ZFNet和VGGNet等网络具有大量参数,尽管只有很少的层深,因为大部分参数来自FC层。因此,像Inception,ResNet和DenseNet这样的新网络虽然具有非常大的网络深度,但通过避免使用FC层,参数要少得多。
通过结构设计使用Inception模块,GoogLeNet的参数大大降低。类似地,ResNet证明了跳跃连接对于学习具有数百层的极深网络的有效性,赢得了ILSVRC 2015分类任务。受ResNet [79]的启发,InceptionResNets [202]将Inception网络与shortcut connections相结合,声称shortcut connections可以显着加速Inception网络的训练。通过扩展ResNet Huang et al.提出了由 dense blocks构建的DenseNets,dense blocks以前馈方式将每个层连接到每个其他层,从而产生引人注目的优势,例如参数效率,隐式深度监控和特征重用。最近,hu等人提出了[79]提出了一个称为挤压和激励(SE)块的架构单元,它可以与现有的深层架构相结合,以最小的额外计算成本提高其性能,通过明确建模卷积特征通道之间的相互依赖性,自适应地重新校准通道特征响应,从而赢得ILSVRC 2017分类任务。对CNN架构的研究仍然活跃,骨干网络的数量仍在不断涌现,如Dilated Residual Networks [230], Xception [35], DetNet [127], and Dual Path Networks (DPN) [31].
CNN的训练需要足够多的标记数据,这些数据具有足够标签和组内多样性。与图像分类不同,检测需要从图像中定位(可能很多)对象。[161]已经显示使用具有对象级注释的大规模数据集(例如ImageNet分类和本地化数据集)预训练深度模型,而不仅仅是图像级注释,提高了检测性能。然而,收集边界框标签是昂贵的,尤其是对于数十万个类别。一种常见的情况是CNN在具有图像级标签的大型数据集(通常具有大量视觉类别)上预训练;然后可以将预训练的CNN直接应用于小数据集,作为通用特征提取器[172,8,49,228],其可以支持更广泛的视觉识别任务。为了检测,通常在给定的检测数据集上对预训练的网络进行微调。几个大规模图像分类数据集用于CNN预训练; 其中ImageNet1000数据集[44,179]包含1000万个1000个对象类别的图像,或者Places数据集[245]比ImageNet1000大得多但类别较少,或最近的混合数据集[245]结合了Places和ImageNet数据集。
在[49,67,1]中探索了没有微调的预训练CNN用于物体分类和检测。其中显示特征性能是提取层的函数;例如,对于在ImageNet上预先训练的AlexNet,检测精度由高到低依次为FC6 / FC7 / Pool5[49,67];微调预训练网络可以显着提高检测性能[65,67],尽管在AlexNet的情况下,FC6和FC7的微调性能提升要比Pool5大得多,这表明Pool5的功能更为通用。此外,源数据集和目标数据集之间的关系或相似性起着关键作用,例如基于ImageNet的CNN特征在对象相关图像数据集上表现出更好的性能[243]。
基于CNN的深度探测器,如RCNN [65],Fast RCNN [64],Faster RCNN [175]和YOLO [174],通常使用2中列出的深度CNN架构作为骨干网络并使用CNN最后一层的特征用来物体检测,然而在大尺度范围内检测对象是一个基础性的挑战。解决该问题的经典策略是在将图像缩放到多个尺度(例如,图像金字塔)[56,65,77]输入检测器,这通常产生更准确的检测,但是具有明显的推理时间和内存的增加。相反,CNN逐层计算其特征,并且特征层次结构中的子采样层导致固有的多尺度金字塔。
这种固有的特征层次结构产生了不同空间分辨率的特征图,但在结构[75,138,190]中存在固有问题:后面(或更高)的层具有大的感受野和强大的语义,并且对于诸如对象姿势,照明和部分变形之类的变化是鲁棒的,但是分辨率低并且丢了许多几何细节。相反,较早(或较低)的层具有较小的感受野和丰富的几何细节,但分辨率较高且对语义的敏感性较低。直观地,对象的语义概念可以出现在不同的层中,具体取决于对象的大小。因此,如果目标对象很小,它需要较早层中的精细的细节信息,并且很可能在后面的层中消失,原则上使小物体检测非常具有挑战性,对于这类挑战,例如dilated convolutions [229] 和 atrous convolution [40, 27]已经被提出。另一方面,如果目标对象很大,那么语义概念将在更往后的层中出现。显然,仅使用来自一个层的特征来预测不同尺度的物体是不理想的,因此已经提出了许多方法[190,241,130,104]以通过利用多个CNN层来提高检测精度,大致分为三种类型。 多尺度物体检测:
1.利用多个CNN层的组合特征进行检测[75,103,10];
2.检测多个CNN层;
3.上述两种方法的组合[58,130,190,104,246,239]。
(1)利用多个CNN层的组合特征进行检测:在进行预测之前,尝试组合来自多个层的特征。代表性方法包括Hypercolumns [75],HyperNet [103]和ION [10]。这种特征组合通常通过跳跃连接来实现,跳跃连接是一种经典的神经网络思想,它跳过网络中的某些层并将早期层的输出作为后一层的输入,最近流行用于语义分割的体系结构。如图10(a)所示,ION [10]使用跳过池化层来从多个层提取RoI特征,然后通过使用组合特征对由选择性搜索和边缘框生成的对象提议进行分类。HyperNet [103],如图10(b)所示,遵循类似的想法,并集成深度,中度和浅度特征,以生成对象proposals,并通过端到端联合训练策略预测对象。该方法仅在每个图像中提取100个候选区域。组合特征更具描述性,更有利于定位和分类,但计算复杂度增加。
(2) 在多个CNN层检测:通过平均分割概率,将来自多个层的粗略到精细预测结合起来。SSD [136]和MSCNN [20],RBFNet [135]和DSOD [186]组合来自多个特征图的预测以处理各种大小的对象。SSD将不同比例的默认框展开到CNN内的多个特征图,并强制每个特征图专注于预测特定比例的对象。Liu等人提出的 RFBNet,用接受场块(RFB)替换了SSD后面的卷基层,增强特征的可辨性和稳健性。RFB是一个多分支卷积块,类似于Inception块
[200],但将多个分支与不同的内核和卷积层相结合[27]。MSCNN [20]在CNN的多个层上应用反卷积,以在卷积层学习区域建议和池化特征之前增加特征图分辨率。
(3)结合以上两种方法:一方面,通过简单地将skip特征结合到检测中来实现超特征表示,像UNet [154],Hypercolumns [75],HyperNet [103]和ION [10]由于高维度而没有产生显著的改进。另一方面,很自然地从具有大的感受野的后期层中检测大的物体,并且使用具有小的感受野的较早层来检测小物体;然而,简单地在较早的层检测对象可能导致检测效果不好,因为较早的层具有较少的语义信息。因此,为了结合两者的优点,最近的一些工作提出在多层检测物体并且通过组合来自不同层的特征来获得每个检测层的特征。代表性方法包括SharpMask [168],Deconvo-lutional Single Shot Detector(DSSD)[58],Feature Pyramid Net-work(FPN)[130],Top Down Modulation(TDM)[190],Reverse connection with Objectness prior Network (RON) [104], ZIP [122](shown in Fig. 12), Scale Transfer Detection Network (STDN)[246], RefineDet [239] and StairNet [217],如表3所示,与图11对比。
从图11(a1)到(e1)可以观察到,这些方法具有高度相似的检测体系结构,其结合了具有横向连接的自顶向下网络,以补充标准的自下而上的前馈网络。 具体地,在自下而上的卷积之后,得到的最终的高级语义特征再自上而下的网络传回,中间层横向处理之后特征与自上而下的特征组合。从图11(a2)到(e2)可以看出,一个主要区别是反向融合块(RFB)的设计,其处理下层滤波器的选择和多层特征的组合。自上而下和横向的特征采用小卷积处理,并以元素和、元素积或连接的方式相结合.FPN在若干应用中作为通用特征提取器显示出显著的改进,包括对象检测[130,131]和实例分割[80],例如, 在基本的Faster RCNN探测器中使用FPN。这些方法必须添加额外的层以获得多尺度特征,从而引入不可忽视的成本。STDN [246]使用DenseNet [94]来组合不同层的特征,并设计了尺度转移模块以获得具有不同分辨率的特征图。尺度转移模块可以直接嵌入到DenseNet中,只需很少的额外开销。
(4)模型几何变换:DCNN在本质上受限于模型显著的几何变换。关于DCNN表示对图像变换的不变性和等价性的实证研究可以在[118]中找到。已经提出了一些方法来增强CNN表示的鲁棒性,旨在针对不同类型的变换(例如比例[101,18],旋转[18,32,218,248]或两者[100])来学习不变的CNN表示。
Modeling Object Deformations:在深度学习之前,Deformable Part based Models(DPM)[56]在通用对象检测方面非常成功,通过以可变形配置布置的组件来表示对象。这种DPM建模对物体姿态,视点和非刚性变形的变换不太敏感,因为部件可以相应地定位并且它们的局部外观是稳定的,激励研究人员[41,66,147,160,214]明确建模对象的组成以改进基于CNN的检测。第一次尝试[66,214]将DPMs和CNNs结合起来,使用AlexNet在基于DPM的检测中学习深层特征,但是没有区域建议。为了使CNN能够享受对对象部件变形进行建模的内置功能,提出了许多方法,包括DeepIDNet [160],DCN [41]和DPFCN [147](如表3所示)。虽然在思想上类似,但变形以不同的方式计算:DeepIDNet [161]设计了一个变形约束池化层来替换常规的最大池化层来学习不同对象类的共享视觉模式及其变形属性,Dai等人[41]设计了一个可变形卷积层和一个可变形RoI池化层,这两个层都是基于在特征映射中增加常规的网格采样位置的思想,增加额外的位置偏移量,并通过卷积学习偏移量从而获得可变形卷积网络(DCN),在DPFCN [147]中,Mordan等人提出了基于可变形部分的RoI池化层,它通过同时优化各部分的潜在位移,在目标的周围选择有区别的部分。
在物理世界中,视觉对象出现在特定的环境中,并且通常与其他相关对象共存,并且存在强烈的心理证据[13,9],语境在人类对象识别中起着至关重要的作用。已经认识到,适当的上下文建模有助于物体检测和识别[203,155,27,26,47,59],尤其是当物体外观特征因物体尺寸小,遮挡或图像质量差而不足时。已经讨论了许多不同类型的背景,详见调查[47,59]。 上下文可以大致分为三类[13,59]:
1.语义上下文:在某些场景而不是其他场景中寻找物体的可能性
2.空间上下文:在相同位置寻找目标的可能性并不是关于本场境内的其他物体;
3.尺度上下文:物体尺寸的设定受限于场景内其他物体。
大量的工作[28,47,59,143,152,171,162]先于深度学习的普遍存在,但是这些工作大都是不是基于DCNN目标检测的。[175,136,80]当前技术水平目标检测没有明确地利用任何上下文信息。人们普遍认为DCNN隐含地使用了上下文信息[234,242],因为他们学习了具有多个抽象层次的层次表示。然而,在基于DCNN的探测器[90,29,236]中明确探索上下文信息仍然是有价值的,因此下面回顾了最近在基于DCNN的物体探测器中利用上下文线索的工作,由[240,59]的早期工作推动,将这些上下文信息分为全局的和局部的上下文信息。表4总结了代表性方法。
全局上下文信息:指的是图像级别或者场景的上下文信息,这可以作为物体检测的提示(例如,卧室将预测有床的存在)。在DeepIDNet [160]中,图像分类得分被用作上下文特征,并与对象检测得分连接以改善检测结果。在ION [10]中,Bell等人提出使用空间回归神经网络(RNN)来探索整个图像的上下文信息。在SegDeepM [250]中,zhu等人提出一种MRF模型scores appearance as well as context for each detection, and allows each candidate box to select a segment and score the agreement between them.在[188]中,语义分割被用作上下文启动的一种形式。
局部上下文信息:考虑物体关系中的局部环境,物体与其周围区域之间的相互作用。通常,建模对象关系具有挑战性,需要推理不同类别的,不同位置的位置,不同比例等的边界框。在深度学习时代,明确对象关系的模型研究非常有限,代表性的是空间记忆网络(SMN)[29],对象关系网络[90] 和结构推理网络(SIN)[137]。在SMN中,空间存储器实质上将对象实例组装回伪图像表示,该伪图像表示易于被馈送到另一个CNN以进行对象关系推理,从而得到新的顺序推理架构,其中图像和存储器被并行处理以获得进一步更新的检测记忆。受到最近自然语言处理领域注意力模块成功的启发[211],Hu等人[90]提出了一种轻量级ORN,它通过外观特征和几何之间的相互作用同时处理一组对象。受到最近自然语言处理领域注意力模块成功的启发[211],Hu等人。 [90]提出了一种轻量级ORN,它通过外观特征和几何之间的相互作用同时处理一组对象。 它不需要额外的监督,并且易于嵌入现有网络中。已经证明它在改进现代物体检测过程中的物体识别和重复移除步骤方面是有效的,从而提升了第一个完全端到端物体检测器。SIN [137]考虑了两种上下文,包括场景上下文信息和单个图像中的对象关系。它将对象检测表示为图结构推理的问题,其中给定图像,对象被视为图中的节点,对象之间的关系被建模为这种图中的边。
更广泛的方法更简单地解决了这个问题,通常是通过扩大检测窗口大小来提取某种形式的局部信息。代表性方法有 MRCNN [62], Gated BiDirectional CNN(GBDNet) [235,236], Attention to Context CNN (ACCNN) [123], CoupleNet [251],and Sermanet et al. [182].
在MRCNN [62](图13(a))中,除了从骨干网络的最后一个CONV层提取原始对象proposal的特征之外,Gidaris和Komodakis提出从对象prooisal的许多不同区域(半区域,边界区域,中心区域,上下文区域和语义分割区域)中提取特征,以便获得更丰富和更健壮的对象表示。所有这些特征仅通过连接组合在一起。
由此提出了许多与MRCNN密切相关的方法。[233]中的方法只使用了四个上下文区域,组织在一个中央凹结构中,分类器被端到端的训练。Zeng等人提出提出GBDNet [235,236](图13(b))在多个尺度上提取object proposa周围的上下文区域中提取特征以提高检测性能。不同于像MRCNN那样分别学习每个区域的CNN特征然后连接它们的天真方式,GBDNet可以通过卷积实现来自不同上下文区域的特征之间的信息的传递。注意到信息传递并不总是有用,而是依赖于单个的样本。zeng等人使用门控函数来控制信息传输,如长期短期记忆(LSTM)网络[83]。在GEDNet提出的同时,Li等人同时 [123]提出了ACCNN(图13(c))以利用全局和局部上下文信息来促进对象检测。为了捕获全局上下文,提出了多尺度局部上下文(MLC)子网,其通过多个堆叠的LSTM层反复生成输入图像的注意图以突出有用的全局上下文位置。为了编码局部区域上下文信息,LI等人。 [123]采用类似于MRCNN [62]的方法。如图13(d)所示,CoupleNet [251]在概念上类似于ACCNN [123],但建立在RFCN [40]之上。除了RFCN [40]中的原始分支,通过具有位置敏感的RoI池化捕捉对象信息之外,CoupleNet [251]添加了一个分支通过RoI池化来编码全局上下文信息。
对象可以位于图像中的任何位置和任意占图像的任意大小比例。在手工制作的表示特征描述全盛时期(例如,SIFT [140],HOG [42]和LBP [153])、词袋(BoW)[194,37]和DPM [55]使用滑动窗口技术[213] ,42,55,76,212]。然而,窗口的数量很大并且随着图像中的像素数量而增长,并且需要以多个比例和纵横比进行搜索,这进一步显着增加了搜索空间。因此,应用更复杂的分类器在计算上太昂贵。
大约在2011年,研究人员提出通过使用检测方案3 [210,209]来缓解计算易处理性和高检测质量之间关系。源于[2]提出的对象性的概念,对象proposal是图像中可能包含对象的一组候选区域。检测proposal通常用作预处理步骤,以便通过限制检测器需要评估的区域的数量来降低计算复杂度。因此,良好的检测proposal应具有以下特点:
1.高召回率,只需少量提案即可实现;
2.提案尽可能准确地匹配对象;
3.效率高。
基于选择性搜索[210,209]给出的检测proposal物体检测的成功引起了广泛的兴趣[21,7,3,33,254,50,105,144]。对象提议算法的全面审查超出了本文的范围,因为对象提议具有超出对象检测的应用[6,72,252]。我们将感兴趣的读者引用到最近的调查[86,23],该调查提供了对许多经典对象提议算法及其对检测性能的影响的深入分析。我们在此感兴趣的是审查基于DCNN的对象proposal方法,输出类不可知的proposal以及与通用对象检测相关的方法。
2014年,对象proposal[210,209]和DCNN特征[109]的结合,造就了了通用对象检测的里程碑RCNN [65]。从那时起,检测proposal算法迅速成为标准的预处理步骤,事实证明,自2014年以来PASCAL VOC [53],ILSVRC [179]和MS COCO [129]物体检测挑战中的所有获奖条目都使用了检测proposal[65].
在基于传统低级线索(例如,颜色,纹理,边缘和渐变)的对象proposal方法中,选择性搜索[209],MCG [7]和EdgeBoxes [254]是更受欢迎的。随着领域的快速发展,传统的对象提议方法[86](例如选择性搜索[209]和[254])作为为独立于检测器的外部模块,成为检测瓶颈[175]。使用DCNN的一类新的对象proposal算法[52,175,111,61,167,224]引起了广泛的关注。最近基于DCNN的对象提议方法通常分为两类:基于边界框和基于目标分割,表5中总结了代表性方法。
边界框proposal方法最好的例子是Ren等人的RPC方法[175],如图14所示.RPN通过在最后一个共享CONV层的特征图上滑动一个小网络来预测proposal(如图 14)。在每个滑动窗口位置,它通过使用k个锚箱同时预测k个提议,其中每个锚箱在图像中的某个位置居中,并且与特定的比例和纵横比相关联。Ren等175]建议通过共享卷积层将RPN和Fast RCNN集成到单个网络中。这样的设计使速度大幅度提升并产生了第一个端到端检测网络,Faster RCNN [175]。如表3和4所示,RPN已被许多现有物体探测器广泛选为proposal方法。
替换了固定的先验一组锚作为MultiBox的[52,199]和RPN [175]的,Lu等人提出通过使用递归搜索策略来生成锚点位置,该递归搜索策略可以自适应地引导计算资源以关注可能包含对象的子区域。从整个图像开始,在搜索过程中访问的所有区域都充当锚点。对于在搜索过程期间遇到的任何锚定区域,使用scalar zoom indicator来决定是否进一步划分该区域,并且使用称为邻接和缩放网络(AZNet)的深度网络来计算具有对象性得分的一组边界框。并且使用称为邻接和缩放网络(AZNet)的深度网络计算具有对象分数的一组边界框。AZNet通过添加分支来扩展RPN,以与现有分支并行计算scalar zoom indicator。
尝试通过利用多层卷积特征生成对象proposal还有其他工作[103,61,224,122]。与RPN同时提出的还有,Ghodrati等人提出了DeepProposal,它通过使用多个卷积特征的级联来生成对象proposal,构建反向级联以选择最有希望的对象位置并以粗略到精细的方式细化它们的框。作为RPN的改进变体,HyperNet [103]设计了超级特征,它聚合多层卷积特征,并在生成proposal和检测物体是共享它们,通过端到端的训练。Yang等人 提议的CRAFT [224]也使用级联策略,首先训练RPN网络以生成对象proposal,然后使用它们训练另一个Fast RCNN分支网络以进一步区分对象与背景。Li等人[122]提出ZIP来改进RPN,方法是利用常用的预测对象提议的想法,在网络的不同深度使用多尺度的卷积特征图映射来融合低级细节和高级语义。ZIP中使用的骨干网络是一个“缩小和进入”网络,其灵感来自卷积和翻卷积结构[138]。
最后,值得一提的近期工作包括Deepbox [111],它提出了一个轻量级CNN来学习通过EdgeBox重新生成proposal的排名,DeNet [208]引入了边界框角点估计,以有效地预测对象proposal,以在Faster RCNN模型周中替换RPN。
对象分割proposal方法 对象分割proposal方法旨在生成可能与对象对应的分割proposal。对象分割proposal比边界框提案更具信息性,并朝对象实例分割又近了一步[74,39,126]。Pinheiro等人提出的一项开创性工作DeepMask。 [167],其中分割proposal是直接从具有深度网络的原始图像数据中学习的。与RPN相似,在一些共享的卷积层之后,DeepMask网络分成两个分支,以预测不可知类的mask和相关物体的得分。与OverFeat [183]中的高效滑动窗口预测策略类似,训练的DeepMask网络在推理期间以滑动窗口方式应用于图像(及其重新缩放版本)。最近,Pinheiro等人,提出SharpMas,通过使用细化模块扩充DeepMask架构,类似于图11(b1)和(b2)中所示的架构,通过自上而下的细化过程扩充前馈网络。SharpMask可以有效地将来自早期特征的空间丰富信息与后面层中编码的强语义信息集成,以生成高保真度对象mask。
由完全卷积网络(FCN)用于语义分割[138]和DeepMask [167]启发,Dai等人提议InstanceFCN [38]用于生成实例分割proposal。与DeepMask类似,InstanceFCN网络分为两个分支,两个分支都是全卷积的,其中一个分支生成一小组实例敏感分数图,跟在一个输出实例的汇编模块后面,另一个分支用于预测 对象得分。Hu等人提出FastMask [89]以类似于SSD [136]的单点方式有效地生成实例分割proposal,以便在深层网络中利用多尺度卷积特征。从多尺度卷积特征图中密集提取的滑动窗口并输入到可以接受不同尺度头部模块以预测分割mask和对象分数。据称FastMask在800×600分辨率图像上以13 FPS运行,平均召回率略有折衷。Qiao等人提出ScaleNet通过添加尺度预测阶段来扩展先前的对象proposal方法,如SharpMask [168]。也就是说,ScaleNet估计输入图像的对象尺寸(比例)的分布,SharpMask在ScaleNet预测的比例下搜索整个输入图像并输出实例分割proposal。Qiao等人展示了[170]他们的方法大大优于超市数据集的先前技术水平。
为了获得更好和更强大的DCNN特征表示,通常使用数据增强技巧[22,64,65]。它可以在训练时间,测试时间或两者中使用。增强是指通过使基础类别保持不变的变换来扰乱图像,例如裁剪,翻转,旋转,缩放和平移,以便生成该类的其他样本。数据增强可以影响深度特征表示的识别性能。然而,它有明显的局限性。训练和推理计算复杂性都显着增加,限制了它在实际应用中的使用。在各种尺度变化下检测物体,尤其是检测非常小的物体是一个关键挑战。已经显示[96,136]图像分辨率对检测精度具有相当大的影响。因此,在那些数据增强技巧中,主要使用缩放(尤其是更高分辨率的输入),因为高分辨率输入增加了检测小物体的可能性[96]。最近,Singh等人提出了先进和有效的数据论证方法SNIP [192]和SNIPER [193]来说明规模不变性问题,如表6所示。由于直观的理解,小型和大型物体难以分别在较小和较大的尺度上检测,Singh等人提出了一种名为SNIP的新型训练方案可以减少训练期间的比例变化但不减少训练样本。SNIPER [193]是一种有效的多尺度训练方法。它只以适当的比例(尺度)处理对象ground thruth对象周围的上下文区域,而不是处理整个图像金字塔。Shrivastava [189] 和 Lin等人探讨了处理极端前景 - 背景类不平衡问题的方法[131]。wang等人[216]提出训练对抗性网络以生成具有对象检测器难以识别的遮挡和变形的示例。有一些研究重点是开发更好的非最大抑制方法[16,87,207]。
数据集在整个物体识别研究的历史中发挥了关键作用。它们是该领域取得重大进展的最重要因素之一,不仅是衡量和比较竞争算法性能的共同基础,而且还将该领域推向日益复杂和更具有挑战性的问题。目前对因特网上大量图像的访问使得可以构建越来越多的图像和类别的综合数据集,以便捕获更大的对象的丰富性和多样性。拥有数百万张图像的大规模数据集的兴起为重大突破铺平了道路,并在对象识别方面实现了前所未有的性能。由于空间的限制,我们将感兴趣的读者引用几篇论文[53,54,129,179,107]来详细描述相关数据集。
从Caltech101 [119]开始,代表性数据集包括Caltech256 [70], Scenes15 [114], PASCAL VOC (2007) [54],Tiny Images [204], CIFAR10 [108], SUN [221], ImageNet [44],Places [245], MS COCO [129], and Open Images [106].这些数据集的特征总结在表7中,并且所选择的样本图像显示在图15中。
早期的数据集,如Caltech101或Caltech256,由于缺乏类内差异而受到批评。SUN [221]通过查找收集各种场景类别的图像,并且其许多图像具有可以支持场景识别和对象检测标注。Tiny Images [204]以前所未有的规模创建了一个数据集,全面覆盖了所有对象类别和场景,但其注释未经手动验证,包含大量错误,因此,两个基准(CIFAR10和CIFAR100 [108])具有可靠的标签,来自Tiny Images。
PASCAL VOC [53,54]是一项多年努力,致力于创建和维护一系列用于分类和物体检测的基准数据集,为年度竞赛形式的识别算法的标准化评估创造了先例。从2005年的四个类别开始,增加到日常生活中常见的20个类别,如图15所示。ImageNet [44]包含超过1400万张图像和20,000多个类别,这
是ILSVRC [44,179]挑战的支柱,它将对象识别研究推向了新的高度。
ImageNet一直因为据集中的对象往往很大且集中在中心被批评,使得数据集不是现实世界中的典型场景。为了解决这个问题并将研究推向更丰富的图像理解,研究人员创建了MS COCO数据库[129]。MS COCO中的图像是复杂的日常场景,包含自然环境中的常见对象,更接近现实生活,并且使用完全实例分割的标记对象以提供更准确的检测器评估。Places数据库[245]包含1000万个场景图像,标有场景语义类别,为数据饥渴的深度学习算法提供了达到人类视觉模式识别的机会。最近,Open Images [106]是大约900万个图像的数据集,这些图像已经用图像级标签和对象边界框注释。
通用物体检测有三个着名的挑战:PASCAL VOC [53,54],ILSVRC [179]和MS COCO [129]。每个挑战包括两个组成部分:(i)公开可用的图像数据集以及ground thruth注释和标准化评估软件; (ii)年度竞赛和相应的研讨会。表8中给出了用于检测挑战的训练,验证和测试数据集中的图像和对象实例的统计数据。
对于PASCAL VOC挑战,自2009年以来,数据包括前几年增加了新图像的图像,允许每年增加图像数量,更重要的是,这意味着可以将测试结果与前几年的图像进行比较。
ILSVRC[179]将PASCAL VOC检测算法的标准化,训练和评估目标在对象类和图像数量上提升了一个数量级。ILSVRC目标检测挑战从2013年到现在每年都在进行。
COCO对象检测挑战旨在推动通用对象检测技术的发展,并且从2015年到现在每年都在运行。它具有两个对象检测任务:使用边界框输出或对象实例分割输出。它具有比ILSVRC更少的对象类别(COCO中为80,而ILSVRC对象检测中为200),但每个类别的实例更多(平均为11000,而ILSVRC对象检测中为约2600)。此外,它还包含ILSVRC当前不可用的对象分割注释。COCO引入了几个新的挑战:(1)它包含各种尺度的物体,包括高百分比的小物体(例如小于图像区域的1%[192])。 (2)物体不太具有标志性,杂乱或严重遮挡,(3)评价指标(见表9)鼓励更准确的物体定位。
COCO已成为最广泛使用的通用对象检测数据集,表8总结了训练,验证和测试的数据集统计数据。从2017年开始,测试集只有Dev和Challenge拆分,其中Test-Dev拆分是默认测试数据,并且通常在Test-Dev上报告结果,以便进行公平比较。
2018年推出了继PASCAL VOC,ImageNet和COCO的传统之后,开放式图像物体检测挑战,规模空前。它提供了比以前的挑战更广泛的对象类,并且具有两个任务:500个不同类的边界框对象检测和在特定关系中检测对象对的视觉关系检测。
评估检测算法性能有三个标准:检测速度(每秒帧数,FPS),精度和召回率。最常用的指标是平均精度(AP),源自精度和召回。AP通常以类别特定的方式评估,即,分别针对每个对象类别计算。在通用对象检测中,通常根据检测多个对象类别来检测检测器。为了比较所有对象类别的性能,采用所有对象类别平均的平均AP(mAP)作为性能的最终度量。 有关这些指标的更多详细信息,请参见[53,54,179,84]。