首页:https://blog.csdn.net/u014236392/article/details/86767950
论文:Fast R-CNN
official code - caffe:https://github.com/rbgirshick/fast-rcnn
1.
检测要求的精确定位目标导致复杂性产生,其中两个主要挑战是:
(1)必须处理大量候选目标区域(proposals);
(2)这些候选框只提供了粗略定位,必须进行精修来精准定位。而解决这些问题的办法往往牺牲了速度、准确率或者简易性。
1.1 R-CNN and SPPnet
① 训练过程是多级流水线。R-CNN首先使用目标候选框对卷积神经网络使用log损失进行微调。然后,它将卷积神经网络得到的特征送入SVM。 这些SVM作为目标检测器,替代通过微调学习的softmax分类器。 在第三个训练阶段,学习检测框回归。
② 训练在时间和空间上是的开销很大。对于SVM和检测框回归训练,从每个图像中的每个目标候选框提取特征,并写入磁盘。
③ 目标检测速度很慢。在测试时,从每个测试图像中的每个目标候选框提取特征。
R-CNN很慢是因为它为每个目标候选框进行卷积神经网络正向传递,而不共享计算。SPPnet通过共享计算加速R-CNN。
SPPnet也有显著的缺点。像R-CNN一样,训练过程是一个多级流水线,涉及提取特征,使用log损失对网络进行微调,训练SVM分类器,最后拟合检测框回归。特征也写入磁盘。但与R-CNN不同,提出的微调算法不能更新在空间金字塔池之前的卷积层。这种限制(固定的卷积层)限制了深层网络的精度。
1.2 Contributions
① 比R-CNN和SPPnet具有更高的目标检测精度(mAP)。
② 训练是使用多任务损失的单阶段训练。
③ 训练可以更新所有网络层参数。
④ 不需要磁盘空间缓存特征。
2. Fast R-CNN architecture and training
2.1 The RoI pooling layer
RoI 池化层使用最大池化将任意有效 RoI 内的特征转换成具有固定空间范围的小特征图,即,可以在任意大小的特征映射上为每个输入ROI区域提取固定的维度特征表示。
RoI pooling layer 详解见博客。
3. 缺陷
Fast RCNN使用的是selective search,这一过程十分耗费时间,而且因为使用SS来预先提取候选区域,并没有实现真正意义上的端到端训练模式。