Non-local Neural Networks非局部操作笔记

参考论文笔记
文章解读【CV中的Attention机制】Non-Local Network的理解与实现

Local & non-local

Local这个词主要是针对感受野(receptive field)来说的。以卷积操作为例,它的感受野大小就是卷积核大小,而我们一般都选用3 ∗ 3 3,5 ∗ 5之类的卷积核,它们只考虑局部区域,因此都是local的运算。同理,池化(Pooling)也是。但其实全局的信息对于图像的任务更有价值,比如短视频分类任务等等。相反的,non-local指的就是感受野可以很大,而不是一个局部领域。

那我们碰到过什么non-local的操作吗?有的,全连接就是non-local的,而且是global的。但是全连接FC带来了大量的参数,给优化带来困难。这也是深度学习(主要指卷积神经网络)近年来流行的原因,考虑局部区域,参数大大减少了,能够训得动了。

那我们为什么还需要non-local?

我们知道,卷积层的堆叠可以增大感受野,但是如果看特定层的卷积核在原图上的感受野,它毕竟是有限的。这是local运算不能避免的。然而有些任务,它们可能需要原图上更多的信息,比如attention。如果在某些层能够引入全局的信息,就能很好地解决local操作无法看清全局的情况,为后面的层带去更丰富的信息。 这是原文博主的理解。

原文链接:https://blog.csdn.net/qq_41554005/article/details/111566137

通用非局部操作:

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)1jf(xi,xj)g(xj),.
x是输入信号,cv中使用的一般是feature map
y是与x大小相同的输出信号
i 代表的是输出位置,如空间、时间或者时空的索引,j是枚举所有可能位置的索引。
f 函数式计算i和j的相似度
g 函数计算feature map在j位置的表示
最终的y是通过响应因子C(x) 进行标准化处理以后得到的

和FC的对比:

  • nonlocal计算的输出值受到输入值之间的关系的影响(因为f(x,y))。
  • 而fc则使用学习到的权重计算输入到输出的映射,在fc中xj和xi的关系是不会影响到输出的,这一定程度上损失了位置的相关性。
  • non-local能够接受任意size的输入,并且得到的输出保持和输入size一致。而fc层则只能有固定大小的输入输出。
  • 可以很容易地与卷积/循环层一起使用,不像fc层只能用在最后

g函数:可以看做一个线性转化(Linear Embedding)公式如下:
g ( x j ) = W g x j g(x_j)=W_gx_j

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值