Advertisement

【笔记学习】Non-local neural networks

阅读量:

一、local和non-local

1、local
local是针对感受野来说的。
在卷积操作中,它的感受野大小是卷积核大小 。它们只考虑局部区域,因此都是local运算。
同理,池化操作也是。
2、non-local
根据上面对于local的理解,对于non-local,也就是指感受野可以很大,而不是一个局部的。
全连接就是non-local的,也是global的。但是全连接参数太多,导致优化困难。
3、为什么要用non-local?
卷积层的堆叠可以增大感受野,但是特定层的卷积核在原图上的感受野是有限的。
然后对于有些任务,需要原图上更多的信息(如attention)。如果能在某些层,引入全局的信息,那就能很好解决local操作无法看清全局的问题,为后面的层带来更丰富的信息

二、non-local block

1、non-local运算:
在这里插入图片描述
x:输入 、 y:输出 、 i,j:输入的某个空间位置
x_i:一个和x相同通道数的向量 、 f:计算两个点相似关系的函数
g:映射函数(将一个点映射成一个向量,可以看成是计算一个点的特征)

从这个式子可以看出,为了计算一个输出点,要把输入的每个点都考虑一遍,每个点对应的重要性,和attention类似(是根据相似性给出的)

2、过程如下
在这里插入图片描述
输入和输出大小相同。

单看y1的输出过程:
在这里插入图片描述
mask:x1和所有点的相似度(non-local block利用两个点的相似性对每个位置的特征做加权)
在这里简化g为1 * 1卷积,这样还是得到3 * 3的映射特征。

3、为了能让non-local操作作为一个组件,可以直接插入任意的神经网络中,作者把non-local设计成residual block的形式,让non-local操作去学x的residual:
在这里插入图片描述
W_z是一个卷积操作,输出的通道数和x一样。

参考:https://zhuanlan.zhihu.com/p/33345791

全部评论 (0)

还没有任何评论哟~