R-CNN论文原理理解

创新点

1.为定位和分割物体,通过从经验驱动的人造特征范式HOG、SIFT改进为数据驱动的表示学习范式,采用对样本具有更高表示能力的CNN网络提取图像特征。

2.采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题。

训练过程

1.分类器训练
这里写图片描述
网络架构:
这里写图片描述
1.1 有监督分类器预训练

ILSVRC样本集上仅有图像类别标签,没有图像物体位置标注;
采用AlexNet CNN网络进行有监督预训练,学习率=0.01;
该网络输入为227×227的ILSVRC训练集图像,输出最后一层为4096维特征->1000类的映射,训练的是网络参数。
1.2 特定样本下的分类器微调

PASCAL VOC 2007样本集上既有图像中物体类别标签,也有图像中物体位置标签;
加载1步骤中的模型,使用这个模型中特征提取参数来初始化我们这里的CNN中的参数,并使用那些经过变形的区域目标来训练模型
这里获取到的区域目标指的是和经过SS算法提取到的区域目标和标注的目标区域的IOU>0.5时,为正样本,否则作为负样本进行训练,
注意的是对于每一个SGD(随机梯度)迭代,我们使用一个128的小批次,其中使用32个当前类的样本,和96个背景样本作为负样本。

注:可以不进行特定样本下的微调吗?可以直接采用AlexNet CNN网络的特征进行SVM训练吗?

文中设计了没有进行微调的对比实验,分别就AlexNet CNN网络的pool5、fc6、fc7层进行特征提取,输入SVM进行训练,
实验结果发现f6层提取的特征比f7层的mAP还高,pool5层提取的特征与f6、f7层相比mAP差不多; 
在PASCAL VOC 2007数据集上采取了微调后fc6、fc7层特征较pool5层特征用于SVM训练提升mAP十分明显; 
由此作者得出结论:不针对特定任务进行微调,而将CNN当成特征提取器,pool5层得到的特征是基础特征,
从fc6和fc7等全连接层中所学习到的特征是针对特征任务特定样本的特征,类似于学习到了分类性别分类年龄的个性特征。

1.3 训练二分类目标分类器SVM

候选的正样本使用ground-truth bounding boxes来定义,大于IOU大于0.7认为是正样本,小于0.3认为是负样本,鉴于0.3~0.7之间的丢掉不用来训练.而且对每一个类使用线性SVM进行分类,但是因为训练数据有时会非常大,为了不爆内存,作者使用了[背景bg/前景fg(即样本)]=3:1的比例进行.

注: 1.2与1.3 中阈值不同分析原因:

微调阶段是由于CNN对小样本容易过拟合,需要大量训练数据,故对IoU限制宽松:
Ground Truth+与Ground Truth相交IoU>0.5的建议框为正样本,否则为负样本; 
Ground Truth为正样本,与Ground Truth相交IoU<0.3的建议框为负样本。

2.Bounding-box regression坐标回归器训练

测试过程

这里写图片描述
- 1.输入一张多目标图像,采用selective search算法提取约2000个建议框;
- 2.先在每个建议框周围加上16个像素值为建议框像素平均值的边框,再直接变形为227×227的大小(Alexnet架构中,只能接受固定大小的像素宽高比,为227 × 227);
- 3.先将所有建议框像素减去该建议框像素平均值后【预处理操作】,再依次将每个227×227的建议框输入AlexNet CNN网络获取4096维的特征【比以前的人工经验特征低两个数量级】,2000个建议框的CNN特征组合成2000×4096维矩阵;
- 4.将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘【20种分类,SVM是二分类器,则有20个SVM】,获得2000×20维矩阵表示每个建议框是某个物体类别的得分;
- 5.分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框;
- 6.分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。

            ——————————————————————细节做法—————————————————————————

Selective Search做法

选择性搜索(Selective Search)综合了蛮力搜索(ExhausticveSearch)和分割(Segmentation)的方法,
目的:从一张图像生成约2000-3000个候选区域
注:候选区域生成和后续步骤相对独立,实际可以使用任意算法进行。

SelectiveSearch算法分为两个步骤:

1)       采用FelezenSegmentation算法对输入图像进行初始分割,得到一些初始化的小区域。

2)       采用多种相似性计算的策略组合,对初始化的小区域进行合并。

这里写图片描述
距离:
这里写图片描述
即优先合并以下四种区域:
- 颜色(颜色直方图)相近的
- 纹理(梯度直方图)相近的
- 合并后总面积小的
- 合并后,总面积在其BBOX中所占比例大的

建议框wrap做法

采用各向异性缩放、padding=16的精度最高
使用了最简单的一种变换。无论候选区域是什么尺寸,先在每个建议框周围context(图像中context指RoI周边像素)加上16个像素值为建议框像素平均值的边框,再直接变形为227×227的大小;

(1)各向异性缩放(非等比缩放)
这种方法很简单,就是不管图片的长宽比例,管它是否扭曲,进行缩放就是了,全部缩放到CNN输入的大小227*227;有比例上的形变扭曲

