Region Proposal by Guided Anchoring,一种有效的基于锚点几何形状的特征适应模块,CVPR2019

本文提出了一种新的区域提议方法——引导锚定,利用语义特征指导锚点生成,通过预测位置和形状,生成稀疏且形状各异的锚点,提升了目标检测性能。通过特征适应模块解决特征与锚点不一致的问题,实验证明了其在不同检测器上的性能提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文:Region Proposal by Guided Anchoring
作者:港中文大学

Abstract

区域锚是现代目标检测技术的基石。最先进的探测器大多依赖于密集的锚定方案,锚定在空间域上用预定义的一组比例和宽高比均匀采样。在本文中,我们将重新审视这一基础阶段。我们的研究表明,它可以更有效地完成。具体来说,我们提出了一种替代方案,称为引导锚定(Guided Anchoring),它利用语义特征来引导锚定。该方法联合预测目标中心可能存在的位置以及不同位置的尺度和宽高比。在预测锚点形状的基础上,我们通过一个特征适应模块来缓解特征不一致性。我们也研究使用高质量的建议来提高检测性能。锚定方案可以无缝集成到提议方法和检测器中。

1. Introduction

合理的锚点设计有两条基本原则:对准和一致性。首先,使用卷积特征作为锚点表示,锚点中心需要与特征图像素良好对齐。第二,接受域和语义范围应与特征图中不同位置的锚点的比例和形状一致。滑动窗是一种简单而广泛采用的锚固方案。对于大多数检测方法,锚点都是由这样一个统一的方案定义的,其中特征图中的每个位置都与k个锚点关联,这些锚点具有预定义的比例尺和宽高比

基于锚的检测管道在基准[6,20,7,5]和实际系统中都被证明是有效的。但上述均匀锚固方案不一定是最优的锚固方式。该方案可能导致两个困难:(1)必须为不同的问题预定义一套固定纵横比锚。错误的设计可能会影响探测器的速度和精度。(2)为了保持提案的足够高的召回率,需要大量的锚点,而锚点大多对应的是与利益对象无关的虚假候选人。同时,大量的锚点会导致巨大的计算成本,特别是当管道在提案阶段涉及到一个重分类器时。

在这项工作中,我们提出了一种更有效的方法来准备锚点,目的是减轻精选先验的问题。我们的方法是由观察到物体不是均匀分布在图像的动机。物体的尺度也与图像的内容、位置和场景的几何形状密切相关。根据这种直觉,我们的方法分两个步骤生成稀疏锚点:首先识别可能包含对象的子区域,然后确定不同位置的形状。

可学习锚形状很有前景,但它打破了之前提到的一致性规则,因此对学习锚表示以实现准确分类和回归提出了新的挑战。锚的比例和长宽比现在是可变的,而不是固定的,所以不同的特征地图像素必须学习适应对应锚的自适应表示。

一种有效的基于锚点几何形状的特征适应模块。

我们利用上述的引导锚定和特征适应方案,构建了一个引导锚定区域建议网络(GA-RPN)。由于采用了动态预测锚点,与采用密集锚点方案的RPN基线相比,我们的方法提高了9.1%的召回率,锚点数量大幅减少了90%。通过预测尺度和宽高比,而不是根据预定义的列表固定它们,我们的方案能够更有效地处理高或宽的对象。除了区域建议外,引导锚定方案可以很容易地集成到任何依赖锚定的探测器中。我们的方案可以获得一致的性能增益。例如,GA-Fast-RCNN、GA-Fast-RCNN和GA-RetinaNet通过滑动窗口锚定,在COCO数据集上分别提高了2.2%、2.7%和1.2%的总体地图。此外,我们探索了高质量建议的使用,并提出了一个使用GARPN建议的微调计划,可以提高任何训练模型的性能,例如,它可以在3个时代内将完全收敛的Faster R-CNN模型从37.4%提高到39.6%。

本研究的主要贡献体现在几个方面。(1)我们提出了一种新的锚定方案,该方案能够预测非均匀和任意形状的锚定,而不是密集和预定义的锚定。(2)利用两种条件分布因子对联合锚杆分布进行了拟合,并设计了两个模块分别对其进行建模。(3)研究了特征与对应锚点对齐的重要性,设计了特征自适应模块,根据锚点形状细化特征。(4)我们调查了两级探测器的高质量建议的使用,并提出了一个方案来提高训练模型的性能。

博主的思考:

1、这个研究是否锚框具有意义?锚框被认为在某些方案中不会有明显影响,例如ATSS。当然在某些方案中锚的比例和长宽还是有用的,例如yolov2

2、超参数是不是还是很多?很多超参数就比较麻烦,不确定性也大。我们带着这个思考继续看看论文。

相关工作

与两阶段方法相比 单级管道跳过对象建议生成和 在一次评估中预测边界框和分数。虽然省略了建议步骤,单级方法仍然使用滑动窗口产生的锚箱。例如,SSD[21]和DenseBox[14]密集地从特征图生成锚点,并像多类RPN一样评估它们。RetinaNet[19]引入focal 损失来解决前景-背景级不平衡。YOLOv2[26]采用滑动窗口锚点进行分类和空间位置预测,比之前的方法有更高的查全率。

