论文提要"Fast R-CNN"

快速R-CNN,对R-CNN和SPPNet的加速,使用multi-task 进行单步训练,网络使用的是VGG16。R-CNN对每个proposal单独warp处理,SPPNet将warp放到最后一个卷积层的后面,将多个池化网格的结果串联到SPP中。SPPNet的微调算法只能更新全连接层,限制了深层网路VGG16发挥性能。
主要贡献:
1.比R-CNN检测率更高
2.单步训练,使用multi-class loss
3.可在训练的时候更新所有的网络层
4.特征不需要存储到硬盘中

1.快速R-CNN训练:
使用ConvNet在ImageNet上进行初步训练,构建具有几个卷积层和最大化池化层的网络,接下来有一个RoI池化层和几个全连接层,网络最终以两个子层收尾,一个输出K+1类目标的softmax概率,另外一个输出对应每类的4个实数值(bbox),结构如下图所示:
论文提要
1)RoI池化层
SPPNet中空间金字塔池化的简化,只有一层,RoI池化层的输入是N个特征图和R个RoI区域,特征图是卷积层的输出,大小是H*W*C。RoI是一个多元组(n,r,c,h,w),对应每个特征图的位置和大小。该层的输出是最大池化特征图
2)使用初训练的网络
有三个初始训练的网络,有5个最大池化层和5到13个卷积层,快速R-CNN对它进行了三个变形:最大池化层由一个RoI池化层取代,网络最后一层由两个子层取代,网络接受图像和RoI两种输入
3)检测微调
快速R-CNN将softmax 分类器和bbox 回归一起优化,解决参数微调不能后向传播到SPP之前层的问题,整个流程包括loss,mini-batch sampling,bp through RoI pooling layers, SGD hyperparameters.

A. multi-task loss
使用multi-task loss联合训练分类及回归:
这里写图片描述
k 是真是类标记, Lcls(p,k)=logpk 为标准log损失。 Lcoc 是类 k 的bbox的真实坐标 t 和预测坐标t定义,bbox回归的loss为:
这里写图片描述
L1 loss比起 L2 loss对outliers更不敏感, λ 是平衡两种loss的超参数

B. mini-batch sampling
每个SGD的mini-batch由N=2副图构建,mini-batch的数目R为128,从每副图中采样64个RoI,从proposal中选取与ground truth的IoU>0.5的RoI作为正样本,其余的IoU值在[0.1,0.5)之间的作为负样本。

C. BP through RoI pooling layers
multi-task loss在RoI 池化层的R个输出上进行平均,RoI池化层的后向传播计算损失函数对每个输入变量x的偏导:
这里写图片描述

D. SGD 超参数
全连接层由零均值高斯分布初始化,方差为0.01和0.001,权值学习率为1,偏量学习率为2,30k mini-batch迭代。

2.快速R-CNN检测

输入一个单尺度图像和约2000个proposals,对于每个RoI r,网络输出r的后验概率和bbox,根据概率分配一个置信水平给r。

A. Truncated SVD for faster detection
需要处理的RoI比较多,网络需要花将近一半的时间在全连接层上,论文使用truncated SVD压缩全连接层,全连接层又 u×v 的权值矩阵W表示:
WUΣtVT
因式分解过程中,U是W的前t个左奇异向量, Σt 是W奇异值组成的对角矩阵,V是W的前t个右奇异向量,truncated SVD将参数的个数由uv降到t(u+v)。对应W的全连接层被分解成两个,第一个使用权值矩阵 ΣtVT ,第二个使用U,实现了对网络的压缩。

你可能感兴趣的:(目标检测,深度学习)