深度学习系列之 Fast R-CNN 个人总结

一、R-CNN的缺点

1. 训练流程比较分散:第一个阶段R-CNN从图像中提取大量的proposal,将每个proposal warp后通过CNN提取特征。第二个阶段用SVM分类器进行分类。第三个阶段才用回归器进行回归。

Fast R-CNN则是一套端对端的流程,single stage且multi-task并行。

2.训练速度慢且所需空间大:对于分类器和回归器,通过CNN提取的特征需要存储在硬盘上。对于一个大型网络,如VGG16,需要大量的硬盘空间。并且分类器和回归器需要这些特征作为训练样本,在硬盘上大量数据的读写会造成训练速度变慢。

Fast R-CNN所有的特征都暂存在显存中,直接投入分类器和回归器,就不需要额外的存储。

3.检测速度慢:由于特征向量是从每个proposal中提取的,而这些proposal之间大量重叠,特征值之间完全可以共享,造成了运算的浪费。

Fast R-CNN将整张图片直接投入CNN,在第5层 conv feature map上提取RoI。使之前的CNN运算得以共享

二、Fast R-CNN

这里写图片描述
训练流程如下:

1.首先利用selective search生成region proposal,一张图大约2k个。

2.将整张图片输入CNN,进行特征提取

3.将image上的region proposal映射到最后一层conv feature map上(具体怎样的映射关系paper中没给出),即conv feature map上的RoI

4.通过RoI pooling layer使RoI生成固定的feature map,经过两个FC层,转化为4096维的特征向量

5.利用softmax loss和 Smooth L1 loss对分类概率和bbox regression进行参数的更新。(详细见后面:四、fine-tuning)

检测流程如下:

接训练过程的第4步。

5.将特征向量送入softmax,对(C+1)类进行可能性评估

6.用smooth L1 loss对box进行回归

7.用box回归值校正原来的proposal,生成预测窗口坐标

三、RoI pooling layer

这是fast R-CNN一个特色鲜明的地方。
我们知道,RoI是大小、尺度不一的,如何经过处理,得到尺寸固定的feature map呢?
这里写图片描述
如图,黑框为conv feature map,红框为RoI。

RoI pooling layer将每个RoI均匀分成M x N块,对每块进行max pooling。如图上的3x3,max pooling后两个RoI的大小就统一了。

然后就可以利用FC层得到4096维的特征向量。

用一个预训练好的网络对fast R-CNN进行初始化需要做以下修改:
1.用RoI pooling layer取代最后一层max pooling layer
2.用softmax和regressor取代softmax或SVM
3.input数据有变化:变为一组图片和每张图片对应的region proposal

四、Fine-tuning

利用SGD mini-batch进行训练,通常batch_size = 128, 每次选取2张图片,一张图片选取64个RoI。
其中,64个RoI是这样组成的:25%:75%
与GT的IoU大于0.5的proposal占25%
与GT的IoU在(0.1,0.5)范围内的作为背景类,占75%

*每个RoI都被贴上一个类标签和一个位置

训练中,唯一用到的数据增广就是水平翻转,且翻转的概率为0.5.

Multi-task loss

两个output layer,一个输出离散概率p=(p0,p1,…,pk),分别对应C+1类
另一个输出bbox回归偏移量 tk = (tkx,tky,tkw,tkh),同样是针对C个类

损失函数为:
这里写图片描述
损失函数由分类损失函数和定位损失函数组成。

其中,u代表GT类标签,v代表GT的位置。p表示每个RoI的离散概率,tu表示RoI的位置预测值。
lambda用于平衡分类loss和定位loss,一般为1
[u >= 1]表示:当u>=1时,为1;否则为0.

分类损失函数

这里写图片描述
这里用到了对数值。结合对数函数图像,假设正确类的概率值为1,则loss为0;随着pu的概率越来越低,loss越来越大。
这里写图片描述

定位损失函数

这里写图片描述
这里用了smooth L1 loss,为什么不用L2 loss呢?paper中说smooth L1对离群点更加鲁棒,控制梯度的量级使得训练时不容易跑飞。
这里写图片描述
当GT的位置和RoI的位置预测值越相近,则定位loss越小。

五、参考文献

1.http://blog.csdn.net/xg123321123/article/details/53067518
2.http://blog.csdn.net/shenxiaolu1984/article/details/51036677
3.http://blog.csdn.net/u010678153/article/details/46891655

你可能感兴趣的:(深度学习)