第二十二章:Non-local Neural Networks ——非局部神经网络

news2024/11/24 17:43:36

0.摘要

        卷积和循环操作都是一次处理一个局部邻域的基本构建模块。在本文中,我们提出了非局部操作作为捕捉长程依赖关系的通用构建模块族。受计算机视觉领域经典的非局部均值方法[4]的启发,我们的非局部操作将一个位置的响应计算为所有位置特征的加权和。这个构建模块可以嵌入到许多计算机视觉架构中。在视频分类任务中,即使没有任何额外的功能,我们的非局部模型在Kinetics和Charades数据集上能够与当前竞争中的优胜者相竞争或超越。在静态图像识别中,我们的非局部模型改进了COCO套件上的物体检测/分割和姿态估计。代码将会提供。

1.简介

        在深度神经网络中,捕捉长程依赖是非常重要的。对于顺序数据(例如语音、语言),循环操作是处理长程依赖建模的主要解决方案。对于图像数据,通过深度卷积操作形成的大感受野来建模长距离依赖关系卷积和循环操作都是在局部邻域中处理,无论是在空间还是时间上;因此,只有当这些操作被重复应用时,才能捕捉到长程依赖关系,并通过数据逐步传播信号。重复局部操作存在几个局限性。首先,计算效率低下。其次,会导致优化困难,需要仔细解决。最后,这些挑战使得多跳依赖建模(例如,在远距离位置之间需要来回传递信息)变得困难。在本文中,我们提出了非局部操作作为一种高效、简单和通用的组件,用于捕捉深度神经网络中的长程依赖关系。我们提出的非局部操作是计算机视觉中经典的非局部均值操作的推广。直观地说,非局部操作通过对输入特征图中所有位置的特征进行加权求和来计算位置处的响应。位置集可以是空间、时间或时空,这意味着我们的操作适用于图像、序列和视频问题。

        使用非局部操作有几个优点:

        (a)与循环和卷积操作的逐步行为相比,非局部操作通过计算任意两个位置之间的相互作用直接捕捉长程依赖关系,而不考虑它们的位置距离;

        (b)正如我们在实验中展示的,非局部操作高效且即使只有少数几层(例如,5层)也能达到最佳结果;

        (c)最后,我们的非局部操作可以保持可变的输入大小,并且可以与其他操作(例如,卷积)轻松组合。

        我们展示了非局部操作在视频分类应用中的有效性。在视频中,远距离的像素在空间和时间上发生长程相互作用。一个非局部块,作为我们的基本单元,可以以前向传播的方式直接捕捉这些时空依赖关系。通过几个非局部块,我们的名为非局部神经网络的架构在视频分类方面比2D和3D卷积网络[48](包括膨胀变体[7])更准确。此外,非局部神经网络在计算上比它们的3D卷积对应物更经济。我们在Kinetics [27]和Charades [44]数据集上进行了全面的消融研究。仅使用RGB,并且没有任何额外的功能(例如,光流、多尺度测试),我们的方法在这两个数据集上取得了与或优于最新的竞赛获胜者相当的结果。

        为了展示非局部操作的普适性,我们在COCO数据集[33]上进一步进行了目标检测/分割和姿态估计实验。在强大的Mask R-CNN基线[19]的基础上,我们的非局部块可以在稍微增加计算成本的情况下提高所有三个任务的准确性。结合对视频的证据,这些图像实验证明非局部操作通常是有用的,并且可以成为设计深度神经网络的基本构建模块。

图1.在我们在Kinetics上训练的用于视频分类的网络中的时空非局部操作。位置xi的响应通过所有位置xj的特征的加权平均计算得到(只显示最高权重的位置)。在我们模型计算的这个例子中,请注意它如何将第一帧中的球与最后两帧中的球联系起来。更多例子请参见图3。

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]。在这些方法中,通过非常深的一维卷积贡献的大感受野捕捉到长期依赖关系。这些前馈模型易于并行化实现,并且比广泛使用的循环模型更高效。

自注意力。我们的工作与最近用于机器翻译的自注意力方法[49]相关。自注意力模块通过关注序列中的所有位置,并在嵌入空间中取它们的加权平均来计算一个位置(例如,一个句子)的响应。正如我们将在接下来的讨论中提到的,自注意力可以看作是非局部均值[4]的一种形式,在这个意义上,我们的工作将机器翻译中的自注意力与适用于计算机视觉中的图像和视频问题的更一般的非局部滤波操作相联系起来。

