Faster RCNN理论合集

RCNN

来源B站霹雳吧啦Wz

算法流程可分为4个步骤

一张图像生成1K~2K个候选区域(使用Selective Search方法)
对每个候选区域(图片),使用深度网络(图片分类网络)提取特征
特征送入每一类的SVM分类器,判别是否属于该类
使用回归器精细修正候选框位置

1.候选区域的生成

利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。
image.png

2.对每个候选区域,使用深度网络提取特征

将2000候选区域缩放到227x227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征得到2000 X 4096维矩阵。
image.png

3.特征送入每一类的SVM分类器,判定类别

将2000X4096维特征与20个SVM组成的权值矩阵4096X20相乘,获得2000 X 20维矩阵表示每个建议框是某个目标类别的得分。分别对上述2000X20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。
image.png
image.png
非极大值抑制
image.png
为每个类别寻找得分最高的建议框,计算其他的建议框与该框的Iou值,删除所有Iou大于给定阈值的框
目的:只留下该类别对应的最好的框

4.使用回归器精细修正候选框位置

对NMS处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回
归操作,最终得到每个类别的修正后的得分最高的bounding box。
image.png
如图,黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth, 红色窗口 G ^ \hat{G} G^表示Region Proposal 进行回归后的预测窗口,可以用最小二乘法解决的线性回归问题。

整体框架

image.png
image.png

R-CNN存在的问题

  1. 测试速度慢:

测试一张图片约53s(CPU)。用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。

  1. 训练速度慢:

过程及其繁琐

  1. 训练所需空间大:

对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOCO训练集上的5k图像上提取的特征需要数百GB的存储空间。

Fast R-CNN

算法流程可分为3个步骤

  1. 一张图像生成1K~2K个候选区域(使用Selective Search方法)
  2. 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
  3. 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

image.png

一次性计算整张图像特征
R-CNN依次将候选框区域输入卷积神经网络得到特征。
image.png
Fast-RCNN将整张图像送入网络,紧接着从特征图像上提取相应的候选区域。这些候选区域的特征不需要再重复计算。
image.png
训练数据的采样(正样本,负样本)
image.png

image.png
image.png
image.png
image.png

分类损失: L c l s ( p , u ) = − log ⁡ p u L_{c l s}(p, u)=-\log p_{u} Lcls(p,u)=logpu
Cross Entropy LOSS 交叉熵损失
1.针对多分类问题(softmax输出,所有输出概率和为1)
H = − ∑ i o i ∗ log ⁡ ( o i ) H=-\sum_{i} o_{i}^{*} \log \left(o_{i}\right) H=ioilog(oi)
2.针对二分类问题(sigmoid输出, 每个输出节点之间互不相干)
H = − 1 N ∑ i = 1 N [ o i ∗ log ⁡ o i + ( 1 − o i ∗ ) log ⁡ ( 1 − o i ) ] H=-\frac{1}{N} \sum_{i=1}^{N}\left[o_{i}^{*} \log o_{i}+\left(1-o_{i}^{*}\right) \log \left(1-o_{i}\right)\right] H=N1i=1N[oilogoi+(1oi)log(1oi)]
其中 O i ∗ O_{i}^{*} Oi其中o*为真实标签值, O i O_{i} Oi为预测值,默认log以e为底等于ln

