Object Detection in 20 Years: A Survey

本文回顾了目标检测20年来的发展。

目标检测的任务简单来说就是,what objects are where。它可以被分为两个大的研究领域:通用目标检测和检测应用。前者是模拟人类视觉,来对看到的所有物体进行分类和定位;后者则是做专门的应用,如行人检测、安全帽检测、口罩检测和文本检测等。

在时间尺度上,2014年是一个分界线。在此之前,深度学习还未普及,没有有效地提取特征的方法,研究人员们只能使用各种复杂的方法来进行检测,并尽可能地加速它们。

传统方法

Viola Jones Detectors-2001

VJ算法的思路很简单,它使用一个个不同尺度的滑动窗口来检测人脸。这种方法的问题是计算消耗会非常的大,为了解决这个问题,它提出了三种方法:
1、积分图像(integral image):https://blog.csdn.net/HXG2006/article/details/79924878。
2、使用变种的adaboost算法来提取特征。
3、使用级联方法。设置由简到繁的多个弱分类器,图像逐层通过这些分类器,只要有一个分类器给出negative结果,就判定该图像中不包含人脸,不再进行后续的分类。这种方法的好处是,能快速筛选出大量不包含人脸的区域。https://www.cnblogs.com/zhangzph/p/4695474.html

Histogram Oriented Gradient Detector -2005

在图像中,纹理和边缘是很重要的特征。而边缘表现在统计学上,就是梯度。基于这一思路,HOG Detector方法被提出了。它将图像分为几个连通的重叠区域,然后对其中的每个像素统计其九个方向的梯度并计算直方图作为区域统计信息。

Deformable Part-based Model(DPM) -2008

该方案遵循了检测的哲学:分解再组装。它由一个根滤波器(root filter)和几个部分滤波器(part filter)。在做检测时,它并不直接检测某一物体,而是检测它的各个组成部分,再进行组装,得到该物体的类别和位置信息。

基于CNN的两阶段检测

在2010年后,手工检测的方法到达了尽头,目标检测的发展就陷入了停滞。直到2012年,卷积神经网络横空出世。人们开始很自然地开始思考一个问题:我们可以使用CNN进行目标检测吗?出于这个思想,各类基于CNN的目标检测方法被提出了。这些方法可以被简单地分为两类:两阶段(two-stage)和单阶段(one-stage)检测。前者要经历一个由粗糙到精细的过程,后者则能够直接得到结果。

R-CNN -2014

R-CNN的思路很简单,它在图像上选取很多待选区域,然后将其大小统一后送入CNN提取特征,然后用线性SVM来对提取的特征进行分类。

选取待选区域的方法为Selective Search,思路是先将图像分割为多个小区域,然后再不断融合这些小区域得到大尺寸的候选区域,最终从中选取前k个最合适的候选区域作为结果。

它的效果比手工方法好很多,缺点是要提取过多的候选区域,这会导致大量的计算消耗。且必须将候选区域缩放到统一尺寸,这会导致畸变问题,进而影响模型效果。

Spatial Pyramid Pooling Network(SPPNet) -2014

它的思路是在最后一个卷积层和全连接层之间插入一个SPP层,该层将卷积层的输出的每一层都分别划分为4x4、2x2和1x1个区域。在对每个区域做最大池化后,将其摊平并拼接后输入全连接层。

它的效果比R-CNN更进一步,但缺点在于仍然是多阶段的,且只优化了全连接层,对卷积层的参数没有修改。

Fast R-CNN -2015

Object Detection in 20 Years: A Survey
上图是Fast R-CNN的工作流程。它的流程为,首先使用selective search方法提取出候选框,然后使用CNN来提取图像的特征图,并将候选框映射到特征图上。之后使用ROI池化来将候选框中的特征图池化为7x7xC(深度)的矩阵。将它输入全连接后分别使用两个损失函数来进行优化:一个是分类损失函数,另一个是边框回归损失函数。

Faster R-CNN -2015

Faster R-CNN最大的创新是提出了RPN网络,它被用来代替Selective Search来提取候选框。

Object Detection in 20 Years: A Survey
上图是RPN的结构。在使用CNN提取图像特征后,做一个3x3的卷积。作者在这里提出了anchor概念:
Object Detection in 20 Years: A Survey
对每一个像素,分别检测以其为中心的固定尺寸不同比例的9个anchor box,并在后续使用RPN的上面部分分辨它是背景还是物体,使用下面部分来回归边框。后续的做法与Fast R-CNN一致。

在做完

Feature Pyramid Networks(FPN) -2017

网络高层的语义信息更为丰富,但是位置信息较为模糊;而底层的语义信息粗略一些,但位置信息更清晰。所以一般的方法都是使用顶层来做预测,FPN则提出了一种融合高层和底层信息来进行预测的方法。
Object Detection in 20 Years: A Survey
FPN的框架如上。

首先使用一个预训练的网络来得到不同大小的123层网络,然后对4进行上采样,并用1x1的卷积对2进行降维,然后将结果进行对应相加并进行3x3的卷积消除叠加影响得到5,同理得到6。

随后将456输出到RPN中得到候选框,并使用候选框框出456中的区域,然后将其输入ROI层,并进行分类和边框回归。

基于CNN的单阶段目标检测