Faster RCNN

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算法
    Faster RCNN_第1张图片

3.RPN网络

Faster RCNN_第2张图片

如上图所示,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。

    Faster RCNN_第3张图片

如上图所示,这些anchor里面可能包含目标,也可能没有目标。因为我们再一张图中想找的目标的大小和长宽比并不是固定的,所以这里用9个不同大小和长宽比的anchor来进行预测。

论文原文中给出了每个anchor的面积和长宽比:

在这里插入图片描述

Faster RCNN_第4张图片

所以特征图中的每个位置再原图中都会生成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损失

Faster RCNN_第5张图片

Faster RCNN_第6张图片

  • 1.分类损失

    Faster RCNN_第7张图片

Faster RCNN_第8张图片

如上图所示第一个anchor真实标签为1,所以Lcls=-log0.9。第二个anchor真实标签为0,所以Lcls=-log0.2。依次类推

注意:使用二值交叉熵损失,cls layer之预测 k scores

Faster RCNN_第9张图片

  • 边界框回归损失

    Faster RCNN_第10张图片

Faster RCNN_第11张图片

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网络共享前置卷积网络层参数,构成一个统一的网络

你可能感兴趣的:(深度学习-目标检测篇,深度学习,人工智能)