0%

(CVPR 2018) Non-local Neural Networks

Wang X, Girshick R, Gupta A, et al. Non-local neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 7794-7803.


1. Overview


  • convolutional和recurrent操作建立的block,每次只能处理一个局部区域,基于非局部均值滤波的思想,论文提出具有通用性的非局部组件,能够capture long range dependencies.
  • 非局部组件通过计算所有点的特征加权和作为目标点的响应。非局部操作能够capture相距较远的点在时间和空间上的关系。



  • 论文使用非局部模型(非局部-残差网络)
    • 在Kinetics和Charades视频数据集上做classification任务,性能超过目前的冠军
    • 在COCO数据集上做object detection/segmentation和pose estimation任务,性能有明显提高

1.1. Repeated

  • 由于convolutional和recurrent建立的block每次只能处理一个局部区域,因此需要通过重复操作来实现long range dependencies.
    • convolutional操作通过堆叠(stack) CNN层实现
    • recurrent操作通过记忆+循环实现
  • 但repeated实现方式存在一些缺陷
    • 效率低下
    • 优化困难
    • 信息很难在相距较远的点之间来回传递(multi-hop dependency modeling多跳依赖建模)。(例如,对于100*100的图像,左上角的点和右下角的点在前几层CNN中并无关联)

1.2. 非局部操作优点

  • 直接计算任意两点之间的关系来capture long range dependencies,忽略点之间的距离
  • 非局部操作高效,仅使用少量的层就能达到betst result, 额外增加的计算量少
  • 保持输入大小不变
  • 能capture空间和时间维度,比3D CNN更高效

2. Related Work


2.1. 非局部图像处理

2.2. 图形模型

  • CRF能够被用于segmentation, 而非局部操作具有通用性,可用于分类和检测。

2.3. Self-attention

  • 通过所有点的加权平均计算当前点的响应。self-attention可看做是非局部均值的一种方式。

2.4. Interaction Networks

  • 使用pairwise interaction。其变体Relation Network使用到所有pair of positions.

2.5. Video Classification Architecture

  • 最通常的做法是结合CNN和RNN,但是前馈模型使用3D CNN,将预训练权重的2D卷积核inflating成3D卷积核。此外,optical flow和trajectory能提高性能。

3. Non-local Neural Networks


3.1. Formulation

通用形式为



  • i 输出位置点
  • j 所有位置点
  • x 输入
  • y 输出
  • f pairwise function, 计算点i和点j之间关系,输出为标量
  • g 计算representation of 点j
  • C 归一化因子

3.2. 区别

  • 非局部操作涉及到所有位置点,而convolutional操作只处理局部区域,recurrent操作通常只涉及到当前时间状态与最近时刻状态(j=i或j=i)
  • 非局部操作基于不同点之间的关系计算响应,而fc的权重通过学习得到。
  • 非局部操作能够适用不同大小的输入,并且能够任意加入到网络中,而fc的输入大小需要事先固定,且通常只放到网络的最后一层。

3.3. Instantiations



g函数使用线性embedding



  • 通过2D CNN(空间)或3D CNN(时空)实现。

Pairwise function f函数有多种选择

  • Gaussian



  • Embedded Gaussian



可写成softmax形式



  • Dot Product


N为x位置点的总数,与Embedded Gaussian的区别在于没有softmax操作。

  • Concatenation


[,]表示concat操作,wf为权重向量,将concated向量投影为标量。

3.4. Non-local Block



x为residual连接. Block可以任意插入到预训练模型中,并保持模型的初始行为,即将W_{z}权重初始化为0. 当block使用在high level的特征图上,计算量很少。例如,T=4, H=W=14或7.

3.5. 减少计算量

  • Θ和φ网络channel数量设置为输入的一半
  • 在g和φ网络后进行下采样,如连接max pooling 层

4. Video Classification Model


4.1. 2D ConvNet (C2D)



输入维度为32帧224224,其本质为1kk的卷积核,直接使用ImageNet预训练权重初始化。残差block中的卷积层相当于逐帧处理操作(卷积核和步长在帧的维度上为1)。

4.2. Inflated 3D ConvNet (I3D)

  • 2D kk卷积核inflate为3D tkk卷积核。将kk训练权重扩展到t plane,并乘以缩放因子1/t.
  • 两种inflate方式
    • inflate残差block中的33卷积核为33*3
    • inflate残差block中第一个11卷积核为31*1
  • I3D模型优于CNN+LSTM.

4.3. Non-local network

将non-local网络插入到C2D和I3D网络中。

4.4. 实现细节

  • Train阶段

    • ImageNet预训练权重初始化
    • 输入为32帧clips,从原始视频中random crop连续64帧,并丢弃剩余其他帧
    • 输入尺寸为224*224,通过random crop得到
    • 迭代400k次,学习率初始为0.01,每150k迭代减少10%
    • momentum 0.9,权重衰减0.0001,dropout 0.5
    • fine tune模型是不固定BN层,能够防止过拟合
    • 仅在W_{z}层后插入BN层,scale参数初始化为0,可保持整个non local block为全等映射,即保持预训练模型的初始行为
  • Inference阶段

    • 均匀地从一整段视频中抽取10个clip,计算softmax得分,最终预测结果为10个softmax得分的平均

5. Experiments on Video Classification


  • Kinetics数据集
    246k训练视频,20k验证视频,包含400个人类动作分类。


5.1. Instantiations

比较不同类型的非局部操作,得出结论非局部操作类型的影响并不大,性能的提升主要是由于非局部操作,而非attention机制。因此实验中默认使用Embedded Gaussian.



5.2. Stage to Add Non local Block

res5的空间大小为7*7,因此可能是因为没有足够准确的空间信息,导致准确度略微下降。



5.3. 使用更多的非局部block

一般而言,更多的非局部block能提升性能准确度,multiple非局部block能够实现long range multi-hop communication (多跳交流).



从5 block R50 73.8%与base R101 73.1%,可以看出准确率的提升并不是因为层数加深,而是因为非局部block. 此外,实验也将加入的非局部block替换为标准残差block,发现准确度并没有提升。

5.4. 时空上的非局部操作



5.5. 非局部2D ConvNet vs 3D ConvNet



5.6. 非局部3DConvNet

使用I3D_{311}模型



5.7. 更长的序列

将每个输入clips增加到128帧,所有模型的准确度都有提升。



5.8. 与目前最好的结果比较

非局部网络方法在没有使用optical flow和其他技巧的情况下,取得较好结果。



  • Charades数据集
    8k训练视频,1.8k验证视频,2k测试视频,包含157个人类动作分类。



6. Experiments on COCO


6.1. Detection与Segmentation



在不同规模的模型中加入非局部block均能提高准确度,说明非局部依赖并没有通过增加层数堆叠充分capture. 此外,单层非局部block只增加了不到5%的计算量,使用更多的非局部block结果反而有所下降。

6.2. Keypoint Detection