论文笔记(二)Region Proposal by Guided Anchoring(CVPR2019)

论文链接:https://arxiv.org/abs/1901.03278

论文解读:https://mp.weixin.qq.com/s/Sl958JkcJjy-HW9_c-SH4g

Github链接:https://github.com/open-mmlab/mmdetection

目录

摘要

介绍

相关工作

 GA

位置预测

形状预测

Anchor-Guided Feature Adaptation

训练

高质量提议

总结


摘要

我们提出了一种新的 anchor 生成方法 —— Guided Anchoring,即通过图像特征来指导 anchor 的生成。通过预测 anchor 的位置和形状,来生成稀疏而且形状任意的 anchor,并且设计了 Feature Adaption 模块来修正特征图使之与 anchor 形状更加匹配。在使用 ResNet-50-FPN 作为 backbone 的情况下,Guided Anchoring 将 RPN 的 recall(AR@1000) 提高了 9.1 个点,将其用于不同的物体检测器上,可以提高 mAP 1.2 到 2.7 个点不等。(引用论文解读链接)

介绍

Anchor是回归引用和分类候选的基准框,用于预测建议(用于两级检测器)或边界框回归(用于单级检测器)。主流的目标检测方法都采用anchor机制。Faster R-CNN为例,它首先从一组密集的锚中生成区域建议,然后将其分类为特定的类并进行细化,最后通过回归预测位置。

anchor有两个特性版中心对齐特征一致。首先,要使用卷积特征作为锚点表示,锚点中心需要与特征映射像素很好地对齐。其次感受野在特征图的不同区域要一致。现在主流采用滑窗的方式,对于大多数检测方法,锚框由统一方案来定义,其中特征图中的每个位置与具有预定比例和纵横比的k个锚相关联。(yolov3中是三个横纵比以及大小,一共9个)

但是,滑窗不是最佳方式,这种方式有两个问题。1.对于不同的问题,必须预先定义一组固定横纵比的anchor。错误的设计可能会影响检测的速度和精度。2.为了保持足够高的召回率,需要大量的锚,而大多数锚对应的是与不包含目标的负样本区域,同时,大量的anchor会提高计算成本。

本文提出一个更有效的方法,减少预设框的启发式特征选择。启发来源图像上的目标并非均匀分布,所以分两个步骤解决:首先确定可能的位置区域,然后确定形状比例。

可学习的anchor很有前景,他打破了一致性。将自己学习的anchor应用于分类和回归是一个挑战。锚的尺度和横纵比现在是可变的,而不是固定的,因此不同的特征映射像素必须学习适合相应锚的特征表示。本文提出基于anchor变化的特征选择

GA-RPN。动态的anchor机制,相比RPN,减少了90%的anchor,提高了9.1%的召回率。通过预测尺度和高宽比,而不是根据预定义的列表来修正它们,我们的方案更有效地处理高或宽的对象。除了区域建议之外,这种方案可以容易地集成到依赖于锚的任何检测器中。GA-Fast-RCNN, GA-Faster-RCNN and GA-RetinaNet 分别提升mAP  2.2%, 2.7%  1.2%在COCO数据集上,相比滑窗的方式。此外,作者还探讨了使用高质量的建议,并使用GA-RPN提议提出了一个微调计划,这可以提高任何训练的模型的性能。

贡献:1)一种新的锚固方案,它能够预测除密集采样和预定义的锚之外的非均匀和任意形状的锚

           2)提出了两个分解条件分布的联合锚分布,并分别设计了两个模块对其进行建模。

           3)我们研究了将特征与相应的锚固件对齐的重要性,并设计基于基础锚定形状来优化特征的特征自适应模块。

           4)我们研究了两级检测器的高质量建议的使用,并提出了一种方案,以提高训练有素的模型的性能。

相关工作

滑窗。

比较差异:1)传统方法依赖于密集均匀的锚框采样,本文摒弃该方法,使用GA产生更少的锚框。2)级联检测器采用多个阶段来逐步细化检测边界框,这通常导致更多的模型参数和推理速度的降低,通过RoI Pooling or RoI Align提取边框的对齐特征的方式,对于单阶检测算法效率过低。3)无锚方法结构简单,并在一个阶段内产生最终的检测结果。由于缺少锚和基于锚的进一步细化,它们缺乏处理复杂场景的能力。我们的重点是稀疏和非均匀的锚定方案和使用高质量的建议来提高检测性能。为此,我们必须解决基于锚的方法所特有的不对齐和不一致问题。4)一些单阶段检测器使用多次回归分类增强细化anchor。作者没有逐步细化锚,而是预测锚的分布,它被分解为位置和形状。传统的方法没有考虑锚与特征之间的对齐,因此它们多次将锚(由[x,y,w,h]表示)回归,并破坏了中心对齐以及一致性。本文固定anchor的中心,并预测anchor的形状,然后调整特征。

 GA

