物体检测和图片分类有什么区别呢?

图片分类不需要定位;物体检测需要定位出物体的位置,并且要把图片中所有物体都识别定位出来。

RCNN(Region-based Convolutional Neural Networks) 是用深度学习进行物体检测的开山之作。


RCNN算法分为4个步骤:

1、一张图片生成2000个左右候选区域;

2、用深度神经网络提取每个区域的特征;

3、将特征送入每一个分类的SVM分类器,判断是不是属于该类;

4、微调候选区域的位置,使得候选框进一步接近物体的bounding box;

比较经典的流程图片如下:

rcnn运行速度 rcnn算法流程_RCNN


候选区域生成阶段:

使用selective search方法从一张图片生成2000个左右候选区域,基本思想是:

首先将图片分成小的区域;然后根据颜色、纹理、面积等因素两两合并可能性最高的相邻区域,重复此合并过程,直到只有一个区域为止;最后输出所有曾经存在过的区域,即为候选区域。

在此区域合并过程中,按大牛的理论,需要注意两点,一个是保证合并尺度均匀,比如说有区域a-b-c-d,建议合并方式a-b-c-d->ab-cd->abcd,不建议ab-c-d>abc-d->abcd;另一个是合并后的图像尽量规整平滑,而不要奇形怪状、坑坑洼洼的。


特征提取阶段:

第一步,预处理图片区域,以alexnet网络为例,将生成的候选区域归一化为 227 X 227。归一化的过程中会缩放(crop或者wrap)图片,主要由有各向同性和各向异性缩放两种方式,经大牛测试发现,采用各向异性缩放且padding=16时识别精度最高。

第二步:有监督预训练,例如在ILSVRC 2012的大数据集上进行分类训练(此处也可直接使用网上大牛训练好的alexnet网络代替)。

第三步:fine-tuning,例如在PASCAL VOC2007的小数据集上进行fine-tuning经第二步训练后的网络,


类别判断阶段:

对每一类目标,训练一个SVM二分类器,分类训练的输入为网络输出的4096维特征,输出为是否此类。

此处由于正样本数量远远小于负样本数量,建议使用hard negative mining方法。


候选框微调阶段:

对检测出的每一个物体均进行边缘检测并微调得到精确的物体位置。


RCNN在2014年将PASCAL VOC上的检测率从传统检测的35.1%提升到深度学习53.7%。不可谓不NB。


一句话总结RCNN整个流程:

先将候选区域通过selective search检测出来(2000个左右),然后根据cnn提取的每一个候选区域特征送入svm进行分类,得到一个物体类别和边框,最后利用边缘检测微调得到具体的物体位置。