Guided Anchor论文笔记

Region Proposal by Guided Anchoring 出自mmlab的陈凯,作者提出一种模型自己生成anchor的策略来替换常规的RPN层,起到获取更加稀疏更高质量Proposal的目的。

痛点

  • 不同数据集需要人手工调整anchor的尺度和比例参数,这些anchor参数极大影响后续的检测结果。

  • 想要获取更高的proposal召回率,需要铺设更多的anchor,但这无疑拖慢了模型计算,同时更多的anchor会一定程度干扰训练优化

因此,模型自己生成anchor成为一个很好解决方案!
模型结构图
Guided Anchoring文章对两个anchor设计原则做了较为详细的分析并以此提出anchor生成的三个部分:anchor location, shape generation and feature adaptation

anchor设计原则:alignment and consistency

Firstly, to use convolutional features as anchor representations, anchor centers need to be well aligned with feature map pixels.
Secondly,the receptive fifield and semantic scope should be consistentwith the scale and shape of anchors on different locations of a feature map.

作者的表述

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

我的理解
首先alignment对齐操作是为了获取更好的anchor特征表征服务的,作者也提到,一个anchor仅使用一个向量特征表征,这表明anchor位置与特征表征位置之间存在敏感性,anchor中心的偏移会导致与特征的不匹配,进而影响anchor生成的质量。因此,作者将anchor生成分解成两个步骤:解耦anchor 位置预测与anchor 宽高预测。从上面的guided anchor生成图可以看出,两条并行分支分别预测anchor位置与尺度信息。

关于consistency,一开始不太理解这一步骤的意义,其实只要搞明白一点:feature adaptation主要是为anchor生成服务的即可。这里常把anchor特征与proposal特征这两个概念混淆,anchor特征指用于anchor生成的特征,是一个向量,而proposal特征指经过roi pooling/align获取的特征,两者服务对象不同。在一致性原则中,作者强调要解决的问题是anchor特征表征之间的一致性,这个一致性在原来的预定义anchor设置中是几乎不存在的,因为特征图上每个位置预铺设的anchor在尺度和比例上都一致,模型能容易学习到这种一致性,因此在特征表征上也保持着一致性。但当anchor由模型自己生成,不同位置的anchor在尺度和比例上相差较大,要么采用类似roi pooling的操作来保持anchor特征的一致性,要么将anchor的信息嵌入到anchor特征表征中去,本文提出的guided anchor即为后者,显然后者操作起来更加轻量便捷。具体通过DCN来修正原始特征图的特征表征,看下图,作者借助DCN将anchor形状分支预测得到的宽高信息通过1*1卷积的方式去预测DCN的offset,进而使得DCN计算得以充分考虑到anchor shape,这一步操作后anchor在形状和特征表征上更加的匹配,一定程度缓解了anchor特征表征的consistency问题。
在这里插入图片描述
anchor 生成策略
首先我们思考 anchor 是如何生成的。我们通常使用 4 个数 (x, y, w, h) 来描述一个 anchor,即中心点坐标和宽高。我们将 anchor 的分布 formulate 成如下公式。
在这里插入图片描述

Anchor 的概率分布被分解为两个条件概率分布,也就是给定图像特征之后 anchor 中心点的概率分布,和给定图像特征和中心点之后的形状概率分布,这也是论文标题中 Guided Anchoring 的由来。Sliding window 可以看成是 p(x,y|I)是均匀分布而p(w,h|x,y,I) 是冲激函数的一个特例。
前面在讲alignment设计原则的时候也提到,为了缓解anchor alignment问题,作者将 anchor location和anchor shape预测分两步进行,宽高预测时不修改位置,互不干扰。

feature adaptation
这一步骤对应anchor设计的consistency原则,再分析一遍,同一个feature map上的感受野是一样的,在原有的RPN通过预铺设anchor设计上,不同feature位置对应的anchor分布均一致,因此anchor特征表征之间存在一致性。但现在每个anchor都是自己生成的,拥有不同的尺度与形状,那么feature map上不同位置的anchor特征与anchor 形状不匹配。作者通过DCN来修正原始的特征图,而DCN的offset通过anchor预测得到的宽高由1*1的卷积预测而得,通过这样的方式将anchor形状信息嵌入anchor特征表征中去,缓解anchor形状与anchor特征不匹配的问题。作者强调,直接使用原特征图来预测offset提升有限,这是因为没有显示将anchor形状信息嵌进去。从召回率来看,feature adaptation这一步十分重要,涨点十分醒目。
在这里插入图片描述
优化目标函数
联合anchor 位置,宽高和bbox cls和reg同时优化。其中anchor分类分支采用focal loss,wh回归分支采用bounded iou loss。
在这里插入图片描述
anchor location targets
作者采用FPN结构来预测anchor位置和形状信息,通过FPN完成多尺度预测,不同FPN层仅预测一定范围内的GT目标,将目标中心区域设置为正样本,周边区域设为忽略区域,其余区域设为负样本区域。作者还考虑了相邻特征图之间的影响。具体来说,每一个级别特征图仅对一定尺度的目标赋予标签,相邻特征图相同区间被设置为忽略区域,如下图所示,白羊被分配至第四层特征图负责预测,第三层的对应区域全被设置为忽略;黑羊由第二层特征图预测,相邻两层特征图对应预测均被置为忽略。对于重叠目标,中心区域压制忽略区域,忽略区域压制负样本区域。
在这里插入图片描述
anchor shape targets
anchor shape中的宽高标签设置有点麻烦,主要是两个问题:anchor与哪个GT匹配,anchor如何回归。以往预铺设anchor操作中,由anchor与gt之间的IOU决定anchor与哪些GT匹配进而赋予标签,但现在anchor的宽高是预测而得,是动态变化的。为了解决这个问题,作者首先定义可变宽高与一个GT之间的IOU
在这里插入图片描述

注意到,任意位置的anchor和GT之间的分析也是极其复杂的,作者采用近似方法来解决。给点一个位置,从常见wh分布中采样wh来模拟所有wh的枚举,然后计算采样的anchor与GT之间的IOU,采用最大IOU来近似vIoU。作者采用RetinaNet的9个anchor配置来完成实验,实验也表明,采样anchor对最终性能影响不大。作者采用bounded iou loss来直接优化wh,公式如下:
在这里插入图片描述

关于高质量proposal是正确打开方式
直觉来说,提升proposal的质量可以直接提升最终的检测性能,很不幸,并没有。作者通过实验发现:1. 减少 proposal 数量,2. 增大训练时正样本的 IoU 阈值(这个更重要)可以有效提升检测效果,作者说道既然在 top300 里面已经有了很多高 IoU 的 proposal,那么何必用 1000 个框来训练和测试,既然 proposal 们都这么优秀,那么让 IoU 标准严格一些也未尝不可。
Anyway,通过上述策略,最终检测结果涨点明显!
在这里插入图片描述
超参设置
guided anchor消除了anchor的设置,但也带来了不少额外的超参设置,例如anchor 位置预测分支的过滤anchor阈值(作者实验表明阈值调大略微降低召回率,但大大降低anchor数量),还有anchort arget中涉及的正负样本区域划分的区域缩放因子,还有损失权重这些。好在作者对比发现这几项超参对结果影响不明显。

在这里插入图片描述
总结

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

在这里插入图片描述
在这里插入图片描述

参考:陈凯(作者)Guided anchor

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值