Non-local Net理解

1.首先了解非局部均值滤波

基本思想是:当前像素的估计值由图像中与它具有相似邻域结构的像素加权平均得到。理论上,该算法需要在整个图像范围内判断像素间的相似度,也就是说,每处理一个像素点时,都要计算它与图像中所有像素点间的相似度。
但是考虑到效率问题,实现的时候,会设定两个固定大小的窗口:搜索窗口和邻域窗口。搜索窗口尺寸为(DXD,D=2XDs+1),邻域窗口尺寸为(dxd,d=2xds+1),从而保证窗口尺寸为奇数。
邻域窗口在搜索窗口中滑动,根据邻域间的相似性确定像素的权值。
如图所示,大窗口(白色的)是以目标像素x为中心的搜索窗口,两个灰色小窗口分别是以x、y为中心的邻域窗口。其中以y为中心的邻域窗口在搜索窗口中滑动,通过计算两个邻域窗口间的相似程度为赋以权值 。
在这里插入图片描述

设含噪声图像为v,去噪后的图像为在这里插入图片描述。去噪后图像中中像素点x处的灰度值通过如下方式得到:
在这里插入图片描述
即,不断移动窗口y,计算原始图像中y点和x点之间的关系w(x,y),然后再乘y点的像素值
在这里插入图片描述
在这里插入图片描述
其中,h为衰减因子。h越小,则加权点对当前点的影响越小,一般边缘保持得好但是噪声会严重,反之则边缘保持差图像更加光滑

2.非局部操作

受到non-local means的启发,提出了关于non-local操作在特征图上的通用表示,公式如下所示:
在这里插入图片描述
其中,i是要被计算的位置(可以是空间位置、时间位置、时空位置),j是要被用作加权的位置,也就是feature map的位置.x是输入,y是输出,f可以看作计算相似度的函数,g是一个一元变化(1x1卷积),C用作归一化.

例如,对于一元变化后的特征图g(Xj),Xj是一个向量1x1xC,那么我们可以度量向量Xi和Xj之间的关系f(例如向量相乘),得到一个值,最终按照公式得到通道数为1的yi

非局部操作与全连接的区别如下:
1.在non-local操作的公式中,响应值是通过计算不同区域之间的关系得到的,而在全连接层中,是通过赋给每个神经元一个学到的权重。换而言之,在全连接层中,Xi和Xj的关系不能通过一个函数f得到
2.non-local公式支持可变大小的输入,并在输出中保持相应的大小;即,我们可以再增加输入的尺寸情况下,使得输出的尺寸不变。在全连接层中,要求固定大小的输入和输出,并且由于被拉伸成一列,丢失了原有的位置信息。
3.在与CNN结合位置来看,non-local操作非常灵活,可以添加到深度神经网络中的前半部分,而全连接层通常被用在最后,这既是一个不同,也给了我们一个启发:能够构建一个更丰富的层次结构,将非局部信息和局部信息结合起来

我们的主要目的,是对特征图g(xj),找到对应的f(xi,xj)函数,有如下几种方法计算相似度:
1)一个通常的想法是利用点积衡量相似度:
在这里插入图片描述
那么,向量Xi和Xj之间的f函数可以用高斯函数表示如下:
在这里插入图片描述
那么此时归一化因子C(x)可以设置为:
在这里插入图片描述

2)使用Embedded Gaussian,它是基于高斯函数的一个简单扩展,是计算嵌入空间中的相似度
在这里插入图片描述
其中,θ和φ是两个嵌入,embedding会构建一个映射,将一个空间里的实体抛射到一个线性向量空间里去,这样一来可以在向量空间里计算度量它们的距离,即:
在这里插入图片描述
例如,Wθ的维度是100x100,Xi的维度是100x1,θ(Xi)的维度就是100x1,θ(Xi)T的维度就是1x100,同样φ(Xj)的维度是100x1,最终f(Xi,Xj)的维度是1x1
相应的,归一化因子C(x)可以表示为:
在这里插入图片描述
我们再来看看self-attention的公式:,可以看到它就是用softmax代替了归一化过程
在这里插入图片描述
3).Dot Product
通过点乘进行相似度计算:
在这里插入图片描述
此时的归一化因子C(x)可以设置为N(所有位置数)。

dot product与embedded gaussian最主要的区别是softmax的使用,softmax起着激活的作用
4)Concatenation
在这里插入图片描述
其中,[·, ·] 表示维度拼接操作,Wf实现从向量到标量的转化。

3.非局部模块

非局部模块定义为:
在这里插入图片描述
其中,yi是用第二节中非局部操作计算得出的,Wz通常用1x1卷积,变成和原来特征图xi一样的维度。“+Xi”可以看作残差连接。之所以要用残差,是因为这种结构能够在不破坏原始网络结构的基础上,很方便的将non-local block嵌入模型中去。
在这里插入图片描述
图中1x1x1代表1x1卷积操作,T代表样本数。可以看到,对于原特征图x,首先使用了512个1x1卷积生成θ(Xi)T和φ(Xj),然后铜鼓哦softmax获得了相似度关系f(xi,xj),之后与g(xj)进行相乘,获得yi,为了与原图x变成相同的维度,又进行了一次1x1卷积【https://zhuanlan.zhihu.com/p/40050371】提高维度,最后直接相加进行嵌入。

代码参考这篇文章的末尾:https://blog.csdn.net/weixin_43578873/article/details/104517029

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值