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

Guided Anchor论文笔记相关推荐

  1. 显著性应用--论文笔记--2019--Aesthetic guided deep regression network for image cropping

    论文信息: 作者:Peng Lua, Hao Zhanga, XuJun Pengb, Xiang Penga 期刊:Signal Processing: Image Communication 任务 ...

  2. 经验 | 深度学习中从基础综述、论文笔记到工程经验、训练技巧

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:本文授权转自知乎作者跑者小越,https://zhuanla ...

  3. 从基础综述、论文笔记到工程经验、训练技巧:值得一看的目标检测好文推荐...

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文授权转自知乎作者跑者小越,https://zhuanlan.z ...

  4. Focal Loss 论文笔记

    论文:<Focal Loss for Dense Object Detection> 论文地址:https://arxiv.org/abs/1708.02002 代码地址: 官方 gith ...

  5. 3d object是什么文件_[单目3D目标检测论文笔记] 3D Bounding Box Estimation

    本文是3D Bounding Box Estimation Using Deep Learning and Geometry的论文笔记及个人理解.这篇文章是单目图像3d目标检测的一个经典工作之一.其目 ...

  6. 论文笔记(一):Temporal Network Embedding with High-Order Nonlinear Information

    论文笔记(一):Temporal Network Embedding with High-Order Nonlinear Information 论文标题:Temporal Network Embed ...

  7. NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing论文笔记

    NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing论文笔记 看论文的笔记,欢迎 ...

  8. [深度学习论文笔记]医学图像分割U型网络大合集

    [深度学习论文笔记]医学图像分割U型网络大合集 2015 U-Net: Convolutional Networks for Biomedical Image Segmentation (MICCAI ...

  9. [论文笔记]User-Centric Ultra-Dense Networks for 5G: Challenges , Methodologies, and Directions

    前言 本文是我所作的第四篇论文笔记,前三篇都是按照"翻译--笔记"的模式进行,本篇将跳过翻译环节直接进行论文的笔记摘录.原因有以下几点:1.翻译步骤对内容理解很有限,理解主要在笔记 ...

  10. [论文笔记] DETR 论文笔记

    DETR 论文笔记 End-to-End Object Detection with Transformers(ECCV 2020) 摘要 引言 相关工作 集合预测 DETR 模型 集合预测损失(Ob ...

最新文章

  1. 信息系统项目管理师案例分析
  2. 通用工具之Pair和Tuple-《C++标准库(第二版)》读书笔记
  3. 素数的判断,以及素数的遍历
  4. 怎么理解回调函数? 回调函数合集
  5. [MEGA DEAL] Ultimate SQL Bootcamp认证捆绑包(98%)
  6. 【python】去除字符串头尾的多余符号
  7. aws dynamodb_如何使用AWS Lambda将DynamoDB集成到您的API中
  8. linux 程序/usr
  9. Servlet3.0
  10. java(模拟王老师、李老师和张老师三个老师同时分发80份学习笔记,每个老师相当于一个线程。)
  11. Kaldi的安装与测试
  12. Beagleboneblack的MLO文件干了些啥
  13. 电子电路:差分放大器分析
  14. ECharts提示框数字保留两位小数
  15. 截取音乐片段的计算机软件,电脑上剪辑音乐的软件
  16. 让人拍案叫绝的创意都是如何诞生的
  17. 【消息中心】架构准备
  18. python-docx中文文档使用小结
  19. Install OE and BitBake
  20. Tomcat无法用命令关闭

热门文章

  1. android 侧滑删除方法,Android recyclerview实现拖拽排序和侧滑删除
  2. python用逗号隔开输出_c语言提取逗号隔开的 python输出用逗号隔开的数字
  3. 微波射频学习笔记9--------品质因数Q值的意义
  4. 遥感影像语义分割论文笔记(一)FarSeg CVPR2020
  5. Newton tangent method
  6. win10装win7进入不了bios的解决方法
  7. 海贼王java7723_我的世界海贼王模组7723首发版
  8. NOI Online #2入门组
  9. 不得不知 云计算入门必备的60条术语
  10. python输入一个整数、输出该整数的所有素数因子_一个正整数的所有质数因子