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的基础》
相关文章推荐
- Fast R-CNN 简单梳理
- Faster R-CNN 简单梳理
- 常见面试之机器学习算法思想简单梳理
- Android Wifi简单的梳理
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
- 电商课题:对付秒杀器等恶意访问行为的简单梳理
- 常见面试之机器学习算法思想简单梳理
- 常见面试之机器学习算法思想简单梳理
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
- 常见面试之机器学习算法思想简单梳理
- 常见面试之机器学习算法思想简单梳理
- Spring 使用注解的简单梳理
- Android Wifi简单的梳理
- 常见面试之机器学习算法思想简单梳理
- 常见面试之机器学习算法思想简单梳理
- GSM CDMA GPRS WAP等简单梳理
- 呼叫中心质检的简单梳理
- Deep learning:三十八(Stacked CNN简单介绍)
- 常见面试之机器学习算法思想简单梳理
- 常见面试之机器学习算法思想简单梳理