参考:
https://blog.csdn.net/qq_36269513/article/details/80421990
http://www.mamicode.com/info-detail-1775288.html
RPN(RegionProposal Network)区域生成网络
1.anchors
对于特征图像的每一个位置,考虑k个可能的候选窗口(k一般为9),这些候选窗口称为anchors,下图示出特征图像中anchor中心,以及9种anchor示例。(三种面积三种比例)
为了生成区域建议框,我们在最后一个共享的卷积层输出的卷积特征映射上滑动小网络,这个网络全连接到输入卷积特征映射的nxn的空间窗口上。每个滑动窗口映射到一个低维向量上。这个向量输出给两个同级的全连接的层——包围盒回归层(reg)和包围盒分类层(cls)。注意,由于小网络是滑动窗口的形式,所以全连接的层(nxn的)被所有空间位置共享(指所有位置用来计算内积的nxn的层参数相同)。这种结构实现为nxn的卷积层,后接两个同级的1x1的卷积层(分别对应reg和cls),ReLU[15]应用于nxn卷积层的输出。
上图为mask rcnn 的框架图。
在每一个滑动窗口的位置,我们同时预测k个区域建议,所以reg层有4k个输出,即k个box的坐标编码。cls层输出2k个得分,即对每个建议框是目标/非目标的估计概率(为简单起见,是用二类的softmax层实现的cls层,还可以用logistic回归来生成k个得分)。k个建议框被相应的k个称为anchor的box参数化。每个anchor以当前滑动窗口中心为中心,并对应一种尺度和长宽比,我们使用3种尺度和3种长宽比,这样在每一个滑动位置就有k=9个anchor。对于大小为WxH(典型值约2,400)的卷积特征映射,总共有WHk个anchor。我们的方法有一个重要特性,就是平移不变性,对anchor和对计算anchor相应的建议框的函数而言都是这样。
为了训练RPN,我们给每个anchor分配一个二进制的标签(是不是目标)。我们分配正标签给两类anchor:(i)与某个groundtruth(GT)包围盒有最高的IoU(Intersection-over-Union,交集并集之比)重叠的anchor(也许不到0.7),(ii)与任意GT包围盒有大于0.7的IoU交叠的anchor。注意到一个GT包围盒可能分配正标签给多个anchor。我们分配负标签给与所有GT包围盒的IoU比率都低于0.3的anchor。非正非负的anchor对训练目标没有任何作用。由此输出维度为(2*9)18-d,anchor(label和概率)一共18维。