下面介绍常用目标检测算法
1 滑窗法
滑窗(Sliding Window)法的思路非常简单,首先需要一个已经训练好的分类器,然后把图像按照一定间隔和不同的大小分成一个个窗口,在这些窗口上执行分类器,如果得到了较高的分类分数,就认为是检测到了物体。把每个窗口都用分类器执行了一遍后,再对得到的分数做一些非极大值抑制等,最后就得到了物体类别和对应区域。
滑窗法非常简单,但是效率极其低下,尤其还要考虑物体的长宽比。如果执行比较耗时的分类器,用滑窗法就不太现实,常见的都是用一些小型分类网络和滑窗法相结合的应用。
2 PASCAL VOC ,mAP和IOU
PASCAL VOC是一套用于评估图像分类、检测、分割和人体姿势动作等的数据集,PASCAL VOC包含4大类共20个细分类别,分别是人、动物(鸟、猫、牛、狗、马、羊)、交通工具(飞机、自行车、船、大巴、轿车、摩托车、火车),室内(瓶子、椅子、餐桌、盆栽、沙发、电视/显示器等)。
预测检测算法一般有两个标准,即是否正确预测了框内的物体类别;预测的框和人工标注的框的重合程度。这两个标准的量化指标分别mAP(mean Average Precision)和IOU(Intersection Over Union)。
IOU是用来衡量预测的物体框和真实框的重合程度。
图中实线是人工标注的框,虚线是模型预测的框。重合度的计算方法如图中的灰色区域所示。评价一个算法的时候,一种常见的方法是先设定一个IOU的阈值,只要算法找到的框的IOU大于这个阈值,就是一个有效的检测。
3 Selective Search和R-CNN
滑窗法相当于是对一张图像上的子区域进行类似穷举式的搜索,一般情况下这种低效率搜索到的区域里大部分都是没有任何物体的。那么能不能找到一种方法只对图像中包含物体的区域进行搜索,如果能找到这样的方法,就能提高物体检测的效率。于是就有了广为熟知的Selective Search。
Selective Search的思路是,可能存在物体的区域应该有某种相似性的或是连续的区域。针对这两个特点,Selective Search采用的是超像素合并的想法(有分割算法在图像上产生很多小区域,把这引起小区域看成是最基础的小区域,于是这些小区域可以看成超像素),然后再对相似的区域进行合并,形成更大一点的区域。衡量相似性的标准可以是颜色、纹理、大小等。不断迭加小区域,最后合并为大区域,最后整张图会合并成为一个区域。在不断合并的过程中,给每个区域做一个外切的矩形,于是就得到了想当数量的可能包含物体的矩形方框。
相比滑窗法,Selective Search不再是穷举式的搜索。
Selective Search能够更加高效的寻找找可能包含物体的方框,后来深度学习出现后,用来CNN提取特征,然后再做个分类不就相当于检测吗?但是直接用Selective Search选出的框未必精确,所以R-CNN加入了一些改进,利用和物体标准框的位置的回归来修正Selective Search提出的原始框。
4 SPP、ROI Pooling和Fast R-CNN
R-CNN虽然比滑窗法快了很多,但是可用性还是很差。一个简单的检测任务需要用Selective Search提出上千个框(R-CNN中是2000个)。这上千个区域都需要单独用卷积神经网络进行一次前向计算,速度自然也就很慢了。(待续)