交互网络。交互网络(IN)[2,52]是最近提出的用于建模物理系统的方法。它们在参与两两交互的对象的图上操作。Hoshen [24]在多智能体预测建模的背景下提出了更高效的顶点注意力IN(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)。作为对比,卷积操作在局部邻域内对加权输入求和(例如,在1D情况下,核大小为3,i-1≤j≤i+1),而时间i上的循环操作通常只基于当前时间步和最近的时间步(例如,j=i或i-1)。

        非局部操作与全连接(fc)层也不同。方程(1)基于不同位置之间的关系计算响应,而fc层使用学习到的权重。换句话说,在fc中,xj和xi之间的关系不是输入数据的函数,而非局部层则不同。此外,我们在方程(1)中的表述支持可变大小的输入,并在输出中保持相应的大小。相反,fc层需要固定大小的输入/输出,并且失去了位置对应关系(例如,从位置i到xi的关系)。非局部操作是灵活的构建块,可以与卷积/循环层轻松结合使用。它可以添加到深度神经网络的较早部分,而fc层通常在最后使用。这使我们能够构建一个更丰富的层次结构,将非局部和局部信息结合起来。

3.2.实例化

        接下来,我们描述了几个版本的f和g。有趣的是,通过实验证明(表2a),我们的非局部模型对这些选择并不敏感,这表明通用的非局部行为是观察到的改进的主要原因。为简单起见,我们只考虑以线性嵌入的形式表示g:g(xj) = Wgxj,其中Wg是要学习的权重矩阵。这可以实现为例如在空间中的1×1卷积或在时空中的1×1×1卷积。接下来,我们讨论一下对于一对一函数f的选择。

高斯函数。在非局部均值[4]和双边滤波器[47]的基础上,f的一个自然选择是高斯函数。在本文中,我们考虑以下形式:里的xTiTixj是点积相似性。在[4,47]中使用的欧几里德距离也是适用的,但是在现代深度学习平台中,点积更容易实现。归一化因子被设置为C(x)=P∀j f(xi,xj)。

嵌入高斯函数。高斯函数的一个简单扩展是在嵌入空间中计算相似性。在本文中,我们考虑以下形式:f(xi,xj)=eθ(xi)T φ(xj)。(3)这里θ(xi)=Wθxi和φ(xj)=Wφxj是两个嵌入。与上面一样,我们设置C(x)=P∀j f(xi,xj)。这里θ(xi)=Wθxi和φ(xj)=Wφxj是两个嵌入。与上面一样,我们设置C(x)=P∀j f(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的连接形式:f(xi,xj)=ReLU(wfT [θ(xi),φ(xj)])。(5)这里[·,·]表示连接操作,wf是一个权重向量,将连接向量投影到一个标量上。与上述类似,我们设置C(x)=N。在这种情况下,我们采用ReLU函数[35]作为f。

 上述几个变体展示了我们通用非局部操作的灵活性。我们相信还有可能存在其他的版本,并且这些版本可能会改善结果。

 图2.时空非局部块。特征图的形状以其张量的形式显示,例如1024个通道的T×H×W×1024(在注释中进行了适当的重塑)。"⊗"表示矩阵乘法,"⊕"表示逐元素求和。softmax操作在每一行上执行。蓝色框表示1×1×1卷积。这里我们展示了嵌入高斯版本,使用512个通道的瓶颈。去掉θ和φ可以得到普通高斯版本,用1/N来替换softmax可以得到点积版本。

3.3.非局部块

        我们将方程(1)中的非局部操作封装成一个非局部块,可以集成到许多现有的架构中。我们将非局部块定义为:其中yi在方程(1)中给出,“+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 = 1 1 C(ˆx)P∀j f(xi,ˆxj)g(ˆxj),其中ˆx是x的子采样版本(例如,通过池化)。我们在空间域中执行这个操作,可以将成对计算的数量减少1/4。这个技巧不会改变非局部行为,只是使计算更加稀疏。这可以通过在图2中的φ和g之后添加最大池化层来实现。我们在本文研究的所有非局部块中使用这些高效的修改方法。

4.视频分类模型

        为了理解非局部网络的行为,我们对视频分类任务进行了全面的消融实验。首先,我们描述了该任务的基准网络架构,然后将其扩展为3D ConvNets [48,7]和我们提出的非局部网络。

2D ConvNet基准(C2D)。为了单独考察非局部网络与3D ConvNets的时间效应,我们构建了一个简单的2D基准架构,其中时间维度通过池化处理(即仅通过池化处理)。表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。由于3D卷积计算量大,我们只对每2个残差块膨胀一个卷积核;膨胀更多层次会带来递减的收益。我们将conv1膨胀为5×7×7。[7]的作者已经证明,I3D模型比它们的CNN+LSTM对应模型更准确。

非局部网络。我们将非局部块插入C2D或I3D中,将它们转换为非局部网络。我们研究了添加1个、5个或10个非局部块;具体的实现细节将在下一节中描述。

表1.我们用于视频的基准ResNet-50 C2D模型。3D输出图和滤波器核的维度为T×H×W(2D核为H×W),通道数随后。输入为32×224×224。括号中显示了残差块。

 图3.在在Kinetics数据集上训练的5个非局部块模型计算的res3中,非局部块的行为示例。这些示例来自保留的验证视频。箭头的起点代表一个xi,终点代表xj。对于每个xi,可视化了具有最高权重的20个箭头。这4帧来自32帧的输入,以8帧的步幅显示。这些可视化展示了模型如何找到相关的线索来支持其预测。

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的权重衰减。我们在全局池化层之后采用0.5的dropout比例进行dropout [22]。当应用时,我们使用BatchNorm(BN)[25]进行微调。这与常见做法[21]中对ResNet进行微调时冻结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]包含约246,000个训练视频和20,000个验证视频。这是一个涉及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只有ResNet-101基线的约70%的参数和约80%的FLOPs,并且也更浅。这个比较表明,由于非局部块的改进是对标准方法中更深层次改进的补充。我们还尝试将标准残差块添加到基线模型中,而不是非局部块,但准确率并没有提高。这再次表明,非局部块的改进并不仅仅是因为它们增加了深度。

时空中的非局部。我们的方法可以自然地处理时空信号。这是一个很好的特性:视频中相关的对象可以出现在远离的空间和长期的时间间隔内,我们的模型可以捕捉到它们之间的依赖关系。在表2d中,我们研究了沿空间、时间或时空应用非局部块的效果。例如,在仅限空间的版本中,非局部依赖关系仅发生在同一帧内:即,在公式(1)中,它仅对帧内与索引i相同的索引j求和。时间版本可以类似地设置。表2d显示,仅空间和仅时间版本都比C2D基线有所改进,但仍不如时空版本。

非局部网络与3D ConvNet的对比。表2e比较了我们的非局部C2D版本与扩展的3D ConvNets。非局部操作和3D卷积可以看作是将C2D扩展到时间维度的两种方式。表2e还比较了参数数量和FLOPs与基线相对的情况。我们的非局部C2D模型比I3D对应模型更准确(例如,75.1对74.4),同时具有更小的FLOPs数量(1.2倍对1.5倍)。这个比较表明,我们的方法在单独使用时可以比3D卷积更有效。

非局部3D ConvNet。尽管上述比较,非局部操作和3D卷积可以对问题的不同方面进行建模:3D卷积可以捕捉局部依赖关系。表2f展示了在I3D3×1×1模型中插入5个非局部块的结果。这些非局部I3D(NL I3D)模型相比于它们的I3D对应模型有所改进(准确率提高1.6个百分点),表明非局部操作和3D卷积是互补的。

更长的序列。最后,我们研究了我们的模型在更长的输入视频上的适用性。我们使用由连续的128帧组成的输入片段,没有进行子采样。网络中的所有层的序列相比于32帧的对应模型而言要长4倍。为了将这个模型放入内存中,我们将每个GPU的mini-batch大小减小到2个片段。由于使用小的mini-batch,我们在这种情况下冻结了所有的BN层。我们从使用32帧输入训练的相应模型中初始化这个模型。我们使用相同数量的迭代次数对128帧输入进行微调(尽管mini-batch大小现在更小),起始学习率为0.0025。其他实现细节与之前相同。表2g显示了128帧片段的结果。与表2f中的32帧对应模型相比,所有模型在更长的输入上都有更好的结果。我们还发现,我们的非局部I3D模型在与I3D对应模型的比较中保持了其优势,表明我们的模型在更长的序列上表现良好。

与最新研究结果的比较。表3显示了来自I3D作者[7]和来自Kinetics 2017比赛获胜者[3]的结果。我们注意到,这些是系统之间的比较,它们在许多方面可能有所不同。然而,我们的方法在RGB或RGB + flow方法中表现出色,超过了所有现有的方法。没有使用光流,也没有任何花哨的技巧,我们的方法与2017年比赛获胜者的结果相当。

表2. 对Kinetics动作分类的消融实验结果。我们展示top-1和top-5分类准确率(%)。

(a) 实例化:将不同类型的1个非局部块添加到C2D基线中。所有条目均采用ResNet-50。

(b) 阶段:在不同阶段中添加1个非局部块。所有条目均采用ResNet-50。

(c) 更深的非局部模型:我们比较将1个、5个和10个非局部块添加到C2D基线中的情况。我们展示了ResNet-50(顶部)和ResNet-101(底部)的结果。

(d) 空间 vs.时间 vs.时空:我们分别比较应用于空间、时间和时空维度的非局部操作。使用了5个非局部块。

(e) 非局部 vs. 3D Conv:一种由5个非局部块构成的C2D模型与扩展的3D ConvNet(I3D)[7]进行比较。所有条目均采用ResNet-101。参数数量和FLOPs相对于C2D基线(43.2M和34.2B)。

(f) 非局部3D ConvNet:在我们最佳的I3D模型之上添加了5个非局部块。这些结果表明,非局部操作与3D卷积是互补的。

(g) 更长的片段:我们在表2f中微调和测试了128帧片段的模型。我们的非局部操作的增益是一致的。

 

图4. 在Kinetics数据集上,ResNet-50 C2D基线(蓝色)与具有5个非局部块的非局部C2D模型(红色)的训练过程曲线。我们展示了top-1训练误差(虚线)和验证误差(实线)。验证误差的计算方式与训练误差相同(因此是在训练时使用相同的随机抖动进行1个片段的测试);最终结果见表2c(R50,5-block)。

表3. 在Kinetics数据集上与最新研究结果的比较,报告了验证集和测试集上的结果。我们包括了Kinetics 2017比赛获胜者的结果[3],但他们的最佳结果利用了音频信号(标记为灰色),因此不是仅基于视觉的解决方案。†:“avg”是top-1和top-5准确率的平均值;由于提交本文时,测试服务器上没有提供单独的top-1或top-5数字,因此无法提供个别的准确率数字。

表4. 在Charades数据集[44]上的分类mAP(%),包括训练/验证集和训练验证/测试集的结果。我们的结果基于ResNet-101。我们的NL I3D使用了5个非局部块。

5.2.在Charades数据集上的实验

        Charades [44]是一个包含约8,000个训练视频、约1,800个验证视频和约2,000个测试视频的视频数据集。它是一个具有157个动作类别的多标签分类任务。我们使用每个类别的sigmoid输出来处理多标签属性。我们使用在Kinetics(128帧)上预训练的模型进行初始化。每个GPU的小批量大小设置为1个片段。我们将模型训练200,000次迭代,初始学习率为0.00125,每75,000次迭代减小10倍。我们使用类似于Kinetics的抖动策略来确定224×224裁剪窗口的位置,但我们重新缩放视频,使得该裁剪窗口输出288×288像素,然后在此基础上微调我们的网络。我们在单一尺度的320像素上进行测试。表4显示了与Charades先前结果的比较。[7]的结果是Charades中的2017年比赛获胜者,也是从在Kinetics上预训练的模型进行微调的。我们的I3D基线高于先前的结果。作为一项对照比较,我们的非局部网络在测试集上相对于我们的I3D基线提高了2.3%。

6.扩展:在COCO数据集上的实验

目标检测和实例分割。我们通过在Mask R-CNN骨干网络中添加一个非局部块(位于res4的最后一个残差块之前)来修改模型。所有模型都是从ImageNet预训练进行微调的。我们评估了ResNet-50/101的标准基线和ResNeXt-152(X152)的高基线。与原始论文[19]采用针对RPN的分阶段训练不同,我们使用了一种改进的实现方式,采用了类似于[37]的端到端联合训练,这导致了比[19]更高的基线。表5显示了在COCO上的盒子和掩膜AP。我们可以看到,单个非局部块改善了所有R50/101和X152基线,并且在涉及检测和分割的所有指标上都有所提升。盒子AP的增加约为1个百分点(例如,在R101中增加了1.3个百分点)。即使将模型从R50/101升级到X152,我们的非局部块仍然是扩展模型容量的补充。这个比较表明,尽管增加了深度/容量,但现有模型对非局部依赖关系的捕捉仍然不足。此外,以上增益的代价非常小。单个非局部块只会给基线模型增加不到5%的计算量。我们还尝试将更多的非局部块添加到骨干网络中,但发现收益递减。

