Abstract

很多的目标检测器通过 looking and thinking twice 的方式实现了惊人的表现。本文作者针对目标检测主干网络的设计,研究了该机制。在宏观层面,作者提出了递归特征金字塔,将来自FPN的额外的反馈连接加入到自下而上的主干层。在微观层面,作者提出了可切换的空洞卷积(SAC),它以不同的空洞率(rate)对特征进行卷积,并使用switch函数合并卷积后的结果。这样就得到了DetectoRS,极大地提升了目标检测性能。在COCO 测试验证集上,DetectoRS 取得了SOTA的成绩,目标检测项为54.7%54.7\%54.7%的边框AP,实例分割项为47.1%47.1\%47.1%的mask AP,全景分割项为49.6%49.6\%49.6%的PQ。代码位于:https://github.com/joe-siyuan-qiao/DetectoRS。

1. Introduction

要想找到目标物体,人类的视觉感知会通过反馈连接来传入高层及的语义信息,选择性地增强或抑制神经元活动。受此启发,计算机视觉领域实践了 looking and thinking twice 的思想,取得了优异的表现。许多流行的双阶段检测器,如Faster R-CNN,首先基于区域特征,输出候选目标框。Cascade R-CNN 设计了一个多阶段的检测器,它使用更优质的样本来训练后面的检测器heads。该设计思想非常成功,促使我们去研究目标检测的主干网络如何设计。作者在宏观和微观两个层面实现了该机制,就是 DetectoRS,它极大地提升了SOTA目标检测器 HTC 的性能,推理速度没降,如表1所示。


在宏观层面,递归特征金字塔(RFP)构建于FPN之上,将FPN层中的额外反馈连接加入到自下而上的主干层中,如图1(a)所示。将递归结构拆开为一组顺序实现,我们得到了一个目标检测器的主干网络,它会关注图片至少两次。与Cascade R-CNN 中的级联检测器的heads类似,RFP递归地增强FPN,产生的特征表示越来越强。与Deeply-Supervised Nets相似,反馈连接可以将从检测器heads传来的梯度,传回自下而上的低层级主干网络中,加速训练并提升性能。RFP实现了looking and thinking twice的顺序设计,自下而上的主干网络和FPN可以多次运行,输出的特征取决于之前步骤的输出。

在微观层面,作者提出了可切换的空洞卷积(SAC),用不同的空洞率来对相同的输入特征做卷积,使用switch函数来结合结果。图1b 展示了 SAC 的概念。Switch函数在空间上互相依赖,即特征图的每个位置有着不同的switches来控制SAC的输出。在检测器中,作者将自下而上的主干网络中所有3×33\times 33×3标准卷积层替换为SAC,显著地提升了检测器性能。[39,74]也采用了条件卷积,将不同的卷积结果结合为一个输出。与这些方法不同,这些架构需要从头开始训练,而SAC提供了一个机制,可以很容易地转化预训练的标准卷积网络(如ImageNet-预训练权重)。而且SAC中使用了一个新的权重闭锁机制,除了一个可训练的差异之外,不同空洞卷积的权重是一样的。

将RFP和SAC的结合起来,就有了DetectoRS。为了证明其有效性,作者将DetectoRS加入到SOTA的HTC中,在COCO数据集上做实验。在COCO测试验证集上,作者报告了目标检测的边框AP、实例分割的mask AP,和全景分割的PQ。用ResNet-50作为主干网络的DetectoRS将HTC的边框AP提升了7.7%7.7\%7.7%,mask AP提升了5.9%5.9\%5.9%。此外,将DetectoRS结合到ResNeXt-101-32x4d中,取得了54.7%54.7\%54.7%的边框AP和47.1%47.1\%47.1%的mask AP。DetectoRS 搭配 DeepLabV3+和Wide-ResNet-41作为主干网络,在全景分割任务上取得了49.6%49.6\%49.6%的PQ,是一个新的记录。

2. Related Works

目标检测。目标检测方法主要有2类:单阶段方法和多阶段方法。多阶段检测器通常更加灵活、准确,但是比起单阶段方法来说更加复杂。本文作者用多阶段的HTC作为基线模型。

多层级特征。递归特征金字塔基于FPN而来,FPN 利用多尺度特征来进行有效的目标检测。之前,许多目标检测器直接使用主干网络的多尺度特征,而FPN加入了自上而下的path,将不同尺度的特征按照顺序进行结合。PANet 在FPN之上,增加了另一个自下而上的path。STDL通过尺度转换模块来利用跨尺度的特征。G-FRNet 通过gating units增加反馈信息。NAS-FPN和Auto-FPN使用神经结构搜索找到最佳的FPN结构。EfficientDet提出复用一个简单的BiFPN层。与它们不同,本文的递归特征金字塔重复连入自下而上的主干网络,增强FPN特征表示的能力。此外,作者在FPN中加入了空洞空间金字塔池化(ASPP),增强特征,与Seamless 的 mini-DeepLab设计相似。

