这篇文章的主要内容可以总结如下:
-
研究背景与动机:
-
非局部网络(NLNet)通过自注意力机制捕捉长距离依赖关系,但其计算成本较高。
-
作者通过实证分析发现,NLNet为不同查询位置生成的注意力图几乎相同,表明其实际上学习的是查询无关的全局上下文。
-
-
简化非局部块:
-
基于上述发现,作者提出了一种简化的非局部块(SNL),通过共享查询无关的全局注意力图来减少计算量,同时保持性能。
-
-
全局上下文建模框架:
-
作者提出了一个三步通用框架,用于全局上下文建模,包括上下文建模、特征变换和特征融合。
-
该框架统一了简化非局部块和压缩激励网络(SENet),并在此基础上提出了新的全局上下文块(GC块)。
-
-
全局上下文块(GC块):
-
GC块结合了简化非局部块的有效性和SENet的轻量性,采用瓶颈变换和层归一化来减少参数和计算量。
-
GC块可以应用于多个网络层,显著提升了模型的性能。
-
-
实验与结果:
-
作者在COCO目标检测/分割、ImageNet图像分类和Kinetics动作识别三个任务上进行了实验。
-
实验结果表明,GCNet在多个基准测试中优于简化非局部块和SENet,且计算成本仅略有增加。
-
-
结论:
-
文章提出了一种新的全局上下文建模方法,通过简化非局部块和引入GC块,显著提升了模型的性能和效率。
-
GCNet在多个视觉任务中表现出色,展示了其在全局上下文建模中的优势。
-
这篇文章通过分析和简化非局部网络,提出了一种新的全局上下文建模框架和GC块,显著提升了模型的性能和效率。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:

官方项目地址在这里。
摘要
非局部网络(NLNet)提出了一种通过为每个查询位置聚合查询特定的全局上下文来捕捉长距离依赖的开创性方法。然而,通过严格的实证分析,我们发现非局部网络建模的全局上下文对于图像中的不同查询位置几乎是相同的。本文利用这一发现,创建了一个基于查询无关公式的简化网络,该网络在保持NLNet准确性的同时,显著减少了计算量。我们进一步观察到,这种简化设计与压缩激励网络(SENet)具有相似的结构。因此,我们将它们统一为一个三步通用框架,用于全局上下文建模。在该通用框架中,我们设计了一个更好的实例化版本,称为全局上下文(GC)块,它轻量且能有效建模全局上下文。其轻量特性使我们能够将其应用于骨干网络中的多个层,构建全局上下文网络(GCNet),该网络在多个主要基准测试中通常优于简化版的NLNet和SENet。

