Non-local Neural Networks
2020-08-15

论文地址:https://arxiv.org/pdf/1711.07971.pdf

摘要

本文提出了non-local操作作为捕获远程依赖的构建块。non-local操作以所有位置特征的加权和来计算某个位置的响应。该模块可以插入许多计算机视觉体系结构中。在视频分类的任务上,我们的non-local模块在Kinetics和Charades数据集上可以竞争或优于当前的竞争获得者。在静态图像识别中,我们的非局部模型可改进目标检测/分割以及在COCO数据集上的姿态估计。

介绍

模型优点:

  • non-local operations capture long-range dependencies directly by computing interactions between any two positions, regardless of their positional distance

    non-local操作直接通过计算两个位置的相互影响捕获长距离依赖,而不管它的位置距离

  • As we show in experiments, non-local operations are efficient and achieve their best results even with only a few layers

    non-local操作是高效的,只有几层的网络就能实现最好的结果

  • our non-local operations maintain the variable input sizes and can be easily combined with other operations (e.g., convolutions as we will use).

    non-local操作保持了可变的输入大小,并且很轻松地应用到其他操作(如卷积)

论文显示了non-local操作在视频分类任务中的有效性。在视频中,空间和时间的远距离像素之间会发生远程交互。在我们基本模块中,一个单个的non-local模块能够以前馈的方式捕获这些时空依赖。non-local神经网络(含有几个non-local模块)在视频分类任务中比2D/3D卷积更精确。除此之外,non-local的计算复杂度比三维卷积更低

Non-local 神经网络

1 公式

image-20200815111637632

i:计算响应的输出位置(空间/时间/时空)的索引;j:枚举所有位置的索引;

x:输入信号特征(图像、视频等);y:输出信号特征;

f(xi, xj):计算i到j的关系标量;g(xj):计算位置j的输入信号的特征;

C(x):结果经过C(x)归一化;

  • 公式(1)中可以看出:non-local就是考虑了所有位置j(卷积和recurrent操作是局部的)

  • non-local vs 全连接

    • non-local基于不同位置的相关性计算(xi –> xj);fc基于学习的权重(xi –> yi)

    • non-local可以加在卷积层/递归曾;fc加载末尾

2 实例化

  • 为了简化,设Wg 为学习的权重矩阵,g(x)为线性嵌入的形式:
  • 设高斯函数f如下,C(x)与嵌入式高斯函数一样:

  • 嵌入式高斯函数:高斯函数的简单扩展是计算嵌入空间中的相似度,本文中如下

    image-20200815123858559

    自注意力模块是嵌入式高斯模型中的一种非局部操作的特例,我们由此得出:对于给定的i,1/C(X) f( xi , xj )是沿着维度j的softmax计算。因此自注意力机制的表示形式:

    本文工作将最近的self-attention模型与经典的非局部均值联系起来,将self-attention网络拓展到non-local网络,用于cv的图像/视频识别。尽管如此,由于softmax,作者也觉得attention对本文的研究不是必须的,具体见下文两点。

  • 设f为一个点乘相似度, C(x)为归一化函数,N为x位置的数量:

    这样设置归一化能简化梯度计算,以及可以保证可变大小的输入。在点乘相似度与嵌入式高斯模型的不同指出在于softmax的存在,它扮演了激励函数的角色

  • 设f为一种拼接形式,[ . , . ]:拼接;wf :权重向量——用于将拼接向量投影到标量;同样C(x) = N

  • 以上四种设定显示了non-local的灵活性。我们相信可替代的版本是可能的,并且可以改善结果

3 non-local模块

根据公式(1),我们定义non-local模块:

“+xi“:残差连接;残差连接允许我们在任何预训练的模型中插入新的non-local块,而不会破坏它本来的形式;f函数的高斯和点乘算法都可以简单地通过矩阵乘法完成,而拼接算法则直接concat(如下图2):

image-20200815135931998

提升模型的效率:

  • 如上图2,设置Wg,Wθ,Wφ 的通道数为x中通道数的一半,权重矩阵Wz 的通道与x保持一致(保证输出维度一致)

  • 使用下采样的方法——将公式(1)的x通过池化等方法下采样一下,或在上图2中 φ/θ 后加一个最大池化层

视频分类模型

2D ConvNet baseline (C2D)

为了隔绝non-local网络与三维卷积网络的时间影响,我们构造了二维的基本结构,其时间维度得到简单处理(池化),如下表1,卷积核为二维,用于逐帧处理输入。模型直接初始化其权重经过ImageNet数据集预训练的ResNet权模型。 ResNet-101以相同的方式构建。

image-20200815144157292

Inflated 3D ConvNet (I3D)

通过增加卷积核的维度,表1中的C2D模型可转为3D卷积模型。比如(k, k)——>(t, k, k)。其中,(t, k ,k)的卷积核的权重由(k, k)卷积核初始化,t平面的权重再重新缩放到1/t。如果视频由时间上重复的单个静态帧组成,则此初始化将产生与在静态帧上运行的2D预训练模型相同的结果。由于三维卷积的计算复杂性,我们只能每两个残差快扩展一个卷积核,扩展层数太多会让结果下降。conv1 卷积核扩展为(5, 7, 7)

训练

我们使用再ImageNet上预训练的模型,使用32帧输入短片微调模型。这些剪辑通过从原始全长视频中随机裁剪64个连续帧,然后每隔一帧丢掉所得。每帧图片大小为224×224——先将原视频像素([256,320])以短边缩放,然后随机裁剪所得。mini-batch=8,epoch=400k,lr=0.01(每150k个epoch乘以0.1),momentum=0.9,weight decay=0.0001,全局池化后使用dropout(0.5),启用BatchNorm微调模型。与微调ResNet不一样,我们将BN打开。

我们采用[20]中的方法来初始化在non-local模块中引入的权重层。仅增加一个BN层在最后的1×1×1层之后,BN层的参数初始化为0

实验结果

  • 训练过程曲线
image-20200815152613031
  • non-local模块的实例——网络可学习到有意义的关系线索,而不管空间和时间上的距离

    image-20200815152746747
image-20200815152849949
  • 实验结果:C2D vs I3D

    image-20200815153320905
  • 实验结果:I3D作者[7] vs Kinetics 2017获胜者[3]

    image-20200815154707907