R-CNN与SPPnet的缺点
1. 训练是多阶段的: CNN -> SVM -> BB;
2. 训练速度慢,用来存储特征的存储空间比较大;
3. 测试速度慢。
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
(1)式也说明了只对预测为GT类的边框回归。不同类的参数不共享。
使用Smooth L1代替RCNN和SPPnet的L2是因为它相对于离群点更不敏感。如果采用L2, 则需要小心调节学习率以防止梯度爆照。
实验
使用SVD只下降0.3%,速度提升超过30%。
fc6使用top 1024的奇异值,fc7使用top 256的奇异值。
文中阐述:在小型网络中如(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中Softmax优于SVM
参考文献
1. Fast R-CNN
2. SPPNet
3. R-CNN
4. Softmax回归
5. ROI Pooling