许多现代的物体探测器都是通过观察和思考两遍的机制表现出出色的性能。在本文中,本文在目标检测的主干设计中探讨了这种机制。在宏观层面,本文提出了递归特征金字塔,它将特征金字塔网络的额外反馈连接合并到自下而上的骨干层。在微观层面,本文提出了可切换的Atrous卷积,它将具有不同的Atrous速率的特征进行卷积,并使用切换函数收集结果。
将它们结合在一起形成检测器,显著提高了目标检测的性能。在COCO测试开发中,检测器实现了55.7%的盒子AP用于对象检测,48.5%掩码AP用于实例分割,50.0% PQ用于泛视分割。代码是公开的:joe-siyuan-qiao/DetectoRS: DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution (github.com)
论文地址:arxiv.org
许多现代目标检测器通过使用两次looking和thinking的机制,表现了出色的性能。在本文中,作者探索了用于目标检测的backbone设计中的这种机制。
在宏观层面上,作者提出了递归特征金字塔(RFP,Recursive Feature Pyramid),它结合了从特征金字塔网络到自下而上的backbone层的额外反馈连接,具体如图(a)所示。
在微观层面上,作者提出了可切换的空洞卷积(SAC,Switchable Atrous Convolution),它以不同的atrous rate对特征进行卷积,并使用switch函数收集结果,具体如图(b)所示。
DetectoRS = Detector + RFP + SAC = Detector + Recursive Feature Pyramid+ Switchable Atrous Convolution
本文是谷歌团队
提出的最新的目标检测方案,并且已经完全开源。整个算法将递归特征金字塔(RFP,Recursive Feature Pyramid)和可切换的空洞卷积(SAC,Switchable Atrous Convolution)结合在一起,在COCO test-dev目标检测任务中,达到了54.7% box AP,在2020年来看是非常强的。COCO test-dev Benchmark (Object Detection) | Papers With Code
为了检测物体,人类视觉知觉通过反馈连接传递高级语义信息,有选择地增强和抑制神经元激活。受人类视觉系统的启发,两次看和思考的机制已经在计算机视觉中实例化,并表现出出色的性能[Cascade r-cnn,Look and think twice: Capturing top-down visual attention with feedback convolutional neural networks,Faster r-cnn: Towards real-time object detection with region proposal networks]。许多流行的两阶段对象检测器,如Faster R-CNN,首先输出对象提议,然后根据该提议提取区域特征来检测对象。按照同样的方向,Cascade R-CNN开发了一个多级检测器,后续检测器头用更有选择性的示例进行训练。
这种设计理念的成功激励在目标检测的神经网络骨干网设计中进行探索。特别是,在宏观和微观层面部署了该机制,从而得到了提出的检测器,它在保持相似的推理速度的同时,极大地提高了最先进的对象检测器HTC的性能,如下表所示。
在宏观层面,本文提出的递归特征金字塔(RFP)建立在特征金字塔网络(FPN)的基础上,通过将额外的反馈连接从FPN层合并到自下而上的骨干层,下如图a所示。
将递归结构展开到一个顺序的实现,获得了一个对象检测器的主干,它可以查看两次或两次以上的图像。类似于用更有选择性的例子训练的Cascade R-CNN中的级联检测器头,本文的RFP递归地增强了FPN,以生成越来越强大的表示。
类似于深度监督网,反馈连接将直接从检测器头部接收梯度的特征带回自底向上骨干的低级别,以加速训练和提高性能。本文提出的RFP实现了一种仔细观察和仔细思考的顺序设计,其中自底向上的主干和FPN将多次运行,它们的输出特征依赖于前面步骤中的输出特征。
在微观层面,本文提出了可切换的Atrous Convolution (SAC),它以不同的Atrous rate对相同的输入特征进行卷积,并使用开关函数收集结果。上图b显示了SAC概念的说明。开关功能是空间相关的,即特征图的每个位置可能有不同的开关来控制SAC的输出。
为了在检测器中使用SAC,本文将自底向上主干中的所有标准3x3卷积层转换为SAC,这大大提高了检测器的性能。以前的一些方法采用条件卷积,如[Selective kernel networks,Condconv: Conditionally parameterized convolutions for efficient inference],也将不同卷积的结果合并为一个输出。与那些体系结构需要从头训练的方法不同,SAC提供了一种机制,可以轻松转换预先训练的标准卷积网络(例如,imagenet预先训练的检查点)。此外,在SAC中使用了一种新的权值锁定机制,不同的atrous卷积的权值除了可训练的差异外是相同的。
结合提出的RFP和SAC的结果是本文的检测器。为了演示其有效性,本文将检测器合并到具有挑战性的COCO数据集上的最先进的HTC中。在COCO测试开发中,本文报告用于对象检测的框AP,用于实例分割的掩码AP,以及用于泛视分割的PQ。
ResNet-50作为骨干的检测器显著提高了HTC7.7%的盒AP和5.9%的掩膜AP。此外,为本文的探测器配备ResNeXt-101-64x4d实现了最先进的55.7%盒AP和48.5%掩膜AP。与以Wide-ResNet-41为骨干的DeepLabv3+的物质预测一起,检测器创造了50.0%的全景分割PQ的新纪录。
Object Detection.
Multi-Scale Features.
本文的递归特征金字塔是基于特征金字塔网络(FPN),一个有效的目标检测系统,利用多尺度特征。此前,许多目标检测器直接使用从主干中提取的多尺度特征[A unified multi-scale deep convolutional neural network for fast object detection,Ssd],而FPN采用自顶向下的路径来顺序组合不同尺度的特征。PANet在FPN之上添加了另一条自底向上的路径。STDL提出通过一个尺度转移模块来开发跨尺度特征。G-FRNet添加了带门控单元的反馈。NAS-FPN和Auto-FPN使用神经结构搜索寻找最优FPN结构。efficientdet提出重复一个简单的BiFPN层。与之不同的是,本文提出的递归特征金字塔重复通过自底向上的主干来丰富FPN的表示能力。
此外,本文将Atrous空间金字塔池(ASPP)[Rethinking atrous convolution for semantic image segmentation,Encoder-decoder with atrous separable convolution for semantic image segmentation]纳入到FPN中,以丰富功能,类似于Seamless中的迷你deeplab设计。
Recursive Convolutional Network.
Conditional Convolution
本小节介绍了特征金字塔网络(FPN)的背景。设Bi表示自底向上的骨干的第i个阶段,Fi表示自顶向下的第i个FPN操作。配备FPN的骨干输出一组特征映射{fi | i = 1,…, S},其中S为阶段数。例如图2a中的S = 3。∀i = 1,…, S,输出特征fi定义为
f i = F i ( f i + 1 , x i ) , x i = B i ( x x − 1 ) , ( 1 ) f_i=F_i(f_{i+1},x_i),x_i=B_i(x_{x-1}),(1) fi=Fi(fi+1,xi),xi=Bi(xx−1),(1)
其中x0是输入图像,fS+1 = 0。建立在FPN上的目标检测器使用fi进行检测计算。
递归特征金字塔(RFP)结构。(a)特征金字塔网络(FPN)。(b)本文的RFP将反馈连接纳入FPN。© RFP展开为两步顺序网络。
本文提出的递归特征金字塔(RFP)将反馈连接添加到FPN中,如上图b所示。让Ri表示特征转换,然后将它们连接回自底向上的主干。那么,∀i = 1,…, S, RFP的输出特征fi定义为
f i = F i ( f i + 1 , x i ) , x i = B i ( x x − 1 , R i ( f i ) ) , ( 2 ) f_i=F_i(f_{i+1},x_i),x_i=B_i(x_{x-1},R_i(f_i)),(2) fi=Fi(fi+1,xi),xi=Bi(xx−1,Ri(fi)),(2)
这使得RFP成为一个递归操作。将其展开为一个顺序网络,即∀i = 1,…, S, t = 1,…T,
f i t = F i t ( f i + 1 t , x i t ) , x i t = B i t ( x x − 1 t , R i t ( f i t − 1 ) ) , ( 3 ) f_i^t=F_i^t(f_{i+1}^t,x_i^t),x_i^t=B_i^t(x_{x-1}^t,R_i^t(f_i^{t-1})),(3) fit=Fit(fi+1t,xit),xit=Bit(xx−1t,Rit(fit−1)),(3)
其中T为展开迭代次数,用上标T表示展开步骤T处的操作和特征。f0i设为0。在本文的实现中,Fti和Rti在不同的步骤中共享。后文展示了消融研究中共享和不同的Bti以及不同T的性能。在本文的实验中,使用不同的Bti并设置T = 2,除非另有说明。
本文对ResNet骨干B进行了更改,以允许它同时接受x和R(f)作为其输入。ResNet有四个阶段,每个阶段都由几个相似的块组成。只对每个阶段的第一个块进行更改,如下图所示。该块计算一个3层特征,并将其添加到一个通过快捷方式计算的特征中。为了使用特征R(f),添加了另一个卷积层,其内核大小设置为1。这个层的权值初始化为0,以确保当从预训练的检查点加载权值时,它不会产生任何实际影响。
本文使用Atrous空间金字塔池(ASPP)实现连接模块R,该模块以一个特征fti为输入,并将其转换为上图中使用的RFP特征。在这个模块中,有四个并行分支,以fti作为它们的输入,它们的输出沿着通道维度连接在一起,形成r的最终输出。其中三个分支使用一个卷积层,后面是一个ReLU层,输出通道的数量是输入通道的数量的1/4。
最后一个分支使用全局平均池化层压缩特征,然后使用1x1卷积层和ReLU层将压缩的特征转换为1/4大小(通道方面)的特征。最后,调整它的大小,并将其与来自其他三个分支的功能连接起来。这三个分支中的卷积层具有以下配置:kernel size = [1,3,3], atrous rate = [1,3,6], padding =[0,3,6]。
与原始的ASPP不同,没有在连接的特征之后的卷积层,因为在这里R不会生成在密集预测任务中使用的最终输出。注意,每个分支产生的通道是输入特征的1/4,并将它们连接起来生成一个与r的输入特征相同大小的特征。后文展示了有和没有ASPP模块的RFP的性能。
如上图所示,本文的RFP还使用了一个融合模块,将f ti和f t+1i结合起来,更新Equ(3)中使用的展开阶段t+1的fi值。融合模块与循环神经网络的更新过程非常相似,如果本文将f ti看作一个数据序列。融合模块用于从2到T展开的步骤。
展开步骤t + 1 (t = 1,…), T−1),融合模块以第T步的特征f ti和第T +1步FPN新计算的特征f t +1i作为输入。融合模块使用特征f t+1i,通过卷积层和Sigmoid运算计算注意映射。得到的注意图被用来计算f ti和f t+1i的加权和,形成一个更新的fi。这个fi将被用作f t+1i在接下来的步骤中进行计算。在消融研究中,将展示RFP在有和没有融合模块时的性能。
将详细介绍本文提出的可切换 Atrous Convolution (SAC)。图下显示了 SAC 的整体架构,它具有三个主要组件:在 SAC 组件之前和之后附加的两个全局上下文模块。本小节重点介绍中间的主要 SAC 组件,之后我们将解释全局上下文模块。
本文使用 y = Conv(x, w, r) 来表示权重 w 和空洞率 r 的卷积运算,它以 x 作为输入并输出 y。然后,可以将卷积层转换为 SAC,如下所示。
C o n v ( x , w , 1 ) → c o n v e r t t o S A C → S ( x ) ⋅ C o n v ( x , w , 1 ) + ( 1 − S ( x ) ⋅ C o n v ( x , w + Δ w , r ) , ( 4 ) Conv(x,w,1)\rightarrow{convert~to~SAC}\rightarrow{S(x)·Conv(x,w,1)+(1-S(x)·Conv(x,w+\Delta{w},r)},(4) Conv(x,w,1)→convert to SAC→S(x)⋅Conv(x,w,1)+(1−S(x)⋅Conv(x,w+Δw,r),(4)
其中 r 是 SAC 的超参数,Δw 是可训练的权重,开关函数 S(·) 实现为具有 5x5 内核的平均池化层,后跟 1x1 卷积层(见上图 )。开关功能取决于输入和位置;因此,主干模型能够根据需要适应不同的规模。在实验中设置 r = 3,除非另有说明。
本文通过将一个权重设置为 w 并将另一个权重设置为 w + Δw 来提出一种锁定机制,原因如下。目标检测器通常使用预训练的检查点来初始化权重。然而,对于从标准卷积层转换而来的 SAC 层,缺少较大空洞率的权重。由于不同尺度的物体可以通过相同的权重以不同的空洞率粗略检测,因此很自然地用预训练模型中的权重初始化缺失的权重。本文的实现使用 w + Δw 作为缺失权重,其中 w 来自预训练的检查点,Δw 初始化为 0。当固定 Δw = 0 时,观察到 AP 下降了 0.1%。但是没有锁定机制的单独的 Δw 会大大降低 AP。
如上图 所示,在 SAC 的主要组件之前和之后插入了两个全局上下文模块。这两个模块是轻量级的,因为输入特征首先由全局平均池化层压缩。全局上下文模块类似于 SENet ,除了两个主要区别:
(1)只有一个没有任何非线性层的卷积层,
(2)输出被添加回主流而不是乘以通过 Sigmoid 计算的重新校准值输入。
实验上,发现在 SAC 组件之前添加全局上下文信息(即向 switch 函数添加全局信息)对检测性能有积极影响。推测这是因为当全局信息可用时,S 可以做出更稳定的切换预测。然后,将全局信息移到 switch 函数之外,并将其放在主体之前和之后,以便 Conv 和 S 都可以从中受益。
没有采用原始的 SENet 公式,因为本文发现最终模型 AP 没有任何改进。在 Sec 的消融研究中。在下图 中,展示了具有和不具有全局上下文模块的 SAC 的性能。
RFP 中使用的融合模块。 σ 是 Sigmoid 的输出,用于融合不同步骤的特征。
在本文的实现中,使用可变形卷积 来替换方程式4中的两个卷积运算. 它们的偏移函数不共享,当从预训练的主干加载时,它们被初始化为预测 0。秒中的实验。上图将显示具有和不具有可变形卷积的 SAC 的性能比较。
本文通过替换主干中的所有 3x3 卷积层,在 ResNet 及其变体 [Deep residual learning for image recognition, Aggregated residual transformations for deep neural networks] 上采用 SAC。全局上下文模块中的权重和偏置初始化为0。S中的权重初始化为0,偏置设置为1。Δw初始化为0。上述初始化策略保证在加载主干时在 ImageNet 上进行预训练,在对 COCO 进行任何训练步骤之前,将所有 3x3 卷积层转换为 SAC 不会改变输出。
在下表中展示了 RFP 和 SAC 的消融研究。
上表 显示了基线 HTC 的框和掩码 AP,其中 ResNet-50 和 FPN 作为其主干。然后,将本文提出的 RFP 和 SAC 添加到基线 HTC 中,这两者都能够将 AP 提高 > 4%,而速度不会降低太多。将它们组合在一起产生了我们的 DetectoRS,它以 3.9 fps 的速度实现了 49% 的框 AP 和 42.1% 的掩码 AP。
上表显示了 RFP 和 SAC 的单独消融研究,其中介绍了它们改进的来源。对于 RFP,展示了“RFP + sharing”,其中 B1i 和 B2i 共享它们的权重。还通过在“RFP - aspp”和“RFP - fusion”中展示没有它们的 RFP 的性能来展示 ASPP 模块和融合模块的改进。
最后,将展开的步长 T 从 2 增加到 3,得到“RFP + 3X”,这进一步提高了框 AP 1.3%。对于 SAC,首先在没有 DCN 的情况下尝试 SAC(即“SAC - DCN”)。然后,展示了全局上下文能够在“SAC - DCN - global”中对 AP 进行改进。 “SAC - DCN - 锁定”打破了图【Switchable Atrous Convolution (SAC).】 中的锁定机制,其中第二个卷积仅使用 Δw,证明权重锁定对于 SAC 是必要的。最后,在“SAC - DCN + DS(双开关)”中,将 S(x) 和 1 - S(x) 替换为两个独立的开关 S1(x) 和 S2(x)。 上表中的消融研究,显示 RFP 和 SAC 的公式在我们探索的设计空间内具有最佳配置。
下图 提供了 HTC、“HTC + RFP”和“HTC + SAC”的结果可视化。从这个比较中,本文注意到 RFP 类似于选择性增强或抑制神经元激活的人类视觉感知,能够更容易地找到附近上下文信息更关键的被遮挡对象。
由于 SAC 能够根据需要增加视野,因此更能够检测图像中的大物体。这也与表中显示的 SAC 结果一致。 2 拥有更高的 APL。图 7 显示了 HTC、“HTC + RFP”、“HTC + SAC”和 DetectoRS 的训练损失。两者都能够显着加快训练过程并收敛到更低的损失。
在本小节中,展示了 DetectoRS 的主要结果。为最先进的检测器 HTC 配备了 DetectoRS,并使用 ResNet-50 和 ResNeXt-101 作为 DetectoRS 的主干。边界框检测结果如表下所示。
结果分为4组。第一组展示了单级检测器。第二组显示多级检测器。第三组是 HTC,它是 DetectoRS 的基线。第四组是本文的结果。结果还可以分为简单测试结果和 TTA 结果,其中 TTA 是测试时间增强的简称。
第三列显示是否使用 TTA。请注意,不同的方法使用不同的 TTA 策略。例如,CBNet 使用了强大的 TTA 策略,可以将他们的盒子 AP 从 50.7% 提高到 53.3%。当使用 ResNeXt-101-32x4d 作为主干时,本文的 TTA 策略仅带来 1.4% 的改进。不同检测器之间的简单测试设置也可能有很大差异。 DetectoRS 使用 (1333, 800) 作为测试图像大小。较大的输入大小往往会带来改进。 DetectoRS 采用与 HTC 相同的设置。
还在下表中显示了实例分割结果。 在他们的论文中没有提供 mask AP,本文只比较了 DetectoRS 和它的基线 HTC。边界框和掩码对象检测的实验设置是相同的,只是报告的是 APmask 而不是 APbbox。
如上表所示,本文可以看到与边界框结果一致,DetectoRS 在实例分割的基线上也带来了显着的改进。
最后,全景分割结果显示在表中。 6. 由于 DetectoRS 只检测事物,使用 DeepLabv3+和主干 WideResNet-41进行的事物预测。在不调整任何超参数的情况下,使用全景 API 中可用的脚本结合事物和事物预测,为 COCO 上的全景分割设置了 50.0% PQ 的最新技术。
下图 显示了在表【使用 ResNet-50 在 COCO val2017 上对 RFP(中间组)和 SAC(底部组)进行消融研究】中“SAC - DCN”最后一个开关功能输出的可视化结果。 图中较暗的强度表示该区域的开关函数从较大的空洞率中收集到更多的输出。将开关输出与原始图像进行比较,观察到开关输出与真实物体尺度很好地对齐。这些结果证明了 Switchable Atrous Convolution 的行为与本文的直觉是一致的,在遇到大物体时往往会使用更大的 atrous rate。
在本文中,受“the design philosophy of looking and thinking twice”的设计理念的启发,本文提出了 DetectoRS,它包括递归特征金字塔和可切换的 Atrous 卷积。递归特征金字塔在宏观层面实现了两次思考,其中 FPN 的输出通过反馈连接被带回自下而上骨干网的每个阶段。
Switchable Atrous Convolution 在微观层面上进行两次实例化,其中输入与两个不同的 atrous 速率进行卷积。 DetectoRS 在 COCO 上进行了对象检测、实例分割和全景分割的测试。它为所有这些任务设定了新的最先进的结果。