由于平台字数限制,本文分成两部分,第一部分。
6. 对象表征
作为检测器的主要组成部分之一,良好的特征表征在目标检测中是至关重要的 [54, 83,80, 316]。过去,为了能够将对象具有可区分性的部件表示出来(例如,Bag of Words [208] 和Fisher Vector [247]),大量的工作致力于设计局部描述子(descriptors)(例如,SIFT [174] 和HOG [50])并探索将这些描述子组装和抽象为更高层次的表征,然而这些特征表征方法都需要仔细的工程方法和相当多的领域知识。
相反,由多个处理层组成的深度学习方法(尤其是深度CNN,DCNN),可以直接从原始图像中学习到强大的具有多层次抽象的特征表征 [13,145]。由于学习过程减少了传统特征工程中依赖的特定领域知识和复杂过程 [13,145],特征表征的负担已经转移到设计更好的网络体系结构和训练过程上。
第5部分回顾的主要框架(RCNN [83],
Fast RCNN [82]、Faster RCNN [225]、YOLO [223]、SSD [171])一直在不断提升检测精度和速度。研究者普遍认为CNN的表征起着至关重要的作用,CNN框架(第6.1节和表15)是检测器的引擎。因此,最近在检测精度方面的大部分改进都是通过研究开发新的网络框架得到的。因此,我们从在通用对象检测中比较常用的
CNN框架开始回顾,然后回顾致力于提升对象特征表征的工作,如开发不变性特性来缓解
在对象尺寸、姿势、视角和部分形变方面的几何变化,以及为了在更广泛的尺寸范围上进行检测而进行的多尺度分析工作。
6.1 流行的CNN框架
在第5部分描述的对象检测框架中,被用来作为骨干网络的便是CNN框架(第3部分介绍过)。代表性的框架有:AlexNet [137]、 ZFNet
[296]、 VGGNet [244]、GoogLeNet [256]、 Inception series [121,
257, 258]、 ResNet [98]、 DenseNet [114] 和 SENet [111],如表6所总结的。图15展示了部分网络在对象识别上的性能提升。对CNN近期进展的进一步回顾可以参考 [89]。
从表6中可以看出,架构演化的趋势是网络越来越深:AlexNet有8层,VGGNet有16层,更新的ResNet和DenseNet都超过了100层,特别是VGGNet [244] 和GoogLeNet [256],尤其能够说明增加深度可以提高深度网络的表征能力。有趣的是,从表6中可以看出,尽管像AlexNet、OverFeat、ZFNet和VGGNet这样的网络只有很少的层深,但都有大量的参数,因为大部分参数来自全连接(FC)层。然而,像Inception、ResNet和DenseNet这些更新的网络,虽然具有非常多的网络层数,但由于避免使用FC层,却具有非常少的参数。
在精心设计的网络拓扑中使用Inception模块 [256],与AlexNet、ZFNet和VGGNet等网络相比,GoogLeNet的参数大大地降低。相似地,ResNet证明了跳跃连接(skip connections)对于学习具有数百层的极深网络的有效性,并赢得了ILSVRC 2015年分类任务比赛。受ResNet [98] 的启发,InceptionResNets [258] 将Inception网络与跳跃连接相结合,声称跳跃连接可以显著加快Inception网络的训练。Huang等人 [114] 对ResNet进行了扩展,提出了一种由密集块(dense blocks)构建的densenet,它以前馈方式将前面每一层(输出)连接到后面一层,从而带来引人瞩目的好处,如参数效率、隐含的深度监督(deep supervision)和特性复用。最近,Hu等人 [98] 提出了一种结构单元,称为挤压与激励块(Squeeze and Excitation,SE),它可以与现有的深度框架相结合,以最小的额外计算成本提高性能。SE块通过显式地对卷积特征通道之间的相互依赖关系进行建模,自适应地重新校准特征在通道上的响应。SE块可以与最先进的深度网络集成,它赢得了ILSVRC 2017年的分类任务。CNN架构的研究依然活跃,一些新的骨干网络不断涌现,如Hourglass [142]、Dilated Residual Networks [292]、Xception [43]、DetNet [160]、Dual Path Networks(DPN) [37]、FishNet [250]、GLoRe [38] 等。
CNN的训练需要一个具有类内多样性的大规模标记数据集。与图像分类不同,检测需要从图像中定位(可能有很多)对象。有研究表明 [202],使用具有对象级标签的大规模数据集(如ImageNet分类和定位数据集)对深度模型进行预训练,而不是图像级标签,可以提高检测性能。然而,收集边界框标签是昂贵的,特别是对于成千上万的类别。一个常见的场景是,CNN在一个带有图像级标签的大规模数据集(通常包含大量的视觉类别)上进行预训练;经过预训练的CNN可以作为一个通用的特征提取器 [219,8,58,289] 直接应用到小数据集上,从而可以支持更广泛的视觉识别任务。对于检测任务,预训练的网络通常会在给定的检测数据集进行微调训练 [58,83,85]。一些大规模图像分类数据集会被用于预训练,其中,ImageNet1000数据集 [52, 230] 有1000个图像对象类别,总共120万张图片;Places数据集 [311] ,数量远远大于ImageNet1000,但是类别数量较少;最近的混合数据集 [311] 结合了Places和ImageNet数据集;JFT300M数据集 [103、249] 具有18291个层级类别(hierarchical categories)。
[58,85,1] 探索了没有微调的用于目标分类和检测的预训练CNN方法,发现不同层提取的特征与检测精度关系不同。例如,在ImageNet上预先训练的AlexNet,
FC6/FC7/Pool5的检测精度依次降低 [58, 85];微调预训练的网络可以显著提高检测性能 [58, 85],在AlexNet中,微调的FC6和FC7的性能要不Pool5大很多,这说明Pool5具有更好的泛化。此外,源数据集和目标数据集之间的关系或相似性起着至关重要的作用,例如,基于ImageNet的CNN特征对目标检测任务的性能提升优于对人类动作相关任务的性能提升 [309,8]。
6.2 提升对象表征的方法
基于深度CNN的检测器,如RCNN [83]、Fast RCNN [82]、Faster RCNN [225] 和YOLO [223],通常使用表6中所列的CNN框架作为骨干网络,并且使用最顶层的CNN特征作为对象表征,然而在较大尺度范围内检测对象是一个基本性的挑战。解决这个问题的一个经典策略是在多个经过缩放的输入图像上运行检测器(例如,图像金字塔)[72,83,96],这通常会产生更精确的检测,但是明显受到推理时间和内存的限制。相比起来,CNN是逐层计算其特征层级结构的,特征层级结构中的下采样层形成了一个固有的多尺度金字塔。
6.2.1 解决对象尺度变化问题
这个固有的特征层级结构产生了不同空间分辨率的特征映射,但存在结构性问题 [94、173、243],如后面(或更高)的层有很大的感受视野(receptive field)和较强的语义信息,并对一些变化表现出很好的健壮性,例如对象姿势,照明和部分变形,但分辨率较低并丢失了几何细节信息。相反,较前面(或较低)的层具有较小的感受视野和丰富的几何细节,但分辨率很高,对语义的敏感度较低。直观地说,对象的语义信息可以出现在不同的层中,这取决于对象的大小。因此,如果目标物体很小,它需要在较前面的层中包含很好的细节信息,这在后面的层中很可能会丢失,这使得小目标的检测非常具有挑战性,为此一些解决的技巧被提出来,如扩张卷积(dilated convolution) [291,48,33](也称为空洞卷积 atrous convolution)。扩张卷积增加了特征的分辨率,但也不可避免地增加了计算复杂度。另一方面,如果目标对象很大,那么语义信息将出现在更后面的层中。显然,仅从一层特征来预测不同尺度的目标并不是最优的,因此,很多利用多个CNN层来提高检测精度的方法被提出来 [243,306,163,132]。广义上可以将多尺度目标检测方法分为三类:
- 结合多个CNN层的特征进行检测 [94,131,11];
- 在多个CNN层进行检测 [171, 24, 169, 238];
- 结合以上两种方法 [75, 163, 243, 132, 313, 301]。
(1)结合多个CNN层的特征进行检测
许多方法在进行预测前结合多个CNN层的特征,包括Hypercolumns [94]、HyperNet [131] 和ION [11]。这种特征组合通常是通过连接(concatenation)来实现的,这是一种经典的神经网络思想,将来自不同层次的特征连接起来,这种结构最近在语义分割任务中很流行 [173,237,94]。如图16(a)所示,ION [11] 使用RoI池化从多层中提取RoI特征,然后使用连接的特征对selective search 和 edgeboxes生成的对象建议区域进行分类。如图16(b)所示,HyperNet [131] 也遵循了类似的思路,通过端到端联合训练策略,融合深层、中间层和浅层特征生成对象建议和预测对象。该方法在每幅图像中只提取100个候选区域。组合的特征更具描述性(descriptive),更有利于定位和分类,但增加计算复杂度。
(2)在多个CNN层进行检测
最近的一些方法在不同分辨率的不同层上(分别)预测目标,然后结合这些预测来改进检测。SSD [171]、MSCNN [24]、RBFNet [169] 和DSOD [238] 都是结合多个特征映射预测结果来解决对象不同尺度的问题。SSD将不同尺度的默认(default)框(即anchor box)分配到CNN中的多个层,并限制每个层专注于预测特定尺度的对象。Liu等人 [169] 提出了RFBNet,简单地用感受区域块(Receptive Field Block,RFB)代替SSD中后面的卷积(特征)层,增强了特征的识别性和鲁棒性。RFB是一个多分支卷积块,类似于Inception块 [256],但是结合了拥有不同卷积核和卷积层的多个分支(的特征) [33]。MSCNN [24] 对多层CNN的输出进行反卷积,从而在使用特征图学习建议区域和特征池化之前提高特征图的分辨率。与RFBNet类似 [169],Li等人 [159] 提出的TridentNet 构建了一个并行的多分支结构,其中每个分支共享相同的变换(权重)参数,但是感受视野不同。
在TridentNet中,采用不同扩张率的扩张卷积来适应不同尺度对象的感受区域。
(3)结合以上两种方法
一方面,可以通过不同层特征的互补性提高检测精度,如Hypercolumns [94]、HyperNet [131] 和ION [11]。另一方面,使用大小相近的特征来检测对应尺度的对象是很合理的,这可以通过从低分辨率中检测大对象和从高分辨率中检测小对象来实现。因此,为了将两者的优点结合起来,最近的一些工作提出了从多个(卷积)层检测对象,而且每个检测层的特征也结合了其他检测层的特征。这个研究方向被发现对分割 [173,237] 和人体姿态估计 [190] 也有效,已经被最先进的(SoA)的单阶段检测器和两阶段检测器广泛使用,以缓解对象实例的尺度变化所带来的问题。代表性的方法有SharpMask [210]、Deconvolutional Single Shot Detector (DSSD) [75]、Feature Pyramid
Network (FPN) [163],Top Down Modulation (TDM )[243],Reverse connection with Objectness prior Network(RON) [132],ZIP
[152],Scale Transfer Detection Network (STDN) [313], RefineDet
[301],StairNet [276],Path Aggregation Network (PANet) [170],
Feature Pyramid Reconfiguration (FPR) [133], DetNet [160], Scale
Aware Network (SAN) [129],Multiscale Location aware Kernel
Representation (MLKP) [271] 和M2Det [307],如表7所示,图17给出了对比。
早期的工作, 如FPN [163], DSSD [75], TDM [243], ZIP [152],
RON [132] 和RefineDet [301],都是根据骨干网络固有的多尺度金字塔结构来构建特征金字塔,并取得了令人鼓舞的成果。从图17(a1)到(f1)可以看出,这些方法的检测框架非常相似,都采用了自顶向下的网络,并使用横向连接(lateral
connections)来补充标准的自底向上的前馈网络。具体地说,自底向上传递到最后得到的高层语义特征由自顶向下的网络进行回传,与经过横向处理的自底向上中间层的特征相结合。将组合后的特征进一步处理后,分别用于检测和继续通过自顶向下网络向下传递。从图17(a2)到(e2)可以看出,这些网络的主要的区别在于对简单特征融合块(Feature Fusion Block,FFB)的设计,用来对来自不同层特征的选择和融合。自顶向下和横向特征通过小(尺寸)卷积核处理,并使用elementwise sum、elementwise product和拼接(concatenation)中的一种方式进行组合。FPN [163] 在通用对象检测 [163,164] 和实例分割 [99] 等应用中作为通用特征提取器表现出了的显著的(性能)提升。将FPN应用在基本Faster RCNN中,取得了在COCO检测数据集上单模型的SoA效果。这些方法都必须添加额外的层来获得多尺度特征,带来了不可忽视的代价。
使用DenseNet [114] 的STDN [313] 将不同层的特征结合起来,并设计了尺度转换模块以得到不同分辨率的特征图。尺度转换模块可以直接嵌入到DenseNet中,成本较低。
近期的工作,如PANet [170], FPR [133], DetNet [160] 和M2Det [307] 等(分别如图17(g)、(h)、(i)和(j)所示),提出从不同方面进一步完善类似FPN的金字塔结构 [163]。图17(g1)、(h1)、(i1)和(j1)所示的网络与早期的工作类似(如图17(a1)所示的FPN [163]),只是变得越来越复杂。
Liu等人基于FPN [163] 设计了PANet [170](图17(g1))
,通过增加另一条自下而上的路径,该路径具有从低层到高层的干净(clean)的横向连接,通过传播低层的强定位信号来缩短信息(传播)路径和增强特征金字塔。并且在此基础上,提出了一种自适应的特征池化方法,从而为每个建议(区域)聚合来自多个特征层的特征。此外,在(区域)建议子网络中还增加了一个辅助的分支,为每个建议(区域)捕获不同的视图,以进一步提高(区域)掩码预测。这些额外的步骤只带来略微的计算开销,但非常有效,使PANet在COCO 2017挑战中,获得实例分割任务第一名和目标检测任务第二名的成绩。孔等人提出了FPR [133],将特征金字塔构建过程(如FPN [163] )以高度非线性但高效的方式重新表述为特征重构函数(reconfiguration functions )。如图17所示(h1),代替使用自顶向下的路径传播高层的强语义特征(如FPN [163],图17(a1)),FPR首先以自适应串联的方式提取骨干网络的多层特征,然后设计一个更复杂的FFB模块(图17(h2))将强语义扩展到所有尺度。Li等人提出
DetNet [160](图17(i1)),在骨干网络的后几层引入了扩张卷积,以在较深层中保持较高的空间分辨率。赵等人 [307] 提出了多层特征金字塔网络(MultiLevel Feature Pyramid Network,MLFPN),为了建立对检测不同尺度的目标更有效的特征金字塔。
从图17(j1)中可以看出,首先将骨干网络的两个不同层的特征进行融合作为基本特征。然后从基本特征创建一个具有横向连接的自顶向下路径来构建特征金字塔。如图17(j2)和(j5)所示, FFB模块要比FPN [163] 等方法复杂得多。FFB模块包括一个用于生成另一个金字塔结构的轻量(Thinned)U型
模块(TUM)。最后,将多个TUM中提取的相同大小的特征图进行结合,用于构造最终用于目标检测的特征金字塔。作者将MLFPN集成到SSD中提出了M2Det,取得了比单阶段SoA检测器更好的效果。
6.2.2 解决其他的类内部变化问题
强大的对象表征应该同时含有独特性和健壮性。最近有大量的工作致力于处理巨大的对象尺寸变化,这些我们刚刚在6.2.1节中回顾过。正如我们在第2.2节中讨论并在图6中总结的
,目标检测仍然需要对现实图像中存在的较大的类内变化表现出鲁棒性。为了便于总结,我们将这些类内变化分为三类:
- 对象在尺寸、姿态、旋转、视点等方面的几何变换和部分形变;
- 局部遮挡(Occlusions);
- 图像退化,如由光照变化、模糊、运动、低分辨率、噪声和天气条件引起。
要处理这些类内变量,最直接的方法是使用足够的所需变量来扩增训练数据集。例如,可以通过在训练数据中添加任意方向的旋转对象来增强对旋转变化的鲁棒性。
虽然通过这种方法可以学习到更健壮的对象表征,但代价通常是昂贵的训练和复杂的模型参数。因此,研究人员提出了缓解这些问题的替代方案。
解决几何变换。DCNN天生缺乏对输入数据的几何变换保持空间不变的能力 [148,168,28]。局部最大池化层的引入使得DCNN对较小的平移具有不变性。然而,DCNN中的中间特征映射对于输入数据的大几何变换并不是一成不变的 [148]。因此,研究者提出了很多方法来增强CNN表征的鲁棒性,目的是学习对各种变换表现不变的CNN表征,如尺寸 [127, 21]、旋转 [21, 40, 277,315],或者对两者都具有 [122]。一个具有代表性的工作是Spatial Transformer Networks(STN)[122],它引入了一个新的可学习模块,通过全局参数变换(global parametric transformation)处理缩放、裁剪、旋转以及非刚性变形。STN目前已被用于旋转文本检测 [122]、旋转人脸检测和通用对象检测 [273]。然而,这些方法的大多数还没有被应用到通用对象检测中。
虽然旋转不变性在某些应用中可能很有吸引力,例如场景文本检测(scene text detection) [100,180]、人脸检测 [239],在航空图像领域检测刚体 [55,281],由于流行的基准检测数据集(PASCAL VOC, ImageNet, COCO)没有呈现出旋转的图像,所以很少有研究关注通用对象检测中的旋转不变性。在通用对象检测中,最近针对几何变换和部分形变的研究 [49,84,184,199,270] 可归纳如下。
在深度学习之前,基于部分可变形的模型(Deformable Part based Models,DPMs)
[72] 在通用对象检测上的应用是成功的,以可变形配置的方式组织组成对象的部件来表示对象。尽管DPM方法已经被SoA对象检测器超越了很多,但是它们的思想仍然深深地影响着许多近期的检测器。这种DPM建模方法对对象姿态、视点和非刚性变形等所导致的变换不那么敏感,因为部件的位置是相对应的,它们的局部外观是稳定的,这促使研究人员 [49,84,184,199,270] 明确地对对象组成建模,以改进基于CNN的检测器。第一次尝试将DPM与CNN结合的方法是 [84,270] ,将AlexNet提取的深度特征应用与基于DPM的检测结合,但没有使用区域建议。为了使CNN具有内建的对象部分变形的建模能力,许多方法被提出来,包括DeepIDNet [199], DCN
[49] 和DPFCN [184](见表7)。虽然在思想上是相似的,但变形的计算方法不同:DeepIDNet [202] 设计了一种变形约束(deformation constrained)池化层代替常规的最大池化层,学习不同对象类之间共享的视觉模式及其变形特性,Dai等人 [49] 设计了一种可变形卷积层和可变形卷积层
RoI池化层,两者的思想都是以额外的通过卷积可学习的位置偏移量,来增强在特征图上执行的常规网格采样,从而得到可变形的卷积网络(Deformable Convolutional Networks (DCN)),而在DPFCN [184] 中,Mordan等人提出了基于变形部件的RoI池化层,选择对象建议区域中的具有区分性的部件,并同时优化所有部件的潜在位移。
解决遮挡。在现实世界的图像中,遮挡是经常发生的。它们可能是由于背景或其他对象实例造成的,并导致对象实例信息丢失。人工合成的遮挡在一定程度上可以缓解这一问题。可变形部件的思想对遮挡处理是有用的,因此提出了可变形RoI池化 [49,184,198] 和可变形卷积 [49],通过给通常固定的几何结构添加更多的灵活性来缓解遮挡问题。Wang等人 [273] 提出学习一种能产生遮挡和变形样本的对抗网络。
上下文信息也有助于解决遮挡。尽管已有这些工作,但遮挡问题仍远未得到解决。将GAN应用于这一问题可能是一个有趣的研究方向。
解决图像退化。在许多实际应用中,图像噪声是一个常见的问题。它往往是由照明不足、相机质量不高、图像压缩等因素造成的,如监控应用以及有意降低传感器成本的边缘设备和可穿戴设备。虽然较低的图像质量应该会降低视觉识别的结果,但目前的大多数方法都是在无退化和理想(clean)的环境中进行评估的,PASCAL VOC、ImageNet、MS COCO和Open Images都主要关注相对高质量的图像。据我们所知,最近解决这些问题的工作非常有限。
7. 上下文建模
在物理世界中,视觉对象一般出现在特定的环境中,通常与其他相关对象共存,有力的心理学证据 [14,10] 表明,上下文在人类对象识别中起着至关重要的作用。研究者认为,适当的上下文建模有助于对象检测和识别 [259,193, 33, 32, 56,76],特别是由于对象尺寸小、遮挡或图像质量差而导致对象外观特征不足时。很多文献讨论了许多不同类型的上下文,特别是综述 [56,76]。上下文大致可分为三类[14,76]:
- 语义上下文:物体在某些场景中出现,而在另一些场景中不会出现的可能性;
- 空间上下文(Spatial context):在某些场景中,某个对象相对其他对象,出现在某个位置而不是其他位置的可能性;
- 尺寸上下文:相对于场景中的其他对象,对象的尺寸大小在一个有限的集合内。
在深度学习流行之前,有大量的(解决该问题)的相关工作 [34,56,76,181,189,216,203],然而,在基于DCNN的对象检测器 [35,110] 中,还没有相关的探索性工作。
当前的对象检测技术 [225,171,99] 还没有显式地利用任何上下文信息来检测对象。研究者普遍认为,当DCNN在学习具有多个抽象层次的层级表征时,隐式地利用了上下文信息 [296,308]。然而,在基于DCNN的检测器中显式地挖掘上下文信息仍然是有价值的 [110,35,298],因此,以下概述了最近在基于DCNN的对象检测器中利用上下文线索的工作,这些检测器被划分为全局和局部上下文两种类别,动机来自于早期的工作 [302,76]。表8总结了具有代表性的方法。
7.1 全局上下文
全局上下文 [302,76] 是指图像或场景级上下文,它可以作为对象检测的线索(例如,卧室可能预示着床的存在)。在DeepIDNet [199] 中,将图像分类得分作为上下文特征,并与目标检测得分相结合以提高检测结果。在ION [11] 中,Bell等人提出使用空间循环神经
网络(Recurrent Neural
Networks,RNN)来探索整个图像的上下文信息。在SegDeepM [318] 中,Zhu等人提出了一种MRF模型,该模型对每次检测的外观和上下文进行打分,并允许每个候选框从大量精确的目标分割建议(区域)中选择一部分,并对它们之间的一致性进行打分。在 [241] 中,语义分割被当做一种形式的上下文信息来使用。
7.2 局部上下文
局部上下文 [302,76,216] 考虑的是局部邻近对象之间的关系,以及对象与其周围区域之间的交互作用。一般来说,建模对象关系是很有挑战性的,需要对不同类、位置、尺寸等的边界框进行推理。在深度学习时代,对对象关系进行显式建模的研究十分有限,具有代表性的研究有Spatial Memory Network (SMN) [35]、Object Relation Network[110]、Structure Inference Network (SIN)[172]。在SMN中,空间记忆本质上是将对象实例组装回一个伪图像表征,这个伪图像表征很容易被输入到另一个用于对象关系推理的CNN中,从而形成一个新的序列推理结构,其中图像和记忆被并行处理,从而获得检测,其可以进一步更新记忆。受最近注意力机制模块在自然语言处理领域中的成功启发 [267],最近提出的ORN,通过对象的外观特征与几何形状之间的交互作用,同时处理一组对象。它不需要额外的监督,并且很容易嵌入到现有的网络中。实验表明,该方法对提高现代目标检测流程的目标识别能力和消除重复步骤具有较好的效果,首次实现了完全端到端目标检测。SIN [172] 考虑了两种上下文:场景上下文信息和单个图像中的对象关系。将目标检测问题归结为图结构推理问题,将给定图像中的对象作为图中的节点,并将对象之间的关系建模为图中的边。
较大窗口中的局部上下文。更广泛的方法是用较简单的思想来处理这个问题,通常是通过扩大检测窗口大小来提取某种形式的局部上下文。代表性的方法包括MRCNN [80]、
Gated BiDirectional CNN(GBDNet) [297, 298]、Attention to Context CNN (ACCNN) [153]、CoupleNet [319] 和Sermanet等人 [234]。
在MRCNN(图18(a))[80] 中,除了从骨干网络的最后卷积层提取原始对象建议区域的特征外,Gidaris和Komodakis建议也在建议区域的基础上从多个不同大小的区域(建议区域的一半区域、建议区域的边界区域、建议区域的中心部分、上下文区域和语义分割区域)提取对象的特性,以获得更丰富、更健壮的对象表征。所有这些特征都是通过简单的串接组合起来的。
自MRCNN提出以后,已经有许多与MRCNN密切相关的方法被提出。在 [295] 中,只使用了四个上下文区域,它们被组织在一个中心凹的结构(foveal structure)中,其中有多个路径的分类器通过端到端的方式进行联合训练。Zeng等人提出了GBDNet [297,298](图18(b)),从一个目标建议区域周围的多尺度区域提取特征,以提高检测性能。不同于单纯的对每个区域分别学习卷积特征然后再将其串联起来的方法,GBDNet通过卷积实现将不同上下文区域的特征信息进行相互传递。值得注意的是,信息传递并不总是有用的,而是依赖于具体的样本,Zeng等人使用门控函数来控制信息传递。Li等人 [153] 提出了ACCNN(图18(c)),利用全局和局部上下文信息来促进目标检测。为了捕获全局上下文,提出了一种多尺度局部上下文化(Multiscale Local Contextualized ,MLC)的子网络,该子网络通过多个堆叠的LSTM层递归地生成输入图像的注意力图,以凸显有用的全局上下文位置。Li等人 [153] 采用与MRCNN相似的方法对局部环境上下文进行编码 [80]。如图18(d)所示,CoupleNet [319] 在概念上类似于ACCNN [153],但建立在RFCN [48] 之上。除了原来在RFCN(结构中)的分支利用位置敏感的RoI池化捕获对象信息外 [48],CoupleNet [319] 增加了一个分支,通过RoI池化编码全局上下文信息。
8. 检测建议方法
对象可以以任何尺寸位于图像中的任何位置。在手工调校的特征描述子的全盛时期(例如SIFT [175], HOG [50] 和LBP [192]),最成功的目标检测方法(如DPM [70])使用了滑动窗口技术 [269,50,70,95,268]。然而,窗口的数量很多,并且随着图像像素数量的增加而增长,而且需要在多个尺度和长宽比下进行搜索,这进一步显著增加了搜索空间。因此,(在该基础上)应用更复杂的分类器在计算上过于昂贵。
2011年左右,研究人员提出利用检测建议 [266,264] 以缓解计算可行性与高检测质量之间的紧张关系。对象建议起源于 [2] 提出的对象概念,指的是图像中一组可能包含对象的候选区域。当然,如果只使用几个对象建议(比如100个)就可以实现高召回率,那么就可以显著的加速滑动窗口方法,从而可以使用更复杂的分类器。检测建议通常用作预处理步骤,为了降低计算复杂度,数量受限的检测区域需要使用检测器来进行评估。因此,一个好的检测建议方法应该具备以下特点:
- 高召回率,只需很少数量的建议即可实现;
- 精确定位,建议区域尽可能准确地匹配对象边界框;
- 低计算成本。
基于选择性搜索得到的检测建议在目标检测上的成功引起了广泛的兴趣 [25,7,3,41,322,63,134,182]。
对对象建议算法的全面回顾超出了本文的范围,因为对象建议的应用超出了对象检测的范畴 [6,90,320]。我们建议有兴趣的读者参考最近的相关综述文献 [106,27],其中深入分析了许多经典的对象建议算法及其对检测性能的影响。我们在这里的主要兴趣是回顾基于DCNN的对象建议方法:输出类别无关的建议,并且与通用对象检测相关。
2014年,整合对象建议方法 [266,264] 和DCNN的特性 [136] 产生了在通用对象检测领域具有里程碑意义的RCNN [83] 。从那时起,检测建议算法迅速成为一个标准的预处理步骤,自2014年以来,在PASCAL VOC [66]、ILSVRC [230] 和MS COCO [162] 的目标检测挑战中所有的获奖算法说明了这一点,它们都使用了检测建议 [83,199,82,225,298,99]。
在基于传统低层线索(如颜色、纹理、边缘和梯度)的对象建议方法中, Selective Search [264]、MCG [7] 和EdgeBoxes [322] 是比较流行的。随着领域的快速发展,作为独立于检测器的外部模块被采用的传统对象建议方法 [106] (如Selective Search [264] 和 [322]),成为检测流程的速度瓶颈 [225]。一种新兴的使用DCNN的对象建议算法 [65,225,138,79,209,285] 引起了广泛的关注。
目前基于DCNN的对象建议方法大致分为基于边界框和基于对象分割(segment)两大类,有代表性的方法如表9所示。
边界框建议方法 最好的例子是Ren等人的RPN方法 [225],如图19所示。RPN通过在最后一个共享卷积层的特征映射上滑动一个小网络来预测对象建议(如图19所示)。在每个滑窗位置上,它使用k个锚框同时预测k个建议,其中每个锚框以图像中的某个位置为中心,并与特定的比例和长宽比相关联。Ren等人 [225] 提出通过共享卷积层将RPN和Fast RCNN集成到一个网络中。这样的设计获得了实质性的加速并产生了第一个端到端检测流程,即Faster RCNN [225]。从表7和表8可以看出,RPN已广泛地被许多先进的对象检测器选择为建议方法。
Lu等人 [177] 提出使用递归搜索策略生成锚点位置,自适应地引导计算资源关注可能包含对象的子区域,而不是像MultiBox [65,255] 和RPN [225] 一样使用一组固定的先验锚框。从整个图像开始,搜索过程中访问的所有区域都被作为锚点。对于搜索过程中遇到的任何锚点区域,使用一个标量缩放指示器(scalar zoom indicator)来决定是否对该区域进行进一步分区,并使用称为Adjacency and Zoom Network(AZNet)的深度网络计算一组具有对象分数的边界框。AZNet通过添加与现有的分支并行的分支来扩展RPN,从而计算标量缩放指示器。
还有的工作试图进一步利用多层卷积特性来生成对象建议 [131,79,285,152]。与RPN [225] 同时期,
Ghodrati等人 [79] 提出了DeepProposal,利用级联的多个卷积层特征生成对象建议,构建一个逆级联来选择最有可能存在对象的位置,并以粗到细的方式精细化它们的边界框。RPN的改进版,HyperNet [131] 设计了超特征(Hyper Features),将多层卷积特征聚合在一起,通过端到端联合训练策略生成建议和检测目标,实现两者的共享。Yang等人提出的CRAFT [285] 也使用了级联策略,首先训练一个RPN网络生成对象建议,然后用它们训练另一个二分类Fast RCNN网络,进一步区分对象和背景。Li等人 [152] 提出了一种改进RPN的ZIP方法,该方法利用了一种常用的思想,即使用网络不同深度的多个卷积特征映射来预测对象建议,从而集成了低层细节和高层语义。ZIP中使用的主干网是一个“放大和缩小(zoom out and in)”网络,灵感来自卷积和反卷积结构 [173]。
最后,最近值得一提的工作包括Deepbox [138],它提出了一个轻量CNN,学习重新排列由EdgeBox生成的建议,其与使用更大的网络的效果一样并且更快,DeNet [262] 引入了一个边界框角估计来预测对象建议,有效地取代了Faster RCNN风格检测器的RPN。
对象分割建议方法[209,210] 旨在生成可能与对象相对应的分割建议。分割建议比边界框建议提供了更多的信息,并且向对象实例分割更进一步
[93,47,158]。此外,使用实例分割监督可以提高边界框对象检测的性能。一个开创性的工作是由Pinheiro等人[209]提出的DeepMask ,其使用深度网络直接从原始图像数据中学习分割建议。与RPN存在相似之处,经过多个共享卷积层,DeepMask将网络分成两个分支来预测一个类别无关掩码和一个关联的对象分数。与OverFeat [235] 中高效的滑动窗口预测策略类似,训练后的DeepMask网络在推理过程中以滑动窗口的方式应用于图像(及其重新缩放的版本)。最近,Pinheiro等人 [210] 提出了SharpMask,使用细化(refinement)模块对的DeepMask体系结构进行扩展,类似于图17 (b1)和(b2)中所示的体系结构,采用自顶向下的细化处理对前馈网络进行扩展。SharpMask能够有效地将浅层特征的丰富空间信息与深层中编码的强语义信息结合起来,生成高精度的对象掩码。
受到全卷积网络(FCN) [173] 和DeepMask [209] 在语义分割中的启发, Dai等人提出了InstanceFCN [46] 来生成实例分割建议。与DeepMask类似,InstanceFCN网络被分成两个分支,但是这两个分支都是全卷积的,其中一个分支生成一小组实例敏感的分数映射,然后是一个输出实例的组装模块,另一个分支用于预测对象分数。Hu等人提出了FastMask [109],类似于SSD [171],利用深度网络中的多尺度卷积特性,一次高效生成实例分割建议。将从多尺度卷积特征图中密集提取的滑动窗口输入到容许多尺度的注意力头模块(scale-tolerant attentional head module )中,预测分割掩码和对象分数。FastMask自称在800×600分辨率的图像上以13 FPS的速度运行,平均召回率略有下降。
9.其他特殊问题
数据增加。在DCNN学习中使用数据增强 [26,82,83] 通常被认为对视觉识别很重要。轻微的数据增强是指在保持基本类别不变的前提下通过转换(如裁剪、翻转、旋转、缩放、平移、带有颜色扰动的裁剪和添加噪声)来扰乱图像,从而生成对应类的其他样本。通过人为地增加样本数量,有助于减少过度拟合和提高泛化。它可以在训练时使用,也可以在测试时使用,或者两者都使用。然而,它有明显的局限性。训练所需的时间会显著增加,限制了它在某些应用中的使用。此外,以合成的方式生成新的训练图像的数据增强方法 [206,273] 也有被采用。然而,很难保证合成的图像能很好地推广到真实图像。一些研究人员 [62,91] 提出通过将真实分割出来的对象粘贴到自然图像中来增加数据集。Dvornik等人 [61] 在这一方向上更进一步,证明了对围绕对象的视觉上下文进行适当的建模对于将它们放置在正确的环境中至关重要。Dvornik等 [61] 提出了一种上下文模型,可以自动在图像上找到合适的位置来放置新对象并执行数据增强。
先进的训练策略。在尺度大范围变化下检测物体,特别是对非常小的物体的检测是一个关键的挑战。已有研究表明 [116,171],图像分辨率对检测精度有相当大的影响。因此,在数据增强技巧中,缩放(尤其是对高分辨率的输入)是最常用的,因为高分辨率的输入增加了检测出小对象的可能性 [116]。最近,Singh等人提出了先进高效的数据扩增方法SNIP [245] 和SNIPER [246] 来解决尺度不变性问题,如表10所示。Singh等人直观地认识到小目标和大目标分别在小尺寸和大尺寸下都难以被检测,因此提出了一种新的训练方案SNIP,该方案可以减少训练过程中的尺度变化,但不能减少训练样本。SNIPER [246] 是一种有效的多尺度训练方法。它只在适当的尺度上处理真实对象周围的上下文区域,而不是处理整个图像金字塔。Peng等人 [205] 研究了训练中的一个关键因素,即批量大小,提出了一种称为MegDet的大型小批量目标检测器(Large MiniBatch Object Detector),使训练的批量比以前大得多(如从16到256)。为了避免收敛失败并显著加快训练过程,Peng等人 [205] 提出了一种学习率策略和跨GPU批标准化,有效地利用了多个GPU(如128个GPU)。据称,MegDet可以在128个GPU上用4小时完成COCO训练,甚至达到更高的精度。MegDet赢得了COCO 2017检测挑战赛。
减少定位误差。在对象检测中,检测到的边界框与真实标注边界框之间的交并比 (IoU)是最常用的评估指标,其需要一个IoU阈值(例如一个典型值0.5)来定义预测的正负性。从图13可以看出,在大多数的SoA检测器中 [82、171、99、225、223],对象检测被定义为多任务学习问题,即联合优化赋予建议区域合适类别标签的softmax分类器和最大化检测结果与真实边界框的IoU或其他指标的边界框回归器。边界框只是对铰接类型对象的粗略近似,并不能适应于灵活多变的对象。因此,背景像素常常被包含在边界框中,影响了分类和定位的准确性。[104] 的研究表明,除了与相似对象混淆外,对象定位误差是对误差影响最大的因素之一。定位误差可能是重叠不足(小于所需的IoU阈值,如图20所示的绿色框)或重复检测(即一个对象实例多个重叠检测)。通常,一些后处理步骤,如非最大抑制(NMS)用来消除重复检测。但是,由于定位不当,在NMS过程中可能会抑制定位较好的边界框,导致对象的定位质量较差(如图20所示的紫色框)。因此,很多方法是通过降低定位误差来提高检测性能。
MRCNN [80] 引入了迭代式边界框回归方法,其中应用了多次RCNN。CRAFT [285] 和AttractioNet [81] 使用多级检测子网络生成精确的区域建议,并将其转发给一个Fast RCNN。根据 [23],应用两次以上边界框回归改善不大。Cai和Vasconcelos提出了RCNN的多级扩展,即级联(Cascade)RCNN [23]。在级联RCNN,检测器以逐渐增加IoU阈值的方式被顺序地训练,从而有效利用了这样的观察结果:一个以固定IoU阈值训练出来的检测器有助于训练下一个使用更高IoU阈值的检测器,以便对比较接近的假阳性有更强的区分性。它可以使用任何基于RCNN的检测器来构建,并且被证明能够在不依赖于基线检测器强度的情况下获得一致的增益(大约2到4个点),计算量只增加一点点。最近有文献 [124,228,117] 直接将IoU作为优化目标,并将其作为定位置信度的指标。此外,也有一些工作 [18,101,107,263] 提出了提高NMS结果的方法,如Soft NMS [18] 和可学习的(learning)NMS [107]。
类别不平衡处理。与图像分类不同,目标检测还有一个特有的问题,即被标注的对象实例数量与背景实例数量(不属于任何感兴趣的对象类的图像区域)的严重不平衡。大多数背景例子都是容易被否定的。这种不平衡会使训练非常低效,大量容易区分的负样本往往会占据整个训练(损失权重)。在传统的对象检测中,这个问题通常通过bootstrapping [252] 等技术来解决。最近,这个问题也引起了一些关注 [149,164,242]。由于区域建议阶段快速过滤掉了大部分背景区域,并提出了少量的对象候选区域,这一类不平衡问题在两阶段检测器中得到了一定程度的缓解 [83,82,22,99]。尽管如此,像Online Hard Example Mining (OHEM) [242] 这样的困难样本挖掘方法被用来保持前景和背景之间的合理平衡。对于单阶段对象检测器 [223,171],这种不平衡非常严重(例如每一个对象有100,000个背景实例)。为了解决这个问题,Lin等人 [164] 提出的Focal
Loss通过修正交叉熵损失函数来解决这个问题,它可以降低已经正确分类样本对损失函数的贡献权重。Li等人 [149] 从梯度范数分布的角度研究了这一问题,提出了一种梯度协调机制(Gradient Harmonizing Mechanism,GHM)来解决这一问题。
10. 讨论与结论
通用目标检测是计算机视觉领域中一个重要而又具有挑战性的问题,受到了广泛的关注。由于深度学习技术的显著发展,对象检测领域发生了巨大的变化。作为对通用对象检测深度学习的全面综述,本文重点介绍了近年来的研究成果,根据他们在检测中的作用进行了结构性划分,总结了现有的流行数据集和评价标准,并对最具代表性方法的性能进行了讨论。在本文的最后,我们将首先在第10.1节中讨论对象检测的SoA性能,然后在第10.2节中全面讨论一些关键因素,最后在第10.3节中提出我们对未来几个研究方向的看法。
10.1 性能
在过去的几年里,出现了大量的检测器,引入了如PASCAL VOC [66, 67]、ImageNet [230] 和COCO [162] 等标准基准数据集,可以更加方便地比较检测器的精度。从我们在第5节到第9节的讨论中可以看出,根据检测器最初报告的性能(例如准确性、速度)来比较检测器可能是不公平的,因为检测器在基本原理和发展上有所不同,包括以下方面:
元检测框架,例如RCNN [83]、Fast RCNN [82]、Faster RCNN [225]、RFCN [48]、Mask RCNN [99]、YOLO [223]、SSD [171] 等;
骨干网络,如VGG [244]、Inception [256、121、257]、ResNet [98]、ResNeXt [284]、Xception [43] 等,如表6所示;
创新,如多层特征组合 [163,243,75]、可变形卷积网络 [49]、可变形RoI池化 [199,49]、更重的(网络)头(heavier heads ) [227,205] 和更轻的(网络)头(lighter heads)[161];
使用ImageNet [230]、COCO [162]、Places [311]、JFT [103] 和Open Images [135] 等数据集进行预训练;
不同的检测建议方法和不同的建议数量;
训练或测试数据增强“技巧”,如multicrop、水平翻转、多尺度图像、先进的多尺度训练策略 [245,246] 等,以及模型集成。
虽然比较最近提出的每一个检测器可能不切实际,但是将具有代表性并公开可用的检测器集成到一个公共平台中,并以统一的方式对它们进行比较是很有价值的。这方面的工作非常有限,除了Huang的研究 [116],通过改变骨干网络、图像分辨率、建议框的数量来权衡三大类检测器(Faster RCNN [225]、RFCN [48] 和SSD [171])的精度和速度之间的关系。
从表7、8、9、10和11可以看出,我们总结了许多方法在三种广泛使用的标准基准上的最佳性能报告。这些方法的结果都是在相同的测试基准上得出的,尽管它们在上面列出的一个或多个方面有所不同。
图3和图21简要概述了目前的研究现状,总结了PASCAL VOC、ILSVRC和MSCOCO比赛上的最佳检测结果。更多的结果可以在检测比赛网站上找到 [120,185,204]。open image的对象检测任务比赛的获胜者在公共排行榜上获得61.71%的mAP,在私有排行榜中获得58.66%的mAP,这是通过结合多个两阶段检测器的的方式获得的结果 [82],包括Fast RCNN、
Faster RCNN [225]、FPN [163]、Deformable RCNN [49]、Cascade RCNN [23] 等。综上所述,骨干网络、检测框架的设计和大规模数据集的可用性是检测中最重要的三个因素。此外,多个模型的集成、上下文特征的结合和数据扩增都有助于实现更好的准确性。在不到五年的时间里,自AlexNet [136] 提出以来,有1000个类别的ImageNet分类Top5误差 [230] 从16%下降到2%,如图15所示。然而,在COCO [162] 上性能最好的检测器 [205] (仅训练检测80个类)的mAP才达到73%,即使在0.5 IoU的情况下,这说明了对象检测比图像分类困难得多。目前最先进的检测器所达到的精度和鲁棒性远远不能满足现实应用的要求,因此还有很大的改进空间。
10.2 总结与讨论
在本文讨论的范围内,有数百篇参考文献和数十种方法,在这一节中,我们将集中讨论存在的关键因素。
(1)检测框架:两阶段vs单阶段
在第5节中,我们确定了两大类检测框架:基于区域(建议)的(两个阶段)和统一的(一个阶段)。以下是它们各自优缺点的概述:
当大量的复杂计算被允许时,两阶段探检测器通常比单阶段检测器产生更高的检测精度,著名的检测比赛(如MS COCO [162] 和Open Images [139])可以证明,大多数被使用的方法(包括赢得比赛的方法)主要是基于两阶段框架,因为他们的结构更灵活并且更适合基于区域的分类的精细调整阶段。最广泛使用的框架是Faster RCNN [225]、RFCN [48] 和Mask RCNN [99]。
已有文献 [116] 表明,与典型的两阶段框架相比,单阶段的SSD [171] 的检测精度对骨干网络质量的敏感度较低。
一般的印象是,像YOLO [223] 和SSD [171] 这样的单阶段检测器比两级检测器更简单、更快。潜在的原因包括不使用预处理算法生成对象建议,使用轻量级骨干网络,使用较少的候选区域(如YOLO)进行预测,以及分类子网完全是卷积的(如SSD)。然而,随着类似技术的引入,两阶段检测器也可以实时运行。在任何情况下,无论是单阶段还是两阶段,最耗时的步骤都是特征抽取(骨干网络) [142,225];根据 [116],两阶段的Faster RCNN可以通过使用更少的建议区域,在不造成显著精度损失的情况下显著加快,使其可以与单阶段的SSD像竞争。
已有研究表明 [116、223、171],YOLO和SSD等单阶段框架在检测小目标方面的性能通常比两阶段架构(如Faster RCNN和RFCN)差很多,但在检测大型目标方面更具竞争力,甚至在使用轻量级骨干网络时表现更加出众。
已经有很多尝试通过攻击检测框架的每个阶段来构建更好(更快、更准确或更健壮)的检测器。无论是单阶段、两阶段还是多阶段,检测框架的设计都趋向于对一些关键的设计的选择:
- 全卷积流程-简单,高效,优雅
- 从其他相关任务中开发辅助信息——例如,Mask RCNN [99]
- 滑动窗口-使分类器更易于学习 [225]
- 融合来自骨干网络不同层的信息
最近级联目标检测和实例分割在COCO [31] 和其他比赛上(如WIDER Challenge [176])的成功表明,多阶段目标检测可能成为未来在速度和精度上比较平衡的框架。我们建议在未来使用速度-精度来比较目标检测方法。在最近的WIDER Challenge 2019 [176] 中,做了一项相关的尝试性调查。
(2)主干网络
正如第6.1节所讨论的,由于区分性对象特征表征的关键作用,主干网络是快速提高检测性能的主要驱动力之一。骨干网络在图像分类数据上进行预训练,然后迁移到目标检测任务中。通常更深的骨干网络的性能更好,如ResNet [98], ResNeXt [284],InceptionResNet [258],但是它们的计算开销更大,需要更多的数据和大量的计算进行训练。一些更加关注速度的骨干网络 [108,119,304] 被提出,比如MobileNet [108],它已被证明可以在ImageNet上达到VGGNet16的精度,而只需要VGGNet16 1/30的计算成本和模型大小。
使用在ImageNet上预训练的骨干网络是一件好事,但它也可能成为限制设计出适用于对象检测的特定深度模型的罪魁祸首。在研究界,从零开始训练已经成为可能,因为有更多的训练数据和更好的训练策略可用 [278,179,178]。更多的骨干深度模型将被专门设计用于目标检测。
(3)提高对象表征的鲁棒性
真实世界图像的变化多样性是使目标识别如此具有挑战性的一个关键因素。这些变化包括光照变化、对象姿态变化、对象变形、背景繁杂、严重遮挡、图像模糊、分辨率、噪声和成像畸变(camera distortions)。
(3.1)对象尺度和小对象
物体在尺度上的巨大变化,尤其是小物体,构成了巨大的挑战。下面是对6.2节所述主要策略的概括及讨论:
使用图像金字塔:它是简单且有效的,金字塔有助于放大小物体和缩小大物体。然而,它在计算上也很昂贵,尽管如此,它们通常用于推理,以提高准确性。
使用不同分辨率卷积层的特征:在早期的工作中,如SSD [171],预测是独立执行的,不组合或合并来自其他层的信息。现在,将不同层的特征结合起来是非常标准的做法,例如FPN [163]。
使用扩张卷积 [160,159]:一种简单而有效的方法,用于吸收更广泛区域的上下文信息并且维持高分辨率的特征图。但也增加了计算复杂度。
使用不同尺度和长宽比的anchor box:缺点是包含许多参数,如尺度、通常由启发式确定的长宽比,大量的anchor。
扩大尺寸(Upscaling):特别是对于小目标的检测,可以升级图像尺寸,并开发高分辨率的浅层网络。虽然超分辨率技术可以提高图像的分辨率,但是目前还不清楚超分辨率是否能够提高检测精度。
小物体本身就会丢失视觉信息,并且难以恢复。尽管近年来取得了一些进展,但小目标的检测精度仍然远远低于大目标。因此,小目标检测一直是目标检测的关键挑战之一。也许对于不同尺度的目标的检测精度可以发展出不同的要求,因为很多应用只需要识别出在一个较大区域中有小目标存在就可以,而不需要精确的定位,比如自动驾驶。
(3.2)变形、遮挡等因素
正如2.2节所讨论的,有很多处理几何变换、遮挡和变形的设计。为了处理几何变换和变形,现有的方法主要基于两种范式。首先是空间变换网络,通过回归得到变形域(deformation field)[49],然后根据变形域得到变形特征。第二种是基于可变形部件的模型 [72],该模型考虑了空间约束下部件滤波器的最大响应 [199,84,270]。
旋转不变性在卫星图像检测等应用中具有一定的吸引力。但针对旋转不变性的通用对象检测工作较少,因为目前流行的基准对象检测数据集(PASCAL VOC、ImageNet、COCO)在旋转方面的变化不大。遮挡处理是人脸检测和行人检测领域的研究热点。但针对通用目标检测的遮挡处理研究较少。通用对象检测的标注机制不同于人脸和行人的标注机制。如果一个人的腿被完全遮挡,则它还包含在行人检测标注中,但不包含在通用对象检测标注中。这使得用于通用对象检测的遮挡处理不同于人脸或行人的遮挡处理。总的来说,尽管最近取得了一些进展,但深度网络仍然受到对许多变化缺乏鲁棒性的限制,这极大地限制了它们在现实世界中的应用。另一个原因可能是缺乏涵盖大量变形、遮挡等变化因素的样本。
(4)上下文的推理
正如第7节中介绍的,自然场景的对象通常与其他对象和环境共存。研究者们已经认识到上下文信息(对象关系、全局场景统计)有助于对象检测和识别 [193],特别是对于小目标、遮挡对象和图像质量较差的情况。在深度学习之前有大量的工作 [181,189,216,56,76]。每年都会出现新的使用上下文的深度学习方法 [80,297,298,35,110]。
如何有效且有效率地结合上下文信息仍有待探索,理想的指导是人类如何使用上下文来识别对象。最近关于构建场景图的进展 [157] 可能是对场景中的对象构建结构化理解的另一种方法。目标和场景的全分割 [130] 有望为目标检测提供更丰富的上下文信息。
(5)检测建议
检测建议算法大大减少了搜索空间,在目标检测中发挥了重要作用。正如 [106] 中所建议的,未来的检测建议肯定必须在重复性、召回率、定位精度和速度上有所提高。自RPN成功以来 [225],基于CNN的检测建议生成方法一直主导着区域建议。
在 [225] 中将对象的建议生成和检测集成到同一个框架后,检测和建议生成之间的区别变得模糊起来。特别是在多级级联检测框架中,将检测建议作为级联的一个步骤。新的检测建议方法被提出,从而显示其对目标检测的提高作用,而不是单独评估检测建议。未来,新的检测建议将会遇到以下问题:为目标建议提出一个单一的网络并为建议分类提出另一个网络是否具有优势?
(6)其他因素
正如第9节所讨论的,还有很多其他因素影响目标检测,如数据扩增、先进的训练策略、集成的骨干模型、集成多个检测框架、吸收来自其他相关任务的信息、减少定位误差的方法、处理正负样本之间的巨大不平衡、困难负样本挖掘、提高准确定位的损失函数。
10.3 未来研究方向
尽管最近在对象检测领域取得了巨大的进展,但这项技术仍然比人类的视觉要原始得多,不能令人满意地处理像第2.2节提到的现实世界中的挑战。我们看到了一些长期存在的挑战:
- 在一个开放的世界中工作;例如,对任何数量的环境变化都有很强的健壮性,能够进化等等。
- 在受限条件下的目标检测;例如,从弱标记或少量边界框标注数据中学习、可穿戴设备、未见过的对象类别等。
- 其他模式下的目标检测;例如:视频、RGBD图像、3D点云、激光雷达、遥感影像等。
基于这些挑战,我们认为未来的研究方向如下:
(1)开放世界学习:最终目标是开发能够在开放世界场景中准确、高效地识别和定位上千个或更多对象类别实例的对象检测,达到与人类视觉系统相当的水平。最近的目标检测算法在原理上对训练数据集之外的对象类别是完全无知的,尽管理想情况下应该有识别新对象类别的能力 [140、92]。目前的检测数据集 [66,230,162] 只包含几十到几百个类别,这大大小于可以被人类识别的类别数量。需要开发出具有更多类别的更大规模的新数据集。
(2)更好、更高效的检测框架:通用对象检测成功的原因之一是开发了更好的检测框架,无论是基于区域建议的(RCNN [83], Fast RCNN [82],Faster RCNN [225],Mask RCNN [99]),还是单阶段检测器(YOLO [223], SSD [171])。基于区域的检测器具有更高的精度,但计算量更大。单阶段检测器有可能更快、更简单,但精度较低。一个可能的限制是,目标检测器在很大程度上依赖于底层骨干网络,这些骨干网络已经被优化用于图像分类,由于分类和检测之间的差异导致了学习偏差。从零开始学习对象检测器可以帮助开发新的检测框架。
(3)紧凑高效的CNN特征:CNN的深度已经从几层(如AlexNet [137])显著增加到数百层
(如ResNet [98], DenseNet [114])。
这些网络有数百万到数亿个参数,需要大量数据和GPU进行训练。为了消除模型中的冗余,设计紧凑轻量的网络 [29, 4, 115, 108, 165, 293] 、网络压缩和加速 [42,118,248, 151, 154, 275] 逐渐受到关注。
(4)神经结构自动搜索(Automatic Neural Architecture Search):深度学习绕过了需要较强领域知识专家的人工特征工程。然而,DCNN需要同样重要的专业知识。为了减少对人类专家的依赖,考虑自动化设计检测骨干体系结构的想法是很自然的。最近的自动机器学习(AutoML) [215] 为实现这一目标带来了机遇,AutoML已成功应用于图像分类和目标检测 [22,39,78,167,323,324]。
(5)对象实例分割:随着对图像内容理解的不断丰富和细化,下一步的挑战将是如何处理像素级的对象实例分割 [162,99,113],因为对象实例分割可以在潜在的应用中发挥重要作用,这些应用需要精确的实例边界。
(6)弱监督检测:目前最先进的检测器采用全监督模型,从带目标边界框或分割掩码的标记数据中学习 [67,162,230,162]。然而,完全监督学习有严重的限制,其中边界框标签的收集是劳动密集型的,特别是当对象类别数量很大时。在没有完全标记的训练数据的情况下,完全监督学习是不可扩展的。因此,研究CNN如何在弱监督检测中发挥作用的能力是很有价值的,因为在弱监督检测中只用提供弱标注的数据 [17,53,240]。
(7)小样本(Few Shot)目标检测:深度探测器的成功很大程度上依赖于海量带标注的训练数据。当标注数据不足时,深度检测器的性能往往会下降,不能很好地泛化。然而,在数百个类别上标注边界框的成本很高,尤其是在处理视频时。相比之下,人类(即使是孩子)也能从很少的例子中快速学习一个视觉概念,而且通常能很好地泛化 [16,140,69]。因此,能够从很少的样本中学习,较少样本分类,是非常吸引人的(研究方向)[30,59,73,125,140,224,233]。
(8)零样本对象检测:零样本对象检测定位和识别以前从未见过的对象类别 [9,51,218,217]。对于需要智能地、渐进地发现新对象类别的终身学习机器来说,这种检测是必不可少的。
(9)其他模式下的目标检测:目前所研究的检测器大多适用于静止的二维图像。RGBD图像、视频、3D点云等模式下的目标检测,在自主飞行器、无人机、机器人等领域具有重要的现实意义。这些模式对有效利用深度 [36,207, 282, 279]、视频 [68,126],点云 [213,214] 方面提出了新的挑战。
(10)通用对象检测:近年来,学习通用表征的努力越来越多,这些方法在自然图像、视频、航空图像、医学CT图像等多个图像领域都很有效 [220,221]。目前的研究大多集中在图像分类,很少针对目标检测 [274]。现有的检测器通常是针对特定领域的,因为较高的检测精度需要专门设计针对目标数据集的检测器。独立于图像域的目标检测和跨域的目标检测是未来研究的重要方向。
通用对象检测领域的研究还很不完善。鉴于过去五年取得的突破,我们对未来的机遇持乐观态度。
11. 声明
[略]