R-CNN 简单梳理

来源:互联网 发布:可以看亚丝娜本子软件 编辑:程序博客网 时间:2024/04/30 23:04

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)+Px
G^y=Phdy(P)+Py
G^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(tiw^Tϕ5(Pi))2+λ||w^||2

其中
tx=(GxPx)/Pw
ty=(GyPy)/Ph
tw=log(Gw/Pw)
th=log(Gh/Ph)

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

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

本篇博客参考自
《如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法?》
《RCNN算法详解 》
《RCNN (Regions with CNN) 目标物检测 Fast RCNN的基础》

1 0