Fast R-CNN

R-CNN与SPPnet的缺点

1. 训练是多阶段的: CNN -> SVM -> BB;

2. 训练速度慢,用来存储特征的存储空间比较大;

3. 测试速度慢。

Fast R-CNN


Fast R-CNN_第1张图片
图一 Fast R-CNN 结构图

ROI pooling[5] 只是SPP的单层次特例(1-level,7 * 7 bins);

检测过程

1. 输入图片(将原始图片的最短边保持长宽比放大到600)和候选区域集(2000个);

2. 对于每个RoI,一次前传产生各类概率以及各类的修正边框;

3. 对于每一类,根据ROI概率得分进行NMS;

训练

fine-tuning

Fast R-CNN的训练是高效的。SPPnet[2]和R-CNN[3]的预训练中每个batch的样本都可能来自不同的图片(随机挑选128个RP),重复计算多(论文里的解释没看懂)。所以Fast R-CNN采用的是层次化训练:首先随机挑选N张图片,然后在每张图片里随机挑选出R / N个RP(文中N = 2, R = 128)。这样就能共享计算,加快训练速度(64x)。

Multi-task loss


u代表GT类,p代表预测概率,t(u)代表是对u类预测的框的四个属性值相关量(如RCNN中定义),v是GT的四个属性值相关量WF,v(i)都做标准化处理,lambda=1

(1)式也说明了只对预测为GT类的边框回归。不同类的参数不共享。



使用Smooth L1代替RCNN和SPPnet的L2是因为它相对于离群点更不敏感。如果采用L2, 则需要小心调节学习率以防止梯度爆照。

实验


Fast R-CNN_第2张图片


Fast R-CNN_第3张图片

使用SVD只下降0.3%,速度提升超过30%。

Fast R-CNN_第4张图片

fc6使用top 1024的奇异值,fc7使用top 256的奇异值。

Fast R-CNN_第5张图片

文中阐述:在小型网络中如(AlexNet, VGG CNN M 1024)的conv1是通用的与任务无关的,从conv1开始fine-tuning并没有提升mAP。对于VGG16这样的大网络,只需从conv3_1开始FT,因为:

1)从conv2_1开始FT的训练时间是conv3_1开始FT的1,3x(12.5 vs 9.5),但mAP只提升了0.3%;

2)从conv1_1开始FT会超出GPU显存。


Fast R-CNN_第6张图片

多任务学习确实有效的提高了模型性能


Fast R-CNN_第7张图片

单尺度测试时性价比最高的


Fast R-CNN_第8张图片

Fast R-CNN中Softmax优于SVM

参考文献

1. Fast R-CNN

2. SPPNet

3. R-CNN

4. Softmax回归

5. ROI Pooling

你可能感兴趣的:(Fast R-CNN)