1 引言
捕捉长距离依赖,旨在提取视觉场景的全局理解,已被证明对广泛的识别任务有益,如图像/视频分类、目标检测和分割[31, 12, 38, 14]。在卷积神经网络中,由于卷积层在局部邻域内构建像素关系,长距离依赖主要通过深度堆叠卷积层来建模。然而,直接重复卷积层在计算上是低效的,且难以优化[31]。这将导致长距离依赖的建模效果不佳,部分原因是难以在远距离位置之间传递信息。
为了解决这个问题,非局部网络[31]提出使用一层通过自注意力机制[28]来建模长距离依赖。对于每个查询位置,非局部网络首先计算查询位置与所有位置之间的成对关系,形成注意力图,然后通过加权求和聚合所有位置的特征,权重由注意力图定义。最后,聚合的特征被添加到每个查询位置的特征中,形成输出。
非局部网络中的查询特定注意力权重通常暗示了相应位置对查询位置的重要性。虽然可视化查询特定的重要性权重有助于深入理解,但原始论文中很大程度上缺少了这种分析。我们弥补了这一遗憾,如图1所示,但令人惊讶地发现,不同查询位置的注意力图几乎相同,表明只学到了查询无关的依赖关系。这一观察结果通过表1中的统计分析进一步验证,不同查询位置的注意力图之间的距离非常小。
基于这一观察,我们通过显式地为所有查询位置使用查询无关的注意力图来简化非局部块。然后,我们使用该注意力图将相同的聚合特征添加到所有查询位置的特征中以形成输出。这个简化块的计算成本显著低于原始的非局部块,但在多个重要视觉识别任务中几乎没有观察到准确性的下降。此外,我们发现这个简化块与流行的压缩激励(SE)网络[14]具有相似的结构。它们都通过从所有位置聚合的相同特征来增强原始特征,但在聚合策略、变换和增强函数的选择上有所不同。通过抽象这些函数,我们得到了一个三步通用框架,该框架统一了简化版的NL块和SE块:(a)上下文建模模块,将所有位置的特征聚合在一起形成全局上下文特征;(b)特征变换模块,捕捉通道间的相互依赖关系;(c)融合模块,将全局上下文特征合并到所有位置的特征中。
简化版的NL块和SE块是该通用框架的两个实例化版本,但在三个步骤的实现上有所不同。通过每个步骤的比较研究,我们发现简化版的非局部块和SE块都是次优的,每个块在某些步骤上优于另一个块。通过在每个步骤中结合最优实现,我们得到了该通用框架的一个新实例化版本,称为全局上下文(GC)块。新块在上下文建模(使用全局注意力池化)和融合(使用加法)步骤上与简化版的NL块共享相同的实现,而在变换步骤(使用两层瓶颈)上与SE块共享相同的实现。GC块在多个视觉识别任务中表现优于简化版的非局部块和SE块。
与SE块类似,所提出的GC块也是轻量级的,这使得它可以应用于ResNet架构中的所有残差块,而原始的非局部块由于其计算量大,通常只在一层或几层之后应用。GC块增强的网络被称为全局上下文网络(GCNet)。在COCO目标检测/分割任务中,GCNet在APboxbox上分别比NL-Net和SENet高出1.9%和1.7%,在APmask上分别高出1.5%和1.5%,而FLOPs仅增加了0.07%。此外,GCNet在三个通用视觉识别任务上均取得了显著的性能提升:COCO上的目标检测/分割(与Mask R-CNN和FPN及ResNet-50作为骨干网络相比,APbox提高了2.7%,APmask提高了2.4%),ImageNet上的图像分类(与ResNet-50相比,top-1准确率提高了0.8%),以及Kinetics上的动作识别(与ResNet-50 Slow-only基线相比,top-1准确率提高了1.1%),而计算成本仅增加了不到0.26%。
2 相关工作
深度架构。随着卷积网络最近在大规模视觉识别任务中取得了巨大成功,许多尝试对原始架构进行了改进,以提高准确性[18, 26, 27, 10, 37, 15, 34, 14, 43, 13, 40, 11, 4, 42, 19, 2, 24, 31, 35, 6]。网络设计的一个重要方向是改进基本组件的功能公式,以提升深度网络的能力。ResNeXt[34]和Xception[3]采用分组卷积来增加基数。可变形卷积网络[4, 42]设计了可变形卷积以增强几何建模能力。压缩激励网络[14]采用通道重缩放来显式建模通道依赖关系。
我们的全局上下文网络是一种新的骨干架构,具有新颖的GC块,能够更有效地建模全局上下文,在广泛的视觉任务(如目标检测、实例分割、图像分类和动作识别)中提供卓越的性能。
长距离依赖建模。最近的长距离依赖建模方法可以分为两类。第一类是采用自注意力机制来建模成对关系。第二类是建模查询无关的全局上下文。
自注意力机制最近已成功应用于各种任务,如机器翻译[7, 8, 28]、图嵌入[29]、生成建模[39]和视觉识别[30, 12, 31, 36]。[28]是最早将自注意力机制应用于机器翻译中长距离依赖建模的尝试之一。[12]将自注意力机制扩展到目标检测中对象之间的关系建模。NLNet[31]采用自注意力机制来建模像素级的成对关系。CCNet[16]通过堆叠两个交叉块加速NLNet,并应用于语义分割。然而,NLNet实际上为每个查询位置学习了查询无关的注意力图,这在建模像素级成对关系时浪费了计算成本。
为了建模全局上下文特征,SENet[14]、GENet[13]和PSANet[41]对不同通道进行重缩放,以重新校准通道依赖关系与全局上下文。CBAM[32]通过重缩放重新校准不同空间位置和通道的重要性。然而,所有这些方法都采用重缩放进行特征融合,这对于全局上下文建模来说不够有效。
所提出的GCNet可以通过加法融合有效地建模全局上下文,如NLNet[31](其计算量大且难以集成到多层中),同时具有SENet[14]的轻量特性(其采用缩放且对全局上下文建模不够有效)。因此,通过更有效的全局上下文建模,GCNet可以在多个主要基准测试中优于NLNet和SENet。
3 非局部网络分析
在本节中,我们首先回顾非局部块[31]的设计。为了直观理解,我们可视化了由非局部块的广泛使用实例生成的不同查询位置的注意力图。为了统计其行为,我们计算了所有查询位置的注意力图之间的平均距离(余弦距离和Jensen-Shannon散度)。

