您的位置:首页 > 其它

R-CNN 简单梳理

2016-11-05 21:57 176 查看

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,Gi)i=1,...,N

Pi=(Pix,Piy,Piw,Pih),分别为第i个候选框的中心横纵坐标以及宽和高;

Gi=(Gix,Giy,Giw,Gih),分别为第i个Ground Truth的中心横纵坐标以及宽和高.

回归器

回归器的目标是学习4个变换:G^x=Pwdx(P)+PxG^y=Phdy(P)+PyG^w=Pwexp(dw(P))G^h=Phexp(dh(P))

以上4式中,d∗(P)是关于候选框P从pool 5出来的feature map(表示为ϕ5(P))的线性函数,也就是说d∗(P)=wT∗ϕ5(P)

其中w∗就是我们要学习的参数,可通过优化下式来学习w∗=argminw^∗∑iN(ti∗−w^T∗ϕ5(Pi))2+λ||w^∗||2

其中tx=(Gx−Px)/Pwty=(Gy−Py)/Phtw=log(Gw/Pw)th=log(Gh/Ph)

也就是说,输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。

注意

对每一类目标,使用一个线性回归器进行精修。

本篇博客参考自

《如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法?》

《RCNN算法详解 》

《RCNN (Regions with CNN) 目标物检测 Fast RCNN的基础》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: