RCNN笔记

RCNN(Regions with CNN features)是RBG在2014年提出的一种目标检测算法,RCNN是将CNN方法应用到目标检测问题上的一个里程碑,借助CNN良好的特征提取和分类性能,通过Region Proposal方法实现目标检测。
滑动窗口法可以得到目标所在的区域,但是会产生大量的计算。除了滑动窗口法之外还有另外一类基于区域(Region Proposal)的方法,selective search(这个算法后面没有使用了,具体细节没有去了解)就是其中之一。RCNN就是使用selective search来生成候选区域。

使用selective search算法生成2000个候选区域;然后把2000个候选区域图片固定大小,比如固定成224x224;然后放到一个卷积网络(如Vgg16、GoogLenet)里面作特征提取;提取完特征后会做两件事情,一是做回归(调整生成的候选区域的大小和位置,使得其更接近真是标注),二是做分类(用的SVM)
RCNN笔记

算法流程

选择一个分类模型(比如AlexNet,VGGNet等)
RCNN笔记
1.去掉最后一个全连接层。
2.将分类数从1000改为(N+1)。对于VOC,N=20;对于ILSVRC2013,N=200;1表示背景
3.对该模型做fine-tuning。(主要目的是优化卷积层和池化层的参数)
RCNN笔记
论文中用到的网络是Vgg16,第5个池化层pool5后面的一层是fc6全连接层。
前面生成的2000个候选区域,对每一个候选区域进行特征提取:
Resize区域大小,然后然后放到(选用训练好了参数的)卷积网络里面做一次前向运算,将第五个池化层的输出(也就是候选框提取到的特征)保存到硬盘。
RCNN笔记
训练阶段:
上一步使用pool5输出的图像特征作为输入训练SVM分类器(二分类)来判断这个候选框里面的物体类别,有21个类别就需要21个分类器。
测试阶段:
每个类别对应一个SVM,判断是不是属于这个类别。下图是狗分类的SVM:

RCNN笔记
训练阶段:
使用pool5输出的图像特征训练一个回归器(dx,dy,dw,dh)。
dx代表水平平移,dy代表竖直平移,dw代表宽度缩放,dh代表高度缩放
测试阶段:
使用回归器调整候选框位置。
如下面,第2张图片候选框靠左,则调整dx=0.25,就是框往右边移动25%
第3张图片候选框太宽了,则调整dw=-0.125,就是宽度缩小12.5%
RCNN笔记