摘要
卷积运算和循环运算都是每次处理一个局部邻域的构建块。在本文中,我们将非局部操作作为一组用于捕获长期依赖关系的构建块。受计算机视觉中经典的非局部均值方法[4]的启发,我们的非局部运算将一个位置的响应计算为所有位置特征的加权和。这个构建块可以插入到许多计算机视觉体系结构中。在视频分类任务中,即使没有任何花哨的功能,我们的非本地模型也可以在Kinetics和Charades数据集上竞争或超过当前的竞争获胜者。在静态图像识别中,我们的非局部模型改进了对象检测/分割,并在COCO任务上提出了估计。代码将被提供。
1.介绍
图1。在我们的训练的网络,一个时空非局部操作用于视频分类在动力学。位置的响应是通过所有位置的特征的加权平均来计算的(这里只显示了最高加权的特征)。在这个由我们的模型计算的例子中,注意它是如何将第一帧中的球与最后两帧中的球联系起来的。图3中有更多的例子。
在深度神经网络中,捕获长期依赖关系是至关重要的。对于顺序数据(例如语音、语言),循环操作[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]之上,我们的non-local 快可以以少量额外的计算成本提高所有三个任务的准确性。与视频上的证据一起,这些图像实验表明,非局部操作通常是有用的,并且可以成为设计深度神经网络的基本构件。
2.相关工作
非局部图像处理。非局部均值[4]是一种经典的滤波算法,它计算图像中所有像素的加权平均值。它允许遥远的像素在一个位置上根据补丁外观相似性贡献过滤响应。这种非局部过滤思想后来发展为BM3D(块匹配3D)[10],它对一组相似但非局部的补丁执行过滤。即使与深度神经网络[5]相比,BM3D也是一个实体图像去噪基线。分块匹配结合神经网络进行图像去噪[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]在多智能体预测建模的背景下提出了更有效的顶点注意力IN (V AIN)。另一个变体,名为关系网络[40],在其输入的所有位置对上计算特征嵌入的函数。我们的方法也处理所有对,正如我们将在式(1)中解释的那样(f(xi, xj))。虽然我们的非局域网络与这些方法相连接,但我们的实验表明,模型的非局域性与注意力/交互/关系(例如,一个网络可以关注一个局部区域)的想法是正交的,是它们在经验上成功的关键。非局部建模是图像处理的一个长期的关键元素(例如,[12,4]),在最近用于计算机视觉的神经网络中被很大程度上忽视了。
视频分类架构。视频分类的一个自然解决方案是结合cnn对图像的成功和rnn对序列的成功[55,11]。相比之下,前馈模型是通过时空中的3D卷积(C3D)[26,48]实现的,3D滤波器可以通过“膨胀”[13,7]预训练的2D滤波器形成。除了对原始视频输入进行端到端建模外,研究发现光流[45]和轨迹[50,51]也很有帮助。流和轨迹都是现成的模块,可以找到长期的、非局部的依赖关系。视频架构的系统比较可以在[7]中找到。
3. 非局部神经网络
我们首先给出了非局部操作的一般定义,然后提供了它的几个特定实例
3.1 公式
在非局部平均操作[4]之后,我们将深度神经网络中的一般非局部操作定义为:
这里是要计算响应的输出位置(在空间、时间或时空中)的索引,是枚举所有可能位置的索引。X为输入信号(图像、序列、视频;通常是它们的特征),y是与x大小相同的输出信号。成对函数计算i和所有j之间的标量(表示关系,如亲和力)。一元函数g计算在j位置的输入信号的表示。响应由因子C(x)归一化。
式(1)中的非局部行为是由于在运算中考虑了所有位置(∀j)。作为比较,卷积运算对局部邻域的加权输入进行求和(例如,在核大小为3的1D情况下,i−1≤j≤i + 1),而i时刻的循环运算通常只基于当前和最新的时间步长(例如,j = i或i−1)。
非本地操作也不同于全连接()层。式(1)根据不同位置之间的关系计算响应,而使用习得的权重。换句话说,与非局部层不同,和之间的关系不是fc中输入数据的函数。此外,我们在Eq.(1)中的公式支持可变大小的输入,并在输出中保持相应的大小。相反,层需要固定大小的输入/输出,并且失去位置对应(例如,在位置i处从到)。
非局部操作是一个灵活的构建块,可以很容易地与卷积/循环层一起使用。它可以添加到深度神经网络的早期部分,不像fc层经常在最后使用。这允许我们构建一个结合非本地信息和本地信息的更丰富的层次结构。
3.2 实例
接下来,我们将描述f和g的几个版本。有趣的是,我们将通过实验(表2a)表明,我们的非局部模型对这些选择不敏感,这表明一般的非局部行为是观察到的改进的主要原因。
为简单起见,我们只以线性嵌入的形式考虑g: ,其中是要学习的权重矩阵。这被实现为,例如,空间中的1×1卷积或时空中的1×1×1卷积。
接下来我们讨论成对函数f的选择。
高斯函数。在非局部均值[4]和双边滤波器[47]之后,f的自然选择是高斯函数。在本文中,我们考虑:
这里是点积相似度。[4,47]中使用的欧几里得距离也适用,但点积在现代深度学习平台中更易于实现。归一化因子设为。
嵌入式高斯。高斯函数的一个简单扩展是在嵌入空间中计算相似度。在本文中,我们考虑:
其中和是两个嵌入。如上所述,我们设。
我们注意到,最近提出的用于机器翻译的自注意模块[49]是嵌入式高斯版本中非局部操作的特例。这可以从以下事实看出:对于给定的i, 成为沿维数j的softmax计算。所以我们使用),这是[49]中的自我注意形式。因此,我们的工作通过将这种最新的自注意模型与经典的非局部均值[4]计算机视觉方法联系起来,并将[49]中的顺序自注意网络扩展到用于计算机视觉图像/视频识别的一般空间/时空非局部网络,从而提供了深入的见解。
图2。一个时空非局部块。特征映射显示为其张量的形状,例如,1024个通道的T ×H×W ×1024(注意时进行适当的重塑)。“⊗”表示矩阵乘法,“⊕”表示元素和。对每一行执行softmax操作。蓝色方框表示1×1×1卷积。这里我们展示了嵌入式高斯版本,瓶颈为512个通道。普通的高斯版本可以通过去除θ和φ来完成,点积版本可以通过将softmax替换为1/N的缩放来完成。
尽管与[49]有关系,但我们表明注意行为(由于softmax)在我们研究的应用中并不是必不可少的。为了说明这一点,我们接下来描述非局部操作的两个替代版本
点积。F可以定义为点积相似度:
这里我们采用嵌入式版本。在这种情况下,我们设置归一化因子为C(x) = N,其中N是x中的位置数,而不是f的和,因为它简化了梯度计算。这样的归一化是必要的,因为输入可以有可变的大小。
点积和嵌入高斯版本之间的主要区别是存在softmax,它起到了激活函数的作用。
连接。连接是由关系网络[40]中的成对函数用于视觉推理。我们还计算f的级联形式:
这里[·,·]表示连接,是将连接向量投影到标量的权重向量。如上所述,我们设C(x) = N。在这种情况下,我们在f中采用ReLU[35]。
上面的几个变体演示了我们的通用非局部操作的灵活性。我们相信替代版本是可能的,并且可能会改善结果。
3.3 非局部块
我们将式(1)中的非局部操作封装到一个非局部块中,该块可以合并到许多现有的体系结构中。我们将非局部块定义为:
其中yi在式(1)中给出,“+xi”表示残差连接[21]。残差连接允许我们将一个新的非局部块插入到任何预训练的模型中,而不会破坏它的初始行为(例如,如果Wz初始化为零)。图2展示了一个示例非局部块。式(2)、式(3)、式(4)中的两两计算可以简单地通过矩阵乘法来完成,如图2所示;(5)中的连接版本很简单。
非局部块的成对计算在高级次采样特征映射中使用时是轻量级的。例如,图2中的典型值是T = 4, H = W = 14或7。由矩阵乘法完成的两两计算与标准网络中的典型卷积层相当。我们进一步采用以下实现,使其更有效。
非局部块的实现。我们将、和表示的通道数设为x中的通道数的一半。这遵循了[21]的瓶颈设计,将一个块的计算量减少了大约一半。式(6)中的权重矩阵计算上的位置嵌入,将通道数与x的通道数匹配,如图2所示。
子抽样技巧可以用来进一步减少计算量。我们将式(1)修改为:,其中是x的下采样版本(例如,通过池化)。我们在空间域中执行此操作,这可以减少1/4的成对计算量。这个技巧不会改变非局部行为,而只是使计算更稀疏。这可以通过在图2中的φ和g之后添加一个最大池化层来实现。
我们将这些有效的修改用于本文研究的所有非局部块。
4. 视频分类模型
为了理解非局部网络的行为,我们对视频分类任务进行了全面的消融实验。首先,我们描述了这项任务的基线网络架构,然后将其扩展到3D ConvNets[48,7]和我们提出的非本地网络。
表1。我们的视频基准ResNet-50 C2D模型。3D输出映射和过滤内核的维度在T×H×W (2D内核在H×W),通道数如下。输入为32×224×224。剩余块显示在括号中。
二维ConvNet基线(C2D)。为了隔离我们的非局部网络与D卷积网络的时间影响,我们构建了一个简单的2D基线架构,其中时间维度被简单地处理(即仅通过池化)。
表1显示了ResNet-50骨干网下的C2D基线。输入视频剪辑有32帧,每帧224×224像素。表1中的所有卷积本质上都是逐帧处理输入的2D内核(实现为1×k×k内核)。该模型可以直接从ImageNet上预训练的ResNet权重进行初始化。ResNet-101的对等体也是以同样的方式构建的。
唯一涉及时间域的操作是池化层。换句话说,这个基线只是聚合时间信息。
膨胀三维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])。我们将其表示为和。由于3D卷积是计算密集型的,我们只对每2个剩余块膨胀一个内核;膨胀更多层显示收益递减。我们将conv1膨胀到5×7×7。
[7]的作者已经证明I3D模型比CNN+LSTM模型更准确。
非局部网络。我们将非局部块插入到C2D或I3D中,将其转换为非局部网络。我们研究添加1、5或10个非本地块;实现细节将在下一节的上下文中进行描述。
图3。中非局部块的行为示例,由动力学训练的5块非局部模型计算。这些例子都来自于验证视频。箭头的起点代表一个xi,终点代表。每个的20个最高权重箭头被可视化。这4帧来自32帧的输入,显示为8帧的步幅。这些可视化显示了模型如何找到支持其预测的相关线索。
4.1. 实施细节
训练我们的模型在ImageNet[39]上进行了预训练。除非特别说明,否则我们使用32帧输入剪辑来微调我们的模型。这些剪辑是通过从原始全长视频中随机裁剪64帧连续帧,然后删除每一帧。空间大小为224×224像素,是从一个缩放的视频中随机裁剪的,该视频的短边是在[46]之后随机采样的[256,320]个像素。我们在一台8-GPU的机器上训练,每个GPU在一个小批量中有8个剪辑(所以总共有64个剪辑)。我们总共训练了400k次迭代,从0.01的学习率开始,并在每150k次迭代中将其降低10倍(参见图4)。我们使用0.9的动量和0.0001的权重衰减。我们在全局池化层后采用dropout [22], dropout比为0.5。我们在应用BatchNorm (BN)[25]时启用它来微调我们的模型。这与调整ResNets的常见做法[21]形成对比,其中BN被冻结。我们发现在我们的应用程序中启用BN可以减少过拟合。
我们采用[20]中的方法来初始化非局部块中引入的权重层。我们在最后一个代表Wz的1×1×1层之后添加了一个BN层;在非局部块中,我们不向其他层添加BN。这个BN层的缩放参数初始化为零,在[17]之后。这确保了整个非本地块的初始状态是一个身份映射,因此它可以插入到任何预训练的网络中,同时保持其初始行为。
推理。在[46]之后,我们对视频进行空间全卷积推理,其较短的一侧被重新缩放为256。对于时间域,在我们的实践中,我们从一个全长视频中平均采样10个剪辑,并分别计算它们的softmax分数。最后的预测是所有剪辑的平均softmax分数。
5.实验
实验部分同样不细写
7. 总结
我们提出了一类新的神经网络,它通过非局部操作捕获长期依赖关系。我们的非局部块可以与任何现有架构相结合。我们展示了非局部建模对视频分类、目标检测和分割以及姿态估计任务的重要性。在所有任务中,简单地添加非局部块就能在基线之上提供坚实的改进。我们希望非局部层将成为未来网络架构的重要组成部分