fast R-CNN
论文:fast R-CNN
R-CNN存在的缺点:
1、R-CNN是multi-stage pipeline。首先利用CNN提取特征,然后利用SVM进行分类,最后利用bounding-box regressors 修正目标框。
2、训练的时间开销、空间开销比较大。用于SVM、bounding-box regressors的特征需要存储到磁盘中,这将需要占用大量的磁盘空间,而且提取这些特征也会耗费好多时间。
3、测试的时间开销比较大。提取每张图像的每个region proposal的特征,这将浪费很多时间。关于这个问题,SPP-net提出了解决方法,也就是先提取整张图像的特征图,然后从该特征图中提取各个region proposal的特征。
SPP-net存在的缺点:
1、SPP-net也是multi-stage pipeline
2、SPP-net也需要将特征写入到磁盘中
3、SPP-net不能微调spatial pyramid pooling layer之前的convolutional layers,这将影响深层网络模型的准确度。
针对R-CNN、SPP-net存在的缺点,该论文提出了 fast R-CNN,其结构如下图所示。在 fast R-CNN中,1、将最后一个池化层替换为RoI pooling layer; 2、最后一个全连接层与softmax替换为两个兄弟层,一个是全连接层+softmax,另一个是全连接层+bbox regressor;3、模型的输入为一系列图像以及这些图像的RoIs 。
------------------------------------------------------------------------------------------------------------------------------------------------------
RoI pooling layer
该层有两个作用:1、将图像的RoI定位到feature map中对应位置,采用SPP-net中的定位方法; 2、对该RoI对应的特征进行max pooling, 也就是把每个候选区域均匀分成M×N块,对每块进行max pooling,将特征图上大小不一的候选区域转变为大小统一的数据,再传入到全连接层,这个过程本质上是单层的SPP layer,如下图:
该层的反向传播过程:
首先考虑普通max pooling层。设xi为输入层的节点,yj为输出层的节点,则有:
其中判决函数δ(i,j)表示i节点是否被j节点选为最大值输出。不被选中有两种可能:xi不在yj范围内,或者xi不是最大值。
然而,对于roi max pooling,一个输入节点可能和多个输出节点相连。设xi为输入层的节点,yrj为第r个候选区域的第j个输出节点。
其中,判决函数δ(i,r,j)表示i节点是否被候选区域r的第j个节点选为最大值输出;代价关于xi的梯度等于所有相关的后一层的梯度之和。
------------------------------------------------------------------------------------------------------------------------------------------------------
multi-task loss
Each training RoI is labeled with a ground-truth class u and a ground-truth bounding-box regression target v.
对于分类loss, softmax层输出K+1维的数组,表示属于K类和背景的概率。分类loss由真实类别u所对应的概率决定,也就是:Lcls=−logpu对于回归loss,bbox regressors层输出K个regression offsets(tx, ty, tw, th) , 也就是为每一个类别都会训练一个单独的regressor。回归loss也是
由真实类别u所对应的预测参数(tx, ty, tw, th)决定的,这里采用的是smooth L1误差,即:
总的loss计算如下,如果分类为背景,不需要计算回归loss。
------------------------------------------------------------------------------------------------------------------------------------------------------
分层数据
在调优训练时,每一个mini-batch中,首先加入N张完整图片,然后加入从这N张图片中选取的R个候选框,也就是从每张图片中选取R/N个候选框。
实际选择N=2, R=128
------------------------------------------------------------------------------------------------------------------------------------------------------
全连接层加速
全连接层的计算比较耗时,全连接层参数为W,尺寸为u×v,计算复杂度为u * v, 该论文中提出了利用Truncated SVD来加速计算,即:
原来的前向传播分解成两步,计算复杂度变为u×t+v×t: