Guided Anchoring通过在线生成anchor的方式解决常规手工预设anchor存在的问题,以及能够根据生成的anchor自适应特征,在嵌入方面提供了两种实施方法,是一个很完整的解决方案

来源:晓飞的算法工程笔记 公众号

论文: Region Proposal by Guided Anchoring

  • 论文地址:https://arxiv.org/abs/1901.03278
  • 论文代码:https://github.com/open-mmlab/mmdetection

Introduction


  Anchor是许多目标检测算法中一个很重要的机制,但也会带来两个问题:

  • 需要预先设计合适的anchor尺寸和长宽比,如果设计不好,对速度和准确率造成很大影响
  • 为了使anchor达到足够的召回率,需要在特征图上铺设大量的anchor,不仅引入大量负样本,还耗费计算量

  为此,论文提出Guided Anchoring来根据图片特征在线生成anchor。首先判断目标可能出现的位置,然后学习不同位置上的目标的形状,可根据图片特征在线学习稀疏的候选anchor。然而,在线生成的anchor形状各异,固定的感受域可能不匹配其形状,所以Guided Anchoring根据anchor的形状进行自适应特征提取,然后再进行预测框精调与分类。

Guided Anchoring


  Guided Anchoring尝试在线学习不同形状的anchor及其位置,得到在特征图上不均匀分布的anchor集合。目标可用四元组(x,y,w,h)(x,y,w,h)(x,y,w,h)表示,其位置和形状可认为是服从图像III的一种分布:

  公式1包含两部分:1) 给定图片,目标仅存在于某些区域 2) 形状与位置紧密相关。

  基于公式1,论文设计了图1的anchor生成器(Anchor generation),包含位置预测和形状预测两个分支。给定图片III,首先得到特征图FIF_IFI​,位置预测分支根据FIF_IFI​预测该像素为目标位置的概率,形状预测分支则预测像素位置相关的形状,基于两个分支选择概率高于阈值以及每个位置最合适的anchor,得到最终的anchor集合。由于集合中的anchor形状可能差异很大,每个位置需要获取不同大小区域的特征,论文提出特征自适应模块(Feature adaption),根据anchor形状自适应提取特征。
  上述的生成过程是基于单个特征的,网络的整体架构包含FPN,所以为每层都配备Guided anchoring模块,模块参数是层间共享的。

Anchor Location Prediction

  位置预测分支预测特征图FIF_IFI​的概率图p(⋅∣FI)p(\cdot|F_I)p(⋅∣FI​),每项p(i,j∣FI)p(i,j|F_I)p(i,j∣FI​)为该位置是目标中心的概率,对应的输入图片中坐标((i+12)s,(j+12)s)((i+\frac{1}{2})s, (j+\frac{1}{2})s)((i+21​)s,(j+21​)s),sss为特征图的stride。
  在实现时,通过子网NL\mathcal{N}_LNL​进行概率图预测,首先使用1×11\times 11×1卷积提取主干网络特征图FIF_IFI​的objectness分数,再通过element-wise sigmoid函数转化概率。更复杂的子网可以带来更高的准确率,论文采用的是准确率和速度最实惠的结构,最后取高于阈值ϵL\epsilon_LϵL​的像素位置,能够保证在高召回的前提下过滤90%的无关区域。

Anchor Shape Prediction

  形状预测分支的目标是预测每个位置对应目标的最佳形状(w,h)(w,h)(w,h),但由于过大的数值范围,如果直接预测其具体数字会十分不稳定,所以先进行转化:

  形状预测分支输出dwdwdw和dhdhdh,根据公式2转换出形状(w,h)(w,h)(w,h),sss为特征图的stride,σ=8\sigma=8σ=8为人工设置的缩放因子。这个非线性转换可将[0, 1000]映射到[-1, 1],更容易学习。在实现时,通过子网NS\mathcal{N}_SNS​进行形状预测,首先使用1×11\times 11×1卷积获得两维特征图,分别对应dwdwdw和dhdhdh,然后通过公式2进行转换。由于每个位置的anchor都是学习来的,与预设的固定anchor对比,这种学习的anchor召回率更高。

Anchor-Guided Feature Adaptation

  常规的预设anchor方法由于各位置的anchor是一样的,可以对每个位置进行一样的特征提取,然后再调整anchor和预测分类。但Guided Anchoring每个位置的anchor各不一样,理想情况下,较大的anchor需要较大的感受域特征,反之则需要较小的感受域特征,所以论文设计了基于anchor形状的特征自适应模块(anchor-guided feature adaptation component),根据每个位置的anchor形状转换特征:

  fif_ifi​为iii位置的特征,(wi,hi)(w_i, h_i)(wi​,hi​)为对应的anchor形状,NT\mathcal{N}_TNT​为3×33\times 33×3可变形卷积,变形卷积的偏移值由1×11\times 11×1卷积将位置预测分支输出转换获得,fi′f^{'}_ifi′​为自适应特征,用于后续的anchor调整以及分类预测,具体见图1。

Training


Joint objective

  网络的整体损失函数由4部分构成,分别是分类损失、回归损失、anchor位置损失以及anchor形状损失:

Anchor location targets

  假设目标(xg,yg,wg,hg)(x_g, y_g, w_g, h_g)(xg​,yg​,wg​,hg​)在特征图上的映射为(xg′,yg′,wg′,hg′)(x^{'}_g, y^{'}_g, w^{'}_g, h^{'}_g)(xg′​,yg′​,wg′​,hg′​),定义以下三种区域:

  • 中心区域CR=R((xg′,yg′,σwg′,σhg′))CR=\mathcal{R}((x^{'}_g, y^{'}_g, \sigma w^{'}_g, \sigma h^{'}_g))CR=R((xg′​,yg′​,σwg′​,σhg′​)),区域内均为正样本点
  • 忽略区域$IR=\mathcal{R}(x^{’}_g, y^{’}_g, \sigma_2 w^{’}_g, \sigma_2 h^{’}_g) $\ CRCRCR,σ2>σ\sigma_2 > \sigmaσ2​>σ,区域内的均为忽略点,不参与训练
  • 外部区域OR为非IR和CR的区域,区域内均为负样本点

  主干网络使用了FPN,FPN的每层应该只负责特定大小范围内的目标的训练。由于相邻层的特征相似,所以将IR区域映射到相邻层,这时的IR区域不考虑CR区域,区域内同样不参与训练,如图2所示。当多个目标重叠时,CR区域优先于IR区域,IR区域优先于OR区域,训练采用Focal loss。

Anchor shape targets

  首先,定义动态anchor awh={(x0,y0,w,h)∣w>0,h>0}a_{wh}=\{(x_0, y_0, w, h)| w> 0, h > 0\}awh​={(x0​,y0​,w,h)∣w>0,h>0}与GT间的最优问题为:

  如果对每个位置都进行公式5的求解,这计算量会相当大,为此,论文用采样的方法来逼近公式5,采样的范围为常见的anchor样例,比如RetinaNet的9种anchor。对于每个位置,选择IoU最大的anchor作为公式5的结果。采样的范围越大,anchor的生成结果更准,但会带来更多的额外计算量,anchor的采用smooth-L1训练:

The Use of High-quality Proposals


  将Guided Anchoring嵌入RPN得到增强型GA-RPN,与原版进行对比,从图3可以看到:

  • GA-RPN的正样本数量更多
  • GA-RPN的高IoU候选框数量更多

  从结果来看,GA-RPN的效果比RPN好很多,论文直接将RPN替换GA-RPN仅带来小于1的AP提升。根据观察发现,使用高质量候选框的前提是,需要根据候选框的分布来调整训练数据的分布。所以,在使用GA-RPN时,需要设置更高的正负样本阈值,让网络更加关注高质量的候选框。另外,论文发现GA-RPN也可以fine-tune的形式boost两阶段检测器的性能,给定训练好的检测模型,将RPN替换为GA-RPN进行几轮迭代,能带来不错的性能提升。

Experiments


  与各种候选框方法进行对比。

  嵌入效果对比。

  fine-tune对比。

Conclusion


  Guided Anchoring通过在线生成anchor的方式解决常规手工预设anchor存在的问题,以及能够根据生成的anchor自适应特征,在嵌入方面提供了两种实施方法,是一个很完整的解决方案。但有个不好的点在于anchor target的生成,为了保证性能弄得不够完美,希望有人能提出更准确且高效的公式5解决方案。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

Guided Anchoring:在线稀疏anchor生成方案,嵌入即提2AP | CVPR 2019相关推荐

  1. 西工大开源拥挤人群数据集生成工具,大幅提升算法精度 | CVPR 2019

    作者 | 周强(CV君) 转载自 我爱计算机视觉(公众号id:aicvml) 近年来,因为拥挤人群计数在视频监控.公共安全方面的应用广泛,引起了不少学者的关注. 简单说来这个任务就是给定图像,返回该图 ...

  2. 【论文阅读】Region Proposal by Guided Anchoring

    论文地址:https://arxiv.org/abs/1901.03278v2 代码地址: mmdetection (https://github.com/open-mmlab/mmdetection ...

  3. 【目标检测系列:十】Anchor Free | GARPN | Region Proposal by Guided Anchoring

    CVPR 2019 商汤 Region Proposal by Guided Anchoring https://github.com/open-mmlab/mmdetection DCN ancho ...

  4. 【论文阅读】GA-RPN:Region Proposal by Guided Anchoring

    论文名称:Region Proposal by Guided Anchoring 作者: Jiaqi Wang \ Kai Chen \ Shuo Yang \ Chen Change Loy \ D ...

  5. 一起学习下一线大厂的分布式唯一ID生成方案!

    来源 | http://www.toutiao.com/i6682672464708764174 一.前言 分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表.因为数据量巨大一张表无法 ...

  6. 分布式唯一ID的几种生成方案

    分布式ID的特性 唯一性:确保生成的ID是全网唯一的. 有序递增性:确保生成的ID是对于某个用户或者业务是按一定的数字有序递增的. 高可用性:确保任何时候都能正确的生成ID. 带时间:ID里面包含时间 ...

  7. 编码 data:text/html;c,[网页设计]图片base64编码利器:在线 Data URI 生成工具 – Duri.me...

    这篇文章介绍一款在线的图片 base64 编码利器 - Duri.me.data URI 图片是 base64编码的图片文件,可以嵌入到 HTML 或者 CSS 文件中,能够减少 HTTP 请求,提高 ...

  8. 全局唯一ID生成方案

    2019独角兽企业重金招聘Python工程师标准>>> 全局唯一ID生成方案对比 - http://cenalulu.github.io/mysql/guid-generate/ 转 ...

  9. 一线大厂的分布式唯一ID生成方案是什么样的?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 一.前言 分布式系统中我们会对一些数据量大的业务进行分拆,如:用户 ...

  10. vue中获取到的为什么图片地址会自动拼接上localhost:8080_前端骨架屏自动生成方案(很实用!收藏)...

    来源:花满楼 https://zhuanlan.zhihu.com/p/74403911 什么是骨架屏? 什么是骨架屏呢?骨架屏(Skeleton Screen)是指在页面数据加载完成前,先给用户展示 ...

最新文章

  1. Java还欠缺什么才能真正支持机器/深度学习?
  2. asp.net七层架构是指什么
  3. VTK:Rendering之InterpolateCamera
  4. 我们用过的linux系统
  5. 八、开发者工具和指南(四) Orchard dependencies and libraries
  6. Ubuntu下跑通py-faster-rcnn、详解demo运作流程
  7. 7.上传自己的代码到 composer
  8. x1c更改语言系统后开机超慢,大明:电脑重装系统后一个月变慢?简单五步设置,解决卡慢问题...
  9. 手机Root与刷机教程
  10. iPhone显示返回的是html界面,iPhone X怎么回到主界面?苹果X返回主页的两种方法...
  11. Linux是什么?它是哪个国家开发的
  12. Power Apps从入门到放弃教程
  13. 案例研究:什么是自动驾驶?
  14. python使用微信设置-用Python玩微信跳一跳黑科技详细使用教程
  15. std::accumulate的具体用法
  16. c语言按键事件判断函数kbhit和按键获取函数getch
  17. 攻防世界逆向高手题之dmd-50
  18. 爬虫训练场项目,1小时掌握 Bootstrap 网格系统
  19. 软件测试面试如何介绍自己的项目,【松勤软件测试】面试时如何陈述工作经历?...
  20. 寻找最大的钻石有多难

热门文章

  1. python中科院_中科院闹乌龙,Python“换皮”成木兰
  2. 食品生产设备用什么清洗消毒效果比较好?
  3. 摸鱼也有底线,如何克服社会性懈怠
  4. android 仿QQ表情,长按查看动图,移动手指可切换图片
  5. 程序员跳槽时,如何正确做好职业规划?
  6. umi封装request方法 ts版
  7. 后盾人tp5教程_5个出色的应用程序以开放数据为后盾
  8. BNN网络量化与8bit量化之间关系
  9. html中style写啥,style标签的作用
  10. linux调整刷新率,在Linux操作系统下调整屏幕刷新率的方法