论文下载
捕获长范围依赖在深度神经网络中具有核心重要性。对于顺序数据(例如,在语音、语言中),重复性的操作是远程依赖建模的主要解决方案。对于图像数据,长距离依赖性是由深层的卷积运算形成的大感受野建模的。卷积运算和循环运算都处理局部邻域,无论是在空间还是时间上;因此,只有重复应用这些操作,通过数据逐步传播信号,才能捕获长程依赖关系。重复本地操作有几个限制。
在本文中,我们将非本地操作(Non-local Operation)作为一种高效、简单和通用的组件,用于使用深度神经网络捕获远程依赖关系。我们提出的非局部运算是计算机视觉中经典非局部平均运算(Non-local Means)的推广。直观地说,非局部操作计算某个位置的响应,是通过计算输入特征映射中所有位置的特征的加权和。位置集可以在空间、时间或时空中,这意味着我们的操作适用于图像、序列和视频问题。
使用非局部运算有几个优点:
非局部均值是一种经典的滤波算法,它计算图像中所有像素的加权平均值。它允许遥远的像素对基于patch外观相似性的位置的过滤响应做出贡献。这种非局部过滤的想法后来发展成BM3D(块匹配3D),它对一组相似但非局部的patch进行过滤。与深度神经网络相比,BM3D是一种实心图像去噪基线。非局部匹配也是很多成功纹理合成,超分辨率和修复算法的本质。
长期依赖关系可以通过图形模型来建模,例如条件随机场(CRF)。在深度神经网络的背景下,CRF可以被用于网络的后处理语义分割预测。CRF的迭代平均场推理可以转化为递归网络并进行训练。相比之下,我们的方法是一个更简单的前馈块计算非局部滤波。与这些用于分割的方法不同,我们的通用组件用于分类和检测。这些方法和我们的方法还涉及到一个更抽象的模型,称为图神经网络。
最近出现了一种使用前馈(即非递归)网络建模语音和语言序列的趋势。在这些方法中,由非常深的一维卷积所贡献的大型接收字段捕获长期依赖项。这些前馈模型适合并行实现,并且比广泛使用的循环模型更有效。
自我关注模块通过关注所有位置并在嵌入空间中取其加权平均值,计算序列中某个位置(例如,一个句子)的响应。正如我们将在下一篇文章中讨论的那样,自我关注可以被视为Non-local 平均值的一种形式,从这个意义上说,我们的工作将机器翻译的自我关注与适用于计算机视觉中图像和视频问题的更一般的非局部过滤操作联系起来。
交互网络(IN)最近被提出用于物理系统建模。它们在涉及成对交互的对象的图形上进行操作。Hoshen[23]在多智能体预测建模的背景下提出了Vertex Attention IN (顶点注意力交互网络)中更有效的顶点注意。另一个变量,命名为关系网络(Relation Networks),在其输入中的所有位置对特征嵌入计算函数。我们的方法也处理所有对,我们将在等式(1)中解释(f(xi,xj))。虽然我们的非局部网络与这些方法相联系,但我们的实验表明,该模型的非局部性,这是正交于注意/互动/关系的想法(例如,一个网络可以关注一个局部区域),是其成功的关键。非局部建模是图像处理中一个长期的关键元素,在最近的计算机视觉神经网络中被大量忽略。
频分类的一种自然解决方案是结合cnn对图像的成功和rnn对序列的成功。相比之下,前馈模型是通过三维卷积(3D convolutions, C3D)在时空中实现的,三维滤波器可以通过“膨胀”预先训练的二维滤波器形成。除了在原始视频输入端到端建模之外,已经发现光流和轨迹是有用的。流和轨迹都是现成的模块,可以找到长期的、非局部的依赖关系。
我们首先给出非局部操作的一般定义,然后提供它的几个具体实例。
按照非局部均值的定义,我们定义在深度神经网络中的non-local操作如下:
接下来我们描述f和g的几个版本。有趣的是,我们将通过实验(Table2a)表明,我们的非局部模型对这些选择不敏感,这表明一般的非局部行为是观察到的改进的主要原因。为简单起见,我们只考虑线性嵌入的形式:g(xj) =Wgxj,其中Wg是一个需要学习的权重矩阵。这可以实现为 1×1空间卷积或1×1×1时空卷积。接下来我们讨论成对函数f的选择。
在非局部均值和双边滤波器之后,自然选择高斯函数。在本文中,我们考虑:
XT i X j 为计算的点积相似性,标准化因子设置为C(x)=∑∨j f(xi ,xj )
高斯函数的简单扩展是在嵌入空间中计算相似性。在本文中,我们考虑:
θ(xi)=Wθxi和ф(xj)=Wфxj 是两个嵌入式,标准化因子设置为C(x)=∑∨j f(xi ,xj )
self-attention模块其实就是non-local的embedded Gaussian版本的一种特殊情况。对于给定的i,C(x)f(xi,xj)就变成了计算所有j的softmax,即y=softmax(xTWTθWϕx)g(x),这就是self-attention的表达形式。这样我们就将self-attention模型和传统的非局部均值联系在了一起,并且将sequential self-attention network推广到了更具一般性的space/spacetime non-local network,可以在图像、视频识别任务中使用。
f也可以定义成点乘相似度,即:
这里我们采用嵌入式版本。在这种情况下,我们设置归一化因子C(x)=N,其中N是x的总元素个数。规范化是必要的,因为输入可以具有可变的大小。点积和嵌入式高斯版本之间的主要区别在于softmax的存在,它起着激活函数的作用。
Concat是在Relation Networks 中用到的pairwise function。我们也给出了一个concat形式的f,如下:
这里[.,.]表示的是concat,wf是能够将concat的向量转换成一个标量的权重向量。这里设置C(x)=N。
以上几个变体展示了我们通用非局部操作的灵活性。我们相信替代版本是可能的,并可能改善结果。
我们将(1)式中的non-local操作变形成一个non-local block,以便其可以被插入到已有的结构中。
我们定义一个non-local block为:
其中yi 由等式(1)给出,xi 表示残差链接。残差连接允许我们将新的非局部块插入到任何预先训练的模型中,而不会破坏其初始行为。
图2
时间空间非局部模块。特征图显示为其张量的形状T×H×W×1024用于1024个通道(注意时执行适当的整形)。“⊗” 表示矩阵乘法,和“⊕” 表示按元素求和。对每行执行softmax操作。蓝色框表示1×1×1卷积。这里我们显示了嵌入的高斯版本,瓶颈为512个通道。
普通高斯版本可以通过移除θ和φ来完成,点积版本可以通过用1/N的缩放替换softmax来完成.
图2中举例说明了一个非局部块。等式(2)、(3)或(4)中的成对计算可以简单地通过矩阵乘法完成,如图2所示;(5)中的连接版本很简单。非局部块的成对计算在用于高级次采样特征映射时是轻量级的。例如,图2中的典型值为T=4、H=W=14或7。通过矩阵乘法进行的成对计算可与标准网络中的典型卷积层进行比较。我们进一步采用以下实现,使其更加高效。
我们将Wg、Wθ和Wφ表示的通道数设置为x通道数的一半。这遵循了瓶颈设计,并将块的计算量减少了约一半。等式(6)中的权重矩阵Wzi计算yi位置嵌入(position-wise embedding ),将通道数与x匹配。参见图2。子采样技巧可用于进一步减少计算量。我们将公式(1)修改为:yi=f(xi,x∧j)g(x∧j),其中x∧是x的二次抽样版本(例如,通过池化操作)。我们在空间域中执行此操作,这可以将成对计算量减少1/4。这种技巧不会改变非局部行为,只会使计算变得更稀疏。这可以通过在φ和g图2之后添加最大池层来实现。我们将这些有效的修改用于本文研究的所有非局部块。
non-local block的pairwise的计算可以是非常lightweight的,如果它用在高层级,较小的feature map上的话。比如,图2上的典型值是T=4,H=W=14 or 7。通过矩阵运算来计算parwise function的值就和计算一个conv layer的计算量类似。另外我们还通过以下方式使其更高效。
我们设置Wg,Wθ,Wϕ的channel的数目为x的channel数目的一半,这样就形成了一个bottleneck,在通道域减少数据量,从而减少一半的计算量。Wz再重新放大到x的channel数目,保证输入输出维度一致。
还有一个subsampling的trick可以进一步使用,就是将(1)式变为:yi=∑∀jf(xi,x∧ j)g(x∧ j)/C(x∧ j),其中x∧是x下采样得到的(比如通过pooling),我们将这个方式在空间域上使用,可以减小1/4的pairwise function的计算量。这个trick并不会改变non-local的行为,而是使计算更加稀疏了。这个可以通过在图2中的ϕ和g后面增加一个max pooling层实现。
我们在本文中的所有non-local模块中都使用了上述的高效策略。
(2.4部分参考:【论文笔记】Non-local Neural Networks