目标检测算法进展大盘点
一.早期的目标检测盘点
将从多个方面回顾对象检测的历史,包括里程碑检测器、目标检测数据集、指标和关键技术的发展。在过去的10年中,人们普遍认为,目标检测的发展大致经历了两个历史时期:“ 传统的目标检测时期 ” ( 2014年以前 ) 和 “ 基于深度学习的检测时期 ” ( 2014年以后 ),如下图所示。
01传统检测器
如果把今天的物体检测看作是深度学习力量下的一种技术美学,那么回到几年年前,将见证“冷兵器时代的智慧”。早期的目标检测算法大多是基于手工特征构建的。由于当时缺乏有效的图像表示,人们别无选择,只能设计复杂的特征表示,以及各种加速技术来用尽有限的计算资源。
(1)Viola Jones Detectors
18年前,P. Viola和M. Jones在没有任何约束条件(如肤色分割)的情况下首次实现了人脸的实时检测。在700MHz Pentium III CPU上,在同等的检测精度下,检测器的速度是其他算法的数十倍甚至数百倍。这种检测算法,后来被称为“维奥拉-琼斯”(VJ)检测器”,在此以作者的名字命名,以纪念他们的重大贡献。
VJ检测器采用最直接的检测方法,即,滑动窗口:查看图像中所有可能的位置和比例,看看是否有窗口包含人脸。虽然这似乎是一个非常简单的过程,但它背后的计算远远超出了计算机当时的能力。VJ检测器结合了 “ 积分图像 ”、“ 特征选择 ” 和 “ 检测级联 ” 三种重要技术,大大提高了检测速度。
积分图像:积分图像是一种计算方法,以加快盒滤波或卷积过程。与当时的其他目标检测算法一样,在VJ检测器中使用Haar小波作为图像的特征表示。积分图像使得VJ检测器中每个窗口的计算复杂度与其窗口大小无关。
特征选择:作者没有使用一组手动选择的Haar基过滤器,而是使用Adaboost算法从一组巨大的随机特征池 ( 大约180k维 ) 中选择一组对人脸检测最有帮助的小特征。
检测级联:在VJ检测器中引入了一个多级检测范例 ( 又称“检测级联”,detection cascades ),通过减少对背景窗口的计算,而增加对人脸目标的计算,从而减少了计算开销。
(2)HOG Detector
方向梯度直方图(HOG)特征描述符最初是由N. Dalal和B.Triggs在2005年提出的。HOG可以被认为是对当时的尺度不变特征变换(scale-invariant
feature transform)和形状上下文(shape contexts)的重要改进。为了平衡特征不变性 ( 包括平移、尺度、光照等 ) 和非线性 ( 区分不同对象类别 ),将HOG描述符设计为在密集的均匀间隔单元网格上计算,并使用重叠局部对比度归一化 ( 在“块”上 ) 来提高精度。虽然HOG可以用来检测各种对象类,但它的主要动机是行人检测问题。若要检测不同大小的对象,则HOG检测器在保持检测窗口大小不变的情况下,多次对输入图像进行重新标度。多年来,HOG检测器一直是许多目标检测器[13,14,36]和各种计算机视觉应用的重要基础。
(3)Deformable Part-based Model (基于可变形部件的模型,DPM)
DPM作为voco -07、-08、-09检测挑战的优胜者,是传统目标检测方法的巅峰。DPM最初是由P. Felzenszwalb提出的,于2008年作为HOG检测器的扩展,之后R. Girshick进行了各种改进。
DPM遵循“分而治之”的检测思想,训练可以简单地看作是学习一种正确的分解对象的方法,推理可以看作是对不同对象部件的检测的集合。例如,检测“汽车”的问题可以看作是检测它的窗口、车身和车轮。工作的这一部分,也就是“star model”由P.Felzenszwalb等人完成。后来,R. Girshick进一步将star model扩展到 “ 混合模型 ”,以处理更显著变化下的现实世界中的物体。
一个典型的DPM检测器由一个根过滤器(root-filter)和一些零件滤波器(part-filters)组成。该方法不需要手动指定零件滤波器的配置 ( 如尺寸和位置 ),而是在DPM中开发了一种弱监督学习方法,所有零件滤波器的配置都可以作为潜在变量自动学习。R. Girshick将这个过程进一步表述为一个多实例学习的特殊案例,“硬负挖掘”、“边界框回归”、“上下文启动”等重要技术也被用于提高检测精度。为了加快检测速度,Girshick开发了一种技术,将检测模型 “ 编译 ” 成一个更快的模型,实现了级联结构,在不牺牲任何精度的情况下实现了超过10倍的加速度。
虽然今天的物体探测器在检测精度方面已经远远超过了DPM,但仍然受到DPM的许多有价值的见解的影响,如混合模型、硬负挖掘、边界盒回归等。2010年,P. Felzenszwalb和R. Girshick被授予PASCAL VOC的 “ lifetime achievement ”。
02 CNN based
Two-stage Detectors
随着手工特征的性能趋于饱和,目标检测在2010年之后达到了一个稳定的水平。R.Girshick说:“ … progress has been slow during 2010-2012, with small gains
obtained by building ensemble systems and employing minor variants of
successful methods ”。2012年,卷积神经网络在世界范围内重生。由于深卷积网络能够学习图像的鲁棒性和高层次特征表示,一个自然的问题是能否将其应用到目标检测中?R. Girshick等人在2014年率先打破僵局,提出了具有CNN特征的区域(RCNN)用于目标检测。从那时起,目标检测开始以前所未有的速度发展。
在深度学习时代,目标检测可以分为两类:“ two-stage detection ” 和 “ one-stage
detection ”,前者将检测框定为一个 “ 从粗到细 ”
的过程,而后者将其定义为 “ 一步完成 ”。
(1)RCNN
RCNN背后的想法很简单:它首先通过选择性搜索提取一组对象建议(对象候选框)。然后,每个提案都被重新调整成一个固定大小的图像,并输入到一个在ImageNet上训练得到的CNN模型(例如,AlexNet) 来提取特征。最后,利用线性SVM分类器对每个区域内的目标进行预测,识别目标类别。RCNN在VOC07上产生了显著的性能提升,平均精度(mean Average Precision,mAP)从33.7%(DPM-v5) 大幅提高到58.5%。
虽然RCNN已经取得了很大的进步,但它的缺点是显而易见的:在大量重叠的提案上进行冗余的特征计算 ( 一张图片超过2000个框 ),导致检测速度极慢(GPU下每张图片14秒)。同年晚些时候,SPPNet被提出并克服了这个问题。
(2)SPPNet
2014年,K. He等人提出了空间金字塔池化网络( Spatial
Pyramid Pooling Networks,SPPNet)。以前的CNN模型需要固定大小的输入,例如,AlexNet需要224x224图像。SPPNet的主要贡献是引入了空间金字塔池化(SPP)层,它使CNN能够生成固定长度的表示,而不需要重新缩放图像/感兴趣区域的大小。利用SPPNet进行目标检测时,只对整个图像进行一次特征映射计算,然后生成任意区域的定长表示,训练检测器,避免了卷积特征的重复计算。SPPNet的速度是R-CNN的20多倍,并且没有牺牲任何检测精度(VOC07 mAP=59.2%)。
SPPNet虽然有效地提高了检测速度,但仍然存在一些不足:第一,训练仍然是多阶段的,第二,SPPNet只对其全连接层进行微调,而忽略了之前的所有层。次年晚些时候,Fast RCNN被提出并解决了这些问题。
(3)Fast RCNN
2015年,R. Girshick提出了Fast RCNN检测器,这是对R-CNN和SPPNet的进一步改进。Fast
RCNN使能够在相同的网络配置下同时训练检测器和边界框回归器。在VOC07数据集上,Fast RCNN将mAP从58.5%(
RCNN)提高到70.0%,检测速度是R-CNN的200多倍。
虽然Fast-RCNN成功地融合了R-CNN和SPPNet的优点,但其检测速度仍然受到提案/建议检测的限制。然后,一个问题自然而然地出现了:“ 能用CNN模型生成对象建议吗? ” 稍后,Faster
R-CNN解决了这个问题。
(4)Faster RCNN
2015年,S. Ren等人提出了Faster RCNN检测器,在Fast RCNN之后不久。Faster RCNN 是第一个端到端的,也是第一个接近实时的深度学习检测器(COCO [email protected]=42.7%,COCO mAP@[.5,.95]=21.9%, VOC07 mAP=73.2%,VOC12 mAP=70.4%,17fps with ZFNet)。Faster RCNN的主要贡献是引入了区域建议网络 (RPN),使几乎cost-free的区域建议成为可能。从RCNN到Faster RCNN,一个目标检测系统中的大部分独立块,如提案检测、特征提取、边界框回归等,都已经逐渐集成到一个统一的端到端学习框架中。
虽然Faster RCNN突破了Fast RCNN的速度瓶颈,但是在后续的检测阶段仍然存在计算冗余。后来提出了多种改进方案,包括RFCN和 Light head RCNN。
(5)Feature Pyramid Networks(FPN)
2017年,T.-Y.Lin等人基于Faster RCNN提出了特征金字塔网络(FPN)。在FPN之前,大多数基于深度学习的检测器只在网络的顶层进行检测。虽然CNN较深层的特征有利于分类识别,但不利于对象的定位。为此,开发了具有横向连接的自顶向下体系结构,用于在所有级别构建高级语义。由于CNN通过它的正向传播,自然形成了一个特征金字塔,FPN在检测各种尺度的目标方面显示出了巨大的进步。在基础的Faster RCNN系统中使用FPN,在MSCOCO数据集上实现了最先进的单模型检测结果,没有任何附加条件(COCO
[email protected]=59.1%,COCO mAP@[.5,.95]=
36.2%)。FPN现在已经成为许多最新探测器的基本组成部分。
03 CNN based
One-stage Detectors
(1)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 版本,在保持很高检测速度的同时进一步提高了检测精度。
尽管与两级探测器相比,它的探测速度有了很大的提高,但是YOLO的定位精度有所下降,特别是对于一些小目标。YOLO的后续版本和后者提出的SSD更关注这个问题。
(2)Single Shot MultiBox Detector (SSD)
SSD由W. Liu等人于2015年提出。这是深度学习时代的第二款单级探测器。SSD的主要贡献是引入了多参考和多分辨率检测技术,这大大提高了单级检测器的检测精度,特别是对于一些小目标。SSD在检测速度和准确度上都有优势(VOC07 mAP=76.8%,VOC12 mAP=74.9%, COCO [email protected]=46.5%,mAP@[.5,.95]=26.8%,快速版本运行速度为59fps) 。SSD与以往任何检测器的主要区别在于,前者在网络的不同层检测不同尺度的对象,而后者仅在其顶层运行检测。
(3)RetinaNet
单级检测器速度快、结构简单,但多年来一直落后于两级检测器的精度。T.-Y.Lin等人发现了背后的原因,并在2017年提出了RetinaNet。他们声称,在密集探测器训练过程中所遇到的极端的前景-背景阶层不平衡(the extreme foreground-background class imbalance)是主要原因。为此,在RetinaNet中引入了一个新的损失函数 “ 焦损失(focal loss)”,通过对标准交叉熵损失的重构,使检测器在训练过程中更加关注难分类的样本。焦损耗使得单级检测器在保持很高的检测速度的同时,可以达到与两级检测器相当的精度。(COCO [email protected]=59.1%,mAP@[.5, .95]=39.1% )。
04 Object Detection Datasets
建立具有更少的偏置的更大的数据集,是开发先进的计算机视觉算法的关键。在目标检测方面,在过去10年中,已经发布了许多著名的数据集和基准测试,包括PASCAL VOC挑战的数据集(例如,VOC2007, VOC2012)、ImageNet大尺度视觉识别挑战(例如,ILSVRC2014)、MS-COCO检测挑战等。下表1给出了这些数据集的统计数据。
下图显示了这些数据集的一些图像示例:
(a)VOC,(b)ILSVRC,(c)COCO,(d)Open Images
下图显示了从2008年到2018年对VOC07、VOC12和MS-COCO数据集检测精度的提高。
具体介绍如下:
(1)Pascal VOC
PASCAL可视化对象类(Visual Object Classes,VOC)挑战(2005-2012)是早期计算机视觉界最重要的比赛之一。PASCAL VOC中包含多种任务,包括图像分类、目标检测、语义分割和动作检测。两种版本的Pascal-VOC主要用于对象检测:VOC07和VOC12,前者由5k tr. images + 12k annotated
objects组成,后者由11k tr. images + 27k annotated objects组成。这两个数据集中注释了生活中常见的20类对象(Person: person; Animal: bird, cat,
cow, dog, horse, sheep; Vehicle: aeroplane, bicycle, boat, bus, car,
motor-bike, train; Indoor: bottle, chair, dining table, potted plant, sofa,
tv/monitor)。近年来,随着ILSVRC、MS-COCO等大型数据集的发布,VOC逐渐淡出人们的视野,成为大多数新型检测器的试验台。
(2)ILSVRC
ImageNet大规模视觉识别挑战(Large Scale Visual Recognition Challenge,ILSVRC)推动了通用目标检测技术的发展。ILSVRC从2010年到2017年每年举办一次。它包含一个使用ImageNet图像的检测挑战。ILSVRC检测数据集包含200类视觉对象。它的图像/对象实例的数量比VOC大两个数量级。例如ILSVRC-14包含517k图像和534k带注释的对象。
(3)MS-COCO
MS-COCO是目前最具挑战性的目标检测数据集。自2015年以来一直保持一年一度的基于MS-COCO数据集的比赛。它的对象类别比ILSVRC少,但是对象实例多。例如,MS-COCO-17包含来自80个类别的164k图像和897k带注释的对象。与VOC和ILSVRC相比,MS-COCO最大的进步是除了边框标注外,每个对象都进一步使用实例分割进行标记,以帮助精确定位。此外,MS-COCO包含更多的小对象 ( 其面积小于图像的1% ) 和比VOC和ILSVRC更密集的定位对象。所有这些特性使得MSCOCO中的对象分布更接近真实世界。就像当时的ImageNet一样,MS-COCO已经成为对象检测社区的实际标准。
(4)Open
Images
继MS-COCO之后,开放图像检测(OID)技术在2018年迎来了前所未有的挑战。在开放图像中有两个任务:1) 标准目标检测,2) 视觉关系检测,检测特定关系中成对的目标。对于目标检测任务,数据集由1,910k张图像和15,440k个带注释的边界框组成,这些边界框位于600个对象类别上。
05 Datasets of
Other Detection Tasks
在过去的几年年里,除了一般的目标检测外,在行人检测、人脸检测、文本检测、交通标志/灯光检测、遥感目标检测等特定领域的检测应用也十分繁荣。下面一系列表列出了这些检测任务的一些流行数据集。有关这些任务的检测方法的详细介绍可在后期分享中找到。
pedestrian detection
06 Object DetectionMetrics
如何评估目标探测器的有效性? 这个问题甚至可能在不同的时间有不同的答案。
在早期的检测社区中,对于检测性能的评价标准并没有得到广泛的认可。例如,在行人检测的早期研究中,“每个窗口的漏报率与误报率(FPPW)” 通常用作度量。然而,逐窗测量(FPPW)可能存在缺陷,在某些情况下无法预测的完整图像特性。2009年,加州理工学院(Caltech)建立了行人检测基准,从那时起,评估指标从每窗口(per-window,FPPW)改为每图像的伪阳性(false positive per-image,FPPI)。
近年来,对目标检测最常用的评估方法是 “ 平均精度(AP) ”,该方法最早是在VOC2007中引入的。AP定义为不同召回情况下的平均检测精度,通常以类别特定的方式进行评估。为了比较所有对象类别的性能,通常使用所有对象类别的平均AP(mAP)作为性能的最终度量。为了测量目标定位精度,使用Union上的交集(Intersection over Union,IoU)来检查预测框和地面真实框之间的IoU是否大于预定义的阈值,比如0.5。如果是,则将该对象标识为 “ 成功检测到 ”,否则将标识为 “ 未检测到 ”。因此,基于mAP的0.5 -IoU多年来已成为用于目标检测问题的实际度量。
2014年以后,由于MS-COCO数据集的普及,研究人员开始更加关注边界框位置的准确性。MS-COCO AP没有使用固定的IoU阈值,而是在多个IoU阈值上取平均值,阈值介于0.5(粗定位)和0.95(完美定 )之间。这种度量的变化鼓励了更精确的对象定位,并且对于一些实际应用可能非常重要 ( 例如,假设有一个机器人手臂试图抓住扳手 )。
近年来,对开放图像数据集的评价有了进一步的发展,如考虑了组框(group-of boxes)和非穷举的图像级类别层次结构。一些研究者也提出了一些替代指标,如 “ 定位回忆精度 ”。尽管最近发生了一些变化,基于VOC/COCO的mAP仍然是最常用的目标检测评估指标。
二.最近3年目标检测盘点
本文将回顾近三年来最先进的目标检测方法。
Detection with Better Engines
近年来,Deep CNN 在许多计算机视觉任务中发挥了核心作用。由于检测器的精度在很大程度上取决于其特征提取网络,因此本文将主干网络 ( 如 ResNet 和 VGG ) 称为检测器的
“ 引擎 ”。下图为三种知名检测系统选择不同引擎时的检测精度:Faster RCNN,R-FCN和SSD。
在本节中,将介绍深度学习时代的一些重要的检测引擎。关于这个话题的更多细节,请读者参考下面的调查。
(1)AlexNetAlexNet是一个八层的深度网络,是第一个开启计算机视觉深度学习革命的 CNN 模型。AlexNet 通过大幅领先(15.3% 对 26.2% ( 第二名 ) 错误率),赢得了 2012 年 ImageNet LSVRC-2012 大赛。截至 2019 年 2 月,Alexnet 论文被引用超过 3 万次。(2)VGGVGG是由牛津大学的视觉几何学组(Visual Geometry Group,VGG)在2014年提出的。VGG将模型的深度增加到16-19层,使用非常小的卷积滤波器 ( 3x3 ) ,而不是以前 AlexNet 使用的 5x5 和 7x7 。VGG 在当时的 ImageNet 数据集上实现了最先进的性能。(3)GoogLeNetGoogLeNet
又称 Inception,是由谷歌公司在2014年提出的一个CNN模型大家族。GoogLeNet 增加了 CNN 的宽度和深度 ( 多达22层 ) 。Inception 系列的主要贡献是介绍了分解卷积和批量标准化(batch normalization)。(4)ResNetDeep
Residual Networks ( 深度残差网络,ResNet )是由K. He等人在2015年提出的一种新型的卷积网络架构,它比以前使用的卷积网络架构要深很多(高达152层)。ResNet 的目标是简化网络的训练,通过参考输入层将其层重新构造为学习残差函数。2015年,ResNet 在多个计算机视觉比赛中获奖,包括 ImageNet 检测,ImageNet 定位,COCO检测,COCO分割。(5)DenseNetDenseNet由 G. Huang、Z. Liu 等人于2017年提出。ResNet 的成功表明,CNN的捷径连接(the short cut connection)使能够训练更深、更准确的模型。作者接受了这一观察结果,并引入了一个密集连接块(a densely connected block),它以前馈的方式将每一层连接到另一层。 (6)SENet挤压激励网络 ( Squeeze and Excitation Networks,SENet ) 是由J. Hu和L. Shen等人于2018年提出的。它的主要贡献是将全局池化和混编(global pooling and shuffling)一体化,以学习 feature map 在通道方面(channel-wise)的重要性。SENet 在ILSVRC 2017 年分类竞赛中获得第一名。
Object detectors with new engines
近三年来,许多最新的引擎已应用于目标检测。例如,一些最新的目标检测模型,如
STDN,DSOD,TinyDSOD,Pelee,都选择 DenseNet作为检测引擎。Mask RCNN作为实例分割的最先进模型,采用了下一代 ResNet:ResNeXt作为其检测引擎。此外,为了加快检测速度,Xception引入了深度可分离卷积运算是 Incepion 的改进版本,也被用于MobileNet和LightHead RCNN等检测器。
Detection with Better Features
特征表示的质量是目标检测的关键。近年来,许多研究人员在一些最新的引擎的基础上,进一步提高了图像特征的质量,其中最重要的两组方法是:1) 特征融合;2) 学习具有较大接受域的高分辨率特征。
Why Feature Fusion is Important?
不变性(Invariance) 和 同变性/等变化(equivariance) 是图像特征表示的两个重要性质。分类 需要不变的特征表示,因为它的目的是学习高级语义信息。目标定位 需要等变的表示,因为它的目的是区分位置和尺度的变化。由于目标检测由目标识别和定位两个子任务组成,因此检测器必须同时学习不变性和等变性。
近三年来,特征融合在目标检测中得到了广泛的应用。由于CNN模型由一系列卷积层和池化层组成,更深层次的特征具有更强的不变性,但等变性较小。虽然这有利于分类识别,但在目标检测中定位精度较低。相反,较浅层次的特征不利于学习语义,但它有助于对象定位,因为它包含更多关于边缘和轮廓的信息。因此,CNN模型中深度和深度特征的融合有助于提高不变性和等变性。
Feature Fusion in Different Ways
在目标检测中进行特征融合的方法有很多。本文从两个方面介绍了近年来的一些方法:1) 处理流程;2) 元素智能操作。
(1)Processing flow
目前用于目标检测的特征融合方法可分为两类:1) 自底向上融合,2) 自顶向下融合,如下图(a)-(b)所示。自底向上的融合通过跳跃连接将浅层特征前馈到更深的层。相比之下,自顶向下的融合将更深层次的特征反馈给更浅层次。除了这些方法,最近还提出了更复杂的方法,例如跨不同层编织特性。
由于不同层的 feature map 在空间维度和通道维度上都可能有不同的尺寸,因此可能需要对 feature map 进行调整,如调整通道数量、上采样低分辨率 map 或下采样高分辨率 map ,使其尺寸合适。最简单的方法是使用最接近或双线性插值(nearest or bilinear-interpolation)。此外,分数阶条纹卷积 ( 又称转置卷积 )是近年来另一种常用的调整 feature map 大小和调整通道数量的方法。使用分数阶条纹卷积的优点是,它可以学习一种适当的方法来执行上采样本身。
(2)Element-wise operation
从局部的角度看,特征融合可以看作是不同特征映射之间的元素智能操作。有三组方法:1)
element-wise 的和,2) element-wise 的积,3) 串联,如上图©-(e)所示。element-wise的和是执行特征融合最简单的方法。它已被频繁地用于许多最近的目标检测器。element-wise 的积与 element-wise 的和非常相似,唯一的区别是使用乘法而不是求和。element-wise
的积的一个优点是,它可以用来抑制或突出某个区域内的特性,这可能进一步有利于小对象检测。特征拼接/串联是特征融合的另一种方式。它的优点是可以用来集成不同区域的上下文信息,缺点是增加了内存。
Learning High Resolution Features with Large Receptive Fields
接受域和特征分辨率是基于CNN的检测器的两个重要特点,前者是指输入像素的空间范围,用于计算输出的单个像素,而后者对应于输入与特征图之间的下采样率。具有较大接受域的网络能够捕获更大范围的上下文信息,而具有较小接受域的网络则可能更专注于局部细节。
正如前面提到的,特征分辨率越低,就越难检测小对象。提高特征分辨率最直接的方法是去除池化层或降低卷积下采样率。但这将带来一个新的问题,即由于输出步长减小,接受域会变得太小。换句话说,这将缩小检测器的“视线”范围,并可能导致一些大型目标的漏检。
一种同时提高接收域和特征分辨率的方法是引入膨胀/扩展卷积(dilated convolution),又称无孔卷积(atrous convolution)或带孔卷积(convolution with
holes)。膨胀/扩展卷积最初是在语义分割任务中提出的。其主要思想是对卷积滤波器进行扩展,和使用稀疏参数。例如,膨胀率为2的3x3滤波器会具有与核为5x5的滤波器相同的接受域,但只有9个参数。膨胀卷积目前已广泛应用于目标检测中,在不需要任何额外参数和计算代价的情况下,被证明是提高精度的有效方法。
Beyond Sliding
Window
虽然目标检测已经从手工特征发展到深度神经网络,但仍然遵循 “ 特征图滑动窗口 ” 的模式。最近,在滑动窗之外还安装了一些检测器。
(1)Detection as sub-region
search
子区域搜索提供了一种新的检测方法。最近的一种方法是将检测视为一个路径规划过程,从初始网格开始,最终收敛到所需的ground truth box。另一种方法是将检测看作是一个迭代更新过程,对预测边界框的角进行细化。
(2)Detection as key points
localization
关键点定位是一项重要的计算机视觉任务,有着广泛的应用,如面部表情识别、人体姿态识别等。由于图像中任何对象都可以由其在ground truth box的左上角和右下角唯一确定,因此检测任务可以等价地框定为一对关键点定位问题。这个想法最近的一个实现是预测拐角的热图。该方法的优点是可以在语义分割框架下实现,不需要设计多尺度的锚框。
Improvements of Localization
为了提高定位精度,目前的检测方法主要有两种:1) 边界框细化法;2) 设计新的损失函数进行精确定位。
Bounding Box Refinement
提高定位精度最直观的方法是对边界框进行细化,可以将其视为检测结果的后处理。尽管边界框回归已经集成到大多数现代目标检测器中,但是仍然有一些具有意外尺度的对象不能被预定义的锚框很好地捕获。这将不可避免地导致对其位置的不准确预测。由于这个原因,“ 迭代边界框细化(iterative bounding box refinement)” 最近被引入,它将检测结果迭代地输入BB回归器,直到预测收敛到正确的位置和大小。但也有研究人员认为该方法不能保证定位精度的单调性,即多次使用BB回归可能会使定位退化。
Improving Loss Functions for Accurate Localization
在大多数现代检测器中,目标定位被认为是一个坐标回归问题。然而,这种模式有两个缺点。首先,回归损失函数并不对应最终的位置评估。例如,不能保证较低的回归误差总是会产生较高的IOU预测,特别是当对象的长径比非常大时。其次,传统的边界框回归方法不能提供定位的置信度。当多个BB重叠时,可能导致非最大抑制失败 ( 详见之前的分享,点击获取连接 )。
设计新的损失函数可以缓解上述问题。最直观的设计是直接使用IoU作为定位损失函数。其他一些研究人员进一步提出了一种IOU 引导的 NMS来改进训练和检测阶段的定位。此外,一些研究者也尝试在概率推理框架下改进定位。与以往直接预测框坐标的方法不同,该方法预测了边界框位置的概率分布。
Learning with Segmentation
目标检测和语义分割是计算机视觉中的重要任务。近年来的研究表明,通过学习和语义分割可以提高目标检测能力。
Why Segmentation Improves Detection?
语义分割提高目标检测能力的原因有三个。
(1)Segmentation helps category
recognition
边缘和边界是构成人类视觉认知的基本要素。在计算机视觉中,物体(如汽车、人)和物体(如天空、水、草)的区别在于前者通常有一个封闭的、明确的边界,而后者没有。由于语义分割任务的特征能够很好地捕捉到对象的边界,因此分割可能有助于分类识别。
(2)Segmentation
helps accurate localization
对象的ground-truth边界框由其定义良好的边界决定。对于一些特殊形状的物体 ( 例如,想象一只猫有很长的尾巴 ),很难预测高IOU的位置。由于目标边界可以很好地编码在语义分割特征中,分割学习有助于准确的目标定位。
(3)Segmentation can be
embedded as context
日常生活中的物体被不同的背景所包围,如天空、水、草等,这些元素构成了一个物体的语境。整合上下文的语义分割将有助于目标检测,例如,飞机更有可能出现在空中而不是水上。
How Segmentation Improves Detection?
通过分割提高目标检测的主要方法有两种:1) 采用丰富的特征学习;2) 采用多任务损失函数学习。
(1)Learning with enriched features
最简单的方法是将分割网络看作一个固定的特征提取器,并将其作为附加特征集成到检测框架中。该方法的优点是易于实现,缺点是分割网络可能带来额外的计算。
(2)Learning with multi-task loss
functions
另一种方法是在原有检测框架的基础上引入额外的分割分支,用多任务损失函数 ( 分割损失+检测损失 ) 训练该模型。在大多数情况下,分割分支将在推理阶段被删除。优点是检测速度不受影响,缺点是训练需要像素级的图像标注。为此,一些研究人员采用了 “ 弱监督学习 ” 的思想:他们不是基于像素级注释掩码进行训练,而是基于边界框级注释训练分割分支。
Robust Detection of Rotation
and Scale Changes
目标旋转和尺度变化是目标检测中的重要挑战。由于CNN学习到的特征是不受旋转和尺度变化的影响的,近年来很多人在这个问题上做出了努力。
Rotation Robust Detection
对象旋转在人脸检测、文本检测等检测任务中非常常见。这个问题最直接的解决方案是数据扩充,使任何方向的对象都能被扩充的数据很好地覆盖。另一种解决方案是为每个方向训练独立的检测器。除了这些传统的方法,最近还有一些新的改进方法。
(1)Rotation invariant loss
functions
旋转不变损失函数学习的思想可以追溯到20世纪90年代。最近的一些工作对原有的检测损失函数进行了约束,使旋转后的物体的特征保持不变。
(2)Rotation calibration
改进旋转不变的检测的另一种方法是对候选对象进行几何变换。这对于多级检测器尤其有用,前阶段的相关性将有利于后续的检测。这种思想的代表是空间变压器网络(Spatial Transformer Networks,STN )。STN目前已被用于旋转文本检测和旋转人脸检测。
(3)Rotation RoI Pooling
在 two-stage 检测器中,特征池化的目的是为任意位置和大小的对象建议(object proposal)提取固定长度的特征表示,首先将 proposal 均匀地划分为一组网格,然后将网格特征串联起来。由于网格划分是在直角坐标系下进行的,其特征对旋转变换不具有不变性。最近的一项改进是在极坐标下对网格进行网格划分,使特征对旋转变化具有鲁棒性。
Scale Robust Detection
近年来,在尺度鲁棒检测的训练和检测阶段都有了改进。
(1)Scale adaptive training
大多数现代检测器都是将输入图像重新缩放到一个固定的尺寸,并将物体在所有尺度下的损失进行反向传播,如下图(a)所示。但是,这样做的缺点是会出现 “ 尺度不平衡 ” 问题。在检测过程中构建图像金字塔可以缓解这一问题,但不能从根本上解决。最近的一个改进是图像金字塔的尺度标准化 ( Scale Normalization for Image Pyramids,SNIP
) ,它在训练阶段和检测阶段都建立图像金字塔,只对一些选定尺度的损失进行反向传播,如下图(b)所示。一些研究人员进一步提出了一种更有效的训练策略:使用高效重采样的SNIP(SNIP with Efficient Resampling,SNIPER),即,将图像裁剪并重新缩放到一组子区域,以便从大规模批量训练中获益。
(a)Single resolution image, backbone all
objects (b)Multi-resolution images,
backprop objects of selected scale
(2)Scale adaptive detection
现代检测器大多采用固定的结构来检测不同尺寸的物体。例如,在一个典型的基于CNN的检测器中,需要仔细定义锚框的大小。这样做的一个缺点是配置不能适应意外的尺度变化。为了提高对小目标的检测,近年来的一些检测器提出了一些
“ 自适应放大(adaptive zoom-in) ” 技术,自适应地将小目标放大为 “ 大目标 ”。最近的另一项改进是学习预测图像中对象的尺度分布,然后根据分布自适应地重新缩放图像。
Training from Scratch
大多数基于深度学习的检测器首先在大规模数据集(如ImageNet)上进行预训练,然后针对特定的检测任务进行微调。人们一直认为预训练有助于提高泛化能力和训练速度,问题是,真的需要在 ImageNet 上对检测器进行预训练吗? 事实上,采用预训练网络进行目标检测存在一定的局限性。第一个限制是ImageNet分类和目标检测之间的散度,包括它们的损失函数和尺度/类别分布。第二个限制是领域不匹配。由于ImageNet中的图像是RGB图像,而有时需要进行检测的是深度图像(RGB-d)或三维医学图像,因此无法很好地将预先训练好的知识转移到这些检测任务中。
近年来,一些研究人员尝试从零开始训练一种目标检测器。为了加快训练速度和提高稳定性,一些研究人员引入密集连接(dense connection)和批量归一化(batch normalization)来加速浅层的反向传播。最近K . He等人的工作进一步质疑预训练的范式通过探索相反的制度推进:他们报告了使用从随机初始化训练而来的标准模型对COCO数据集进行目标检测的有竞争性的结果,唯一的改变是增加了训练迭代的次数,以便随机初始化的模型可以收敛。即使只使用10%的训练数据,随机初始化训练的鲁棒性也令人惊讶,这表明ImageNet预处理可以加快收敛速度,但不一定提供正则化或提高最终检测精度。
Adversarial Training
由A. Goodfellow等人于2014年提出的生成式对抗网络(Generative Adversarial Networks,GAN)近年来受到了极大的关注。一个典型的GAN由两个神经网络组成:一个生成网络和一个判别网络,它们在极小极大优化框架下相互竞争。通常,生成器学习从潜在空间映射到感兴趣的特定数据分布,而鉴别器的目的是区分真实数据分布中的实例和生成器生成的实例。GAN广泛应用于图像生成、图像样式传输、图像超分辨率等计算机视觉任务。近年来,GAN也被应用于目标检测,尤其是对小遮挡目标的检测。GAN被用来通过缩小小目标和大目标之间的模型表示来增强对小目标的检测。为了提高对被遮挡物体的检测,最近的一个想法是使用对抗性训练生成遮挡掩模。与在像素空间中生成示例不同,对抗性网络直接修改特性来模拟遮挡。
此外,“ 对抗性攻击 ”研究如何用对抗性的例子攻击检测器,近年来受到越来越多的关注。这一课题的研究对于自主驾驶来说尤为重要,因为在保证其对对抗攻击的鲁棒性之前,不能完全信任它。
Weakly Supervised Object Detection
现代目标探测器的训练通常需要大量的人工标记数据,而标记过程费时、昂贵、低效。弱监督目标检测 ( Weakly Supervised Object Detection,WSOD ) 的目标是通过训练一个只带有图像级注释而不是边界框的检测器来解决这一问题。
近年来,多实例学习在WSOD中得到了广泛的应用。多实例学习是一种有监督的学习方法。多实例学习模型不是使用一组单独标记的实例进行学习,而是接收一组标记的包,每个包包含多个实例。如果将一个图像中的候选对象看作一个包,并将图像级注释看作标签,那么WSOD可以表示为一个多实例学习过程。
类激活映射是最近出现的另一组WSOD方法。对CNN可视化的研究表明,尽管没有对目标位置的监控,但是CNN的卷积层表现为目标检测器。类激活映射揭示了如何使CNN在接受图像级标签训练的情况下仍然具有定位能力。
除了上述方法外,还有一些研究者认为WSOD是一个proposal排序过程,通过选择信息量最大的区域,然后用图像级注释对这些区域进行训练。WSOD的另一个简单方法是屏蔽图像的不同部分。如果检测分数急剧下降,那么一个物体将高概率被覆盖。此外,交互注释在训练中考虑了人的反馈,从而改进了WSOD。最近,生成对抗性训练被用于WSOD。