我们将提出的方法与常规方法的区别总结如下:(i)以往的方法(单级、两级、多级)主要还是依靠滑动窗口密集均匀的锚点。我们抛弃滑动窗口方案,提出了一个更好的对应方案来引导锚定并生成稀疏锚,这是以前没有研究过的。(ii)级联检测器采用多个阶段逐步细化检测边界盒,通常会导致模型参数增多,推理速度降低。这些方法采用RoI池化或RoI对齐来提取包围盒的对齐特征,对于方案生成或单级检测器来说成本过高。(iii)无锚方法[14,15,25]通常管道简单,最终检测结果在一个阶段内即可得出。由于缺乏主播以及进一步的基于主播的细化,他们缺乏处理复杂场景和案件的能力。我们的重点是稀疏和非均匀的锚定方案,并使用高质量的建议来提高检测性能。为了实现这一目标,我们必须解决锚定方法特有的失调和不一致问题。(iv)部分单弹探测器[33,30]通过多元回归分类对锚点进行细化。我们的方法与他们有很大的不同。我们并没有逐步完善锚点,相反,我们预测锚点的分布,并将其分解为位置和形状。传统方法没有考虑锚点与特征之间的对齐,对锚点(以[x, y, w, h]表示)进行多次回归,破坏了对齐和一致性。相反,我们强调了这两个规则的重要性,因此我们只预测锚点形状,但固定锚点中心,并根据预测形状适应特征。

方法

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

论文实现方式如下图:
在这里插入图片描述

如图所示,在原始 RPN 的特征图基础上,我们采用两个分支分别预测 anchor 位置和形状,然后结合在一起得到 anchor。之后采用一个 Feature Adaption 模块进行 anchor 特征的调整,得到新的特征图供之后的预测(anchor 的分类和回归)使用。整个方法可以 end-to-end training,而且相比之前只是增加了 3 个 1x1 conv 和一个 3x3 deformable conv,带来的模型参数量的变化很小。

位置预测

位置预测,1个 1x1 conv , 位置预测分支生成一个表示对象可能位置的概率图

在我们的公式中,概率映射p(i, j|FI)是使用一个子网络NL来预测的。该网络对基本特征映射FI进行1 × 1的卷积,以获得对象度得分的映射,然后通过元素方向的sigmoid函数将其转换为概率值。虽然更深层次的子网络可以做出更准确的预测,但我们从经验上发现,卷积层之后的sigmoid变换在效率和准确性之间取得了良好的平衡。
根据生成的概率图,我们通过选择相应概率值高于预定义阈值L的位置,来确定对象可能存在的活动区域。这个过程可以过滤掉90%的区域,同时保持同样的召回率。如图4(b)所示,天空、海洋等区域被排除在外,锚点则集中在人群和冲浪板周围。由于不需要考虑那些被排除的区域,为了更有效的推理,我们将随后的卷积层替换为掩蔽卷积[17,28]。

位置预测分支的目标是预测那些区域应该作为中心点来生成 anchor,是一个二分类问题。不同于 RPN 或者 segmentation 的分类,这里我们并不是预测每个点是前景还是背景,而是预测是不是物体的中心。

我们将整个 feature map 的区域分为物体中心区域,外围区域和忽略区域,大概思路就是将 ground truth 框的中心一小块对应在 feature map 上的区域标为物体中心区域,在训练的时候作为正样本,其余区域按照离中心的距离标为忽略或者负样本,具体设计在 paper 里讲得比较清楚。通过位置预测,我们可以筛选出一小部分区域作为 anchor 的候选中心点位置,使得 anchor 数量大大降低。在 inference 的时候,预测完位置之后,我们可以采用 masked conv 替代普通的 conv,只在有 anchor 的地方进行计算,可以进行加速。

形状预测

形状预测,2个 1x1 conv ,而形状预测分支则预测与位置相关的形状

虽然我们的目标是预测宽度w和高度h的值,但我们发现,直接预测这两个数字是不稳定的,因为它们的范围很大。相反,我们采用以下转换:在这里插入图片描述
形状预测分支将输出dw和dh,然后像上面一样映射到(w, h),其中s为stride, σ为经验尺度因子(在我们的实验中σ = 8)。这种非线性变换将输出空间从近似[0,1000]投射到[−1,1],从而获得更容易且稳定的学习目标。在我们的设计中,我们使用了一个子网络NS来进行形状预测,它包括一个1 × 1卷积层,生成一个包含dw和dh值的双通道映射,以及一个实现式(2)的元素级变换层。
请注意,这种设计与传统的锚定方案本质上不同,因为每个位置只与一个动态预测形状的锚定相关联,而不是一组预定义形状的锚定。实验表明,由于位置和形状之间的密切关系,我们的方法比基线方法有更高的召回率。由于它允许任意的纵横比,我们的方案可以更好地捕捉那些极高或极宽的对象。

