Non-local Neural Networks
论文:“Non-local Neural Networks ” CVPR2018 Link:http://arxiv.org/abs/1711.07971
? 在语义分割论文中,最多被提到的词恐怕就是receptive field了,也就是感受野。在增加感受野的方式上基本大同小异,无非就是扩大卷积核、用扩张卷积(空洞卷积)、多叠几个卷积层(计算效率低下、要注意梯度爆炸/消失问题、优化问题),当然,这些操作都有一定的扩张感受野能力,但是缺点也是显而易见的,包括不限于增加计算量、损失邻域信息等等。所以,可以说,卷积操作是Local的,因为只有卷积核覆盖的那一个局部的信息有交互,再远了就没了。 ? 本文提出了一种Non-Local的网络块,具有以下优势:(1)忽略不同位置上的距离,在卷积中,3*3的卷积核只能覆盖9个grid。(2)高效性,以更少的卷积层获取最好的结果。(3)输入输出大小不变,可以很方便插入到其它网络。
Non-Local Block
? Non-Local的思想如下图,这三个输入Θ、Φ、g与Attention机制里面的qkv十分相似,结构也很像,不过该图采用的是Embedding Gaussian。
? 总体公式如下所示: ? 其中xi代表残差连接,这样能使Non-local Block适用于各种预训练模型,而不必破坏初始化状态,只需要将Wz初始化为0即可。
形象化解示:
? 对于computer vision来说,假设X的Input_Size为**[batch, H, W, 1024],经过两个Embedded Gaussian中的两个嵌入权重变换,后,得到Size为[batch, H, W, 512],然后分别reshape成[batch, HW, 512],然后对这两个输出进行矩阵乘(其中一个要转置),计算相似性,得到[batch, HW , HW],最后在第二个维度(最后一个维度)上做softmax操作,得到[batch, HW , HW]**的输出。这样做就是空间注意力,相当于找到了当前图片或特征图中每个像素与其他所有位置像素的归一化相关性
? 然后将g也采用一样的操作,先通道降维,然后reshape,得到**[batch, HW, 512]**输出;然后和 [batch, HW, HW]进行矩阵乘,reshape得到[batch, H, W, 512], 即将空间注意力机制应用到了所有通道的每张特征图对应位置上,本质就是输出的每个位置值都是其他所有位置的加权平均值,通过softmax操作可以进一步突出共性。最后经过一个1x1卷积恢复输出通道,保证输入输出尺度完全相同。
? 在实现的过程中通常先将channels变为1/2以减少计算量。
相似度度量函数
- Gaussian这种想法来自于Non-Local mean,即采用高斯函数度量。
- Embedded Gaussian 是对高斯函数的一种拓展,度量在嵌入空间内变量的相关性。
- Dot product 点乘,以下公式采用embedded版本。
- **Concatenation **
总结:总体感觉非常像Attention机制,还有些论文细节过两天再补上吧…
|