在本工作中,我们考虑到物体位置和形状的不均匀分布,提出了一种更有效的锚固方案,使锚固具有可学习的形状。物体的位置和形状可以用(x,y,w,h)的形式表示,其中(x,y)是中心的空间坐标,w是宽度,h是高度。图像i中表示一个对象公式:

本文的生成anchor模块包含两个分支一个用来预测位置,一个用来预测宽高(图中红色区域)。给定一个图像I,我们首先得到一个特征映射FI。在FI之上,位置预测分支生成一个概率映射,它指示对象的可能位置,而形状预测分支预测位置相关的形状。给定来自两个分支的输出,我们通过选择预测概率高于阈值的位置和每个选定地点的最可能形状生成一组锚框。由于锚形状可能不同,不同位置的特征应该在不同的范围内捕捉视觉内容。考虑到这一点,我们进一步引入了一个特征自适应模块,该模块根据锚的形状对特征进行自适应。

上述仅在单一的尺度进行。因此,我们开发了一种多层次的锚生成方案,它按照FPN体系结构在多个特征映射上收集锚。在我们的设计中,锚生成参数在所有涉及的特征级别上都是共享的,因此该方案是参数高效的。


位置预测

如图1所示,锚点位置预测分支产生的概率映射p(·Fi)与输入特征映射Fi的大小相同,每个概率点对应的坐标位置(s为步长,也就是相邻anchor的距离)该点的概率值表示在该位置存在一个对象的中心的概率。

概率映射由Nl子网络生成,该网络将1×1卷积应用于特征图FI,以获得置信度,然后通过sig函数转换为概率值。网络的加深可以带来更高的精准度,我们经验性地发现,卷积层和sig在效率和精度之间取得了很好的平衡。然后,通过选择相应的概率值高于预定义阈值L的位置,确定对象可能存在的活动区域。这个过程可以过滤掉90%的区域,同时仍然保持相同的召回。如图4.b所示,不包括天空和海洋等区域,而锚则集中在人员和冲浪板周围。由于不需要考虑这些被排除的区域,我们用mask卷积代替后续的卷积层,以提高推理的效率。

形状预测

在确定目标的可能位置中心之后,下一步是确定可能存在于每个位置的目标的形状。如图1所示,这个分支与传统的包围盒回归有很大的不同。因为它不会改变锚框的位置,也不会导致锚框和特性之间的不对齐。具体而言,给定特征图FI,该分支将预测每个位置的最佳形状(w、h),该形状会与最近的GT框有最高的覆盖面积。虽然我们的目标是预测宽度w和高度h的值,但我们发现,直接预测这两个值是不稳定的,因为它们的范围很大。

S为步长,σ是一个经验因子(试验为8),这种线性转换将输出从0-1000降为-1到1,使得我们更加容易预测。使用Ns来预测形状,其1*1卷积层,该卷积层产生包含dw和dh的值的双通道映射,以及实现到wh的转换。

这种预测方式与传统方式不同,以为一个位置至于一个anchor关联,我们的实验表明,由于位置和形状之间的密切关系,我们的方案能够获得更高的recall。因为没有限制anchor的比例,可以更好的预测长的或者宽的物体。

Anchor-Guided Feature Adaptation

RPN和单阶段检测器使用滑窗的方式,anchor的大小和比例是均衡的。而在我们的网络中,anchor的形状会因位置不同而不同。但是现在每个 anchor 都有自己独特的形状大小,和 feature 就不是特别好地 match。另一方面,对原本的特征图来说,它并不知道形状预测分支预测的 anchor 形状,但是接下来的分类和回归却是基于预测出的 anchor 来做的。

我们增加了一个 Feature Adaption 模块来解决这种问题。思路很简单,就是把 anchor 的形状信息直接融入到特征图中,这样新得到的特征图就可以去适应每个位置 anchor 的形状。我们利用一个 3x3 的 deformable convolution 来修正原始的特征图,而 deformable convolution 的 offset 是通过 anchor 的 w 和 h 经过一个 1x1 conv 得到的。(此处应该划重点,如果是像正常的 deformable convolution 一样,用特征图来预测 offset,则提升有限,因为没有起到根据 anchor 形状来 adapt 的效果)

