前言

作者提出设计anchor时的两个准则:

  • aligment——使用卷积特征作为anchor的表示特征,anchor的中心要与特征图中的像素对齐;
  • consistency——在特征图的不同位置,感受野的大小是一致的,因此不同位置anchor的尺度和形状也要保持一致。

本文希望得到的是稀疏的、根据位置可变的anchor。作者观察到,图像中的目标并不是均匀分布的,目标的尺度与图像的内容、场景的位置及几何形状密切相关。由此作者提出生成稀疏的anchor的步骤

  1. 首先确定可能包含目标的子区域;
  2. 然后确定不同位置anchor的形状。

这种方式可以让anchor自己学习形状的设计,但是这违背了之前提到的consistency这一准则。anchor的尺度和长宽比现在是可变的,那么不同的特征图的像素要根据相对应的anchor学习调整特征表示。本文设计了feature adaption模块来修正特征图使之与 anchor 形状更加匹配

本文做出的贡献:

  • 本文提出了新的anchor机制,可以预测稀疏的、任意形状的anchor;
  • 将anchor的联合分布分解为两个条件分布,并分别使用模型进行建模;
  • 设计feature adaption模块来修正特征图使之与 anchor 形状更加匹配;
  • 研究了two-stage检测器高质量的proposal,并提出一种提高已训练的模型的性能。

Guided Anchoring

一个anchor的形状和位置可以由(x,y,w,h)(x,y,w,h)(x,y,w,h)来表示,其中(x,y)(x,y)(x,y)是anchor中心点的坐标,www和hhh分别是宽和高。给定一个输入图像III,anchor的分布可以被分解为两个条件分布:

anchor的概率分布被分解为两个条件概率分布,也就是给定图像特征之后anchor中心点的分布,和给定图像特征和中心点之后anchor形状的概率分布。根据这个公式,anchor的预测可以被分为两个步骤,anchor位置预测和形状预测。anchor生成模型的结构如下:

图中红色虚线框内的部分就是anchor生成模型,它包括位置预测分支和形状预测分支。给定一个输入图像III,首先得到特征图FIF_{I}FI​,位置预测分支在FIF_{I}FI​上生成一个概率map,说明目标可能会出现的位置;形状预测分支在这些位置上预测最有可能出现的形状。后来结合两个分支的输出结果,通过比较预测的概率值超过一定阈值来得到一些可能的位置,然后在这些位置上结合最有可能的形状来生成一系列anchor。之后采用feature adaption模块,根据anchor的形状来对特征进行调整,得到新的特征图FI′F^{'}_{I}FI′​供之后的预测(anchor 的分类和回归)使用。

anchor生成模型结合了FPN,在多层级的特征图上进行anchor的生成。同时,anchor生成的参数在所有层级之间都是共享的,因此效率较高。

1. anchor位置的预测

位置预测分支生成一个和输入特征图FIF_{I}FI​大小相同的概率map p(⋅∣FI)p(·|F_{I})p(⋅∣FI​),在概率map上的概率值p(i,j∣FI)p(i,j|F_{I})p(i,j∣FI​)与原始输入图像III上的点((i+1/2)s,(j+1/2)s)((i+1/2)s,(j+1/2)s)((i+1/2)s,(j+1/2)s)相对应,其中sss是特征图的步长。这个概率值说明了目标中心在这个位置上存在的可能性的大小。

p(i,j∣FI)p(i,j|F_{I})p(i,j∣FI​)由子网NLN_{L}NL​产生,这个子网在FIF_{I}FI​上采用1 × 1的卷积得到objectness score的map,然后通过一个element-wise的sigmoid函数转换为概率值。虽然一个更深的子网可以得到更精确的预测结果,但这种方法可以使速度和精度之间达到平衡。

基于概率map p(⋅∣FI)p(·|F_{I})p(⋅∣FI​),如果一些概率值超过了阈值ϵL\epsilon_{L}ϵL​,那么就选择这些概率值对应的位置作为目标中心可能存在的位置。这一步可以在保持召回率的条件下过滤掉90%的区域。在inference时,用masked conv替代普通的conv,以提高速度。

2. anchor形状的预测

在确定了目标可能会出现的位置后,接下来就是判断相应位置anchor可能的形状。形状预测分支与边界框回归是不同的,它没有改变anchor的位置,因此不会造成anchor与特征图之间不匹配的问题。给定一个特征图FIF_{I}FI​,这个分支会在每个位置上预测出一个最佳形状(w,h)(w,h)(w,h),预测出的形状可能会与最近的gt产生较高的IoU。但是由于www和hhh的范围太大了,直接预测的话会非常不稳定。因此采用如下的转换:

形状预测分支输出的就是dwdwdw和dhdhdh,然后通过上式映射到(w,h)(w,h)(w,h),其中sss是步长,σ\sigmaσ是缩放因子,在这里σ=8\sigma=8σ=8。该非线性转换将输出的空间从[0,1000]映射到[-1,1],得到稳定的学习目标 。该分支通过一个1 × 1 × 2的子网NSN_{S}NS​进行预测,得到dwdwdw和dhdhdh,然后通过上式进行转换。

通过该方法,一个位置只预测一个形状动态变化的anchor,实验证明,由于位置和形状之间的密切联系,guided anchoring具有更高的召回率,并且能更好的捕捉具有极端大小目标的信息。

3. feature adaption

在RPN或者一些single-stage检测器中,每个位置上anchor的尺度和形状都是相同的,因此特征图的表示是一致的。而在本文的机制中,每个位置上anchor的形状各有不同,和特征不能特别好的匹配;另外,因为接下来的分类和回归是基于预测出的anchor来做的,但特征图并不知道形状预测分支预测的anchor的形状,因此不能继续像以前一样用一个全卷积分类器作用在特征图上。

本文提出feature adaption模块,基于每个位置的anchor形状来调整特征的形状,就是把 anchor 的形状信息直接融入到特征图中,这样新得到的特征图就可以去适应每个位置 anchor 的形状

其中fif_{i}fi​是第iii个位置的特征,(wi,hi)(w_{i},h_{i})(wi​,hi​)是该位置上对应的anchor的形状。

为了实现这个变换,采用了一个3 × 3 的可变卷积层(deformable convolutional)NTN_{T}NT​,如上图所示。首先根据形状预测分支的输出预测一个offset field,然后将原始的特征图FIF_{I}FI​通过NTN_{T}NT​并结合offset field得到FI′F^{'}_{I}FI′​,最后在FI′F^{'}_{I}FI′​上进行分类与回归。注意,可变卷积的offset field是通过anchor的w和h经过一个1×1的卷积得到的。


Training

1. 损失函数

训练是端到端的,使用的是多任务损失函数。除了分类损失LclsL_{cls}Lcls​和回归损失LregL_{reg}Lreg​之外,还引入了另外两个loss,分别是anchor定位损失LlocL_{loc}Lloc​和anchor形状预测损失LshapeL_{shape}Lshape​。总loss为:

2. anchor的定位

为了训练anchor定位分支,每个图像需要一个binary lable map,其中1表示可以把一个anchor放到这个位置上,0则相反。首先,将gt box (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′​),设R(x,y,w,h)R(x,y,w,h)R(x,y,w,h)表示一个矩形区域,其中(x,y)(x,y)(x,y)是中心点,www和hhh分别是宽和高。anchor越接近gt box的中心越好,这样可以得到较大的IoU,因此为每个gt box设计了如下三种区域:

  1. 中心区域CR=R(xg′,yg′,σ1w′,σ1h′)CR=R(x_{g}^{'},y_{g}^{'},\sigma_{1}w^{'},\sigma_{1}h^{'})CR=R(xg′​,yg′​,σ1​w′,σ1​h′),也就是gt box靠近中心部分的区域,如图中的绿色区域。在CRCRCR中的像素都是正样本;
  2. 忽略区域IR=R(xg′,yg′,σ2w′,σ2h′)IR=R(x_{g}^{'},y_{g}^{'},\sigma_{2}w^{'},\sigma_{2}h^{'})IR=R(xg′​,yg′​,σ2​w′,σ2​h′)\ CRCRCR,其中σ2>σ1\sigma_{2}>\sigma_{1}σ2​>σ1​。IRIRIR比CRCRCR大,但不包含CRCRCR,如图中的黄色区域。IRIRIR中的像素在训练时是被忽略的;
  3. 外部区域OROROR,就是特征图除IRIRIR和CRCRCR之外的部分,如图中的灰色区域。OROROR中的像素都是负样本。

guided anchoring框架使用的FPN,也就是有多尺度的特征图,因此每个层级的特征图上都是需要预测anchor的位置的。每个层级的特征图只能负责预测特定尺度范围的目标,因此还要考虑邻近的特征图的影响。具体来说就是,如果一个目标的尺度落入某个层级特征图所负责的尺度范围,就把gt box映射到这个特征图上,把CRCRCR也分配到这个特征图上;在与这个特征图相邻的特征图上,将相同区域设为IRIRIR,如上图所示。当某个层级上有多个目标重叠时,CRCRCR可以抑制IRIRIR,IRIRIR可以抑制OROROR。

由于CRCRCR只负责整个特征图上的一小部分,因此用focal loss来训练定位分支。

3. anchor的形状

确定anchor的最佳形状需要两个步骤:

  1. 将anchor与gt box匹配;
  2. 预测anchor的宽和高,使其能更好的覆盖匹配的gt box。

按照之前的做法,通过计算anchor与所有gt box之间的IoU,然后将anchor分配给IoU最大的那个gt box。但是这种方法并不适用于现在的anchor,因为现在的anchor的www和hhh是不确定的,是需要预测的变量。为了解决这个问题,重新定义IoU,将anchor awh=a_{wh}=awh​={(x0,y0,w,h)∣w>0,h>0(x_{0},y_{0},w,h)|w>0,h>0(x0​,y0​,w,h)∣w>0,h>0} 与gt box gt=(xg,yg,wg,hg)gt=(x_{g},y_{g},w_{g},h_{g})gt=(xg​,yg​,wg​,hg​)之间的IoU表示为:

其中IoUnormalIoU_{normal}IoUnormal​是经典的IoU定义,www和hhh是变量。对于任意一个anchor与gt,计算它们之间的vIoU是很复杂的,也不可能把www和hhh遍历一遍求最大值,因此采用了近似的方法。对于一个给定的anchor (x0,y0)(x_{0},y_{0})(x0​,y0​),采样一些www和hhh的可能值,然后计算这些采样的anchor与gt之间的IoU,取最大值作为vIoU的近似。理论上,采样的组数越多,近似的效果越好,但出于效率的考虑,训练时共采样了9组(w,h)(w,h)(w,h)。作者通过实验发现,最终结果对采样的组数这个超参并不敏感,也就是说不管采样多少组,近似效果已经足够

形状预测分支的损失函数是bounded iou loss的变体:

其中(w,h)(w,h)(w,h)是预测的anchor的形状,(wg,hg)(w_{g},h_{g})(wg​,hg​)是它对应的gt box的形状。L1L_{1}L1​是smooth L1 loss。


高质量的proposal

GA-RPN(由guided anchoring强化过的RPN)可以生成质量更高的proposal,本文研究如何利用这些高质量的proposal来提升two-stage检测器的性能。

上图展示了RPN和GA-RPN生成的proposal的IoU分布,可以看到GA-RPN有两个明显的优点:

  1. 正样本更多;
  2. 高IoU的proposal比例更显著;

那么自然而然地就会产生这样一个想法:用GA-RPN代替现有模型中的RPN,然后进行端到端的训练。但是实验证明,这种做法带来的效果的提升比较有限。通过观察发现,使用高质量proposal的先决条件是根据proposal的分布进一步调整训练样本的分布。因此,相比RPN,训练GA-RPN时改进的地方有两点

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

参考

作者自己写的论文解读

Guided Anchoring 论文笔记相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 【论文笔记 2】CNN经典入门STRIVING FOR SIMPLICITY: THE ALL CONVOLUTIONAL NET

    [论文笔记 2]CNN经典入门STRIVING FOR SIMPLICITY: THE ALL CONVOLUTIONAL NET 1. 综述 对现代的CNN网络结构进行了简要说明,一般的网络都是由卷 ...

  10. ORB-SLAM3 论文笔记

    ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...

最新文章

  1. SAP SD基础知识之SD常见流程概述
  2. 虚拟机登服务器,用虚拟机登录云服务器
  3. 如何做好性能压测(一)丨压测环境设计和搭建
  4. JQuery中的样式操作
  5. 智能算法的研究与实现
  6. chrono0.10插件离线版_梁宝川:这11条anki插件的使用常识分享给你
  7. 前缀,中缀,后缀表达式求值
  8. 最近被安排搞搜索接口优化,压测了4次,才勉强达到要求~
  9. 智能一代云平台(十九):选修课---类似秒杀的高并发业务
  10. poj-3185-开关问题
  11. 使用Axure设计中,大型的后台系统原型总结
  12. js中将html文档写入静态界面当中
  13. 极简darknet环境搭建记录
  14. python基础语法看一篇就够了,全网最全python语法笔记汇总
  15. 浙江海洋大学计算机 周斌,浙江海洋大学2018年硕士研究生调剂拟录取名单公示(一)...
  16. 苹果 Apple Beta 版软件计划 相关软件地址
  17. 思科模拟器Cisco Packet Tracer交换机的端口聚合配置
  18. 【读书笔记】《大型互联网企业安全架构(石祖文)》
  19. 正向代理与反向代理通俗版解释
  20. 字节跳动后端面经(18)

热门文章

  1. informix的数据类型列表
  2. sus补丁分发,局域网自动打补丁服务的架设过程
  3. Linux进程间通信——使用信号量
  4. 解决树莓派开机黑屏不显示桌面问题
  5. Sliver RecyclerView 功能最强大、最好用的适配器
  6. Anomaly Detection with Partially Observed Anomalies译文
  7. python中的sin函数_Python sin() 函数
  8. 智能车图像处理3-中线累积差值的统计
  9. Latex beamer 常用操作记录
  10. Linux系统安装教程(详细版)