《Region Proposal by Guided Anchoring》阅读笔记

《Region Proposal by Guided Anchoring》来自CVPR2019,非anchor-free时代中anchor在多数目标检测算法中都起到了重要的作用,本篇提出了一种新的anchor生成方法 ,不同于之前的固定 anchor或者根据数据集聚类anchor的方法,通过guided anchoring可以预测anchor的形状和位置得到稀疏的anchor,以及作者提出了Feature Adaption模块使得anchor和特征更加匹配。

推荐资料:作者知乎链接

本篇主要记录下在论文阅读中的个人理解供日后翻阅。

Guided Anchoring

最早的anchor使用方法比如Faster-RCNN中的RPN,将一系列形状和宽高比不同的anchor安插在feature map的每个点上,这样有两个问题:

  1. 位置上:anchor是密集的,分布在图像的各个地方,但是图像中大部分区域都是不包含物体的背景,大多数的anchor并不能起到作用,因此我们期望的应该是和目标所在位置匹配的稀疏anchor
  2. 形状上:anchor通常是预设好或者根据数据集聚类而来,无论是哪一种方法得到的anchor,都是固定的 ,并不一定能完全贴合实际并且对于特殊大小和宽高比悬殊的物体检测就不够鲁棒了。

基于这些问题,作者提出了guided anchoring方法。anchor的定义由《Region Proposal by Guided Anchoring》阅读笔记及宽高和位置坐标组成,可以写成如下的联合概率分部:

《Region Proposal by Guided Anchoring》阅读笔记

上面的式子告诉我们:

  1. anchor在不同的位置有不同的出现概率《Region Proposal by Guided Anchoring》阅读笔记,即anchor只 应当在特定的位置出现。
  2. 每个位置上anchor的宽高《Region Proposal by Guided Anchoring》阅读笔记应该和其位置有关系。

基于此,提出了下面的网络结构:

《Region Proposal by Guided Anchoring》阅读笔记

整体上网络运用了FPN,然后在每层输出的feature上用蓝色框部分的Guided anchor结构后,得到anchor和新的feature map并进一步得到检测结果。

在Guided anchoring结构中,分为两个分支,一个分支用来预测anchor的位置和大小,另一个分支用于产生新的用于检测目标的feature map。在生成anchord分支中又分为了两个分支,是feature 《Region Proposal by Guided Anchoring》阅读笔记经过两个《Region Proposal by Guided Anchoring》阅读笔记卷积得到《Region Proposal by Guided Anchoring》阅读笔记《Region Proposal by Guided Anchoring》阅读笔记的特征用来预测anchor的位置和anchor的宽高。同时作者注意到因为不同位置的anchor大小是不同的,所以对应到feature 《Region Proposal by Guided Anchoring》阅读笔记上的范围也应当有差别,因此作者通过一个feature adaptation module,将anchor的shape信息融入到原来的feature 《Region Proposal by Guided Anchoring》阅读笔记中,得到的新的feature《Region Proposal by Guided Anchoring》阅读笔记用于做prediction。

Anchor Location Target

anchor位置的预测部分应当得到的是一个和《Region Proposal by Guided Anchoring》阅读笔记同样大小的probability map 《Region Proposal by Guided Anchoring》阅读笔记,并且在训练的时候,秉承的原则 应当是:anchor应当尽可能的和groudtruth的中心重合来获得更大的IOU,因此作者将每个groudtruth的划分成了三种类型的区域:

  1. 中心区域《Region Proposal by Guided Anchoring》阅读笔记,图中绿色部分,中心区域内的像素点均为正样本。
  2. 略大于中心区域《Region Proposal by Guided Anchoring》阅读笔记,并且抠除中心区域,即图中黄色部分,这部分点既不是正样本也不是负样本,不参与训练。
  3. 外部区域OR即排除了CR和IR以外的区域,为负样本,图中灰色部分。

同时因为我们用了FPN会产生不同大小的feature map,而不同大小的feature map理论上应当负责检测不同大小的物体,较大尺寸的feature map有着更小的感受野并且融合了底层的细粒度特征,应当负责检测更小尺寸的物体(如下图蓝框中的黑色小羊);而较小尺寸的feature map有着更大的感受野并且融合了更高层的语义信息,负责检测大尺寸的物体(如红框中的白色羊)。并且因为CR\IR\OR三种区域的数量不同,训练location的时候采用了focal loss。

《Region Proposal by Guided Anchoring》阅读笔记

Anchor Location Target

理论上如果我们想预测anchor的宽高,应当先计算出和当前groundtruth最匹配的宽高,然后可以通过smooth L1/L2这种类似的loss来监督网络学习anchor的宽和高就好了。然而这个和当前groudtruth最匹配的宽和高是很难计算的,因此作者的想法是通过IOU来监督网络学习使得IOU最大的anchor的宽和高,同时因为IOU是可导的,进行反向传播也毫无压力:

《Region Proposal by Guided Anchoring》阅读笔记

有个问题就是:在从前我们固定anchor大小的情况下,可以用与groundtruth最大IOU的那个anchor来相匹配就可以了。但是现在anchor是网络学习出来的,其大小是可变的了,我们又不可能穷举所有可能的w和h来计算和groundtruth最大IOU的anchor,因此可以采取一种近似的方式,即sample几种可能性的w和h来估计vIOU。作者sample了9对w和h来估计vIOU,并且经过实验证明网络对于具体要sample多少的《Region Proposal by Guided Anchoring》阅读笔记这个超参数并不敏感。

shape的loss function定义:

《Region Proposal by Guided Anchoring》阅读笔记

 

Feature Adaption

这一部分上面也提过,主要将anchor的形状信息融入到特征当中。RPN中的anchor采取了类似于滑窗似的方法均匀分部在整张图像中,因为anchor的分部是均匀的,可以说每个anchor都可以用同样感受野大小的feature来做检测。但是应用了guided anchoring之后,anchor的大小是可变的了,因此每个anchor对应的位置的感受野大小应当有所区别才能体现出anchor大小不同的优势。为了达到这一目的,作者采用了《Region Proposal by Guided Anchoring》阅读笔记的可变行卷积《Region Proposal by Guided Anchoring》阅读笔记,并且为了融合每个anchor的形状信息,将《Region Proposal by Guided Anchoring》阅读笔记经过《Region Proposal by Guided Anchoring》阅读笔记的卷积得到《Region Proposal by Guided Anchoring》阅读笔记的offsets。这样的好处是:feature 的有效范围和 anchor 形状更加接近,不同的位置可以应用不同形状的anchor了。

经作者测试,Feature Adaption可以带来接近5个点的提升:

《Region Proposal by Guided Anchoring》阅读笔记

 

Use of High-quality Proposals

作者发现通过anchoring guided的方式可以得到非常多高质量的proposal region,但是给检测器带来的提升效果却十分的有限。后来作者发现通过anchoring guided方式得到的proposal有两个特点: (1)proposal中正样本的比例相比于传统方法更高(2)proposal的IOU普遍变得更大了。为了能更好应用如此高质量的proposal,采取了以下策略:

  1. 减少RPN产生的proposal region的数量
  2. 提高IOU阈值

总之想法就是,proposal的质量很高,我们有必要在数量和质量上对proposal做一个更加严格的筛选,才能更好的利用到那些更高质量的proposal。经作者尝试,这样在Faster-RCNN上能提高2.7个百分点。

《Region Proposal by Guided Anchoring》阅读笔记