(2)各向同性缩放
因为图片扭曲后,估计会对后续CNN的训练精度有影响,于是作者也测试了“各向同性缩放”方案。这个有两种办法。

Ø 直接在原始图片中,把bounding box的边界进行扩展延伸成正方形,然后再进行裁剪;如果已经延伸到了原始图片的外边界,那么就用bounding box中的颜色均值填充;

Ø 先把bounding box图片裁剪出来,然后用固定的背景颜色填充成正方形图片(背景颜色也是采用bounding box的像素颜色均值);

NMS做法

假设有20类,2000个建议框,最后输出向量维数2000*20,则每列对应一类,一行是各个建议框的得分,NMS算法步骤如下:
① 对2000×20维矩阵中每列按从大到小进行排序;
② 从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IoU计算,若IoU>阈值,则剔除得分较小的建议框,否则认为图像中存在多个同一类物体;
③ 从每列次大的得分建议框开始,重复步骤②;
④ 重复步骤③直到遍历完该列所有建议框;
⑤ 遍历完2000×20维矩阵所有列,即所有物体种类都做一遍非极大值抑制;
⑥ 最后剔除各个类别中剩余建议框得分少于该类别阈值的建议框。

Bounding-box regression方法

训练样本 :与Ground Truth相交IoU最大的候选框Region Proposal,并且IoU>0.6的Region Proposal。
输入为深度网络pool5层的N*4096维特征(类别为N),
输出为xy方向的缩放和平移。
我们的目的是学习一种变换能够将预测的P映射到实际的G上(当Region Proposal与Ground Truth的IoU>0.6时可以认为是线性变换)
对{Pi,Gi} i=1,….,N 其中P是预测区域,G为我们标注的区域 P,G对应的点是原图上的值

且P={Pix,Piy,Piw,Pih}表示的(x,y,w,h)分别是预测区域中心坐标:x,y坐标w,h宽高

{Gx,Gy,Gw,Gh}分别表示在原图上的左上角x的坐标,左上角y的坐标,在原图上的宽度,在原图上的高度。

这里写图片描述
四个参数使用四个函数来表示四个需要预测值:dx(P),dy(P),dw(p),dh(p),其中dx(P),dy(P)使用x,y平移变换,dw(p),dh(p)做缩放变换。
先计算出我们打的标签位置G映射回feature map是(x,y,w,h)的变化量:

tx = (Gx  - Px)/Pw    (1)
ty = (Gy  - Py)/Ph    (2)
tw = log(Gw/Pw)        (3)
th = log(Gh/Ph)        (4)

分别表示x,y,w,h的变化量
G’(tx,ty,tw,th)即为标注的标签
预测值就是上图公式中的P’(dx(P),dy(P),dw(P),dh(P))
目标: 

       dx(P)  ~   tx      (1)
       dy(P)  ~   ty      (2)
       dw(P)  ~   tw      (3)
        dh(P)  ~   th      (4)   

其中:

                dx(P)=Wx*ϕ5(Pi),
                dy(P)=Wy*ϕ5(Pi),
                dw(P)=Ww*ϕ5(Pi),
                dh(P)=Wh*ϕ5(Pi),

所以,损失函数为:这里写图片描述
ϕ5(Pi)i=1⋯N表示经过Alexnet Pool5层特征提取之后的区域目标向量N*4096维特征(即我们图片抽象数据)
我们用使用目标向量和学习模型参数矩阵相乘,来得到我们的目标函数d*(P)(dx(P),dy(P),dw(P),dh(P))
训练的是dx(P),dy(P),dw(P),dh(P)对应的四种变换操作的权重向量。

过程

①构造样本对。为了提高每类样本框回归的有效性,对每类样本都仅仅采集与Ground Truth相交IoU最大的Region Proposal,并且IoU>0.6的Region Proposal作为样本对(Pi,Gi),一共产生20对样本对【20个类别】; 
②每种类型的回归器单独训练,输入该类型样本对N个:{(Pi,Gi)}i=1⋯N以及Pii=1⋯N所对应的AlexNet CNN网络Pool5层特征ϕ5(Pi)i=1⋯N; 
③利用(6)-(9)式和输入样本对{(Pi,Gi)}i=1⋯N计算ti∗i=1⋯N; 
④利用ϕ5(Pi)i=1⋯N和ti∗i=1⋯N,根据损失函数(5)进行回归,得到使损失函数最小的参数wT∗。

存在问题:

1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;

2)针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;

3)每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。

ref

SS:https://blog.csdn.net/niaolianjiulin/article/details/52950797
https://blog.csdn.net/mao_kun/article/details/50576003
rcnn:https://blog.csdn.net/xjz18298268521/article/details/52412991
https://www.cnblogs.com/gongxijun/p/7071509.html?utm_source=debugrun&utm_medium=referral
https://blog.csdn.net/linolzhang/article/details/54344350

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值