重新审视非局部块


非局部块可以被视为一个全局上下文建模块,它通过查询特定的注意力图为每个查询位置聚合查询特定的全局上下文特征(通过加权平均从所有位置聚合)。由于为每个查询位置计算注意力图,非局部块的时间和空间复杂度都与位置数Np成二次方关系。
分析
可视化:为了直观理解非局部块的行为,我们首先可视化不同查询位置的注意力图。由于不同实例的性能相当[31],这里我们仅可视化最广泛使用的版本——嵌入高斯,其公式与[28]中提出的块相同。由于视频中的注意力图难以可视化和理解,我们仅在目标检测/分割任务上展示可视化结果,该任务以图像为输入。遵循非局部网络在目标检测中的标准设置[31],我们在Mask R-CNN中使用FPN和Res50进行实验,仅在res4的最后一个残差块之前添加一个非局部块。
在图2中,我们从COCO数据集中随机选择了六张图像,并可视化了每张图像中的三个不同查询位置(红点)及其查询特定的注意力图(热图)。我们惊讶地发现,对于不同的查询位置,它们的注意力图几乎相同。为了通过统计验证这一观察结果,我们分析了不同查询位置的全局上下文之间的距离。

表1展示了两个标准任务上两种距离度量的结果。首先,“输入”列中的余弦距离值较大,表明非局部块的输入特征在不同位置之间是可区分的。但“输出”列中的余弦距离值非常小,表明非局部块建模的全局上下文特征对于不同查询位置几乎是相同的。所有实例的注意力图(“att”)上的两种距离度量也非常小,这再次验证了可视化中的观察结果。换句话说,尽管非局部块旨在为每个查询位置计算查询特定的全局上下文,但训练后的全局上下文实际上与查询位置无关。因此,无需为每个查询位置计算查询特定的全局上下文,这使我们能够简化非局部块。
4 方法
简化非局部块

由于不同实例在COCO和Kinetics上的性能相当,如表1所示,这里我们采用最广泛使用的版本——嵌入高斯——作为基本的非局部块。基于不同查询位置的注意力图几乎相同的观察结果,我们通过计算全局(查询无关)注意力图并共享该全局注意力图来简化非局部块。根据[12]的结果,带有和不带有Wz的变体性能相当,我们在简化版本中省略了Wz。我们的简化非局部块定义为:

此,我们直接将全局上下文建模为所有位置特征的加权平均值,并将全局上下文特征聚合(添加)到每个查询位置的特征中。在实验中,我们直接用简化非局部(SNL)块替换非局部(NL)块,并在三个任务(COCO目标检测、ImageNet分类和动作识别)上评估准确性和计算成本,如表2(a)、4(a)和5所示。正如我们所预期的,SNL块在显著降低FLOPs的情况下,实现了与NL块相当的性能。
全局上下文建模框架
如图4(b)所示,简化非局部块可以抽象为三个步骤:(a)全局注意力池化,采用1x1卷积Wk和softmax函数获得注意力权重,然后执行注意力池化以获得全局上下文特征;(b)通过1x1卷积Wv进行特征变换;(c)特征聚合,采用加法将全局上下文特征聚合到每个位置的特征中。
我们将这种抽象视为一个全局上下文建模框架,如图4(a)所示,并定义为

全局上下文块
在这里,我们提出了全局上下文建模框架的一个新实例化版本,称为全局上下文(GC)块,它具有简化非局部(SNL)块在长距离依赖建模上的有效性,以及压缩激励(SE)块在计算上的轻量性。
在简化非局部块中,如图4(b)所示,变换模块具有最多的参数,包括一个1x1卷积,参数为C-C。当我们将SNL块添加到更高层时,例如res5,这个1x1卷积的参数数量C-C=2048-2048主导了该块的参数数量。为了获得SE块的轻量特性,这个1x1卷积被替换为一个瓶颈变换模块,从而将参数数量从C-C显著减少到2.C-C/r,其中r是瓶颈比率,C/r表示瓶颈的隐藏表示维度。默认的缩减比率设置为r=16,变换模块的参数数量可以减少到原始SNL块的1/8。关于不同瓶颈比率r的更多结果如表2(e)所示。
由于两层瓶颈变换增加了优化的难度,我们在瓶颈变换内部(在ReLU之前)添加了层归一化,以简化优化,并作为正则化器,有助于泛化。如表2(d)所示,层归一化可以显著增强COCO上的目标检测和实例分割。
全局上下文(GC)块的详细架构如图4(d)所示,公式为


由于GC块是轻量级的,它可以应用于多个层,以更好地捕捉长距离依赖,而计算成本仅略有增加。以ImageNet分类的ResNet-50为例,GC-ResNet-50表示将GC块添加到ResNet-50的所有层(c3+c4+c5),瓶颈比率为16。GC-ResNet-50将ResNet-50的计算量从约3.86 GFLOPs增加到约3.87 GFLOPs,相对增加了0.26%。此外,GC-ResNet-50在ResNet-50所需的约25.56M参数基础上,引入了约2.52M额外参数,相对增加了约9.86%。
全局上下文可以广泛应用于视觉识别任务,GC块的灵活性使其能够插入到各种计算机视觉问题的网络架构中。在本文中,我们将GC块应用于三个通用视觉任务——图像识别、目标检测/分割和动作识别——并在所有三个任务中观察到显著的改进。
与非局部块的关系。由于非局部块实际上学习的是查询无关的全局上下文,我们的全局上下文块的全局注意力池化建模了与NL块相同的全局上下文,但计算成本显著降低。由于GC块采用瓶颈变换来减少全局上下文特征中的冗余,参数数量和FLOPs进一步减少。GC块的FLOPs和参数数量显著低于NL块,这使得我们的GC块能够以仅略微增加的计算成本应用于多个层,同时更好地捕捉长距离依赖并辅助网络训练。
与压缩激励块的关系。SE块与我们的GC块的主要区别在于融合模块,这反映了两块的不同目标。SE块采用重缩放来重新校准通道的重要性,但对长距离依赖的建模不足。我们的GC块遵循NL块,通过加法将全局上下文聚合到所有位置,以捕捉长距离依赖。第二个区别是瓶颈变换中的层归一化。由于我们的GC块采用加法进行融合,层归一化可以简化瓶颈变换的两层架构的优化,从而带来更好的性能。第三,SE块中的全局平均池化是GC块中全局注意力池化的特例。表2(f)和4(b)中的结果表明,我们的GCNet相对于SENet的优越性。
5 实验
为了评估所提出的方法,我们在三个基本任务上进行了实验:COCO[21]上的目标检测/分割、ImageNet[5]上的图像分类以及Kinetics[17]上的动作识别。实验结果表明,所提出的GCNet通常优于非局部网络(FLOPs更低)和压缩激励网络(FLOPs相当)。
COCO上的目标检测/分割