边界框回归损失:
[ u ≥ 1 ] [u \geq 1] [u1]是艾弗森括号,满足条件时等于1,不满足时等于0
t u t^{u} tu对应边界框回归器预测的对应类别u的回归参数 ( t x u , t y u , t w u , t h u ) \left(t_{x}^{u}, t_{y}^{u}, t_{w}^{u}, t_{h}^{u}\right) (txu,tyu,twu,thu)
smooth ⁡ L 1 ( x ) = { 0.5 x 2  if  ∣ x ∣ < 1 ∣ x ∣ − 0.5  otherwise  \operatorname{smooth}_{L_{1}}(x)=\left\{\begin{array}{ll}0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise }\end{array}\right. smoothL1(x)={0.5x2x0.5 if x<1 otherwise 

整体框架

image.png

Faster RCNN(RPN + Fast R-CNN)

算法流程可分为3个步骤.

  1. 将图像输入网络得到相应的特征图
  2. 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图.上获得相应的特征矩阵
  3. 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图, 接着将特征图展平通过一系列全连接层得到预测结果

image.png

RPN

生成anchors

image.png
使用ZF网络作为backbone所以是256d,也就是输出特征矩阵的深度
image.png

对于特征图上的每个3x3的滑动窗口,计算出滑动窗口中心点对应原始图像上的中心点,并计算出k个anchor boxes(注意和proposal的差异)。
image.png
image.png
cls判断为前景还是背景
三种尺度(面积) { 12 8 2 , 25 6 2 , 51 2 2 } \left\{128^{2}, 256^{2}, 512^{2}\right\} {1282,2562,5122}
三种比例 { 1 : 1 , 1 : 2 , 2 : 1 } \{1:1, 1:2, 2:1\} {1:1,1:2,2:1}
每个位置(每个滑动窗口)在原图上都对应有3x3=9anchor
image.png
对于ZF感受野:171
对于VGG感受野: 228
为什么可以预测比他大的目标边界框?
看到一部分,也是能够猜出物体的大概区域
感受野的计算:
image.png
对于一张1000x600x3的图像,大约有60x40x9(20k)(特征图大小x9)个anchor,忽略跨越边界的anchor以后,剩下约6k个anchor。对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。
训练数据采样:正样本和负样本
采样256个anchors,比例为1:1,正样本不足时使用负样本填充
正样本:与ground-truth box的IoU大于0.7;与ground-truth box的IoU最大
负样本:与ground-truth box的IoU小于0.3
image.png
p i p_{i} pi: 表示第 i \mathrm{i} i个anchor 预测为物体的概率
p i ∗ p_{i}^{*} pi: 当为正样本时为 1 , 当为负样本时为 0
t i t_{i} ti: 表示预测第 i \mathrm{i} i个anchor的边界框回归参数
t i ∗ t_{i}^{*} ti: 表示第 i \mathrm{i} i个anchor对应的GT Box
N c l s N_{cls} Ncls: 表示一个mini-batch中的所有样本数量 256
N r e g N_{reg} Nreg: 表示anchor位置的个数(不是anchor个数)约2400(anchor个数是anchor位置的个数 x k k k
λ \lambda λ: 平衡超参数,10

分类损失

多分类交叉熵损失
image.png
二值交叉熵损失
image.png
这里生成k个scores
p i p_{i} pi: 表示第 i \mathrm{i} i个anchor 预测为物体的概率
p i ∗ p_{i}^{*} pi: 当为正样本时为 1 , 当为负样本时为 0

边界框回归损失

L reg  ( t i , t i ∗ ) = ∑ smooth ⁡ L 1 ( t i − t i ∗ ) L_{\text {reg }}\left(t_{i}, t_{i}^{*}\right)=\sum \operatorname{smooth}_{L_{1}}\left(t_{i}-t_{i}^{*}\right) Lreg (ti,ti)=smoothL1(titi)

t i = [ t x , t y , t w , t h ] t i ∗ = [ t x ∗ , t y ∗ , t w ∗ , t h ∗ ] t_{i}=\left[t_{x}, t_{y}, t_{w}, t_{h}\right] \quad t_{i}^{*}=\left[t_{x}^{*}, t_{y}^{*}, t_{w}^{*}, t_{h}^{*}\right] ti=[tx,ty,tw,th]ti=[tx,ty,tw,th]

smooth ⁡ L 1 ( x ) = { 0.5 x 2  if  ∣ x ∣ < 1 ∣ x ∣ − 0.5  otherwise  \operatorname{smooth}_{L_{1}}(x)=\left\{\begin{array}{ll}0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise }\end{array}\right. smoothL1(x)={0.5x2x0.5 if x<1 otherwise 

t x = ( x − x a ) / w a , t y = ( y − y a ) / h a , t w = log ⁡ ( w / w a ) , t w = log ⁡ ( h / h a ) , t x ∗ = ( x ∗ − x a ) / w a , t y ∗ = ( y ∗ − y a ) / h a , t w ∗ = log ⁡ ( w ∗ / w a ) , t h ∗ = log ⁡ ( h ∗ / h a ) \begin{array}{l}t_{x}=\left(x-x_{a}\right) / w_{a}, t_{y}=\left(y-y_{a}\right) / h_{a}, \\ t_{w}=\log \left(w / w_{a}\right), t_{w}=\log \left(h / h_{a}\right), \\ t_{x}^{*}=\left(x^{*}-x_{a}\right) / w_{a}, t_{y}^{*}=\left(y^{*}-y_{a}\right) / h_{a}, \\ t_{w}^{*}=\log \left(w^{*} / w_{a}\right), t_{h}^{*}=\log \left(h^{*} / h_{a}\right)\end{array} tx=(xxa)/wa,ty=(yya)/ha,tw=log(w/wa),tw=log(h/ha),tx=(xxa)/wa,ty=(yya)/ha,tw=log(w/wa),th=log(h/ha)

p i ∗ p_{i}^{*} pi: 当为正样本时为 1 , 当为负样本时为 0
t i t_{i} ti: 表示预测第 i \mathrm{i} i个anchor的边界框回归参数
t i ∗ t_{i}^{*} ti: 表示第 i \mathrm{i} i个anchor对应的GT Box

训练

论文中的方法(训练训练微调微调)

(1)利用ImageNet预训练分类模型初始化前置卷积网络层参数,并开始单独训练RPN网络参数;
(2)固定RPN网络独有的卷积层以及全连接层参数,再利用ImageNet预训练分类模型初始化前置卷积网络参数,并利用RPN网络生成的目标建议框去训练FastRCNN网络参数
(3)固定利用FastRCNN训练好的前置卷积网络层参数,去微调RPN网络独有的卷积层以及全连接层参数。
(4)同样保持固定前置卷积网络层参数,去微调FastRCNN网络的全连接层参数。最后RPN网络与FastRCNN网络共享前置卷积网络层参数,构成一个统一网络。

现在使用的方法

直接采用RPN Loss±Fast R-CNN Loss的联合训练方法

框架

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值