《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的定义由及宽高和位置坐标组成,可以写成如下的联合概率分部:

上面的式子告诉我们:

  1. anchor在不同的位置有不同的出现概率,即anchor只 应当在特定的位置出现。
  2. 每个位置上anchor的宽高应该和其位置有关系。

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

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

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

Anchor Location Target

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

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

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

Anchor Location Target

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

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

shape的loss function定义:

Feature Adaption

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

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

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》阅读笔记相关推荐

  1. trainer setup_Detectron2源码阅读笔记-(一)Configamp;Trainer

    一.代码结构概览 1.核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可 ...

  2. VoxelNet阅读笔记

    作者:Tom Hardy Date:2020-02-11 来源:VoxelNet阅读笔记

  3. Transformers包tokenizer.encode()方法源码阅读笔记

    Transformers包tokenizer.encode()方法源码阅读笔记_天才小呵呵的博客-CSDN博客_tokenizer.encode

  4. 源码阅读笔记 BiLSTM+CRF做NER任务 流程图

    源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...

  5. Mina源码阅读笔记(一)-整体解读

    2019独角兽企业重金招聘Python工程师标准>>> 今天的这一节,将从整体上对mina的源代码进行把握,网上已经有好多关于mina源码的阅读笔记,但好多都是列举了一下每个接口或者 ...

  6. “CoreCLR is now Open Source”阅读笔记

    英文原文:CoreCLR is now Open Source 阅读笔记如下: CoreCLR是.NET Core的执行引擎,功能包括GC(Garbage Collection), JIT(将CIL代 ...

  7. QCon 2015 阅读笔记 - 团队建设

    QCon 2015阅读笔记 QCon 2015 阅读笔记 - 移动开发最佳实践 QCon 2015 阅读笔记 - 团队建设 中西对话:团队管理的五项理论和实战 - 谢欣.董飞(今日头条,LinkedI ...

  8. 05《软件需求模式》阅读笔记

    剩下的两个阅读笔记写第二部分.各类需求模式,共八个领域和它的需求模式,这一次写前四个. 基础需求模式,它是所有种类的系统都可能需要的一些东西.系统间接口需求模式使用系统间接口需求模式定义被定义的系统和 ...

  9. [置顶] Linux协议栈代码阅读笔记(一)

    Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...

  10. 大型网站技术架构:核心原理与案例分析阅读笔记二

    大型网站技术架构:核心原理与案例分析阅读笔记二 网站架构设计时可能会存在误区,其实不必一味追随大公司的解决方案,也不必为了技术而技术,要根据本公司的实际情况,制定适合本公司发展的网站架构设计,否则会变 ...

最新文章

  1. am5718_AM5718如何扩大内存 - Sitara™ Cortex-A8 和 ARM9 微处理器 - Sitara™ Cortex-A8 和 ARM9 微处理器 - E2E™ 中文支持论坛...
  2. php数据库额外属性,PHP神秘的额外数据库插入
  3. Python之PIL库的运用、GIF处理h
  4. 【数据采集】将16进制字符串转化为Double类型输出(依照IEEE754标准)
  5. python xml实例_python解析xml文档实例
  6. 深交所向华谊兄弟发问询函:是否存在对本期业绩“大洗澡”
  7. webpack笔记_(1)_webpack 安装
  8. 59 | 测试专栏特别放送 | 答疑解惑第七期
  9. 深入了解TMG企業版的獨立陣列
  10. ps 显示当前进程的状态
  11. vivo nex免Root使用空调狗
  12. Java如何实现阶梯字符型输出
  13. MTK6737 WCN省晶体问题
  14. exoplay切换全屏_02.视频播放器整体结构
  15. 后台ui大全(有这些你就够了)
  16. 雨夜,谁动了你的雨伞他的心房?
  17. 图片缩略图,CMYK图片变红问题解决
  18. python 图片文字识别orc
  19. 常用计算机字体的后缀名是,自考计算机应用基础试题及参考答案
  20. 配色,蓝色加点橙色好看

热门文章

  1. 【Java - L - 0704】- e - 二分查找
  2. 在线预览服务器搭建,『配置』服务器搭建 Office Online Server2016 实现文档预览 番外 错误篇...
  3. oracle的mins,分钟的英文缩写,10min还是10mins!
  4. VR乒乓球项目Unity3D 开发经验整理,4简单而有效的AI
  5. unity的Rotation值如何修改
  6. 一站式文本标注工具doccano(你值得拥有)
  7. 2D Skinned Mesh(3D的完全翻版 带旋转)
  8. python制作地图
  9. 如何设置背景图片的大小?
  10. Nerv实战 - 京东首页改版小结