R-CNN 简单梳理
作者:xg123321123
出处:http://blog.csdn.net/xg123321123/article/details/53048204
声明:版权所有,转载请联系作者并注明出处
1 亮点
R-CNN将卷积神经网络应用到了自底向上的目标定位;
以往的目标检测算法使用滑窗法(传统的SIFT,HOG等方法)依次判断所有可能的区域;而R-CNN是预先提取一系列较可能是物体的候选区域,之后只在这些候选区域上提取特征,进行判断;
发现当标注数据比较少时,通过先在有监督的数据集上训练,然后到特定任务的数据集上fine-tuning的方法,可以得到较好的新能:也就是说使用Imagenet上训练好的模型,在需要训练的数据上fine-tuning,提升的效果显著。
2 大致流程
- 一张图像生成1K~2K个候选区域(Regions);
- 对每个候选区域,使用深度网络(CNN)提取特征;
- 特征送入每一类的SVM 分类器,判别是否属于该类;
- 使用回归器精细修正候选框位置。
3 候选区域生成
使用Selective Search方法从一张图像生成约2000-3000个候选区域。
Selective Search方法先基于各种颜色特征将图像划分为多个小块,然后自底向上地对不同的块进行合并,在这个过程中,合并前后的每一个块都对应于一个候选窗口,最后挑出最有可能包含待检测目标的窗口作为候选窗口。
具体流程
- 使用过分割手段,将图像分割成小区域;
- 查看现有小区域,合并可能性最高的两个区域,重复直到整张图像合并成一个区域为止;
- 输出所有曾经存在过的区域,所谓候选区域;
合并规则
优先合并以下四种区域:
- 颜色(颜色直方图)相近的;
- 纹理(梯度直方图)相近的;
- 合并后总面积小的;
- 保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域;
- 假设有区域a-b-c-d-e-f-g-h。较好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh;不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh。
- 合并后总面积在其Bounding box中所占比例大的。
- 用于保证合并后形状规则。例:左图适于合并,右图不适于合并。
- 用于保证合并后形状规则。例:左图适于合并,右图不适于合并。
上述四条规则只涉及区域的颜色直方图、纹理直方图、面积和位置。合并后的区域特征可以直接由子区域特征计算而来,速度较快。
为尽可能不遗漏候选区域,上述操作在多个颜色空间中同时进行(RGB,HSV,Lab等)。在一个颜色空间中,使用上述四条规则的不同组合进行合并。所有颜色空间与所有规则的全部结果,在去除重复后,都作为候选区域输出。
Selective Search的源码在这里。
候选区域生成和后续步骤相对独立,实际可以使用任意算法进行。
4 特征提取
预处理
- 把候选区域抠出来,归一化成同一尺寸227×227。
有一些细节会轻微影响性能:
- 外扩的尺寸大小;
- 形变时是否保持原比例;
- 对框外区域直接截取还是补灰。
预训练网络
- 使用ILVCR 2012的全部数据进行训练,输入预处理中归一化好的图片,输出1000维的类别标号;
- 借鉴Hinton 2012年在ImageNet上的分类网络,略作简化;
- 网络提取的特征为4096维,之后送入一个4096->1000的全连接(fc)层进行分类。
调优网络
- 训练数据的标定:考虑候选框图片和当前图像上所有标定框重叠面积最大的一个:如果重叠比例大于0.5,则认为此候选框为标定的类别之一;否则认为此候选框为背景;
- 使用PASCAL VOC 2007的训练集,输入预处理中归一化好的图片,输出21维的类别标号,表示20类+背景;
- 网络结构同上,只是将最后一层换成4096->21的全连接网络。
5 类别判断
分类器
对每一类目标,使用一个线性SVM二类分类器进行判别。输入为深度网络输出的4096维特征,输出是否属于此类。
正样本
本类的真值标定框。
负样本
考察每一个候选框,如果和本类所有标定框的重叠都小于0.3,认定其为负样本。
6 位置精修
目标检测问题的衡量标准是重叠面积。
许多看似准确的检测结果,往往因为候选框不够准确,重叠面积很小,所以需要进行位置精修。
训练样本
判定为本类的候选框中,和真值重叠面积大于0.6的候选框。
输入
N个候选框以及对应Ground Truth的坐标对
Pi=(Pix,Piy,Piw,Pih) ,分别为第i个候选框的中心横纵坐标以及宽和高;
Gi=(Gix,Giy,Giw,Gih) ,分别为第i个Ground Truth的中心横纵坐标以及宽和高.
回归器
回归器的目标是学习4个变换:
以上4式中, d∗(P) 是关于候选框P从pool 5出来的feature map(表示为 ϕ5(P) )的线性函数,也就是说
其中 w∗ 就是我们要学习的参数,可通过优化下式来学习
其中
也就是说,输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。
注意
对每一类目标,使用一个线性回归器进行精修。
本篇博客参考自
《如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法?》
《RCNN算法详解 》
《RCNN (Regions with CNN) 目标物检测 Fast RCNN的基础》