形状预测分支的目标是给定 anchor 中心点,预测最佳的长和宽,这是一个回归问题。按照往常做法,当然是先算出 target,也就是该中心点的 anchor 最优的 w 和 h,然后用 L1/L2/Smooth L1 这类 loss 来监督。然而这玩意的 target 并不好计算,而且实现起来也会比较困难,所以我们直接使用 IoU 作为监督,来学习 w 和 h。既然我们算不出来最优的 w 和 h,而计算 IoU 又是可导的操作,那就让网络自己去优化使得 IoU 最大吧。后来改用了 bounded IoU Loss,但原理是一样的。

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

生成 anchor

生成 anchor

在得到 anchor 位置和中心点的预测之后,我们便可以生成 anchor 了,如下图所示。这时的 anchor 是稀疏而且每个位置不一样的。采用生成的 anchor 取代 sliding window,AR (Average Recall) 已经可以超过普通 RPN 4 个点了,代价仅仅是增加两个 1x1 conv。

在这里插入图片描述

特征适应模块

Feature Adaption,1个 3x3 deformable conv,由于锚的形状可以变化,不同位置的特征应该捕捉不同范围内的视觉内容。考虑到这一点,我们进一步引入了特征适应模块,该模块根据锚点形状对特征进行适应。

在传统的RPN或采用滑动窗口方案的单级探测器中,锚点在整个特征图上是一致的,即锚点在每个位置的形状和比例尺相同。这样feature map可以学习一致的表示。然而,在我们的方案中,锚的形状因地点而异。在此条件下,我们发现遵循之前约定的[27]可能不是一个好的选择,即在feature map上统一应用一个全卷积分类器。理想情况下,大型锚点的特性应该在一个较大的区域内编码内容,而小型锚点的特性应该相应地具有较小的作用域。根据这种直觉,我们进一步设计了锚指向的特征自适应组件,该组件将根据底层锚的形状对每个独立位置的特征进行变换,如下在这里插入图片描述
其中fi为第i个位置的特征,(wi, hi)为对应的锚点形状。对于这种位置相关的变换,我们采用一个3 × 3可变形的卷积层[4]来实现NT。如图1所示,我们首先从锚点形状预测分支的输出中预测偏移场,然后对有偏移量的原始feature map进行变形卷积,得到fi。在适应化的feature的基础上,进行进一步的分类和bounding-box回归。

故事本可以就此结束,我们用生成的 anchor 和之前的特征图来进行 anchor 的分类和回归,涨点美滋滋。但是我们发现一个不合理的地方,大家都是同一层 conv 的特征,凭啥我就可以比别人优秀一些,代表一个又长又大的 anchor,你就只能代表一个小小的 anchor。

不合理的原因一方面在于,在同一层 conv 的不同位置,feature 的 receiptive field 是相同的,在原来的 RPN 里面,大家都表示相同形状的 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 的效果)

通过这样的操作,达到了让 feature 的有效范围和 anchor 形状更加接近的目的,同一个 conv 的不同位置也可以代表不同形状大小的 anchor 了。从表格可以看到,Feature Adaption 还是很给力的,带来了接近 5 个点的提升。
在这里插入图片描述

3.5. The Use of High-quality Proposals

故事到这里其实也可以结束了,但是我们遇到了和之前一些改进 proposal 的 paper 里相同的问题,那就是 proposal 质量提升很多(如下图),但是在 detector 上性能提升比较有限。在不同的检测模型上,使用 Guided Anchoring 可以提升 1 个点左右。明明有很好的 proposal,但是 mAP 却没有涨很多,让人十分难受。

经过一番探究,我们发现了以下两点:1. 减少 proposal 数量,2. 增大训练时正样本的 IoU 阈值(这个更重要)。既然在 top300 里面已经有了很多高 IoU 的 proposal,那么何必用 1000 个框来训练和测试,既然 proposal 们都这么优秀,那么让 IoU 标准严格一些也未尝不可。

这个正确的打开方式基本是 Jiaqi 独立调出来的,让 performance 一下好看了很多。通过这两个改进,在 Faster R-CNN 上的涨点瞬间提升到了 2.7 个点(没有加任何 trick),其他方法上也有大幅提升。

通过改进的引导锚定方案(GA-RPN)可以产生比传统RPN更高质量的建议。我们探索如何通过使用这些高质量的方案来提高常规两级探测器的性能。首先,我们研究RPN和GA-RPN生成的proposal的IoU分布,如图3所示。ga -RPN提案相对于RPN提案有两个显著优势:(1)积极提案的数量更大,(2)高IoU提案的比例更显著。
在这里插入图片描述
在这里插入图片描述

谈谈 anchor 设计准则

我们在 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 对应更加精确的作用,这种设计在其他地方也有可以借鉴之处。

结论

我们提出了引导锚定方案,它利用语义特征来引导锚定。它通过联合预测位置和依赖位置的锚点形状,生成任意形状的非均匀锚点。

在 anchor 设计中,alignment 和 consistency 这两个准则十分重要。采用两个 branch 分别预测 anchor 的位置和形状,不需要预先定义。利用 anchor 形状来 adapt 特征图。高质量 proposal 可以使用更少的数量和更高的 IoU 进行训练。即插即用,无缝替换。

参考

https://zhuanlan.zhihu.com/p/55854246

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值