论文阅读Faster RCNN

来源:互联网 发布:php __set 破坏封装 编辑:程序博客网 时间:2024/06/05 21:53

  • 准备
    • 0 AlexNetAlex Krizhevsky et al2012
    • 1 ZFNetZeiler and Fergus2013
    • 2 Overfeat还没看论文不知道具体原理
  • 思想
  • RPNRegion Proposal Network结构
    • 1 思想
    • 2 RPN结构
    • 3 训练
      • 31 样本
    • 32 损失函数
  • Faster RCNN
    • 1 结构
    • 2 训练
      • 21 multi-stage训练
      • 22 联合训练
  • 结果分析
    • 1 mAP平均准确度
    • 2 PASCAL VOC 2007测试结果
    • 3 时间
    • 4 召回率分析
    • 5 阶段训练单阶段还是多阶段
  • 结论

0 准备

0.0 AlexNet[Alex Krizhevsky et al.2012]

此处输入图片的描述

输入:227x277x3
卷积层输出(池化层之前):13x13x256
最后一层池化层:6x6x256
全连接层:4096-4096-1000

0.1 ZFNet[Zeiler and Fergus,2013]

此处输入图片的描述

输入:227x227x3
卷积层输出(池化层之前):13x13x512
最后一层池化层:6x6x512
全连接层:4096-4096-1000

0.2 Overfeat(还没看论文,不知道具体原理)

1 思想

此处输入图片的描述

从RCNN到fast RCNN,再到本文的faster RCNN,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。所有计算没有重复,完全在GPU中完成,大大提高了运行速度。

三个要解决的问题:
1. 如何设计区域生成网络
2. 如何训练区域生成网络
3. 如何让区域生成网络和fast RCNN网络共享特征提取网络

2 RPN(Region Proposal Network)结构

2.1 思想

  • 根据特征得到区域(而不是重新设计一种网络)
  • 原来是用RP的方法得到ROI,再映射到conv feature map上,现在可以直接在feature map上对所有候选框进行识别
  • 后续位置还有精修,不需要特别准确

2.2 RPN结构

此处输入图片的描述

  1. 在卷积特征图上滑动一个nxn的窗口(代表了输入图像上的候选区域)
  2. 卷积得到一个低维的向量(256-d for ZF and 512-d
    for VGG)
  3. 连接两个全连接层(box-regression layer && box-classification layer)

Translation-Invariant Anchor

因为每一个位置候选区域的大小和形状都是未知的,所以在每个滑窗位置预测k个region proposals(k=9)叫作anchor。那么对于每一个位置reg layer 有4k个输出对应BBox的坐标,cls layer有2k个scores输出对应是否有目标的概率。

2.3 训练

2.3.1 样本

Anchor:
一般设置短边s=600
anchor考虑三个尺度(128^2,256^2,512^2)和三个宽高比(1:1,1:2,2:1)

此处输入图片的描述

对于600x1000的图像,得到的特征大小为60x40,那么anchor大约有20k(~60*40*9)个;忽略掉超出边界的,大约有6k个

用于训练的anchor
a. 对每个标定的真值候选区域,与其重叠比例最大的anchor记为前景样本
b. 对a剩余的anchor,如果其与某个标定重叠比例大于0.7,记为前景样本;如果其与任意一个标定的重叠比例都小于0.3,记为背景样本
c. 对a,b剩余的anchor,弃去不用。
d. 跨越图像边界的anchor弃去不用

2.3.2 损失函数

RPN是不针对具体的类,而只是检测出物体

此处输入图片的描述

i表示anchor;
前一项是分类的Softmax损失,后一类是回归损失(前面那个N是归一化系数)

与其他框回归方法的不同
- Fast RCNN是对特征图上不等的区域池化,所有区域共享权重
- Faster RCNN是对特征图上相等的区域池化,不同的anchor权重不同(训练了k个anchor)

3 Faster RCNN

3.1 结构

此处输入图片的描述

RPN用来产生候选区域(不针对具体类别,只是框出可能含有目标的区域)
Fast-RCNN用来对候选区域进行分类和定位

3.2 训练

3.2.1 multi-stage训练

  1. 训练RPN
  2. 利用RPN得到的候选区域训练Fast-RCNN
  3. 用Fast-RCNN来初始化RPN的训练,固定卷积层微调RPN特有的层(共享了卷积层特征)
  4. 保持共享的卷积层固定微调Fast RCNN的全连接层

3.2.2 联合训练

4 结果分析

4.1 mAP(平均准确度)

此处输入图片的描述

  • 可以看到,利用RPN来提取候选区域相较于用SS和EB的方法要高出1%左右
  • 不使用共享权值的情况下,也可以达到一个比较高的mAP
  • 只看RPN的结果,要略差于SS
  • 只使用类损失或者回归损失,结果都会有不同程度的下降

4.2 PASCAL VOC 2007测试结果

此处输入图片的描述

在07测试集上,SS的最好结果是66.9%,而RPN的最好结果是69.9%

4.3 时间

此处输入图片的描述

使用VGG的话,可以达到5fps,即每秒处理5张图片
而使用ZF的话,可以达到17fps

4.4 召回率分析

此处输入图片的描述

如果对IOU的要求更高的话,SS的优势会逐渐显现(毕竟SS提取的区域准确性相对RPN更高)

4.5 阶段训练(单阶段还是多阶段?)

此处输入图片的描述

Faster-RCNN相比于Overfeat的单阶段训练结果高出5%左右

5 结论

  • 提出了RPN用来有效地产生候选区域
  • 共享卷积特征
  • 一体化的监测系统5-17fps
  • 学习的RPN可以改善候选区域质量和准确度