卡内基梅隆大学 FaceBook AI Research
自己的想法:
将经典计算机视觉中的non-local mean操作与自注意力统一起来, 这两种思想其实是有异曲同工之妙的。各种自注意力机制都是本文方法的特例,而本文的non-local 机制则是一种可泛化的基础网络模块,厉害。
这里有篇讲解non-local mean思想的文章:https://www.jianshu.com/p/a9771abedf50(大佬写的文章读起来就是清晰)
卷积操作和循环操作都在局部块上进行处理。论文提出的Non-Local operations 作为一个通用的构建基块操作,能够捕获长距离的依赖关系。该模块可以插入到许多计算机视觉架构中。在视频分类任务中,论文的Non-Local模型在 Kinetics and Charades 数据集上获得了SOTA的性能。在静态图像识别中能够提升模型在检测、分类、相机定位任务中的性能。
深度神经网络的一个重点是捕获长距离依赖关系。对于序列数据主要方法是循环操作,而对于图像数据,主要通过深度带来的大感受野解决长距离依赖的建模问题。
卷积和循环操作都是在局部区域上进行,前者在空间而后者是在时间上。通过反复执行在数据中传播信号,捕获长距离依赖关系。但是这种重复的局部操作具有局限性:
- 计算效率低下
- 使得优化更新变得很难解决
针对以上问题,论文提出了基于计算机视觉中经典的non-local平均操作的泛化型方法,可以高效简单快速的捕获长距离依赖。直观地,non-local操作将某个位置的响应计算为输入特征中所有位置的加权和。位置集可以是在空间、时间或时空中,这意味着该操作适用于图像、序列和视频问题
这样做的好处是:
- 非局部运算通过计算任意两个位置之间的交集(不管它们的位置距离如何)直接捕获远程依赖关系;
- 计算快,使用更少的层就能到达最好的效果
- 保持了输入大小,且输出尺寸可变,可以很容易地与其他操作相结合
作者还在检测和分割、相机定位任务上进行了实验,non-local操作只要付出很小的计算代价就可以提高三项任务的准确性。实验表明,非局部操作通常是有用的,并且可以成为设计深层神经网络的基本构造块。
首先介绍定义和公式,然后介绍一些实例
公式
在位置(空间或者时间、时空)i 处的non-local 输出为:
y
i
=
1
C
(
x
)
∑
∀
j
f
(
x
i
,
x
j
)
g
(
x
j
)
y_i = \frac{1}{C(x)}\sum_{\forall j}f(x_i,x_j)g(x_j)
yi=C(x)1∀j∑f(xi,xj)g(xj)
x表示输入信号, j 表示所有与i 有可能有关系的位置。函数 f 计算输入信号中 i、j位置之间的关系,函数g 计算X_j的特征表达,第一项为归一化因子。
从公式可以看出non-local操作计算所有的j的可能位置,但是卷积和循环操作只在局部进行。
non-local操作又与全连接层不同,non-local中使用i、j 位置之间的关系 f ( x i , x j ) f(x_i,x_j) f(xi,xj)作为权重,而全连接层使用的是训练好的权重,也就是说全连接层没有把位置间的关系作为函数的输入。此外。全连接层要求输入的size是固定的,丢失了位置间的对应关系。
non-local 操作可以作为神经网络的基础模块应用在网络层的前面部分,而全连接层一般在网络的最后部分。这使得non-local 操作可以对丰富的局部以及全局结构信息进行建模。
实例化
这里介绍了几个不同版本的f和g函数,但是最后的实验证明模型对于函数的选择不敏感,说明模型性能的提升都是来自于其non-local操作。
首先定义g为线性函数: g ( x i ) = W g x j g(x_i) = W_g x_j g(xi)=Wgxj ,其中 W g W_g Wg是需要学习的权重,具体的使用1X1的卷积来实现
其次定义f函数,可以有不同的版本:
-
根据non-local求平均以及双边滤波器的思想,首先想到高斯函数:
f ( x i , x j ) = e x i T x j 归 一 化 因 子 : C ( x ) = ∑ ∀ j f ( x i , x j ) f(x_i,x_j)=e^{x_i^Tx_j} \\ 归一化因子:\quad C(x)=\sum_{\forall j}f(x_i,x_j) f(xi,xj)=exiTxj归一化因子:C(x)=∀j∑f(xi,xj) -
对高斯函数进行扩展:Embedded Gaussian
f ( x i , x j ) = e θ ( x i ) T ϕ ( x j ) θ ( x i ) = W θ x i , ϕ ( x j ) = W ϕ x j f(x_i,x_j)=e^{\theta(x_i)^T\phi(x_j)} \\ \theta(x_i) = W_{\theta}x_i,\quad \phi(x_j)=W_{\phi}x_j f(xi,xj)=eθ(xi)Tϕ(xj)θ(xi)=Wθxi,ϕ(xj)=Wϕxj
作者指出self-attention模块本质上就是Embedded Gaussian,其f函数为softmax:f ( x i , x j ) = s o f t m a x ( x i T W θ T W ϕ x j ) f(x_i,x_j) = softmax(x_i^TW_{\theta}^TW_{\phi}x_j) f(xi,xj)=softmax(xiTWθTWϕxj).因此本文工作将经典计算机视觉中non-local平均的思想与自注意力模型统一了起来。
-
Embedded 点乘
f ( x i . x j ) = θ ( x i ) T ϕ ( x j ) 归 一 化 因 子 C ( x ) = N f(x_i.x_j) = \theta(x_i)^T\phi(x_j)\\ 归一化因子\quad C(x)=N f(xi.xj)=θ(xi)Tϕ(xj)归一化因子C(x)=N
其中N表示x中的位置个数,而不是f的和,这样可以简化梯度的计算,并且使得输入尺寸可变成为可能。 -
Concatenation:该函数在关系推理网络中用到,引入了激活函数ReLU
f ( x i , x j ) = R e L U ( w f T [ θ ( x i ) , ϕ ( x j ) ] ) 同 上 , C ( x ) = N f(x_i,x_j) =ReLU(w^T_f[\theta(x_i), \phi(x_j)])\\ 同上,\quad C(x) = N f(xi,xj)=ReLU(wfT[θ(xi),ϕ(xj)])同上,C(x)=N
中括号中表示“Concatenation”操作. -
more …
Non-local Block
将实例化的f、g函数带入到公式中得到non-local 的输出y_i,然后得到non-local block:
z
i
=
W
z
y
i
+
x
i
z_i = W_zy_i + x_i
zi=Wzyi+xi
公式中第二项是残差连接项,上面的做法的好处是可以随意嵌入到任何一个预训练好的网络中,因为只要设置W_z初始化为0,那么就没有任何影响,然后在迁移学习中学习新的权重。这样就不会因为引入了新的模块而导致预训练权重无法使用。
基于non-local的视频分类模型:
Baseline: 2D ConvNet (C2D)
直接使用预训练的ResNet权重进行初始化。模型唯一涉及时间域的操作是池化层。换句话说,该模型简单聚合了时间维度的信息
Inflated 3D ConvNet (I3D):
将之前的2D模型中的卷积核进行“inflating”(膨胀)得到三维卷积模型。
对于残差块中的卷积核做两种不同的膨胀:
- 3×3膨胀为3×3×3,记为 I 3 D 3 × 3 × 3 I3D_{3×3×3} I3D3×3×3
- 第一个1×1的膨胀为3×1×1,记为 I 3 D 3 × 1 × 1 I3D_{3×1×1} I3D3×1×1
Non-local network
在之前的两个模型中分别插入非局部块,转换为non-local网络
视频分类数据集上的实验:
消失实验:
图像检测、分割、定位数据集上的实验
可以看出非局部模块对大多数任务都有提升作用。