GA-RPN:Region Proposal by Guided Anchoring 引导锚点的建议区域网络
论文地址:https://arxiv.org/pdf/1901.03278.pdf
代码地址:GitHub - open-mmlab/mmdetection: OpenMMLab Detection Toolbox and Benchmark
1.RPN
RPN 即 Region Proposal Network,是用 RON 来选择感兴趣区域的,即 proposal extraction。例如,如果一个区域的 p>0.5,则认为这个区域中可能是 80 个类别中的某一类,具体是哪一类现在还不清楚。到此为止,网络只需要把这些可能含有物体的区域选取出来就可以了,这些被选取出来的区域又叫做 ROI(Region of Interests),即感兴趣的区域。当然 RPN 同时也会在 feature map 上框定这些 ROI 感兴趣区域的大致位置,即输出 Bounding Box。
RPN 详细介绍:https://mp.weixin.qq.com/s/VXgbJPVoZKjcaZjuNwgh-A
2.Guided Anchoring
通常用(x,y,w,h)来描述一个 anchor,即中心点坐标和宽高。文章将 anchor 的分布用条件概率来表示,公式为:
两个条件概率的分布,代表给定图像特征之后 anchor 的中心点概率分布,和给定图像特征和中心点之后的形状概率分布。这样看来,原来我们所获取 anchor 的方法就可以看成上述条件概率分布的一个特例,即 p(x,y|I)是均匀分布而 p(w,h|x,y,I)是冲激函数。
根据上面的公式,anchor 的生成过程可以分解为两个步骤,anchor 位置预测和形状预测。
论文中用到的方法如下:

这个框架就是在原始的 RPN 的特征图基础上,采用两个分值分别预测 anchor 的位置和形状,然后再结合到一起得到 anchor。之后采用一个 Feature Adaption 模块进行 anchor 特征的调整,得到新的特征图供之后的预测使用(anchor 的分类和回归)。整个方法可以端到端训练,而且相比之前只是增加了 3 个 1×1 conv 和一个 3×3 deformable conv,带来的模型参数量变化很小。
(1)位置预测
位置预测分支的目标是预测哪些区域应该作为中心点来生成 anchor,也是一个二分类问题,但是不同于 RPN 的分类,我们并不是预测每个点是前景还是背景,而是预测是不是物体中心。
我们将整个 feature map 的区域分为物体中心区域、外围区域和忽略区域,大致思路就是将 groundtruth 框的中心一小块对应在 feature map 上的区域标为物体中心区域,在训练的时候作为正样本,其余区域按照离中心的距离标为忽略或者负样本。最后通过选择对应概率值高于预定阈值的位置来确定可能存在对象活动的区域。 对输入的特征图使用 1×1 的卷积,得到与 相同分辨率的输出, 得到输出的每个位置的值表示原图 I 上对应位置出现物体的可能性,也就是概率图,最后通过选择对应概率值高于预定阈值的位置来确定可能存在对象活动的区域。
通过位置预测,我们可以筛选出一小部分区域作为 anchor 的候选中心点位置,使得 anchor 数量大大降低。这样在最后我们就可以只针对有 anchor 的地方进行计算。
(2)形状预测
形状预测分支是目标是给定 anchor 中心点,预测最佳的长和宽,这是一个回归问题。
采用 1×1 的卷积网络 输入 ,输出与 尺寸相同的 2 通道的特征图,每个通道分别代表 dw 和 dh,表示每个位置可能的最好的 anchor 尺寸。虽然我们的预测目标是 w 和 h,但是直接预测这两个数字不稳定,因为范围很大,所以将空间近似 [0,1000] 映射到了 [-1,1] 中,公式为:
其中 s 是步幅,σ 是经验因子,实验中取 σ=8。实验中产生 dw,dh 的双通道映射,通过这个方程实现了逐像素转换。文章中直接用 IOU 作为监督来学习 w 和 h。
对于 anchor 和 ground truth 匹配问题,传统 RPN 都是直接计算 anchor 和所有 ground truth 的 IOU,然后将 anchor 匹配给 IOU 最大的那个 ground truth,但是现在由于我们的改进,anchor 的 w 和 h 都是不确定的,是一个需要预测的变量。文中将这个 anchor 和某个 ground truth 的 IOU 表示为:
我们不可能把所有可能的 w 和 h 遍历一遍求 IOU 的最大值,文中采用了 9 组可能的 w 和 h 作为样本,近似效果已经足够。
到这里我们就可以生成 anchor 了。这时所生成的 anchor 就是稀疏而且每个位置不一样的。实验可得此时的平均 recall 已经超过普通的 RPN 了,仅仅是增加了两个 conv。

(3)特征精调模块
由于每个位置的形状不同,大的 anchor 对应较大感受野,小的 anchor 对应小的感受野。所以不能像之前基于 anchor 的方法那样直接对 feature map 进行卷积来预测,而是要对 feature map 进行 feature adaptation。作者利用可变形卷积(deformable convolution)的思想,根据形状对各个位置单独进行转换。

方法就是把 anchor 的形状信息直接融入到特征图当中,得到新的特征图去适应每个位置 anchor 的形状。这里就利用了上述的 3×3 的可变形卷积进行对原始特征图的修正,可变形卷积的变化量是通过 anchor 的 w 和 h 经过一个 1×1 conv 得到的。
其中,fi 是第 i 个位置的特征,(wi, hi) 是对应的 anchor 形状。NT 通过 3×3 的变形卷积实现。首先通过形状预测分支预测偏移字段 offset field,然后对带偏移的原始 feature map 做变形卷积获得 adapted features。之后进一步做分类和 bounding box 回归。
通过这样的操作,达到了让 feature 的有效范围和 anchor 形状更加接近的目的,同一个 conv 的不同位置也可以代表不同形状大小的 anchor 了。
文中实验结果示例:

学习更多编程知识,请关注我的公众号:

评论