递归卷积网络。人们提出了许多递归方法,解决不同类型的计算机视觉问题。最近有一个递归方法CBNet用于目标检测,将多个主干网络级联起来,它输出的特征作为FPN的输入。相反,本文的RFP通过ASPP加持的FPN来执行递归计算。

条件卷积。条件卷积网络采用动态卷积核、宽度或深度。与它们不同,本文的可切换空洞卷积(SAC)不会改变预训练模型,将标准卷积转换为条件卷积。SAC因此对于许多预训练主干网络来说,可以即插即用。而且,SAC使用全局上下文信息,以及一个创新的权重闭锁机制,来让它更加有效。

3. 递归特征金字塔

3.1 特征金字塔网络

这一部分将介绍下特征金字塔网络。BiB_iBi​表示自下而上主干网络的第iii个阶段,FiF_iFi​表示第iii个自上而下FPN操作。搭配FPN的主干网络输出一组特征图{fi∣i=1,...,S}\{f_i | i=1,...,S\}{fi​∣i=1,...,S},其中SSS是阶段的个数。例如图2a中,S=3S=3S=3。∀i=1,...,S\forall i=1,...,S∀i=1,...,S,输出特征fif_ifi​定义为:

fi=Fi(fi+1,xi),xi=Bi(xi−1)f_i = F_i (f_{i+1}, x_i), x_i = B_i(x_{i-1})fi​=Fi​(fi+1​,xi​),xi​=Bi​(xi−1​)

其中x0x_0x0​是输入图像,fS+1=0f_{S+1}=0fS+1​=0。目标检测器构建于FPN之上,使用fif_ifi​用于检测计算。

3.2 递归特征金字塔

RFP往FPN中增加了反馈连接,如图2b所示。在将它们连接回自下而上的主干网络前,我们用RiR_iRi​表示特征变换,在将它们连接到自下而上的主干网络之前。然后,对于∀i=1,...,S\forall i=1,...,S∀i=1,...,S,输出特征fif_ifi​的定义为:

fi=Fi(fi+1,xi),xi=Bi(xi−1,Ri(fi))f_i = F_i (f_{i+1}, x_i), x_i = B_i(x_{i-1}, R_i(f_i))fi​=Fi​(fi+1​,xi​),xi​=Bi​(xi−1​,Ri​(fi​))

这样RFP就是递归操作了。我们将它拆开为一个网络序列,即 ∀i=1,...,S,t=1,...,T\forall i=1,...,S, t=1,...,T∀i=1,...,S,t=1,...,T:

fit=Fit(fi+1t,xit),xit=Bit(xi−1t,Rit(fit−1))f_i^t = F_i^t(f_{i+1}^t, x_i^t), x_i^t = B_i^t(x_{i-1}^t, R_i^t (f_i^{t-1}))fit​=Fit​(fi+1t​,xit​),xit​=Bit​(xi−1t​,Rit​(fit−1​))

其中TTT为拆开的次数,我们用上标ttt来表示第ttt步的运算与特征。fi0f_i^0fi0​被设为0。在实现中,FitF_i^tFit​和RitR_i^tRit​在不同的步骤中共享。在第5部分的实验研究中,作者列出了共享的和不同的BitB_i^tBit​,以及不同TTT的表现。在实验中,作者使用了不同的BitB_i^tBit​,设T=2T=2T=2。

作者改进了ResNet主干网络BBB,将xxx和R(f)R(f)R(f)作为输入。ResNet有4个阶段,每个都由多个相似的模块构成。作者只改变了每个阶段的第一个模块,如图3所示。该模块计算一个3层的特征,将它加到shortcut计算出的特征上。为了使用特征R(f)R(f)R(f),作者增加了另一个卷积层,卷积核大小是1。该层的权重初始化为0,确保加载预训练权重时,它不会有任何的影响。

作者使用空洞空间金字塔池化(ASPP)来实现连接模块RRR,它将特征fitf_i^tfit​作为输入,将之变换为RFP特征,如图3所示。在该模块中,有4个平行的分支,将fitf_i^tfit​作为输入,输出然后沿着通道维度进行concat,得到最终的输出RRR。它们中的三条分支使用一个卷积层和一个ReLU层,输出通道数是输入通道数的1/41/41/4。最后一个分支使用全局平均池化层来压缩特征,后面跟着一个1×11\times 11×1卷积层和一个ReLU层,将压缩后的特征变换为1/41/41/4大小(通道维度)的特征。最后,我们将这些特征重新缩放,与其它三个分支的特征进行concat。这三个分支里的卷积层的配置如下:卷积核大小为[1,3,3][1,3,3][1,3,3],空洞率为[1,3,6][1,3,6][1,3,6],padding为[0,3,6][0,3,6][0,3,6]。与原始的ASPP不同,作者并没有在concat特征之后跟着一个卷积层,因为RRR没有输出最终的结果。注意,这四个分支中的每一个所输出的特征,其维度都是输入特征的1/41/41/4,将它们concat之后就会得到一个与输入特征RRR一样大小的特征。在第5部分,作者证明了有和没有ASPP模块时RFP的性能。