关键点检测。接下来,我们评估非局部块在Mask R-CNN中用于关键点检测。在[19]中,Mask R-CNN使用了一个包含8个卷积层的堆叠来预测关键点,作为1-hot掩膜。这些层是局部操作,可能忽视了关键点之间的远距离依赖。受此启发,我们在关键点头部(在每2个卷积层之后)插入了4个非局部块。表6显示了在COCO上的结果。在R101的强基线上,将4个非局部块添加到关键点头部可以使关键点AP增加约1个百分点。如果我们像目标检测那样在骨干网络中添加一个额外的非局部块,与基线相比,关键点AP总体上增加了1.4个百分点。特别是,我们看到AP75的更严格的准则增加了2.4个百分点,表明定位性能更强。

表5. 在Mask R-CNN中添加1个非局部块用于COCO目标检测和实例分割。骨干网络分别为ResNet-50/101和ResNeXt-152 [53],均使用FPN [32]。

表6. 在Mask R-CNN中添加非局部块用于COCO关键点检测。骨干网络为ResNet-101,使用FPN [32]。

7.结论

        我们提出了一种通过非局部操作捕捉长程依赖关系的新型神经网络。我们的非局部块可以与任何现有的架构结合使用。我们展示了非局部建模对视频分类、目标检测和分割以及姿态估计任务的重要性。在所有任务中,简单地添加非局部块都能够显著改善基线模型。我们希望非局部层能成为未来网络架构中的重要组成部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/779049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LiveNVR监控流媒体Onvif/RTSP功能-拉转Onvif/RTSP/RTMP/FLV/HLS直播流流媒体服务视频广场页面集成视频播放集成说明

LiveNVR拉转Onvif/RTSP/RTMP/FLV/HLS直播流流媒体服务视频广场页面集成视频播放集成说明 1、视频页面集成1.1、关闭接口鉴权1.2、视频广场页面集成1.2.1、隐藏菜单栏1.2.2、隐藏播放页面分享连接 1.3、其它页面集成 2、播放分享页面集成2.1、获取 iframe 代码2.2、html 集成ifr…

ext4 mballoc之buddy算法

buddy bitmap 根据《Ext4文件系统介绍 - 理论篇_nginux的博客-CSDN博客》我们知道磁盘上有1block 大小(默认4K)data block bitmap,每bit位代表一个block的使用情况,1代表占用,0代表空闲。data block bitmap 可以表示4 * 1024 * …

代码随想录| 图论02●695岛屿最大面积 ●1020飞地的数量 ●130被围绕的区域 ●417太平洋大西洋水流问题

#695岛屿最大面积 模板题&#xff0c;很快.以下两种dfs&#xff0c;区别是看第一个点放不放到dfs函数中处理&#xff0c;那么初始化的area一个是1一个是0 int dir[4][2]{0,1,0,-1,1,0,-1,0};void dfs(int x, int y,int n, int m, int &area,vector<vector<bool>…

HTML入门教程||HTML 属性||HTML 元素

HTML 元素 HTML 元素 HTML 文档由 HTML 元素定义&#xff0c;HTML 元素指的是从开始标签&#xff08;start tag&#xff09;到结束标签&#xff08;end tag&#xff09;的所有代码。 HTML 元素 开始标签 *元素内容结束标签 *<p>这是一个段落</p><a href"…

《Docker和服务器无状态化:容器化应用的优势,构建高可伸缩性和灵活性》

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比

【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比 一、数据介绍 基于UCI葡萄酒数据集进行葡萄酒分类及产地预测 共包含178组样本数据&#xff0c;来源于三个葡萄酒产地&#xff0c;每组数据包含产地标签及13种化学元素含量&#xff0c;即已知类…

c++高性能264/265实时流媒体服务器/h5客户端整体解决方案源码

文章目录 c高性能264/265实时流媒体服务器/h5客户端整体解决方案源码缘由目前的前端技术栈&#xff0c;已经能够支撑常规的安防桌面客户端软件开发我的方案一套c后端,两套前端H5 UI方案一&#xff1a;多屏h265/h264混合显示H5 UI方案二&#xff1a;H5监控大屏,提供视图切换功能…

基于SRS后端开发的前端页面

