Fast R-CNN

R-CNN与SPPnet的缺点

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

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

3. 测试速度慢。

Fast R-CNN


图一 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, 则需要小心调节学习率以防止梯度爆照。

实验



使用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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容