3.4 Output updated by the fusion module

如图2c所示,RFP额外地使用了融合模块,将fitf_i^tfit​和fit+1f_i^{t+1}fit+1​结合起来,更新上面等式中第t+1t+1t+1个阶段的fif_ifi​值。该融合模块与递归神经网络中的更新过程非常相似,如果我们将fitf_i^tfit​看作为一个数据序列。在第2到第TTT步骤中,使用了融合模块。在第t+1t+1t+1(t=1,...,T−1t=1,...,T-1t=1,...,T−1)的步骤中,融合模块将第ttt步的特征fitf_i^tfit​与FPN在第t+1t+1t+1步中最新计算出的特征fit+1f_i^{t+1}fit+1​作为输入。该融合模块使用特征fit+1f_i^{t+1}fit+1​来计算注意力图,通过一个卷积层和一个sigmoid操作。该注意力图用于计算fitf_i^tfit​和fit+1f_i^{t+1}fit+1​的加权和,来更新fif_ifi​。这个fif_ifi​将作为fit+1f_i^{t+1}fit+1​,在后续的步骤中使用。

4. 可切换的空洞卷积

4.1 空洞卷积

空洞卷积是增大卷积层滤波器感受野的有效方式。特别地,空洞率rrr的空洞卷积在两个连续的滤波器值之间引入r−1r-1r−1个0,相当于将卷积核大小由k×kk\times kk×k增大到ke=k+(k−1)(r−1)k_e = k + (k-1)(r-1)ke​=k+(k−1)(r−1),而不会增加参数的个数或计算量。图1b为3×33\times 33×3卷积层和空洞率为1(红色)与2(绿色)的一个例子:不同尺度的同类物体可以通过相同的卷积权重和不同的空洞率来检测。

4.2 可切换的空洞卷积

作者介绍了SAC的细节。图4展示了SAC的整体结构,它主要有3个组成:2个全局上下文模块分别加在SAC组建的前面和后面。这部分关注在SAC中间的主要构成上,随后作者会介绍全局上下文模块。

作者用y=Conv(x,w,r)y=\text{Conv}(x,w,r)y=Conv(x,w,r)来表示卷积操作,权重为www,空洞率为rrr,输入是xxx,输出是yyy。然后,将卷积层转化为一个SAC:

Conv(x,w,1)→to SACConvertS(x)⋅Conv(x,w,1)+(1−S(x))⋅Conv(x,w+Δw,r)\text{Conv}(x,w,1) \xrightarrow[\text{to SAC}]{\text{Convert}} S(x)\cdot \text{Conv} (x, w, 1) + (1-S(x))\cdot \text{Conv}(x,w + \Delta w,r)Conv(x,w,1)Convertto SAC​S(x)⋅Conv(x,w,1)+(1−S(x))⋅Conv(x,w+Δw,r)

其中rrr是SAC的超参数,Δw\Delta wΔw是可训练的权重,switch函数S(⋅)S(\cdot)S(⋅)用一个5×55\times 55×5的核的平均池化层,后面跟着一个1×11\times 11×1的卷积层,如图4所示。该swtich函数依赖于输入和位置;因此,主干网络模型能够适应不同的尺度。实验中作者设r=3r=3r=3。

作者提出了一个闭锁机制,设一个权重为www,其它的为w+Δww+\Delta ww+Δw。目标检测器通常用预训练权重来初始化网络。但是,对于一个由标准卷积转化而来的SAC层,没有较大空洞率的权重。由于不同尺度的物体大概都可以用相同的权重,而空洞率不同来检测到,很自然地我们就可以用预训练模型的权重来初始化这些缺失的权重。本文实现将w+Δww+\Delta ww+Δw用作为这些缺失的权重,其中www来自于预训练权重,而Δw\Delta wΔw初始化为0。当Δw=0\Delta w=0Δw=0时,发现AP降低了0.1%0.1\%0.1%。但是不用闭锁机制的话,AP会下降许多。

4.3 全局上下文