训练

考虑到位置和形状预测的损失,损失函数更改

位置预测。为了训练锚定位分支,对于每个图像,我们需要一个二进制标签映射,其中1表示放置锚的有效位置,否则为0。我们希望在目标附近产生更多的anchor。如图所示CR为正样本,IR为忽略区域,OR为负样本。当多个对象重叠时,CR可以抑制IR,IR可以抑制OR。由于CR通常占整个特征图的一小部分,所以我们使用FocalLoss来训练定位分支。

形状预测。第一,将anchor和GT框匹配;第二,预测最佳的W H。以前常规的 anchor,我们可以直接计算它和所有 ground truth 的 IoU,然后将它分配给 IoU 最大的那个 gt。但是很不幸现在的 anchor 的 w 和 h 是不确定的,是一个需要预测的变量。我们将这个 anchor 和某个 gt 的 IoU 表示为 。当然我们不可能真的把所有可能的 w 和 h 遍历一遍然后求 IoU 的最大值,所以采用了近似的方法,也就是 sample 一些可能的 w 和 h。理论上 sample 得越多,近似效果越好,但出于效率的考虑,我们 sample 了常见的 9 组 w 和 h。我们通过实验发现,最终结果对 sample 的组数这个超参并不敏感,也就是说不管 sample 多少组,近似效果已经足够。

高质量提议

GA-RPN增强的RPN能够产生比传统RPN更高的质量建议。我们探索如何通过使用这种高质量的方案来提高传统两级探测器的性能。增强后我们发现了以下两点:1. 提议数量减少,2. 增大训练时正样本的 IoU 阈值。一个简单的想法是用提议的ga-rpn取代现有模型中的rpn,并对模型进行端到端的训练。然而这只带来一个百分点的提升。与rpn相比,我们设置了较高的正/负阈值,并且在使用ga-rpn对检测器进行端到端训练时使用较少的样本。

除了端到端的训练外,我们发现GA-rpn方案能够通过一个微调提升一个经过训练的两级检测器。

以下摘自https://mp.weixin.qq.com/s/Sl958JkcJjy-HW9_c-SH4g

在 paper 里提到了 anchor 设计的两个准则,alignment(中心对齐) 和 consistency(特征一致)。其中 alignment 是指 anchor 的中心点要和 feature 的位置对齐,consistency 是指 anchor 的特征要和形状匹配。

  • Alignment

由于每个 anchor 都是由 feature map 上的一个点表示,那么这个 anchor 最好是以这个点为中心,否则位置偏了的话,这个点的 feature 和这个 anchor 就不是非常好地对应起来,用该 feature 来预测 anchor 的分类和回归会有问题。我们设计了类似 cascade/iterative RPN 的实验来证明这一点,对 anchor 进行两次回归,第一次回归采用常规做法,即中心点和长宽都进行回归,这样第一次回归之后,anchor 中心点和 feature map 每一个像素的中心就不再完全对齐。我们发现这样的两次 regress 提升十分有限。所以我们在形状预测分支只对 w 和 h 做预测,而不回归中心点位置。

  • Consistency

这条准则是我们设计 feature adaption 的初衷,由于每个位置 anchor 形状不同而破坏了特征的一致性,我们需要通过 feature adaption 来进行修正。这条准则本质上是对于如何准确提取 anchor 特征的讨论。对于两阶段检测器的第二阶段,我们可以通过 RoI Pooling 或者 RoI Align 来精确地提取 RoI 的特征。但是对于 RPN 或者单阶段检测器的 anchor 来说,由于数量巨大,我们不可能通过这种 heavy 的方法来实现特征和框的精确 match,还是只能用特征图上一个点,也就是 512x1x1 的向量来表示。那么 Feature Adaption 起到了一个让特征和 anchor 对应更加精确的作用,这种设计在其他地方也有可以借鉴之处。

总结

  1. 在 anchor 设计中,alignment 和 consistency 这两个准则十分重要。

  2. 采用两个 branch 分别预测 anchor 的位置和形状,不需要预先定义。

  3. 利用 anchor 形状来 adapt 特征图。

  4. 高质量 proposal 可以使用更少的数量和更高的 IoU 进行训练。

  5. 即插即用,无缝替换。

最后附几张作者实验结果。网络resnet50,σ为0.2和0.5,λ为1和0.1

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值