Object Detection in 20 Years A Survey论文翻译(阅读笔记)
原文地址:[1905.05055] Object Detection in 20 Years: A Survey (arxiv.org)
//2022.1.3日上午 10:30开始阅读
论文时间跨度:20世纪90年代 - 2019年,共25年时间
摘要
涵盖了里程碑检测器,检测数据集,度量,检测系统的基本构建模块,加速技术和最新的检测方法。还回顾了重要的检测应用:行人检测、人脸检测、文本检测等。并分析上述应用面对的技术挑战和改进。
介绍
目标检测的目的是:开发计算模型和技术,为计算机视觉应用程序提供最基本的信息:目标位置。
目标检测任务分为:通用目标检测和检测应用两个方向。
上图 1998 - 2018年关于目标检测的出版物数量增长
主要贡献
本文和其他综述的不同之处:
- 本文主要从技术发展的角度全面回顾了目标检测发展历史上的400多篇论文。时间跨度涵盖了25年的时间。
- 深入探索关键技术及近期的发展现状。主要是对技术进行深度的剖析。包含:多尺度检测、硬负类挖掘、bounding box回归等。
- 目标检测加速技术的综合分析。包含:检测管道(级联检测、特征映射共享计算),检测主干(网络压缩、轻量化网络设计),数值计算(积分图像、特征映射共享计算、矢量化等)。
目标检测的困难和挑战:
- 不同视点下的物体、光照、类内变化等。
- 物体旋转、缩放变化(如小物体)、物体的精确定位,物体的密集和遮挡检测、检测速度等。
文章主要内容
目标检测的两个历史阶段:
传统目标检测(2014年之前),基于深度学习的检测阶段(2014年之后)。
目标检测的改进道路
目标检测里程碑:传统检测器
早起目标检测方法大多数都是基于手工制作的特征。
Viola Jones Detectors(VJ 探测器)
遵循滑动窗口的检测方法。
同时结合了积分图像,特征选择,检测级联。
- 积分图像:积分图像是一种加快box滤波或卷积过程的计算方法。和同时代的其他目标检测算法一样,VJ检测器使用Haar小波作为图像的特征表示。积分图像使得VJ探测器中每个窗口的计算复杂度与窗口大小无关。
- 特征选择:作者使用Adaboost算法[32],而不是使用一组手工选择的Haar basisfilters,从一个巨大的随机特征库(约180k维)中选择一个小的特征集,这对人脸检测最有帮助。
- 检测级联:在VJ检测器中引入了多级检测范式(又称“检测级联”),通过减少对背景窗口的计算量,增加对人脸目标的计算量,来减少计算量。
HOG Detector
面向梯度直方图(Histogram of Oriented gradient, HOG)特征描述符最初是由N. Dalal和B. Triggs[12]在2005年提出的。HOG可以认为是对尺度不变特征变换[33,34]和其时间的形状上下文[35]的重要改进。为了平衡特征不变性(包括平移、缩放、光照等)和非线性(区分不同对象类别时),HOG描述符被设计成在均匀间隔的密集网格上计算,并使用重叠的局部对比度归一化(在“块”上)来提高准确性。尽管HOG可以用于检测各种各样的对象类,但它的主要动机是行人检测问题。为了检测不同大小的物体,HOG检测器多次缩放输入图像,同时保持检测窗口的大小不变。HOG检测器长期以来一直是许多目标检测器的重要基础[13,14,36],多年来被广泛应用于计算机视觉领域。
DPM
DPM作为VOC-07、-08和-09检测挑战的获胜者,是传统目标检测方法的顶峰。DPM最初是由P. Felzenszwalb[13]在2008年提出的,作为HOG检测器的扩展,R. Girshick进行了各种改进[14,15,37,38]。
DPM遵循“分而治之”的检测理念,其中训练可以简单地认为是学习一种正确的对象分解方法,推理可以被认为是对不同对象部分的检测的集合。例如,检测“汽车”的问题可以被认为是检测其车窗、车身和车轮。这部分工作,又称“恒星模型”,是由P. Felzenszwalb等人完成的。后来,R. Girshick又将恒星模型进一步扩展到“混合模型”[14,15,37,38],以处理现实世界中变化更大的天体。
主要思想:采用分而治之的思想,将对目标对象的检测转换为目标对象中组成部分的检测。
DPM的组成:根过滤器 + 部分过滤器组成。
DPM中采用一种弱监督的学习方法,可以将所有部分过滤器配置作为变量进行自动学习,而不用手动的方式。
其中,为了加快检测速度,Girshick开发了一种将检测模型“编译”成一个更快的级联架构。
受到该检测器的影响的技术:
混合模型,硬负挖掘,bounding box回归。
基于深度学习的两种阶段的检测器:
“两阶段检测”将目标检测定义为“粗到细”的过程,“一阶段检测”将目标检测定义为“一步完成”。
Two stage detector
基于CNN的两阶段检测器
RCNN
实现思路:
- 首先使用SS提取一组目标建议。
- 然后将每个建议调整为固定大小的图像。
- 然后使用在ImageNet中训练得到的CNN网络,将2中的图像作为输入作为特征提取。
- 然后,使用线性的SVM预测每一个区域建议中的目标是否存在以及对应的类别。
RCNN的缺点:大量的重叠区域建议,导致了特征的重复计算。
SPPNet
主要贡献:
- 提出了空间金字塔池网络,使得CNN不再需要接受固定大小的输入。
- 使用空间金字塔网络进行计算的时候,只计算一次特征映射feature map,然后生成任意区域的固定长度来训练检测器,避免了对卷积特征的重复计算。
缺点:
- 训练仍然是多级的;
- SPPNet只是对全连接层进行微调,对之前的层都进行了忽略。
Fast RCNN
贡献:可以同时训练一个检测器和一个bounding box回归器。
缺点:仍然受到区域建议的限制。
Faster RCNN
贡献:引入了RPN区域建议网络,实现了几乎无成本的区域计算。
从RCNN 到 Faster RCNN,目标检测系统的区域建议模块,特征提取,bounding box 回归等已经逐渐整合到一个统一的端到端学习框架。
缺点:在后续的检测阶段仍然存在重复计算的问题。
Feature Pyramid Networks(FPN)
主要贡献:FPN中开发了一种具有横向连接的自顶向下架构,用于在所有尺度上构建高级语义。FPN在检测各种尺度的目标方面有了很大的进步。
里程碑:基于CNN的一阶段检测器
YOLO框架
抛弃了原先的区域建议 + 分类的架构。
主要贡献:将单个神经网络应用于整个图像。该网络将图像分割成多个区域,并同时预测每个区域的bounding box和概率。
缺点:对于小物体的定位精度不如二阶段的检测器。
Single Shot MultiBox Detector (SSD)
主要贡献:引入了多参考和多分辨率检测技术,显著提高了一阶段检测器的精度,尤其是对小目标的检测。
和之前检测器的不同之处:SSD在不同层网络层上的不同尺度上检测对象,而之前的检测器是在网络的顶层检测。
RetinaNet
主要贡献:引入了一种focal loss的新损失函数,通过重塑标准交叉熵损失,使检测器在训练时将更多的注意力放在困难的,错误分类的例子上。
目标检测的数据集和度量
更优秀的数据集是开发先进计算机视觉算法的重要方法。
数据集
Pascal VOC
Pascal-VOC主要用于对象检测的有两个版本:VOC07和VOC12, VOC07由5k tr. images + 12k注释对象组成,VOC12由11k tr. images + 27k注释对象组成。生活中常见的20类对象在这两个数据集中被标注(Person: Person;动物:鸟、猫、牛、狗、马、羊;交通工具:飞机、自行车、船、公共汽车、汽车、摩托车、火车;室内:瓶子、椅子、餐桌、盆栽、沙发、电视/显示器)。
ILSVRC
ImageNet大规模视觉识别挑战(ILSVRC)2[52]推动了通用对象检测技术的发展。ILSVRC检测数据集包含200类可视对象。
ILSVRC数据集中包含的图像/对象实例比VOC大两个数量级。例如,ILSVRC-14包含517k图像和534k注释对象。
MS-COCO
与VOC和ILSVRC相比,MS-COCO最大的进步在于,除了边界框标注之外,每个对象都进一步使用实例分割进行标记,以帮助精确定位。
此外,MS-COCO比VOC和ILSVRC包含了更多的小对象(其面积小于图像的1%)和更密集的定位对象。所有这些特性使MSCOCO中的对象分布更接近于现实世界中的对象分布。就像当时的ImageNet一样,MS-COCO已经成为对象检测社区事实上的标准。
Open Images
2018年,继MS-COCO之后,以前所未有的规模推出了Open Images检测挑战。
包含的两个主要任务:
- 标准对象检测,;
- 视觉关系检测,检测成对对象的特定关系。对于目标检测任务,数据集由1,910k幅图像和15,440k带注释的边界框组成,边界框位于600个对象类别上。
其他数据集
主要是针对特定检测任务的数据集。
下图是一些经典的数据集和其中的统计数据:
度量
近年来,最常用的目标检测评价方法是“平均精度(AP)”,该方法最早是在VOC2007中引入的。AP定义为不同召回情况下的平均检测精度,并以特定类别的方式进行评估。为了比较所有对象类别的性能,通常使用所有对象类别的平均AP (mAP)作为最终的性能指标。为了测量目标的定位精度,使用IoU (Intersection over Union)来检测预测框与地面真值框之间的IoU是否大于预定义的阈值,例如0.5。如果是,该对象将被标识为“成功检测到”,否则将被标识为“错过”。基于0.5IoU的mAP已经成为多年来目标检测问题的实际度量。
AP IoU mAP
2014年后,由于MS-COCO数据集的普及,研究者开始更加关注包围盒定位的准确性。MS-COCO AP不是使用固定的IoU阈值,而是在0.5(粗定位)和0.95(完美定位)之间的多个IoU阈值上平均。
目标检测技术的发展
Early Time’s Dark Knowledge
早期的对象检测(2000年以前)并没有遵循滑动窗口检测等统一的检测理念。当时的检测器通常是基于以下的低级和中级视觉来设计的。
组件,形状和边缘
组件识别是一种重要的认知理论。
一些早期的研究人员将目标检测框定为对象组件、形状和轮廓之间的相似性度量,包括Distance Transforms、Shape Contexts和Edgelet等。
基于机器学习的检测经历了多个阶段,包括外观的统计模型(1998年以前),小波特征表示(1998-2005年)和基于梯度的表示(2005-2012年)。
建立对象的统计模型是目标检测历史上第一次基于学习的方法。
与当时基于规则或模板的方法相比[107,108],统计模型通过从数据中学习特定任务的知识,更好地提供了对象外观的整体描述。
自2000年起,小波特征变换开始主导视觉识别和目标检测。这组方法的本质是学习从像素到一组小波系数的图像。在这些方法中,Haar小波因其计算效率高而被广泛应用于许多目标检测任务中,如一般目标检测[29]、人脸检测[10,11,109]、行人检测[30,31]等。图5 (d)显示了VJ检测器学习的一组人脸Haar小波基[10,11]。
早期的CNN对象检测
- LeCun等人进行了“共享权复制神经网络”、“空间位移网络”等一系列改进,通过扩展卷积网络的每一层,覆盖整个输入图像来减少计算量,如图5 (b)-(c)所示。这样,只需要一次网络的前向传播,就可以提取出整幅图像中任意位置的特征。这可以被认为是在近20年后提出的全卷积网络(FCN)的原型。
多尺度检测技术的发展
“不同尺寸”和“不同纵横比”目标的多尺度检测是目标检测的主要技术挑战之一。在过去的20年里,多尺度检测经历了多个历史时期:“特征金字塔和滑动窗口(2014年以前)”、“基于目标提议的检测(2010-2015年)”、“深度回归(2013-2016年)”、“多参考检测(2015年以后)”和“多分辨率检测(2016年以后)”,如图6所示。
特征金字塔+滑动窗口(2014年以前)
自从VJ探测器计算能能力提高之后,研究者开始关注通过构建特征金字塔 + 滑动窗口的方式。
传统的包括:HOG DPM
基于深度学习的包括:OverFeat
混合模型的提出可以用来检测不同纵横比的对象。
范例的检测为训练集的每个对象实例训练单个模型。
正是由于MS COCO等一系列新数据集(包含有更多的对象)的出现,导致了目标区域建议方法的产生。
基于目标区域建议的检测
目标区域建议指的是一组与类别无关的候选框,可能包含任何对象。
基于对象建议的检测有助于避免在图像上进行详尽的滑动窗口搜索。
目标建议检测算法应满足以下三个要求:
- 高召回率;
- 高定位精度;
- 在前两个要求的基础上,提高精度,减少处理时间。
现代建议检测方法可分为三类
- 分割分组方法[42,117 - 119];
- 窗口评分方法[116,120 - 122];
- 基于神经网络的方法[123-128]。
早期的建议检测方法遵循自底向上的检测理念,甚至还用手工来提高候选框的定位。当深度CNN用于目标检测之后,目标检测区域建议就从自底向上的视觉发展到拟合特定的对象类集。同时,区域生成器和目标检测器之间的区别也变得模糊。
深度回归 Deep regression (2013-2016)
//2022.1.4号晚上18:19开始学习
使用深度学习来预测bounding box的坐标位置。
优点:简单 容易实现
缺点:定位可能不够精确,特别是对小对象来说
多参考/分辨率检测(2015年后)
主要思想:在图像的不同位置预先定义一组大小和宽高比不同的参考框(anchors),然后根据这些参考框预测检测框。
每个预定义锚盒的典型损失包括两个部分:1)用于类别识别的交叉熵损失和2)用于目标定位的L1/L2回归损失。损失函数的一般形式可以写成:
其中t和t∗是预测和ground truth box的位置,p和p∗是它们的类别概率。IOU{a, a∗}是锚点a和它的ground truth a∗之间的IOU。η值是一个借据的阈值,比如说0.5。如果一个锚不覆盖任何对象,它的本地化损失不计入最终损失。
多分辨率检测通过在不同网络层次检测不同尺度大小的目标对象。
由于CNN在前向传播的过程中会形成特征金字塔,那么更容易探测到深层较大和浅层较小的目标对象。
Bounding box 回归技术的革新
Bounding box 回归目的是根据初始方案或锚定框来细化预测的bounding box的位置。
Without BB regression (before 2008)
传统的检测方法使得研究人员不得不建造非常密集的金字塔,并在每个位置上密集地滑动探测器。
From BB to BB (2008-2013)
BB回归首次引入目标检测系统是在DPM[15]中。BB回归在当时通常作为一个后处理块,因此它是可选的。由于PASCAL VOC的目标是预测每个对象的单个包围盒,DPM生成最终检测的最简单的方法应该是直接使用它的根过滤器位置。
后来,有了基于对象假设的完整配置来预测边界盒方法,并将此过程表述为线性最小二乘回归问题。这种方法在PASCAL标准下的检测得到了显著的改进。
From features to BB (after 2013)
Faster RCNN和检测器整合,实现了端到端方式的训练。同时,也产生了基于CNN特征直接预测bounding box,为了使得预测更加有鲁棒性,使用光滑L1函数。
或者是根号函数:
作为回归损失,比DPM中使用的最小二乘法对离群值更有鲁棒性。
一些研究者也选择对坐标进行归一化处理,以得到更稳健的结果。
上下文填充技术的革新
一共有三种方法:
- 局部上下文检测;
- 全局上下文检测;
- 上下文交互;
局部上下文检测
局部上下文检测是目标对象周围的视觉信息。
最近的基于深度学习的检测器也可以通过简单地扩大网络的接受域或对象提议的大小来改进局部上下文。
全局上下文检测
全局上下文使用场景配置作为目标检测的附加信息来源。对于早期的目标检测器,整合全局上下文常用的方法是整合包含场景的元素的统计摘要。
在CNN用于目标检测之后,有两种方法可以整合全局上下文:
- 使用CNN feature的大接受域或全局池化操作;
- 将全局上下文视为一种序列信息,并使用循环神经网络学习这些信息;
上下文交互
上下文交互是指通过约束、依赖等视觉元素的交互作用来传达信息片段。
现在的改进有两种:
- 基于个体对象之间的关系;
- 探索建模对象和场景之间的依赖关系;
非最大抑制技术的发展
由于相邻窗口通常具有相似的检测分数,所以目标检测技术采用非最大抑制作为后处理步骤,去除复制的包围盒,得到最终的检测结果。
NMS不总数集成在检测器中,因为目标检测系统的期望输出在当时不完全清楚。
NMS的三种方法:
- 贪婪选择;
- Bounding box 聚合;
- 学习NMS;
贪婪选择
思想:对于重叠的检测框,使用最大预测分数的边界框。而根据预定义的重叠阈值删除相邻的框。一般很多使用的阈值是:0.5;
上述的处理以迭代的方式执行。
缺点:
- 得分最高的box不一定是最合适的;
- 可能会抑制周围的物体;
- 不会抑制错误的正类;
尽管使用了一些手工改进的方法,但是贪婪选择依然是当今对象检测的最强基线。
Bounding box 聚合
思想:将多个重叠的bounding box框组合或聚类称一个最终检测。
优点:充分考虑了对象之间的关系及其空间布局。
//截止到2022.1.4日晚上22:24止
//2022.1.5日上午10:37开始阅读总结
学习NMS
方法思想:将NMS视为过滤器,对所有原始检测进行重新评分,并以端到端的方式将NMS训练为网络的一部分。
硬负类挖掘技术的改进
使用滑动窗口探测器可能会导致每个对象的背景和目标对象之间达到10^4 - 10^5的不平衡。每个对象有这个数量级的背景窗口。
大量的背景数据对训练是有害的。
Bootstrap
思想:从一小部分背景样本开始训练,然后在训练过程中不断地添加新的误分类背景。
后来该技术成为了DPM和HOG检测器中解决数据不平衡问题的标准训练技术。
基于深度学习的检测器中的HNM
Faster RCNN 和 YOLO只是在正负窗口之间权衡权重。
在SSD和OHEM中,只有很小一部分样本(损耗值最大的样本)的梯度会反向传播。在RefineDet中,设计了一个“锚细化模块”来过滤容易产生的负面信息。另一种改进方法是设计新的损失函数,通过重塑标准交叉熵损失,使其将更多的注意力放在难以分类的错误示例上。
加速检测技术的进展
主要分为:
- 检测管道加速;
- 检测引擎提速;
- 数值计算提速;
特征映射共享计算
基于滑动窗口的计算中,计算冗余有两个部分:
- 空间冗余:由于相邻窗口之间的重叠引起;
- 尺度冗余:由于相邻尺度之间的特征相关性引起;
空间计算冗余和加速
最常用的思想:feature map共享计算。在整个图像上滑动窗口之前只计算一次整个图像的feature map。
传统检测器的图像金字塔可以看成是特征金字塔。
例子:为了加快行人检测的速度,研究者通常会对整个输入图像进行HOG map积累。缺点:feature map上的分辨率会受到cell大小的限制。但是处于两个单元格之间的对象可能被所有的检测窗口忽略。
解决办法:构建一个完整的特征金字塔。
//截止到2022.1.5日下午13:36
//2022.1.5. 下午17:50开始
特征图共享计算也广泛用于基于CNN的检测器中。
SPPNet Faster RCNN Fast RCNN等。
尺度计算冗余和加速
为了减少尺度冗余计算,最成功的方法是直接对特征进行尺度变换,而不是对图像进行尺度变换。
但是HOG的邻居尺度与积分通道特征之间存在很强的(对数线性)相关性。
这种相关性可以通过近似相邻比例尺的feature map来加速特征金字塔的计算。
构建金字塔是避免尺度计算冗余的另一种方式,即通过简单的在一个特征图上滑动多个检测器的方法来检测不同尺度的物体,而不是重新缩放图像或特征。
分类器的加速
传统的检测器由于计算复杂度低,使用的核方法虽然可以提高准确率,但是会带来较高的计算开销。
传统核方法作为一种标准的非参数方法,计算复杂度不是固定的。
当训练集很大时,检测速度会很慢。
加速核方法的技术:
- 模拟近似;
- 约化集向量是核支持向量机的一种近似方法,其目的是用少量的合成向量得到一个等价的决策边界。
- 另一种提高核支持向量机目标检测速度的方法是将其决策边界近似为分段线性形式,从而实现恒定的推理时间。
级联检测
思想:采用从粗到细的检测原理。用简单的计算过滤掉大多数简单的背景窗口,然后用复杂的方法处理那些比较简单的窗口。
VJ检测器中对于级联检测的使用是一个代表。
用处:级联检测使用到基于深度学习的检测器中。特别是对大场景下的小目标检测任务。
网络剪枝与量化
“网络剪枝”和“网络量化”是两种常用的CNN模型提速技术,前者是指对网络结构或权值进行剪枝以减小其大小,后者是指减少激活或权值的码长。
网络剪枝
使用在传统的检测器中的网络剪枝方法,即:在训练之后减去Loss函数中的部分不重要的权重。但是这种方法不可以用到基于CNN的训练当中,因为会导致卷积滤波器中出现一些稀疏的连接模式。
简单的解决办法:去掉整个过滤器。
网络量化
思想:将网络中的激活或权值量化为二进制数,从而将浮点数运算转化为与 或 非运算。网络二值化可以显著加快计算速度并减少网络存储。
实现方法:使用最小二乘法逼近二进制变量的卷积。利用多个二进制卷积的线性组合可以得到更精确的近似。
同时,目前的用于二值化计算的GPU加速器,得到了更为显著的加速结果。
网络精细化
思想:将大型网络压缩成为小型网络的一种通用框架。
这种想法的一个直接的方法是使用教师网来指导(轻量级)学生网的训练,以便后者可以用于加速检测。
另一种方法是对候选区域进行变换,使学生网和教师网之间的特征距离最小。
轻量级的网络设计
设计一些轻量级的网络,使用的方法:
- 分解卷积;
- 群卷积;
- 深度可分离卷积;
- 瓶颈设计;
- 神经结构搜索;
分解卷积
两种方法:
- 将大型的卷积过滤器分解为一组小的空间维度。这对于大的过滤器来说非常有效。
- 将一个大的卷积分解成为两个晓得信道维数。例:使用d维度的过滤器和一个包含c通道的feature map可以被一个d’维的过滤器 + 一个非线性激活函数 + 另一个d维的过滤器(d’ < d)近似。这样的话原来的O(d k ^ 2 c)复杂度就变为了O(d’ k ^ 2 c) + O(d d’)。
群卷积
思想:通过将特征管道分为许多不同的组,来减少一个卷积层中的参数数量。并且独立地在每一个组上进行卷积操作。
如果我们将特征通道平均分成m组,在不改变其他配置的情况下,理论上卷积的计算复杂度将降低到之前的1/m。
深度可分离卷积
可以看作是群卷积的一种特殊情况,即将群的数量设置为信道的数量。
瓶颈设计
方法:
- 压缩检测器的输入层,从检测管道的一开始就减少计算量;
- 压缩检测引擎的输出,使feature map更薄。
神经结构搜索
NAS在搜索过程中同时考虑了预测精度和计算复杂度的约束。
数值加速
四种常用的目标检测数值加速方法:
- 积分图像加速;
- 频域加速;
- 矢量量化;
- 降秩近似;
加速与积分图像
积分图像有助于快速计算图像子区域的总和。
积分图像的本质是:
信号处理中卷积的积分可微分可分性。
除以上例子外,积分图像还可以用来加速更一般的特征在目标检测中,如颜色直方图,梯度直方图等。一个典型的例子是通过计算积分HOG映射来加速HOG。积分HOG map不是在传统的积分图像中积累像素值,而是在图像中积累梯度方向,如图15所示。由于细胞的直方图可以看作是某个区域内梯度向量的总和,所以利用积分图像,可以计算任意位置和大小的矩形区域的直方图,计算开销是恒定的。整体HOG地图已经被用于行人检测,在不损失任何精度的情况下实现了几十倍的加速度。
新提出的图像特征,称为积分通道特征ICF。可以被认为是积分图像特征的一中更一般的情况。
在频域加速
卷积运算是目标检测中一种重要的数值运算形式。由于线性检测器的检测可以被视为特征映射和检测器权值之间的窗口内积,所以这个过程可以通过卷积来实现。
卷积可以以多种方式加速,其中傅里叶变换是一个非常实用的选择特别是对于那些大型滤波器的加速。频域加速卷积的理论基础是信号处理中的卷积定理,即在适当的条件下,两个信号的卷积的傅里叶变换是它们在傅里叶空间中的逐点积:
其中F是傅里叶变换,F−1是傅里叶反变换,I和W是输入图像和滤波器,∗是卷积运算,且是是点积。使用快速傅里叶变换(FFT)和反快速傅里叶变换(IFFT)可以加速上述计算。FFT和IFFT现在经常被用来加速CNN模型和一些经典的线性目标检测器,它们将检测速度提高了一个数量级。图16显示了在频域加速线性目标检测器(如HOG和DPM)的标准管道。
矢量量化
矢量量化(VQ)是信号处理中的一种经典的量化方法,它的目标是用一个小的原型向量集合来近似地估计一组数据的分布。它可用于对象检测中的数据压缩和加速内积运算[227,228]。例如,使用VQ, HOG直方图可以被分组和量化为一组原型直方图向量。然后在检测阶段,特征向量与检测权值之间的内部乘积可以由一个表查找操作实现。由于在这个过程中没有浮点乘法和除法,DPM和样本SVM检测器的速度可以提高一个数量级。
降低等级近似
在深度网络中,全连接层的计算实质上是两个矩阵的乘法。当参数矩阵W∈Ru×v较大时,探测器的计算负担会比较重。例如,在Fast RCNN探测器[18]中,近一半的转发时间都花在计算全连接层上。降秩近似是一种加速矩阵乘法的方法。其目的是对矩阵W进行低秩分解:
其中U是一个U × t矩阵,由W的第一个t个左顶点向量组成,是一个包含W的上t奇异值的t × t对角矩阵,V是由W的第一个右奇异向量组成的V × t矩阵。上述过程也被称为截断SVD,它将参数计数从uv减少到t(u + v),如果t远小于min(u, v),这将是显著的。截断SVD用于加速Fast RCNN检测器[18],达到x2的速度。
目标检测的最新进展
更好的检测引擎
近年来,深度卷积网络CNN在许多计算机视觉任务中扮演着核心角色。由于检测器的准确性在很大程度上依赖于其特征提取网络,因此在本文中,我们将骨干网(如ResNet和VGG)称为检测器的“引擎”。图17给出了Faster RCNN[19]、R-FCN[46]和SSD[21]三种知名检测系统在不同引擎[27]选择下的检测精度。
上图是Faster RCNN RFCN SSD三个系统采用不同的骨干网络在MS COCO数据集上的运行结果。
AlexNet: 是一个八层深度网络,是第一个CNN模型,开启了计算机视觉的深度学习革命。AlexNet在2012年ImageNet LSVRC-2012竞赛中以15.3%对26.2%(第二名)的误差率胜出。截至2019年2月,Alexnet的论文已被引用超过3万次。
VGG:将模型的深度增加到了16-19层,并使用非常小的卷积滤波器。
Google Net:google网络增加了CNN的宽度和深度(达到22层)。Inception系列的主要贡献是引入了分解卷积和批量归一化。
ResNet:是一种新的卷积网络体系结构,更深(多达152层)。该网络结构的目标是通过参考层输入将其层重新定义为学习残差函数来简化网络的训练。
DenseNet:引入了一个紧密连接的块,该块以前馈的方式将每一层连接到另一层。
SENet:主要贡献是整合全局池化和洗牌,以了解特征图channel-wise的重要性。
带有新引擎的目标检测器
近三年来,许多最新的引擎已被应用于目标检测。例如,一些最新的图18。不同特征融合方法的说明:(a)自下而上的融合,(b)自上而下的融合,(c)元素和,(d)元素积,(e)拼接。STDN[237]、DSOD[238]、TinyDSOD[207]、Pelee[209]等对象检测模型选择DenseNet[235]作为检测引擎。Mask RCNN[4],作为先进的分割模型的实例,应用下一代ResNet: ResNeXt[239]作为其检测引擎。此外,为了加快检测速度,Incepion的改进版本Xception[204]引入的深度可分离卷积运算也被用于诸如MobileNet[205]和LightHead RCNN[47]等探测器。
用更好的特征进行检测
最近提高图像特征质量的方法:
- 特征融合;
- 学习具有大接受域的高分辨率特征;
特征融合的重要性
不变性和等方差是图像特征表示中的两个重要性质。分类需要不变的特征表示,因为它的目标是学习高级语义信息。对象定位需要等变表示,因为它的目标是区分位置和比例的变化。由于目标检测由目标识别和定位两个子任务组成,因此检测器必须同时学习不变性和等方差。
近三年来,特征融合在目标检测中得到了广泛的应用。由于CNN模型由一系列卷积层和池化层组成,越深层的特征不变性越强,等方差越小。虽然这可能有利于类别识别,但在目标检测中存在定位精度低的问题。相反,较浅层的特征并不利于语义学习,但它包含更多的边缘和轮廓信息,有助于对象定位。因此,在CNN模型中,深度特征和浅层特征的融合可以提高不变性和等方差。
特征融合的不同方式
方法:
- 处理流;
- 元素操作;
处理流
目标检测中的特征融合方法:
- 自下而上的融合;
- 自上而下的融合;
由于不同层的特征图在空间和通道维度上都可能有不同的大小,因此可能需要对特征图进行适应,如通过调整通道的数量,上采样低分辨率的地图,或下采样高分辨率的地图,使其大小合适。最简单的方法是使用nearestor双线性插值[22,244]。此外,分数阶跃卷积(又称转置卷积)[45,248]是最近另一种流行的调整特征图大小和通道数量的方法。使用分数步进卷积的优点是它可以自己学习合适的上采样方法[55,212,241 - 243,245,246,249]。
Element-wise操作
特征融合方法:
- 逐元素求和;
- 逐元素积;
- 串接;
基于元素的和是执行特征融合的最简单的方法。它被频繁地用于许多最近的物体探测器[22,55,241,243,246]。基于元素的乘积[245,249 - 251]与基于元素的和非常相似,唯一的区别是使用了乘法而不是求和。元素智能产品的一个优点是,它可以用来抑制或突出某一区域内的特征,这可能进一步有利于小目标的检测[245,250,251]。特征拼接是另一种特征融合方法[212,237,240,244]。其优点是可以用来整合不同区域的上下文信息[105、144、149、161],缺点是增加了内存[235]。
学习具有大接收域的高分辨率特征
接受域:输入像素的输入范围决定了单个像素输出的计算。
特征解析:表示在输入和feature map之间的下采样率。
一个大的接受域的网络可以捕获一个大尺度的上下文信息,反而一个小接受域的网络更多的关注于局部信息。
最直接的解决特征分辨率低的方法是:去掉池化层或减少卷积下采样率。
但是这样会导致一个新的问题:接受域会变的很小导致输出stride的减少。
也就是说这个方法会缩小检测器的视野,导致一些大目标对象的检测丢失。
上述问题的解决办法:
引入扩张卷积。该思想首先在语义分割工作中提出。 它的主要思想是:扩张卷积过滤器并使用稀疏参数。
例如,一个扩展率为2的3x3filter将具有与5x5内核相同的接受域,但只有9个参数。目前,扩张卷积在目标检测中得到了广泛的应用[21,56,254,255],在不增加任何参数和计算开销[56]的情况下,它可以有效地提高检测精度。
滑动窗口之外
检测为子区域搜索
最近的一种方法是将检测视为一个路径规划过程,从初始网格开始,最终收敛到所需的地面真值框[256]。
另一种方法是将检测看作是一个迭代更新过程,以细化预测边界盒的角点[257]。
检测作为关键点定位
关键点定位是一项重要的计算机视觉任务,具有广泛的应用,如面部表情识别[259]、人体姿态识别[260]等。由于图像中任意一个目标都可以由地面真值框的左上角和右下角唯一确定,因此,检测任务可以等效地框定为一对关键点定位问题。这一想法的一个最新实施是预测角落的热图[261]。这种方法的优点是它可以在语义分割框架下实现,并且不需要设计多尺度的锚盒。
定位技术的改进
为了提高定位精度,目前已有两种方法:1)边界盒优化;2)设计新的损耗函数来实现精确定位。
边界框优化
提高定位精度最直观的方法是边界盒细化,这可以看作是对检测结果的后处理。尽管边界盒回归已经集成到大多数现代对象检测器中,但仍然有一些对象具有意想不到的比例,无法被任何预定义锚捕获。这将不可避免地导致对它们位置的不准确预测。因此,最近引入了“迭代边界盒细化”[262-264],通过迭代地将检测结果输入BB回归器,直到预测收敛到正确的位置和大小。然而,也有研究者认为这种方法不能保证定位精度的单调性[262],也就是说,如果多次使用BB回归,可能会使定位结果退化。
改进精确定位的Loss函数
在大多数现代检测器中,对象定位问题被认为是一个坐标回归问题。但是,这个范例有两个缺点。首先,回归损失函数与最终的定位评价不相对应。例如,我们不能保证较低的回归误差总是会产生较高的IoU预测,特别是当对象具有非常大的宽高比时。其次,传统的边界盒回归方法不能提供定位的置信度。当多个BB点相互重叠时,可能会导致非最大抑制失效(详见2.3.5小节)。
通过设计新的损耗函数,可以缓解上述问题。最直观的设计是直接使用IoU作为定位损失函数[265]。其他一些研究人员进一步提出了一种iou引导的NMS,以提高训练和检测阶段的本地化[163]。此外,一些研究人员也试图在概率推理框架下提高本地化[266]。与之前直接预测盒坐标的方法不同,该方法预测了包围盒位置的概率分布。
学习与分割
目标检测和语义分割都是计算机视觉中的重要任务。最近的研究表明,目标检测可以通过学习和语义分割来提高。
语义分割可以提高目标检测精度的原因
分割有助于类别识别
由于使用语义分割可以更好的捕捉一个对象的边界。
分割有助于准确定位
语义分割特征可以更快速地对一个具有特殊形状的目标对象进行编码。
分割可以作为上下文嵌入
日常生活中的物体被不同的背景所包围,例如天空、水、草等,这些元素构成了物体的上下文。整合语义分割的上下文将有助于目标检测,例如,飞机更可能出现在天空而不是水面上。
语义分割如何提高检测效率
通过分割提高目标检测的方法主要有两种:
- 特征丰富学习;
- 多任务Loss函数学习;
特征丰富学习
最简单的方法是将分割网络视为固定的特征提取器,并将其作为附加特征集成到检测框架中[144,269,270]。这种方法的优点是易于实现,缺点是分割网络可能会带来额外的计算。
使用多任务损失函数学习
另一种方法是在原来的检测框架上引入一个额外的分割分支,用多任务损失函数(分割损失+检测损失)训练该模型[4,269]。在大多数情况下,分割早午餐将在推理阶段被删除。优点是检测速度不会受到影响,缺点是训练需要像素级的图像标注。为此,一些研究人员遵循了“弱监督学习”的思想:他们不是基于像素级标注蒙版进行训练,而是简单地基于限定框级标注进行分割训练[250,271]。
旋转和尺度变化的鲁棒检测
目标的旋转和缩放变化是目标检测的重要挑战。
由于CNN学习到的特征对旋转不是不变量,尺度变化很大,近年来很多人都在这个问题上做出了努力。
旋转鲁棒性的检测
物体旋转在人脸检测、文本检测等检测任务中非常常见。这个问题最直接的解决方案是数据增强,这样任何方向的对象都可以被增强的数据很好地覆盖[88]。
另一个解决办法是训练独立的每个方位的探测器[272,273]。
除了这些传统的方法外,最近又出现了一些新的改进方法。
旋转不变损失函数
利用旋转不变损失函数进行学习的思想可以追溯到20世纪90年代[274]。最近的一些工作引入了对原始检测损失函数的约束,以使旋转物体的特征保持不变[275,276]。
旋转校准
另一种改进旋转不变量检测的方法是对候选对象进行几何变换[277-279]。这对多阶段探测器特别有帮助,早期阶段的相关性将有利于后续的探测。这种思想的代表是空间变压器网络(STN)[278]。STN现在已经被用于旋转文本检测[278]和旋转人脸检测[279]。
旋转RoI池
在两阶段检测器中,特征池的目的是提取具有任意位置和大小的目标提案的固定长度的特征表示,首先将提案均匀地划分为一组网格,然后将网格特征连接起来。由于网格网格是在直角坐标系下进行的,所以网格特征对旋转变换的不变性。最近的一项改进是在极坐标中划分网格,这样特征可以对旋转变化具有鲁棒性[272]。
尺度鲁棒性检测
尺度适应性训练
大多数现代探测器将输入图像缩放到固定的大小,并将物体在所有尺度上的损耗反向传播,如图19 (a)所示。然而,这样做的缺点是会出现“尺度不平衡”的问题。在检测过程中构建图像金字塔可以缓解这个问题,但不能从根本上缓解[46,234]。最近的一种改进是图像金字塔尺度归一化(Scale normalized for Image pyramid, SNIP)[280],该方法在训练和检测阶段都构建图像金字塔,只反向传播一些所选尺度的损失,如图19 (b)所示。一些研究者进一步提出了一种更有效的训练策略:具有高效重采样(SNIPER)的SNIP[281],即将图像裁剪并重新缩放到一组子区域,以便从大规模的批量训练中获益。
尺度自适应检测
大多数现代探测器使用固定的结构来探测不同大小的物体。例如,在一个典型的基于CNN的检测器中,我们需要仔细定义锚点的大小。这样做的一个缺点是配置不能适应意想不到的规模变化。为了提高对小目标的检测,最近的一些探测器提出了一些“自适应放大”技术,可以自适应地将小目标放大为“大目标”[184,258]。最近的另一个改进是学习预测图像中物体的尺度分布,然后根据该分布自适应地重新缩放图像[282,283]。
从头开始训练
实际上,采用预训练的网络进行目标检测存在一定的局限性。第一个限制是ImageNet分类和目标检测之间的分歧,包括它们的损失函数和规模/类别分布。第二个限制是域不匹配。由于ImageNet中的图像是RGB图像,有时会对深度图像(RGB- d)或3D医学图像进行检测,所以预先训练好的知识不能很好地传递到这些检测任务中。
近年来,一些研究人员尝试从零开始训练物体检测器。为了加快训练速度和提高稳定性,一些研究者引入密集连接和批量归一化来加速浅层的反向传播[238,284]。K. He等人最近的研究[285]通过探索相反的机制,进一步质疑了预训练范式:他们报告了在COCO数据集上使用从随机初始化训练的标准模型进行目标检测的竞争结果,唯一的例外是增加训练迭代的数量,因此随机初始化的模型可能会收敛。即使只使用10%的训练数据,随机初始化训练也具有惊人的鲁棒性,这表明ImageNet预训练可能会加快收敛速度,但并不一定会提供正则化或提高最终的检测精度。
对抗训练
生成式对抗网络(Generative Adversarial Networks, GAN)[286]是由A. Goodfellow等人于2014年提出的,近年来备受关注。一个典型的GAN由两个神经网络组成:一个生成网络和一个鉴别网络,它们在一个极小极大优化框架中相互竞争。通常,生成器学会从潜在空间映射到感兴趣的特定数据分布,而鉴别器的目标是区分真实数据分布和生成器生成的数据分布中的实例。GAN已被广泛应用于许多计算机视觉任务,如图像生成[286,287]、图像风格传递[288]和图像超分辨率[289]。近两年来,GAN也被应用于物体检测,特别是小物体和被遮挡物体的检测。
GAN已经被用来通过缩小不同大小物体之间的表示来增强对小物体的检测[290,291]。为了提高被遮挡物体的检测效率,最近的一个想法是通过对抗训练生成遮挡面具[292],而不是产生在像素空间中的例子,对抗网络直接修改特征来模拟遮挡。
除了这些工作外,“对抗性攻击”[293]最近也引起了越来越多的关注,其目的是研究如何利用对抗性实例攻击检测器。这一课题的研究对于自动驾驶来说尤为重要,因为在保证对对抗攻击的鲁棒性之前,自动驾驶是不可能完全可信的。
弱监督对象检测
最近,WSOD已经使用了多实例学习[294,295]。多实例学习是一组有监督的学习方法[39,296]。多实例学习模型不是使用一组单独标记的实例进行学习,而是接收一组标记的袋子,每个袋子都包含许多实例。如果我们将图像中的候选对象作为一个包,图像级标注作为标签,则可以将WSOD表述为一个多实例学习过程。
类激活映射是WSOD最近的另一组方法[297,298]。CNN可视化的研究表明,尽管CNN的卷积层对物体的位置没有监督,但它仍具有物体检测器的功能。类激活映射揭示了如何使CNN在接受图像级标签训练的情况下仍具有本地化能力[299]。
除上述方法外,还有一些研究者将WSOD视为提案排序过程,选择信息最丰富的区域,然后用图像级标注对这些区域进行训练[300]。另一种简单的WSOD方法是屏蔽图像的不同部分。如果检测分数急剧下降,则物体被覆盖的概率很高[301]。此外,交互式标注[295]在训练过程中考虑了人的反馈,从而改进WSOD。最近,生成式对抗训练被用于WSOD[302]。
应用
行人检测
行人检测作为一种重要的目标检测应用,在自动驾驶、视频监控、刑事侦查等领域得到了广泛的关注。早期的一些行人检测方法,如HOG检测器[12]、ICF检测器[171],在特征表示[12,171]、分类器设计[174]、检测加速[177]等方面为一般目标检测奠定了坚实的基础。近年来,一些通用的目标检测算法,如Faster RCNN[19],被引入到行人检测中[165],极大地促进了该领域的发展。
遇到的困难:
- 小行人;
- 硬底片:行人和背景非常相似;
- 密集闭塞的行人:
- 实时检测:高清视频中的实时行人检测对于自动驾驶和视频监控等应用来说至关重要。
行人检测文献综述
两个技术阶段:
- 传统行人检测;
- 基于深度学习的行人检测;
传统行人检测
由于计算资源的限制,Haar小波特征在早期的行人检测中得到了广泛的应用[30,31,308]。为了提高对受阻行人的检测,当时一个流行的想法是“通过组件进行检测”[31,102,220],也就是说,将检测看作是多个部分检测器的集合,这些检测器分别对人体的不同部位(如头部、腿部和手臂)进行训练。随着计算能力的提高,人们开始设计更加复杂的检测模型,自2005年以来,基于梯度的表示[12,37,177,220,309]和DPM[15, 37, 54]成为行人检测的主流。2009年,利用积分图像加速度,提出了一种有效且轻量级的特征表示方法:积分通道特征(integral Channel Features, ICF)[171]。ICF成为当时[60]行人检测的新基准。除了特征表示外,还考虑了一些领域知识,如外观恒常性和形状对称性[310]以及立体信息[173,311]。
基于深度学习的行人检测方法
改善小型行人检测:尽管Fast/Faster R-CNN等深度学习目标检测器在一般目标检测方面表现出了最先进的性能,但由于其卷积特征分辨率低,它们在检测小行人方面的成功有限[165]。最近针对这一问题的一些解决方案包括特征融合[165],引入额外的高分辨率手工特征[313314],以及在多个分辨率上的集成检测结果[315]。
改进硬负性检测
最近的一些改进包括整合增强的决策树[165]和语义分割(作为行人的上下文)[316]。此外,还引入了“跨模态学习”的思想,利用RGB图像和红外图像丰富硬底片的特征[317]。
改善密集和闭塞的行人检测
正如我们在2.3.2节中提到的,CNN深层的特征具有更丰富的语义,但对于检测密集的物体并不有效。为此,一些研究者通过考虑目标的吸引和周围其他物体的排斥,设计了新的损失函数[318]。目标遮挡是行人密集时经常出现的另一个问题。部分检测器的集成[319,320]和注意机制[321]是提高被遮挡行人检测的最常用方法。
人脸检测
挑战和困难
类内变化:人脸可以表现出多种表情、肤色、姿势和动作,如图21 (a)所示。
遮挡:人脸可能被其他物体部分遮挡,如图21 (b)所示。
多尺度检测:检测各种尺度下的人脸,特别是一些微小的人脸,如图21 (c)所示。
实时检测:移动设备上的人脸检测通常需要CPU实时检测速度。
文献综述
人脸检测的研究可以追溯到20世纪90年代初[95,106,108]。它经历了早期人脸检测(2001年之前)、传统人脸检测(2001-2015年)、基于深度学习的人脸检测(2015-至今)等多个历史阶段。我们请读者参考以下调查以了解更多细节[323,324]。
早期人脸检测(2001年以前)
早期的人脸检测算法可以分为三大类:1)基于规则的方法。这组方法编码了构成典型面孔的人类知识,并捕捉了面孔要素之间的关系[107,108]。2)基于子空间分析的方法。这组方法分析了人脸在底层线性子空间中的分布[95,106]。特征面就是这组方法的代表[95]。3)基于学习的方法:将人脸检测框定为滑动窗口+二值分类(目标与背景)过程。这一类常用的模型包括神经网络[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节)。
文本检测
文本检测是确定给定图像中是否有文本,如果有,对其进行定位和识别。文本检测具有非常广泛的应用。它帮助视力受损的人“阅读”街道标志和货币[332,333]。在地理信息系统中,房号和街道标志的检测和识别使得数字地图的构建更加容易[334,335]。
挑战和困难
不同的字体和语言:文本可能有不同的字体、颜色和语言,如图22 (a)所示。
文本旋转和透视失真:文本可能有不同的方向,甚至可能出现透视失真,如图22 (b)所示。
密集排列的文本定位:纵横比大、布局密集的文本行很难准确定位,如图22 (c)所示。
破碎和模糊字符:破碎和模糊字符在街景图像中很常见。
文献综述
文本检测包括两个相关但相对独立的任务:
- 文本定位;
- 文本识别;
现有的文本检测方法可以分为两大类:“逐步检测”和“综合检测”。我们请读者参考以下调查[338,339]。
分步检测vs集成检测
逐步检测方法[340,341]包括一系列处理步骤,包括字符分割、候选区域验证、字符分组和单词识别。这组方法的优点是在粗分割步骤中可以滤除大部分背景,大大降低了后续过程的计算成本。缺点是需要仔细设置所有步骤的参数,并且错误会在每个步骤中发生和累积。相比之下,集成方法[342-345]将文本检测作为一个联合概率推理问题,其中字符定位、分组和识别的步骤在一个统一的框架下处理。这些方法的优点是避免了累积错误,易于集成语言模型。缺点是,当考虑大量的角色类别和候选窗口时,推理的计算开销会很大[339]。
传统方法vs深度学习方法
大多数传统的文本检测方法都以无监督的方式生成文本候选,其中常用的技术包括极大稳定极值区域(MSER)分割[341]和形态学滤波[346]。一些领域知识,如文本的对称性和笔画的结构,也被考虑在这些方法中[340,341,347]。
近年来,研究人员对文本定位问题的关注远远超过了文本识别问题。最近提出了两组方法。第一组方法将文本检测作为一般目标检测的特殊情况[251,348-357]。这些方法都有一个统一的检测框架,但对于有方向或宽高比的文本检测效果较差。第二组方法将文本检测作为图像分割问题[336,337,358 - 360]。这些方法的优点是对文本的形状和方向没有特殊的限制,缺点是根据分割结果不容易区分密集排列的文本行。最近基于深度学习的文本检测方法针对上述问题提出了一些解决方案。
对于文本旋转和透视改变:这个问题最常见的解决方案是在锚框和RoI池层引入与旋转和透视改变相关的附加参数[351-353,355-357]。
改进密集排列的文本检测:基于分割的方法在密集排列的文本检测方面更有优势。为了区分相邻的文本行,最近提出了两组解决方案。第一个是“分段与链接”,其中“分段”指的是字符热图,“链接”指的是两个相邻的分段之间的连接,表示它们属于同一文本的一个字或一行[336,358]。第二组是引入额外的角/边界检测任务,以帮助分离密集排列的文本,其中一组角或一个封闭的边界对应于文本的单独一行[337,359,360]。
改进破碎和模糊文本检测:最近一种处理破碎和模糊文本的方法是使用词级[77,361]识别和句子级识别[335]。处理不同字体的文本,最有效的方法是使用合成样本进行训练[77,348]。
交通标志和交通灯检测
挑战和困难
光照变化:在阳光刺眼或夜间行驶时,检测会特别困难,如图23 (a)所示。
运动模糊:车载摄像头捕捉到的图像会因为汽车的运动而变得模糊,如图23 (b)所示。
坏天气:恶劣天气:在恶劣天气下,如雨雪天气,会影响图像质量,如图23 (c)所示。
实时检测:这对自动驾驶尤为重要。
文献综述
现有的交通标志/灯光检测方法可以分为两大类:
1)传统的检测方法;
2)基于深度学习的检测方法;
我们建议读者参考下面的调查[80],了解更多关于这个话题的细节。
传统的检测方法
基于视觉的交通标志/灯光检测的研究可以追溯到20年前[362,363]。由于交通标志/灯光具有特殊的形状和颜色,传统的检测方法通常基于颜色阈值[364-368]、视觉显著性检测[369]、形态学滤波[79]和边缘/轮廓分析[370,371]。由于上述方法仅基于低水平视觉进行设计,在复杂环境下往往会失败(如图23所示),因此,一些研究者开始寻找基于视觉的方法之外的其他解决方案,如结合GPS和数字地图进行交通灯检测[372,373]。虽然“特征金字塔+滑动窗口”在当时已经成为一般目标检测和行人检测的标准框架,除了极少数的工作[374],主流的交通标志/灯光检测方法直到2010年才遵循这一范式[375-377]。
基于深度学习的检测方法
在深度学习时代,一些著名的检测器如Faster RCNN和SSD被应用于交通标志/灯光检测任务中[83,84,378,379]。在这些检测器的基础上,一些新的技术,如注意机制和对抗训练被用来提高复杂交通环境下的检测[290,378]。
遥感目标检测
遥感成像技术为人们更好地了解地球打开了一扇门。近年来,随着遥感图像分辨率的提高,遥感目标检测(如飞机、船舶、油罐等的检测)已成为研究热点。遥感目标探测在军事勘察、灾害救援、城市交通管理等领域有着广泛的应用。
挑战和困难
“大数据”中的检测:由于遥感图像数据量巨大,如何快速、准确地检测遥感目标仍然是一个问题。图24 (a)为遥感图像与自然图像的数据量比较。
被遮挡的目标:每天超过50%的地球表面被云层覆盖。一些被遮挡目标的例子如图24 (b)所示。
域适应:不同的传感器(如不同调制和分辨率)捕获的遥感图像存在高度的差异。
文献综述
传统的检测方法
传统的遥感目标检测方法大多遵循两阶段检测范式:
1)候选目标提取;
2)目标验证;
在候选提取阶段,常用的方法有基于灰度值滤波的方法[383,384]、基于视觉显著性的方法[385-388]、基于小波变换的方法[389]、基于异常检测的方法[390]等。上述方法的一个相似之处是它们都是无监督方法,因此在复杂环境中通常会失败。在目标验证阶段,一些常用的特征包括HOG [390,391], LBP [384], SIFT[386, 388, 392]等。此外,还有一些方法遵循滑动窗口检测范式[391-394]。
为了改进被遮挡目标的检测,常用的一种思想是“局部检测”[380,399]。为了检测不同方向的目标,采用“混合模型”,对不同方向的目标训练不同的检测器[273]。
基于深度学习的检测方法
由于遥感图像与日常图像的巨大差异,人们对深度CNN特征在遥感图像中的有效性进行了一些研究[406-408]。人们发现深度CNN虽然取得了巨大的成功,但并不比传统的光谱数据方法更好[406]。为了检测不同方向的目标,一些研究人员改进了ROI Pooling层以获得更好的旋转不变性[272,409]。为了提高领域自适应能力,一些研究者从贝叶斯的角度提出了检测方法,即在检测阶段,模型根据测试图像的分布情况进行自适应更新[91]。此外,注意力机制和特征融合策略也被用于提高小目标检测[410,411]。
总结和未来方向
轻量级目标检测:加速检测算法,使其能够在移动设备上平稳运行。一些重要的应用包括移动增强现实、智能相机、人脸识别等。虽然近年来做了很大的努力,但机器和人眼之间的速度差距仍然很大,特别是在检测一些小物体方面。
检测满足AutoML:近年来基于深度学习的检测器变得越来越复杂,严重依赖于经验。未来的一个方向是利用神经结构搜索减少检测模型设计时的人工干预(例如,如何设计引擎,如何设置锚箱)。AutoML可能是目标检测的未来。
检测满足领域适应:任何目标检测器的训练过程本质上都可以认为是在假设数据独立同分布(i.i.d)的情况下的似然估计过程。对象检测(那些没有独立同分布数据的检测)特别是对于一些真实世界的应用程序来说,仍然是一个挑战。GAN在领域自适应方面已经取得了很好的效果,对未来的目标检测有很大的帮助。
弱监督检测:基于深度学习的检测器的训练通常依赖于大量注释良好的图像。注释过程耗时、开销大、效率低。开发只使用图像级标注训练检测器或部分使用包围框标注训练检测器的弱监督检测技术,对于降低人工成本和提高检测灵活性具有重要意义。
小目标检测:在大场景中检测小目标一直是一个挑战。这一研究方向的潜在应用包括利用遥感图像进行野生动物种群统计和重要军事目标的状态检测。未来的研究方向可能包括视觉注意机制的整合和高分辨率轻量级网络的设计。
视频中的检测:高清视频中的实时目标检测/跟踪对于视频监控和自动驾驶都是非常重要的。传统的目标检测器通常设计为基于图像的检测,而忽略了视频帧之间的相关性。通过研究时空相关性来提高检测水平是一个重要的研究方向。
基于信息融合的目标检测:基于多源/多模式数据的目标检测,如RGB-D图像、三维点云、激光雷达等,对于自动驾驶和无人机应用具有重要意义。一些有待解决的问题包括:如何将训练有素的检测器移植到不同形式的数据上,如何进行信息融合以提高检测效率等。
//截止到2022.1.6日 晚上20:23止