如图4所示,作者在SAC前后共插入了2个全局上下文模块。这2个模块都很轻量级,输入特征首先通过一个全局平均池化层压缩。全局上下文模块与SENet类似,除了2个不同之处:(1) 我们只有一个卷积层,没有非线性层;(2) 输出被加到主干之后,而不是通过sigmoid计算出的值来乘到输入上。作者发现将全局上下文信息加到SAC之前(即将全局信息加到switch函数里),对检测效果有正面的作用。作者猜测,这是因为SSS在有全局信息的时候,所做出的预测更加稳定。然后,作者将全局信息移除switch函数,将它放在主干部分的前面和后面,这样ConvConvConv和SSS都会受益。作者没有采用原始的SENet方式,因为没有发现它对最终的AP有何影响。

4.4 实现细节

在实现中,作者使用了变形卷积来代替等式4中的卷积操作。它们的offset函数没有共享。第5部分会讲述SAC有和没有变形卷积时的性能比较。作者在ResNet和其变体上采用SAC,在主干网络中将所有的3×33\times 33×3卷积替换。全局上下文模块的权重和偏置都被初始化为0。swtich SSS中的权重初始化为0,偏置初始化为1。Δw\Delta wΔw初始化为0。上述初始化策略确保了,当我们加载从ImageNet上训练得到的预训练模型时,将所有3×33\times 33×3卷积转化为SAC不会改变输出。

4. Experiments

Pls read paper for more details.

DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution论文学习相关推荐

  1. DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution 论文笔记

    前言 本文分别从宏观和微观角度对目标检测模型的backbone进行设计,进而提出DetectorRS, 在宏观上,提出递归特征金字塔(Recursive Feature Pyramid,RFP),它是 ...

  2. 【论文笔记】:DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution

    &Title DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolu ...

  3. 【论文阅读】DetectoRS|Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution

    题目:DetectoRS:Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution 作者:S ...

  4. 论文导读:DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution

    论文导读:DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution A ...

  5. DetectoRS-最强目标检测网络 54.7AP | Detecting Objects with Recursive Feature Pyramid and Switchable Atrous

    最新目标检测论文,从检测的骨干网络设计出发(最近基于backbone的修改,貌似更有效!同比的由SCNet),效果直接SOTA! 论文地址:https://arxiv.org/pdf/2006.023 ...

  6. Feature Pyramid Networks for Object Detection论文翻译——中文版

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 声明:作者翻译论文仅为学习,如有侵权请联系作者删除博文,谢谢! 翻译论文汇总:https://github.com ...

  7. Feature Pyramid Networks for Object Detection论文翻译——中英文对照

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 声明:作者翻译论文仅为学习,如有侵权请联系作者删除博文,谢谢! 翻译论文汇总:https://github.com ...

  8. Feature Pyramid Networks for Object Detection 论文笔记

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Jesse_Mx/article/details/54588085 论文地址:Feature Pyra ...

  9. Feature Pyramid Networks for Object Detection 总结

    最近在阅读FPN for object detection,看了网上的很多资料,有些认识是有问题的,当然有些很有价值.下面我自己总结了一下,以供参考. 1. FPN解决了什么问题? 答: 在以往的fa ...

最新文章

  1. 制作Scary爬虫步骤
  2. 那个成人总会遇到的小问题……
  3. 贪心策略--16经典问题总结!
  4. 实现树状结构_钢结构设计 | “生命之树”景观案例赏析
  5. java netty能做什么_开发:Netty快速入门,一看就懂!
  6. 清晨一杯水,到底怎么喝才算健康?
  7. golang下的条件编译
  8. Spring Boot 之 RESRful API 权限控制
  9. ORACLE decode
  10. Spring对 JDBC 的支持,JdbcTemplate类的使用
  11. linux ac97声卡驱动下载,AC97声卡如何在Linux操作系统中进行驱动
  12. django--安装
  13. 任务管理器不显示磁盘
  14. MIT开创减少双量子比特门误差的新方法,提高鲁棒性迈向纠错量子计算机
  15. 阿里云镜像恢复,镜像取证
  16. B. Boboniu Plays Chess(手速)
  17. saas-export项目service层
  18. 约瑟夫问题(丢手绢问题)
  19. 奇葩年年有,每年都很多,临近年关那些奇葩的年终奖
  20. 一个大学生的自我反思

热门文章

  1. curl: (7) Failed to connect to raw.githubusercontent.com port 443:及curl: (35) OpenSSL SSL_connect: S
  2. 一个邮件钓鱼木马的分析 (一)
  3. 三维扫描仪[6]——常用软件及开发环境
  4. matlab单相接地仿真模型,小电流接地系统单相故障在Matlab中的仿真分析
  5. Java后端开发功能模块思路
  6. 《道德经》全文及译文
  7. 基于KVM安装部署RHCOS(CoreOS)操作系统
  8. 东北大学计算机专业研究生入学考试2000年真题
  9. 给大家推个社群管理软件?
  10. 期望、方差、协方差、相关系数理解