Press "Enter" to skip to content

递归特征金字塔+可切换空洞卷积提升目标检测性能(附框架源码)

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

作者:Edison_G

 

许多现代的目标检测器通过两次look和think的机制表现出优异的性能。 今天分享的是在目标检测的主干设计中探讨了这种机制。 在宏观层面上,提出了 递归特征金字塔(Recursive Feature Pyramid) ,它将来自特征金字塔网络的额外反馈连接集成到自下而上的主干层中;在微观层面上,提出了 可切换的空洞卷积(Switchable Atrous Convolution) ,它以不同的空洞率对特征进行卷积, 并利用switch函数收集结果。 将它们结合在一起,可以有效地提高目标检测的性能。

 

 

论文地址: https://arxiv.org/pdf/2006.02334v1.pdf

 

1.前言

 

 

要想找到目标物体,人类的视觉感知会通过反馈连接来传入高层及的语义信息,选择性地增强或抑制神经元活动。受此启发,计算机视觉领域实践了looking and thinking twice的思想,取得了优异的表现。许多流行的双阶段检测器,如Faster RCNN,首先基于区域特征,输出候选目标框。Cascade R-CNN设计了一个多阶段的检测器,它使用更优质的样本来训练后面的检测器heads。

 

该设计思想非常成功,促使作者去研究目标检测的主干网络如何设计。作者在宏观和微观两个层面实现了该机制,就是DetectoRS,它极大地提升了SOTA目标检测器HTC的性能,推理速度没降,如上表所示。

 

 

宏观层面: 递归特征金字塔(RFP)构建于FPN之上,将FPN层中的额外反馈连接加入到自下而上的主干层中,如上图(a)所示。

 

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

 

 

微观层面: 提出了可切换的空洞卷积(SAC),用不同的空洞率来对相同的输入特征做卷积,使用switch函数来结合结果。上图(b) 展示了 SAC 的概念。

 

Switch函数在空间上互相依赖,即特征图的每个位置有着不同的switches来控制SAC的输出。在检测器中,作者将自下而上的主干网络中所有3 × 3标准卷积层替换为SAC,显着地提升了检测器性能。与这些方法不同,这些架构需要从头开始训练,而SAC提供了一个机制,可以很容易地转化预训练的标准卷积网络(如ImageNet-预训练权重)。而且SAC中使用了一个新的权重闭锁机制,除了一个可训练的差异之外,不同空洞卷积的权重是一样的。

 

2.新框架

 

 

 

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

 

Recursive Feature Pyramid

 

金字塔网络是目前最常见的小框架,主要介绍如下:

 

 

 

提出的 递归特征金字塔(RFP) 添加反馈连接到FPN,如上图b所示。让Ri表示特征转换,然后将它们连接回自下而上的主干中。然后,∀I=1,…,S,由RFP的输出特征FI定义:

 

 

重点:

 

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

 

 

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

 

Switchable Atrous Convolution

 

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

 

 

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

 

 

 

 

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

 

3.实验

 

 

上表是主干网络为ResNet-50在COCO Val 2017数据上的结果。

 

 

从左到右:HTC, ‘HTC + RFP’, ‘HTC + SAC’

 

 

 

实现细节

 

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

 

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注