https://arxiv.org/abs/1711.07971v3
卷积运算和循环运算都是一次处理一个局部邻域的构造块。在本文中,我们将非局部操作表示为一个通用的构建块族,用于捕获长期依赖关系。受计算机视觉中经典非局部均值方法的启发,我们的非局部操作将某个位置的响应计算为所有位置特征的加权和。这种构造块可以插入到许多计算机视觉架构中。在视频分类任务上,即使没有任何提示,我们的非局部模型也可以在Kinetics和Charades数据集上与当前的竞争优胜者竞争或超越他们。在静态图像识别中,我们的非局部模型改进了COCO任务集上的目标检测/分割和姿势估计。代码可在
1.导言
在深度神经网络中,捕获长程依赖关系是非常重要的。对于顺序数据(例如,在语音、语言中),循环操作[38,23]是长期依赖性建模的主要解决方案。对于图像数据,长距离依赖性由深层卷积运算形成的大感受野建模[14,30]。
卷积运算和递归运算都处理一个局部邻域,无论是在空间上还是在时间上;因此,只有重复应用这些操作,通过数据逐步传播信号,才能捕获长程依赖关系。重复局部操作有几个限制。首先,它的计算效率很低。其次,它会导致优化困难,需要仔细解决[23,21]。最后,这些挑战使得多跳依赖关系建模变得困难,例如,当消息需要在远程位置之间来回传递时。
在本文中,我们将非局部操作作为一种有效、简单和通用的组件,用于使用深度神经网络捕获远程依赖关系。我们提出的非局部运算是计算机视觉中经典非局部平均运算[4]的推广。直观地说,非局部操作将某个位置的响应计算为输入特征映射中所有位置特征的加权和(图1)。位置集可以是空间、时间或时空,这意味着我们的操作适用于图像、序列和视频问题。
使用非局部运算有几个优点:(a)与循环运算和卷积运算的渐进行为相比,非局部运算通过计算任意两个位置之间的交互直接捕获长程依赖,而不管它们的位置距离如何;(b) 正如我们在实验中所展示的,非局部操作是有效的,即使只有几层(例如,5层),也能达到最佳效果;(c) 最后,我们的非局部操作保持可变的输入大小,并且可以轻松地与其他操作(例如,我们将使用的卷积)组合。
我们展示了非局部操作在视频分类应用中的有效性。在视频中,空间和时间上的遥远像素之间会发生远距离交互。一个非局部块(我们的基本单元)可以以前馈方式直接捕获这些时空依赖关系。对于一些非局部块,我们称之为非局部神经网络的架构比2D和3D卷积网络[48](包括膨胀变量[7])对视频分类更精确。此外,非局部神经网络比三维卷积神经网络在计算上更经济。在Kinetics[27]和Charades[44]数据集上介绍了全面的烧蚀研究。只使用RGB和没有任何铃声和哨子(例如,光流,多尺度测试),我们的方法达到的结果比或最优于两个数据集上最新的比赛赢家。
为了证明非局部操作的通用性,我们进一步在COCO数据集上进行了对象检测/分割和姿势估计实验[33]。在强mask R-CNN基线[19]的基础上,我们的非局部块可以增加所有三项任务的精度,而额外的计算成本很小。结合视频上的证据,这些图像实验表明,非局部操作通常是有用的,可以成为设计深层神经网络的基本构件。
[if !supportLists]2. [endif]相关工作
非局部图像处理。
非局部均值[4]是一种经典的滤波算法,用于计算图像中所有像素的加权平均值。它允许远距离像素在基于patch外观相似性的位置对滤波响应作出贡献。这种非局部滤波思想后来发展为BM3D(块匹配3D)[10],它对一组类似但非局部的patch执行滤波。即使与深度神经网络相比,BM3D也是一个坚实的图像去噪基线[5]。块匹配与神经网络一起用于图像去噪[6,31]。非局部匹配也是成功的纹理合成[12]、超分辨率[16]和修复[1]算法的本质。
图形模型。
长期相关性可以通过图形模型建模,如条件随机场(CRF)[29,28]。在深层神经网络的背景下,可以利用CRF对网络的语义分割预测进行后期处理[9]。CRF的迭代平均场推断可以转化为一个递归网络并进行训练[56,42,8,18,34]。相比之下,我们的方法是计算非局部滤波的简单前馈块。与这些为分割而开发的方法不同,我们的通用组件用于分类和检测。这些方法和我们的方法也与一个更抽象的模型有关,称为图神经网络[41]。
序列的前馈建模。
最近出现了一种使用前馈(即非递归)网络对语音和语言序列建模的趋势[36,54,15]。在这些方法中,长期依赖性由非常深的1-D卷积产生的大感受野捕获。这些前馈模型适用于并行实现,并且比广泛使用的递归模型更有效。
自注意力。
我们的工作与最近机器翻译的自注意力[49]方法有关。自注意力模块通过关注所有位置并在嵌入空间中取其加权平均值来计算序列中某个位置(例如句子)的响应。正如我们将在下一篇文章中讨论的那样,自注意力可以被视为非局部平均值的一种形式[4],从这个意义上说,我们的工作将机器翻译的自注意力与适用于计算机视觉中图像和视频问题的更一般的非局部滤波操作联系起来。
互动网络。
交互网络(IN)[2,52]最近被提出用于物理系统建模。它们在涉及成对交互的对象的图形上进行操作。Hoshen[24]在多智能体预测建模的背景下提出了更有效的顶点注意(VAIN)。另一个变量,命名为关系网络[40],在其输入中的所有位置对特征嵌入计算函数。我们的方法也处理所有对,我们将在等式(1)中解释(f(xi,xj))。虽然我们的非局部网络与这些方法相联系,但我们的实验表明,与注意/互动/关系(例如,网络可以关注局部区域)思想正交的模型的非局部性是其经验成功的关键。非局部建模是图像处理的一个长期关键要素(如[12,4]),在最近的计算机视觉神经网络中被大量忽略。
视频分类架构。
视频分类的自然解决方案是将CNN用于图像和RNN用于序列的成功结合起来[55,11]。相比之下,前馈模型是通过时空中的三维卷积(C3D)[26,48]实现的,而三维滤波器可以通过“膨胀”[13,7]预训练的二维滤波器形成。除了对原始视频输入进行端到端建模外,还发现光流[45]和轨迹[50,51]也很有帮助。流和轨迹都是现成的模块,可能会发现长期的非局部依赖性。视频架构的系统比较见[7]。
3.非局部神经网络
我们首先给出非局部操作的一般定义,然后提供几个具体的实例。
3.1. 配方
根据非局部平均运算[4],我们将深度神经网络中的一般非局部运算定义为:
这里i是要计算其响应的输出位置(在空间、时间或时空中)的索引,j是枚举所有可能位置的索引。x是输入信号(图像、序列、视频;通常是它们的特征),y是与x大小相同的输出信号。成对函数f计算i和所有j之间的标量(表示亲和力等关系)。一元函数g计算位置j处输入信号的表示。响应通过因子标准化C(x)。
式(1)中的非局部行为是由于所有位置(∀j) 在操作中考虑到了这些问题。作为比较,卷积运算将局部邻域中的加权输入相加(例如,i− 1.≤ J≤ i+1(在内核大小为3的1D情况下),并且在时间i的循环操作通常仅基于当前和最新的时间步长(例如,j=i或i)− 1).
非局部操作也不同于完全连接(fc)层。公式(1)根据不同位置之间的关系计算响应,而fc使用学习的权重。换句话说,XJ和席之间的关系不是FC中的输入数据的函数,不像非局部层。此外,等式(1)中的公式支持可变大小的输入,并在输出中保持相应的大小。相反,FC层需要固定大小的输入/输出,并且失去位置对应关系(例如,在位置I处从席到易)。
非局部操作是一种灵活的构造块,可以很容易地与卷积/递归层一起使用。它可以被添加到深度神经网络的早期部分,不像最后经常使用的fc层。这使我们能够构建一个结合了非局部和局部信息的更丰富的层次结构。
3.2. 实例
接下来,我们将描述f和g的几个版本。有趣的是,我们将通过实验(表2a)证明我们的非局部模型对这些选择不敏感,这表明一般的非局部行为是观察到的改进的主要原因。
为了简单起见,我们只考虑G的线性嵌入形式:G(XJ)=WGXJ,其中Wg是要学习的权重矩阵。这被实现为,例如,空间中的1×1卷积或时空中的1×1×1卷积。
接下来我们讨论成对函数f的选择。
高斯分布。
在非局部均值[4]和双边滤波器[47]之后,f的自然选择是高斯函数。在本文中,我们考虑:
这里xtixj是点积相似性。[4,47]中使用的欧几里德距离也适用,但dot产品在现代深度学习平台中更易于实现。归一化因子设置为C(x)=P∀jf(xi,xj)。
嵌入高斯分布。
高斯函数的一个简单扩展是计算嵌入空间中的相似性。在本文中,我们考虑:
这里,Th(Xi)=W thi席和席(xJ)=W×xJ是两个嵌入。如上所述,我们设置C(x)=P∀jf(xi,xj)。
我们注意到,最近为机器翻译提出的自注意力模块[49]是嵌入式高斯版本中非局部操作的特例。这可以从以下事实中看出:对于给定的i,C(1x)f(xi,xj)成为沿尺寸j的softmax计算。因此,我们得到y=softmax(xT WθT Wφx)g(x),这是[49]中的自注意力形式。因此,我们的工作通过将这一最新的自注意力模型与非局部手段的经典计算机视觉方法相关联[4],提供了见解,并将[49]中的顺序自注意力网络扩展为计算机视觉中图像/视频识别的通用空时非局部网络。
尽管与[49]有关,但我们发现注意行为(由于softmax)在我们研究的应用中并不重要。为了说明这一点,我们接下来将描述非局部操作的两个替代版本。
点积。
f可定义为点积相似性:
这里我们采用嵌入式版本。在这种情况下,我们将归一化因子设置为C(x)=N,其中N是x中的位置数,而不是f的和,因为它简化了梯度计算。像这样的归一化是必要的,因为输入可以具有可变的大小。
点积和嵌入式高斯版本之间的主要区别在于softmax的存在,它起着激活函数的作用。串联。连接由关系网络中的成对函数用于视觉推理[40]。我们还评估了f的串联形式:
此处[·,·]表示串联,wf是将串联向量投影到标量的权重向量。如上所述,我们设置C(x)=N。在这种情况下,我们在f中采用ReLU[35]。
以上几个变体展示了我们通用非局部操作的灵活性。我们相信替代版本是可能的,并可能改善结果。
3.3. 非局部块
我们将等式(1)中的非局部操作包装成一个非局部块,该块可以合并到许多现有架构中。我们将非局部块定义为:
式中,式(1)中给出了yi,“+xi”表示残差连接[21]。残差连接允许我们将新的非局部块插入任何预训练的模型,而不会破坏其初始行为(例如,如果Wz初始化为零)。图2中举例说明了一个非局部块。等式(2)、(3)或(4)中的成对计算可以简单地通过矩阵乘法完成,如图2所示;(5)中的连接版本很简单。
非局部块的成对计算在用于高级次采样特征映射时是轻量级的。例如,图2中的典型值为T=4、H=W=14或7。通过矩阵乘法进行的成对计算可与标准网络中的典型卷积层进行比较。我们进一步采用以下实现,使其更加高效。
非局部块的实现。我们将Wg、Wθ和Wφ表示的通道数设置为x中通道数的一半。这遵循了[21]中的瓶颈设计,并将块的计算量减少了约一半。等式(6)中的权重矩阵Wz计算yi上的位置嵌入,将通道数与x匹配。见图2。
子采样技巧可用于进一步减少计算量。我们将公式(1)修改为:yi=1c(ˆx)P∀j f(xi,ˆxj)g(ˆxj),其中ˆx是x的二次抽样版本(例如,通过池)。我们在空间域中执行此操作,这可以将成对计算量减少1/4。这种技巧不会改变非局部行为,只会使计算变得更稀疏。这可以通过在图2中φ和g之后添加最大池层来实现。W
e对本文研究的所有非局部块使用这些有效修改。
4.视频分类模型
为了了解非局部网络的行为,我们对视频分类任务进行了全面的实验。首先,我们描述了这项任务的基线网络架构,然后将其扩展到3D CONVNET[48,7]和我们提出的非局部网络。
二维净基线(C2D)。
为了隔离我们的非局部网络与三维网络的时间效应,我们构建了一个简单的二维基线架构,在该架构中,时间维度被简单地处理(即,仅通过池)。
表1显示了我们在ResNet-50主干网下的C2D基线。输入视频剪辑有32帧,每帧224×224像素。表1中的所有卷积本质上都是2D核,逐帧处理输入(实现为1×k×k核)。该模型可以直接从ImageNet上预训练的ResNet权重初始化。ResNet-101对应物也是以同样的方式构建的。
涉及时域的唯一操作是池层。换句话说,这个基线只是简单地聚合了时间信息。
充气3D ConvNet(I3D)。
如[13,7]所述,可以通过“膨胀”内核将表1中的C2D模型转换为3D卷积模型。例如,2D k×k内核可以膨胀为跨越t帧的3D t×k×k内核。该内核可以从2D模型(在ImageNet上预训练)初始化:t×k×k内核中的每个t平面由预训练的k×k权重初始化,并按1/t重新缩放。如果视频由一个单独的静态帧组成,则该初始化会产生与在静态帧上运行的2D预训练模型相同的结果。
我们研究了两种膨胀情况:我们要么将残差块中的3×3内核膨胀到3×3×3(类似于[7]),要么将残差块中的第一个1×1内核膨胀到3×1×1(类似于[13])。我们将其表示为I3D3×3×3和I3D3×1×1。由于三维卷积是计算密集型的,我们只为每2个残差块膨胀一个核;将更多层充气显示出收益递减。我们把conv1充气到5×7×7。
[if !supportLists][7] [endif]的作者已经证明,I3D模型比CNN+LSTM模型更精确。
非局部网络。
我们将非局部块插入C2D或I3D,以将它们转换为非局部网络。我们研究添加1、5或10个非局部块;下一节将在上下文中描述实现细节。
4.1. 实施细节
训练
我们的模型是在ImageNet上预训练的[39]。除非指定,否则我们使用32帧输入剪辑对模型进行微调。这些剪辑是通过从原始全长视频中随机剪切出64个连续帧,然后每隔一帧删除一帧而形成的。空间大小为224×224像素,从缩放视频中随机裁剪,其较短的边在[256,320]像素中随机采样,如下[46]。我们在一台8-GPU机器上训练,每个GPU在一个小批量中有8个剪辑(因此小批量总共有64个剪辑)。我们总共为400k次迭代训练我们的模型,从学习率为0.01开始,每150k次迭代将学习率降低10倍(见图4)。我们使用0.9的动量和0.0001的权重衰减。我们在全局池层之后采用了dropout[22],dropout率为0.5。应用BatchNorm(BN)[25]时,我们会对模型进行微调。这与微调resnet的常规做法形成对比[21],在这种做法中,BN被冻结。我们发现,在应用程序中启用BN可以减少过度拟合。
我们采用[20]中的方法初始化非局部块中引入的权重层。我们在代表Wz的最后1×1×1层之后添加一个BN层;我们不会将BN添加到非局部块中的其他层。此BN层的比例参数在[17]之后初始化为零。这确保了整个非局部块的初始状态是标识映射,因此可以将其插入任何预训练的网络中,同时保持其初始行为。
推论
在[46]之后,我们对短边被重新缩放到256的视频执行空间上完全的协同进化推断。对于时域,在我们的实践中,我们从一个全长视频中均匀地采样10个片段,并分别计算它们的softmax分数。最后的预测是所有剪辑的平均softmax分数。
5.视频分类实验
我们对具有挑战性的Kinetics数据集进行了全面研究[27]。我们还报告了Charades数据集[44]的结果,以显示我们模型的通用性。
5.1. Kinetics实验
Kinetics[27]包含∼246k训练视频和20k验证视频。这是一项涉及400个人类行为类别的分类任务。我们在训练集上训练所有模型,并在验证集上进行测试。
图4显示了ResNet-50 C2D基线与具有5个区块的非局部C2D的训练过程曲线(更多细节见下文)。在整个训练过程中,无论是在训练还是验证误差方面,我们的非局部C2D模型始终优于C2D基线。
图1和图3显示了由我们的模型计算的非局部块行为的几个示例。我们的人际网络可以学习寻找有意义的关系线索,而不考虑空间和时间的距离。
实例化。
表2a比较了添加到C2D基线的单个非局部块的不同类型(就在res4的最后一个残差块之前)。即使添加一个非局部块也会导致∼比基线提高1%。
有趣的是,嵌入式高斯、点积和串联版本的性能类似,最多会出现一些随机变化(72.7到72.9)。如第节所述。3.2,具有高斯核的非局部操作变得类似于自注意力模块[49]。然而,我们的实验表明,该模块的注意(softmax)行为并不是改进我们应用的关键;相反,非局部行为更可能是重要的,并且对实例化不敏感。
在本文的其余部分中,我们默认使用嵌入式高斯版本。此版本更易于可视化,因为其softmax分数在[0,1]范围内。
在哪个阶段添加非局部块?
表2b比较了添加到ResNet不同阶段的单个非局部块。该块将添加到后台的最后一个残差块之前的右侧。res2、res3或res4上非局部块的改进类似,res5上的改进稍小。一种可能的解释是,res5的空间尺寸很小(7×7),不足以提供精确的空间信息。更多利用空间信息的非局部块的证据将在表2d中调查。
使用非局部块进行更深入的操作。
表2c显示了更多非局部块的结果。我们在ResNet-50中添加1个块(到res4),5个块(3个到res4,2个到res3,到每个其他残差块),以及10个块(到res3和res4中的每个残差块);在ResNet-101中,我们将它们添加到相应的残差块中。表2c显示,更多的非局部块通常会导致更好的结果。我们认为多个非局部块可以执行远程多跳通信。信息可以在时空中的遥远位置之间来回传递,这很难通过局部模型实现。
值得注意的是,非局部块的改进不仅仅是因为它们增加了基线模型的深度。为了了解这一点,我们注意到,在表2c中,非局部5块ResNet-50模型的精度为73.8,高于更深层次的ResNet-101基线的73.1。然而,5块ResNet-50只有∼70%的参数和∼ResNet-101基线的80%FLOPs,而且也较浅。这一比较表明,非局部块带来的改进与标准方法的深入是相辅相成的。
我们还尝试向基线模型添加标准残差块,而不是非局部块。准确度没有提高。这再次表明,非局部块的改进不仅仅是因为它们增加了深度。
时空中的非局部。
我们的方法可以自然地处理时空信号。这是一个很好的特性:视频中的相关对象可以在遥远的空间和长期的时间间隔中呈现,并且我们的模型可以捕获它们的依赖关系。在表2d中,我们研究了沿空间、时间或时空应用的非局部块的效果。例如,在spaceonly版本中,非局部依赖仅发生在同一帧内:即,在等式(1)中,它仅对索引i的同一帧中的索引j求和。可以类似地设置仅时间版本。表2d显示,仅空间版本和仅时间版本都比C2D基线有所改进,但不如时空版本。
非局部网络与3D网络。
表2e将我们的非局部C2D版本与充气3D网络进行了比较。非局部运算和三维卷积可以看作是将C2D扩展到时间维度的两种方法。
表2e还比较了相对于基线的参数和触发器的数量。我们的非局部C2D模型比I3D模型更精确(例如,75.1 vs.74.4),而触发器数量较少(1.2×vs.1.5×)。这种比较表明,当单独使用时,我们的方法比3D卷积更有效。
非局部3D ConvNet。
尽管有上述比较,非局部操作和三维卷积可以对问题的不同方面进行建模:三维卷积可以捕获局部依赖性。表2f显示了在I3D3×1×1模型中插入5个非局部块的结果。这些非局部I3D(NL I3D)模型比其I3D对应模型提高(+1.6点精度),表明非局部运算和3D卷积是互补的。
更长的序列。
最后,我们研究了我们的模型在较长输入视频上的通用性。我们使用由128个连续帧组成的输入剪辑,无需进行子采样。因此,网络中所有层的序列比32帧对应帧长4倍。为了将这个模型放入内存中,我们将最小批量大小减少到每个GPU 2个片段。由于使用小批量,我们在本例中冻结了所有BN层。我们从使用32帧输入训练的相应模型初始化该模型。我们使用与32帧情况相同的迭代次数对128帧输入进行微调(尽管小批量大小现在更小),从学习率0.0025开始。其他实现细节与之前相同。
表2g显示了128帧剪辑的结果。与表2f中的32帧对应项相比,所有模型在更长的输入上都有更好的结果。我们还发现,我们的NL I3D可以保持其相对于I3D的增益,这表明我们的模型在更长的序列上工作良好。
与最新结果的比较。
表3显示了I3D作者[7]和2017年Kinetics竞赛获胜者[3]的结果。我们注意到,这些是在许多方面可能不同的系统的比较。然而,我们的方法在很大程度上超过了所有现有的基于RGB或RGB+流的方法。没有使用光流和没有任何铃声和哨子,我们的方法与2017大赛冠军的精心设计的结果相当。
5.2. Charades实验
Charades[44]是一个具有∼8k训练,∼1.8k验证,以及∼2k测试视频。这是一项具有157个动作类别的多标签分类任务。我们使用每个类别的sigmoid输出来处理多标签属性。
我们初始化预训练的Kinetics模型(128帧)。最小批量大小设置为每个GPU 1个剪辑。我们为200k次迭代训练我们的模型,从学习率0.00125开始,每75k次迭代减少10次。我们使用与Kinetics中类似的抖动策略来确定224×224裁剪窗口的位置,但我们重新缩放视频,使该裁剪窗口输出288×288像素,并在其上微调网络。我们在320像素的单一尺度上进行测试。
表4显示了与先前在Charades上的结果的比较。[7]的结果是2017年Charades比赛的冠军,这也是从Kinetics预训练的模型微调而来的。我们的I3D基线高于以前的结果。作为对照比较,我们的非局部网络在测试集上比I3D基线提高了2.3%。
6.推广:COCO实验
我们还研究了我们的静态图像识别模型。我们在Mask R-CNN基线[19]上进行实验,用于COCO[33]目标检测/分割和人体姿势估计(关键点检测)。模型在COCO train2017(即2014年的trainval35k)上接受训练,并在val2017(即2014年的minival)上进行测试。
目标检测和实例分割。
我们通过添加一个非局部块(就在res4的最后一个残差块之前)来修改掩码R-CNN主干。所有模型都通过ImageNet预训练进行了微调。我们根据标准基线ResNet-50/101和高基线ResNeXt-152(X152)进行评估[53]。与最初的论文[19]采用关于RPN的阶段性训练不同,我们使用了一种改进的实施方式,采用了类似于[37]的端到端联合训练,这导致了比[19]更高的基线。
表5显示了COCO上的box和maskAP。我们看到,单个非局部块在涉及检测和分割的所有度量上改进了所有R50/101和X152基线。APbox增加了∼所有情况下得1分(例如,R101得+1.3分)。我们的非局部块是增加模型容量的补充,即使模型从R50/101升级到X152。这一比较表明,尽管深度/容量有所增加,但现有模型并未充分捕捉到非局部依赖性。
此外,上述收益的成本非常小。单个非局部块仅向基线模型添加<5%的计算。我们还尝试使用更多的非局部块作为主干,但发现回报率越来越低。
关键点检测。
接下来,我们评估mask R-CNN中用于关键点检测的非局部块。在[19]中,Mask R-CNN使用8个卷积层的堆栈来预测关键点作为1-热mask 。这些层是局部操作,可能会忽略长距离关键点之间的依赖关系。基于此,我们将4个非局部块插入关键点头部(每2个卷积层之后)。
表6显示了COCO的结果。在R101的强基线上,向关键点头部添加4个非局部块将导致∼关键点AP增加1点。如果我们向主干添加一个额外的非局部块(如用于对象检测所做的),我们观察到关键点AP比基线总共增加1.4个点。特别是,我们看到AP75的更严格标准提高了2.4个点,这表明更强大的局部化性能。
7.结论
我们提出了一类新的神经网络,它通过非局部操作捕获长期依赖关系。我们的非局部块可以与任何现有架构相结合。我们展示了非局部建模在视频分类、目标检测和分割以及姿态估计任务中的重要性。在所有任务中,简单地添加非局部块可以提供对基线的可靠改进。我们希望非局部层将成为未来网络架构的重要组成部分。