文章来自于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