0. 参考
1. 论文概况
1. Motivation
借鉴SPP-NET;
多任务损失函数multi-task loss;
2. 解决什么问题?
- 使训练简单化,towards端到端训练;
- 解决SPP-NET中金字塔池化的训练问题;
3. 提出了什么方法?
- ROI pooling(共享了卷积)
- multi-task loss
4. 效果如何?
- 训练和测试更方便;
- 精度提升;
5. 还存在什么问题?
- 用selective search提取region proposal耗时严重,提region proposal 2~3s,而提特征分类只需0.32s;
- 没有实现真正意义上的端到端训练测试region proposal使用selective search先提取处来);
ROI pooling
SPP-NET的特例,金字塔只有一级。SPP-NET对每个proposal使用了不同尺度的金字塔映射,而ROI pooling layer只需要下采样到一个7x7的特征图。
该层可以直接求导,训练时直接将梯度传导到backbone网络,backbone网络也可以参与训练了
multi-task loss
R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。
Fast R-CNN在网络微调的过程中,将部分卷积层也进行了微调,取得了更好的检测效果。
Fast RCNN
边界框回归器
通常会使用计算量较少的候选区域选择方法构建ROI,并在后面使用线性回归器(使用全连接层)进一步提炼边界框。
直接利用特征图计算 ROI
Fast R-CNN 最重要的一点就是包含特征提取器、分类器和边界框回归器在内的整个网络能通过多任务损失函数进行端到端的训练,这种多任务损失即结合了分类损失和定位损失的方法,大大提升了模型准确度。
改进之处
- 借鉴SPP思路,提出简化版的ROI池化层(注意,没用金字塔),同时==加入了候选框映射功能???==,使得网络能够反向传播,解决了SPP的整体网络训练问题;
- 多任务Loss层
- SoftmaxLoss代替了SVM,证明了softmax比SVM更好的效果;
- ==SmoothL1Loss取代Bouding box回归==
全连接层通过SVD加速
结合上面的改进,模型训练时可对所有层进行更新,除了速度提升外(训练速度是SPP的3倍,测试速度10倍),得到了更好的检测效果