我们在COCO 2017[21]上研究了我们的模型,该数据集的训练集包含118k张图像,验证集包含5k张图像,测试开发集包含20k张图像。我们遵循标准设置[9],通过不同框和掩码IoU的标准平均精度分数来评估目标检测和实例分割。
设置。我们的实验使用PyTorch[23]实现。除非另有说明,我们的GC块(比率rr=16)应用于ResNet/ResNeXt的c3、c4、c5阶段。
训练。我们使用Mask R-CNN[9]的标准配置,FPN和ResNet/ResNeXt作为骨干架构。输入图像被调整大小,使其较短边为800像素[20]。我们在8个GPU上训练,每个GPU处理2张图像(有效小批量大小为16)。所有模型的骨干都在ImageNet分类[5]上进行了预训练,然后除了c1和c2之外的所有层都与检测和分割头联合微调。与[9]中关于RPN的分阶段训练不同,我们采用[25]中的端到端训练,获得了更好的结果。与传统的微调设置[9]不同,我们使用同步批归一化来替换冻结的批归一化。所有模型都使用同步SGD训练12个周期,权重衰减为0.0001,动量为0.9,这大致对应于Mask R-CNN基准[22]中的1x计划。学习率初始化为0.02,在第9和第11个周期时衰减10倍。超参数的选择也遵循Mask R-CNN基准[22]的最新版本。

ImageNet上的图像分类
ImageNet[5]是图像分类的基准数据集,包含来自1000个类别的1.28M训练图像和50K验证图像。我们遵循[10]中的标准设置,在训练集上训练深度网络,并报告验证集上的单裁剪top-1和top-5错误。我们的预处理和增强策略遵循[33]和[14]中提出的基线。为了加快实验速度,所有报告的结果都通过两个阶段进行训练。我们首先在8个GPU上训练标准ResNet-50 120个周期,每个GPU处理64张图像(有效批量大小为512),并进行5个周期的线性预热。其次,我们将新设计的块插入到第一阶段训练的模型中,并以0.02的初始学习率微调40个周期。基线也遵循这个两阶段训练,但在第二阶段不添加新块。余弦学习率衰减用于训练和微调。
块设计。与COCO上的块设计一样,表4(a)中报告了不同块的结果。GC块在参数更少、计算量更低的情况下,性能略优于NL和SNL块,这表明我们设计的通用性和泛化能力。通过在所有残差块(c3+c4+c5)中插入GC块,性能进一步提升(与基线相比,top-1准确率提高了0.82%),而计算开销仅略有增加(FLOPs相对增加了0.26%)。
池化和融合。我们还研究了不同池化和融合方法在图像分类中的功能。比较表4(b)和表2(f),可以看出注意力池化在图像分类中具有更大的影响,这可能是[14]中缺失的成分之一。此外,带有加法的注意力池化(GCNet)在几乎相同的参数数量和FLOPs下,比带有缩放的全局平均池化(SENet)在top-1准确率上高出0.44%。
Kinetics上的动作识别
对于人类动作识别,我们采用了广泛使用的Kinetics[17]数据集,该数据集包含400个人类动作类别的约240k训练视频和20k验证视频。所有模型都在训练集上训练,并在验证集上测试。遵循[31],我们报告top-1和top-5识别准确率。我们采用[6]中的slow-only基线,这是迄今为止最好的单一模型,可以利用从ImageNet预训练模型膨胀的权重[2]。这种膨胀的3D策略[31]大大加快了收敛速度,相比于从头开始训练。所有实验设置明确遵循[6];slow-only基线以8帧(8×8)作为输入进行训练,并采用多(30)剪辑验证。
消融研究结果如表5所示。对于Kinetics实验,GC块的比率设置为4。首先,当用简化NL块和GC块替换NL块时,性能可以视为相当(top-1准确率提高了0.19%和0.11%,top-5准确率提高了0.15%和0.14%)。与COCO和ImageNet一样,添加更多GC块进一步提高了结果,并在计算量大幅减少的情况下优于NL块。
6 结论
用于长距离依赖建模的开创性工作——非局部网络——旨在建模查询特定的全局上下文,但实际上只建模了查询无关的上下文。基于此,我们简化了非局部网络,并将这个简化版本抽象为一个全局上下文建模框架。然后,我们提出了该框架的一个新实例化版本——GC块,它轻量且能有效建模长距离依赖。我们的GCNet通过将GC块应用于多个层构建而成,在多个主要基准测试中通常优于简化版的NLNet和SENet。
1772

被折叠的 条评论
为什么被折叠?



