Faster RCNN
1.背景简介
Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。同样使用VGG16作为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。
2.Faster R-CNN算法流程
- 1.将图像输入网络得到相应的特征图
- 2.使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
- 3.将每个特征矩阵通过ROI pooling层缩放到7×7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。
- RPN + Fast R-CNN
-使用RPN替代Selective Search,RPN是指Region Proposal Network,建议区域生成网络。Faster RCNN中用RPN来代替了Fast RCNN中的SS算法
3.RPN网络
如上图所示,conv feature map是图像输入网络得到的相应的特征图,通过sliding window处理之后产生一个256d的一维向量。该向量通过两个全连接层,分别输出分类概率scores和边界框回归参数coordinates。
其中k是指k个anchor boxes,2k个scores是每个anchor box分别为前景和背景的概率(anchor中只区分前景和背景,所有检测类别都是前景),4k个coordinates是因为每个anchor box有四个参数
- 什么是anchor box
首先anchor不是候选框(Proposal)。再特征图中找一个点,可以通过原图和特征图的映射关系找到原图中对应的点,以该点为中心,画出9个不同大小和长宽比的框,成为anchor。
如上图所示,这些anchor里面可能包含目标,也可能没有目标。因为我们再一张图中想找的目标的大小和长宽比并不是固定的,所以这里用9个不同大小和长宽比的anchor来进行预测。
论文原文中给出了每个anchor的面积和长宽比:
所以特征图中的每个位置再原图中都会生成3×3=9个anchor,如上所示,蓝色的三个anchor是面积为128×128,依次类推。
- RPN生成proposal的过程
对于一张1000x600x3的图像(三通道),用3×3的卷积核进行特征提取得到60×40的特征图,则共有60×40×9(约2w个)anchor。忽略超过边界的anchor后,剩下约6000个anchor。
对于这6000个anchor,通过RPN生成的边界框回归参数将每个anchor调整为proposal(前面提到了每个anchor结果RPN都输出两个概率和4个边界框回归参数),这里就能看到anchor和proposal的区别。这个过程就是RPN生成候选框的过程。
RPN生成候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。
4.Faster RCNN框架
Faster RCNN 在Fast RCNN的基础上更进一步,将候选框生成也融入到CNN网络中,使得 候选框生成、特征提取、候选框分类、候选框边界回归这四大部分都结合在一个CNN网络中,避免了分步训练,实现了真正端到端的目标检测。
5.训练数据的采样
- 正负样本定义:
- 1.只要anchor和标注的准确的目标边界框IOU超过0.7就是一个正样本
- 2.标注准确的目标相交最大的最大的anchor就是正样本
6.RPN损失
- 1.分类损失
如上图所示第一个anchor真实标签为1,所以Lcls=-log0.9。第二个anchor真实标签为0,所以Lcls=-log0.2。依次类推
注意:使用二值交叉熵损失,cls layer之预测 k scores
- 边界框回归损失
7.Faster R-CNN训练
直接采用RPN Loss+Fast R-CNN Loss的联合训练方法。
原论文中采用分别训练RPN及Fast R-CNN Loss的联合训练方法
- 利用ImageNet与训练分类模型初始化前置卷积网络层参数,并开始单独训练RPN网络参数
- 固定RPN网络独有的卷积层以及全连接层参数,再利用ImageNet预训练分类模型初始化前置卷积网络参数,并利用RPN网络生成的目标建议框去训练Fast RCNN网络参数
- 固定利用Fast RCNN训练好的前置卷积网络层参数,去微调RPN网络独有的卷积层以及全连接层参数
用Fast RCNN训练好的前置卷积网络层参数,去微调RPN网络独有的卷积层以及全连接层参数 - 同样保持固定前置卷积网络层参数,去微调Fast RCNN网络的全连接层参数。最后RPN网络与Fast RCNN网络共享前置卷积网络层参数,构成一个统一的网络