[图解]FASTER R-CNN图文详解

  • 2020 年 3 月 27 日
  • 筆記

文章来自于www.xyu.ink/blog

论文原文

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

网络结构

Faster R-CNN 使用了注意力(attention)机制,它由两个模块组成。   1. RPN(region proposal network) 作用是推荐图像中的有物体区域。   2. Fast R-CNN检测器 作用是检测是什么物体。

RPN

RPN 网络的输入是任意大小的图像,输出是一些矩形以及这些矩形中是否有物体的得分。如下图所示。

在原文中,RPN网络为CNN后面接一个3×3的卷积层,再接两个并列的(sibling)1×1的卷积层,其中一个是用来给softmax层进行分类(2分类,有物体还是没有物体),另一个用于给候选区域精确定位(框位置的偏移)。

Anchors

Anchors是一些预设大小的框,原文中Anchors的面积有三种 ANCHOR_AREAS = [128**2,256**2,512**2], 长宽比也有三种 ANCHOR_RATIOS = [0.5,1,2],所以一共有9种大小的Anchors,即k=9。Anchors的大小如下图所示:

原本中Anchors的stride为16,也就是Anchor以步长16在原图中滑动。对于一张1000*600的图像,总共大约有20000个anchors(≈60×40×9),如果忽略越过图像边界的anchor,在训练时每张图像总共有约6000个anchor。

如何确定一个anchor是正样本还是负样本

一个anchor如果满足以下两个条件之一的被认为是正样本:

(i) 这个anchor和ground truth的方框有着最大的IoU重叠。

 (ii) 这个anchor和ground truth的方框有超过0.7的IoU重叠。

一个anchor如果满足以下条件的被认为是负样本:

(i) 这个anchor和ground truth的方框的IoU重叠小于0.3。

既不是正样本也不是负样本的anchor在训练中不被使用。

参考资料

https://github.com/endernewton/tf-faster-rcnn

https://web.cs.hacettepe.edu.tr/~aykut/classes/spring2016/bil722/slides/w05-FasterR-CNN.pdf https://zhuanlan.zhihu.com/p/31426458