Non-local Neural Networks(非局部神经网络):使用自注意力机制捕获远程依赖。
论文: https://arxiv.org/pdf/1711.07971.pdf
源码:
长距离依赖关系,顾名思义,是要和远程建立关系,在long-range的情况下有关联。在cv领域,就是考虑一个像素的时候同时考虑其邻域,甚至是邻域的邻域....,能够建模两个较远像素之间的关系,例如是不是同属一个类等等。
引用博文:MedT
一、背景和出发点
卷积运算是一次处理一个局部邻域的构建块,在捕获远程依赖关系时有许多的局限,例如:它的计算效率很低;它会导致优化困难等。作者受经典的非局部均值方法(non-local means)的启发,提出了一种非局部模块作为一种高效、通用的组件,用于在深度神经网络中捕获远程依赖关系。
(该非局部模块结合了多头注意力机制。)
二、创新点
1. 与RNN和CNN的渐进行为相反,非局部运算通过计算任意两个位置之间的交互来直接捕获远程依赖,而不管它们的位置距离如何。
2. 正如本文在实验中所展示的,非局部操作是高效的,即使只有几层(例如5层),也能达到最佳效果。
3. 该非局部操作保持可变的输入大小,并且可以轻松地与其他操作(例如,我们将使用的卷积)组合。
三、Non-local Neural Networks(非局部神经网络)
3.1 非局部操作的一般定义
其中, 是输入特征中要被计算的位置, 是 所有可能关联到位置的索引。 是位置间的类同标量函数,用于计算两位置间的相关性。 是位置输入信号函数,对输入的特征进行赋权,C(x)是归一化因子。
上述的非局部操作看后可能会感到一头雾水,我们需要简单了解一下前继论文:non-local means,非局部均值滤波:
算法思想:图像的长边缘,纹理结构都是相似的,因此,在同一幅图像中, 对相似区域进行分类并加权平均得到的去噪图像,也应该能提高去噪效果。
方法:NLM是非局部均值操作,对每个滤波点都利用了整张图像的信息。对像素点 做NLM操作,先遍历整张图像,求出 与其他像素点的相似度,再与不同位置的像素点的灰度化值相乘(根据邻域间的相似性均值大小确定像素的权值),累加求均值,就得到 的滤波值。
公式:
其中,表示为 的滤波值, 表示像素点 的灰度值,,需要遍历全图, 是 的权重,由 , 两像素点之间的相似度来得到。
如果仅仅比较 像素值来作为相似度的依据,不能正确反映 的关系,所以通常选其邻域N ( i ) , N ( j ),邻域大小可以自己选择。
参考:Non-Local Means(非局部均值滤波)、
均值、中值、高斯、non-local means算法详解 、
Non-local Net理解_非局部模块
由上述的non-local means转到本文的Non-local操作的定义,可知, 用于计算像素域 和 的相似度,作为像素域 的权重,这样通过累加求均值,获得的便捕获了整张图像的长距离依赖关系。(可以看作整张图像与在位置上的原像素的相似度相乘求均值得到的。)
3.2 实例
计算像素邻域间的相似性的四种方法:
1. 高斯函数
2. 嵌入式高斯函数
3. 点乘
4. Concatenation(标注[40]提出的方法)
其中,[·,·] 表示维度拼接操作。