经典网络解读系列(二):fast rcnn

部分博客内容引用:

https://alvinzhu.xyz/2017/10/10/fast-r-cnn/

https://blog.csdn.net/shenxiaolu1984/article/details/51036677



首先讲一下前作rcnn的缺点,有关rcnn,可以参考博客https://blog.csdn.net/zlrai5895/article/details/80724284。

rcnn缺点有三个:

  1. 训练过程是多级流水线。分为三个阶段训练:CNN的训练、SVM的训练、检测框回归线性模型的训练。
  2. 训练在时间和空间上是的开销很大。对于一张图像,图像和上面大量重叠的候选框都要经过CNN提取特征,并写入磁盘。时间和存储空间成本都很高。
  3. 目标检测速度很慢。原因同上。

fast rcnn的改善:

  1. 比R-CNN具有更高的目标检测精度(mAP)。rcnn在voc2012 map 62%,fast rcnn 在voc2012 map 66%
  2. 训练是使用多任务损失的单阶段训练。
  3. 训练可以更新所有网络层参数。
  4. 不需要磁盘空间缓存特征。

网络结构:

                                                                                                              输入完整图像

                                                                                                                        |

                                                                                                            CNN(VGG等)

                                                                                                                        |

最后一个最大池化层替换为ROI池化层(在特征图上提取候选区域,每个候选区域均匀分成M×N块,对每块进行max pooling。将特征图上大小不一的候选区域转变为大小统一的数据,送入下一层。 

                                                                                                                        |

                                                                                                    -------------------------------

                                                                                                    |                                             |

                                                       全连接层 输出k个类别加上1个       全连接层输出
K
个类别的每一                                                                                                 背景类别的Softmax概率估计         每组4个值,表示检测框位置的修正检测框位置的修正。



训练:

首先是预训练

网络除去末尾部分如下图,在ImageNet上训练1000类分类器。结果参数作为相应层的初始化参数。 
这里写图片描述 

然后是微调

如上面所说,用ROI替换最后的pool,然后,网络的最后一格全连接层和Softmax(其被训练用于1000类ImageNet分类)被替换为前面描述的两个同级层(全连接层和K+1个类别的Softmax以及类别特定的检测框回归)。


微调策略

每一个mini-batch中首先加入N张完整图片,而后加入从N张图片中选取的R个候选框。这R个候选框可以复用N张图片前5个阶段的网络特征。 

实际选择N=2, R=128。

训练数据构成

N张完整图片以50%概率水平翻转。 
R个候选框的构成方式如下:

类别 比例 方式
前景 25% 与某个真值重叠在[0.5,1]的候选框
背景 75% 与真值重叠的最大值在[0.1,0.5)的候选框

训练时候的损失函数

loss_cls层评估分类代价。由真实分类uu对应的概率决定: 

Lcls=logpu

loss_bbox评估检测框定位代价。比较真实分类对应的预测参数tutu和真实平移缩放参数为vv的差别: 

Lloc=Σ4i=1g(tuivi)
g为Smooth L1误差,对outlier不敏感: 
g(x)={0.5x2|x|0.5|x|<1otherwise

总代价为两者加权和,如果分类为背景则不考虑定位代价: 

L={Lcls+λLlocLclsuu

计算全连接层的加速策略:

分类和位置调整都是通过全连接层(fc)实现的,设前一级数据为xx后一级为yy,全连接层参数为WW,尺寸u×vu×v。一次前向传播(forward)即为: 

y=Wx

计算复杂度为 u×v

WW进行SVD分解,并用前t个特征值近似: 

W=UΣVTU(:,1:t)Σ(1:t,1:t)V(:,1:t)T

原来的前向传播分解成两步: 

y=Wx=U(ΣVT)x=Uz

计算复杂度变为 u×t+v×t 。 
在实现时,相当于把一个全连接层拆分成两个,中间以一个低维数据相连。 
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zlrai5895/article/details/80729048
今日推荐