SRS(Simple Realtime Server)是简单高效的实时视频服务器&#xff0c;支持RTMP、WebRTC、HLS、HTTP-FLV、SRT等多种实时流媒体协议。 框架 https://www.thinkphp.cn 官网 https://ossrs.net/lts/zh-cn 播放器1 https://www.cdnbye.com 播放器2 https://www.artplayer.org …

苹果的Apple GPT要来了?

据外媒消息&#xff0c;苹果正在内部开发类 ChatGPT 的产品&#xff0c;与微软、OpenAI、谷歌、Meta 等科技巨头在生成式 AI 赛道展开竞争。该消息使得苹果股价上涨了 2%。据苹果工程师透露&#xff0c;苹果在内部构建了代号为“Ajax”的大语言模型开发框架&#xff0c;并构建了…

【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负。 目录 前言&#xff1a; 一、隐式类型转换 &#xff08;一&#xff09;整型提升的意义…

【六天】高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术应用

最初的互补发电系统&#xff0c;就是将不同发点组件进行简单的组合&#xff0c;因为缺乏详细的数学计算模型&#xff0c;同时系统只用于保证率低的用户&#xff0c;导致使用寿命不长。随着新能源系统应用范围的不断扩大&#xff0c;保证率和经济性要求的提高&#xff0c;需要高…

Rust vs Go:常用语法对比(四)

题图来自 Go vs. Rust performance comparison: The basics 61. Get current date 获取当前时间 package mainimport ( "fmt" "time")func main() { d : time.Now() fmt.Println("Now is", d) // The Playground has a special sandbox, so you …

【力扣周赛】第 354 场双周赛

文章目录 Q1&#xff1a;2784. 检查数组是否是好的解法1——排序模拟判断解法2——哈希表计数模拟判断 Q2&#xff1a;6926. 将字符串中的元音字母排序Q3&#xff1a;6931. 访问数组中的位置使分数最大&#xff08;线性DP&#xff09;Q4&#xff1a;6922. 将一个数字表示成幂的…

什么是神经网络?

我们常常使用深度学习来指训练神经网络的过程。 在这里举一个房屋价格预测的例子&#xff1a;假设有一个数据集&#xff0c;它包含了六栋房子的信息。所以&#xff0c;你知道房屋的面积是多少平方米&#xff0c;并且知道这个房屋的价格。这是&#xff0c;你想要拟合一个根据房屋…

【Linux】linux工具和命令

这里写目录标题 一、Linux常用命令&#xff1a;二、Linux安装软件&#xff1a;1.yum安装2.Linux和Windows文件互传3.yum卸载软件 三、vim编辑器1.命令模式2.vim配置项说明3.vim操作总结 一、Linux常用命令&#xff1a; ls 显示当前目录下的文件 ls-a 显示当前目录下所有文件&a…

自定义类型:结构体进阶学习分享

自定义类型&#xff1a;结构体进阶学习分享 前言1 结构体的基础知识2 结构的声明3 特殊声明4 结构的自引用5 结构体变量的定义和初始化6 结构体内存对齐6.1 计算结构体大小相关笔试题&#xff08;基于VS&#xff09;笔试题一&#xff1a;笔试题二&#xff1a; 6.2 为什么存在内…

【C语言】指针进阶(1)

在前期的文章中&#xff0c;我们已经学习完了指针初阶的内容&#xff0c;这期我们开始学习指针的进阶部分。 指针初阶文章入口&#xff1a; 指针初阶 目录 重点知识概览 前期回顾 字符指针 指针数组 数组指针 数组指针的定义 &数组名VS数组名 数组指针的使用 数组…

Mac电脑文件夹无权限问题

sudo cp 16.5.zip /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 走到之前的folder &#xff0c;右键选择get info更改權限, 再應用到所有子文件夹 右下解鎖再加自己Read & Write, -右邊拉下應該可以應用到所有子文件 这样就可以…

Java ~ Executor ~ ExecutorCompletionService【总结】

前言 文章 相关系列&#xff1a;《Java ~ Executor【目录】》&#xff08;持续更新&#xff09;相关系列&#xff1a;《Java ~ Executor ~ ExecutorCompletionService【源码】》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;相关系列&#xff1a;《Java ~ Exe…

如何做需求分析

目录 核心理念&#xff1a; 主要目的&#xff1a; 具体思路&#xff1a; 注意事项&#xff1a; 核心理念&#xff1a; 首先需要想清楚一个问题&#xff1a;作为一个测试&#xff0c;有没有把需求当作产品中的一个组成部分&#xff0c;然后尽到一个测试的责任与义务&#x…