Non-local Neural Networks论文阅读


前言

对于序列型数据,循环操作是长程依赖建模的主要解决方案。对于图像数据,通过深度卷积操作,卷积层堆叠形成大的感受野来建模长距离依赖关系。提出了nolocal block捕获远程依赖,将一个位置的响应计算为所有位置特征的加权和。
个人感觉就是self attention+短接(resnet)。


一、Nolocal Block

他们是把机器学习中的自注意力引入到计算机视觉中。根据定义,现根据key,query计算注意力系数,再把注意力系数与value相乘。C(x)是∑ ∀j f (xi, xj ),归一化(得出那个注意力系数)。
在这里插入图片描述
他们之后开始讨论f和g对结果的影响,答案是nolocal对f,g是什么并不敏感,就是整体的结果与f,g的关系很小。(大概一定程度上降低了设计难度吧,因为不怎么影响?)
g函数他们用线性函数参数为Wg,g(xj)=Wg·xj。
考虑双边滤波器和非局部均值(不知道为什么因为这个就必须是高斯函数),f选择高斯函数。扩展高斯函数就是把两个值先分别进入一个函数得到的结果再进入高斯函数。这里因为点积比较简单,就使用点积,不用欧氏距离。
C(x)是f(xi,xj)的对所有j的求和。
推导出来它的输出等于y = softmax(xT W T θ Wφx)g(x),是softmax函数。由于这个softmax函数那么就不用按照self-attention从头到尾按公式敲代码了。可以进行简化。
还提出了一些变体。
最后定义non-local模块为
zi = Wz·yi + xi
yi是Eq.(1)的输出,xi是残差连接,Wz是可学习参数,如果初始化为0,那么将nolocal模块插入任何预训练模型不会破坏其初始行为。
在这里插入图片描述
实施过程中的技巧:

  1. 将Wg,Wθ,Wφ通道数设置为x中通道数的一半,最后输出用conv1x1x1进行通道数调节。
  2. 用x进行子采样后的x^计算(池化)。
    非局部块的简单添加,对基线模型提供了结实的改进。

二、代码


总结

no-local block模块,把自注意力引入到视觉,应用全局信息,在video 分类上获得了很好的效果。2018年

猜你喜欢

转载自blog.csdn.net/goodenough5/article/details/129669793