本文回顾了目标检测20年来的发展。
目标检测的任务简单来说就是,what objects are where。它可以被分为两个大的研究领域:通用目标检测和检测应用。前者是模拟人类视觉,来对看到的所有物体进行分类和定位;后者则是做专门的应用,如行人检测、安全帽检测、口罩检测和文本检测等。
在时间尺度上,2014年是一个分界线。在此之前,深度学习还未普及,没有有效地提取特征的方法,研究人员们只能使用各种复杂的方法来进行检测,并尽可能地加速它们。
首先分享一篇介绍目标检测的基础知识的文章:https://zhuanlan.zhihu.com/p/60794316
检测方法总览
传统方法
Viola Jones Detectors-2001
VJ算法的思路很简单,它使用一个个不同尺度的滑动窗口来检测人脸。这种方法的问题是计算消耗会非常的大,为了解决这个问题,它提出了三种方法:
1、积分图像(integral image):https://blog.youkuaiyun.com/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、