CCNet: Criss-Cross Attention for Semantic Segmentation

CCNet: Criss-Cross Attention for Semantic Segmentation

最近读了两篇attention比较早的在计算机视觉上的论文,不过两篇文章的影响力很大,CCNet的出发点就是在Non-local Neural Network的改进,下面就CCNet这篇论文我做一下自己的理解。

  • 我并不想在上面写一些原话的翻译,我觉得读论文是自己一点一点读的,这样才能有更深的理解,如果单靠读别人对论文的理解或者是通过机器对论文的翻译是远远不能对整个论文的思想进行体会的,希望我自己的理解可以对读我博客的伙伴有一些启发,里面有不正确的地方,理解不透的地方还希望伙伴们进行指正。

总述

  • 因为Non-local attention 的运算开销很大,其中也有很多冗余的计算,因此引入Criss-Cross attention方法。同样,注意力机制的作用还是扩大感受域,这也是它可以部分代替卷积操作的原因,前人有许多其他的方法来扩大感受域,如ASPP(空洞空间卷积池化金字塔),在图像语义分割捕获长距离依赖的问题中,条件随机场、马尔可夫随机场也被广泛使用。事实上,池化操作在聚集上下文意思的时候,并没有考虑到不同像素之间在上下文意思的不一致性,而池化层的池化核大小是一定的,因此外加给不同像素和其他像素之间相互关系同质性,这样的操作其实是不合理的,因此引入自注意力机制来实时动态联系上下文意思是很重要的。

结构和过程

这个是Criss-Cross attention neural network的结构
具体的结构实现过程如下:

  • 首先先将原始图片输入到一个深度卷积网络中(文中用的是ResNet),然后将基网络的最后两层下采样换成 dilated convolution(空洞卷积),从而可以使得输出X的大小是输入图片的1/8(X的形状是H×W)。
  • 将X输入一个卷积层用来降维,生成大小仍然为H×W的特征图H(应该是通过减小通道数来降维),通道为C。其实后续的注意力机制的操作是对这个特征图来做的。这个卷积层的作用是维度缩减,从而可以使计算开销减小。
  • 将特征图M输入到Criss-Cross attention模块中进行位置关联得到输出的特征图M’,再将M’再次输入到这个Criss-Cross attention模块中得到一个输出M’’。注意:我们可以将这个Criss-Cross理解成共享权值的网络,也可以理解成一个具有两次循环的注意力机制操作。至此,在M’‘中每个位置的元素都和这个特征图中其他的位置的元素计算了相关性。(为了防止feature map大小的H×W和论文中的一个中间产生的feature map叫H混淆,我把中间产生的那个feature map记为M,M’,M’’)

注意:从输入的image到传入到attention模块的feature
map中间要经过两次网络的变换,一次是深度卷积神经网络变换,一次是降维的变换

Criss-Cross attention module的结构:
在这里插入图片描述

  • 我们可以通过Criss-Cross attention module的结构看出来,它的过程和non-local attention module的方法相似,唯一不同的是attention的计算方法,non-local是通过整个feature map的每张图内部对所有的位置和其他位置进行相关度的计算,而Criss-Cross是通过两次的对每个位置的水平、竖直的其他像素进行相似度的计算而得到这个位置和整张feature map的其他位置的attention score。 根据结构可以看到,module中采取了跳跃连接的方式,这样的输出就可以得到分割的结果。

那么具体的Criss-Cross attention怎么实现呢

  • 在计算attention score的整个过程中,是对feature maps的每一个单一的通道进行单算,即是一层feature map内部进行score的计算。
    因此,对Q和K进行相应位置关联度计算的时候,我们把每一个位置对应的“像素”看作是一个向量,那么这个向量Q_u∈R^c’,注意:C’是X经过Query,Key,Value三个权重矩阵变换得到的Q,K,V三个新的feature maps的通道数。那么同理,Ω_u是经过Key权重矩阵变换后,从feature maps中提取的向量,其中Ω_u∈R^((H+W-1)×C’),则计算score的操作被定义为: d_(i,u)=Q_u Ω_(i,u)^T 这里d_(i,u)是属于R^(H+W-1),
    因为Q_u有H×W个,因此得到的最终矩阵D∈R^((H+W-1)×W×H)
    ,因此,需要最后再对(H+W-1)维度使用Softmax函数来计算最后的score矩阵A,矩阵有C’的维度。最后,再用A矩阵和对M用Value权重矩阵变换后的V相乘(V的向量集合是属于R^((H+W-1)×C)的),得到使用attention后的feature maps,再通过跳跃连接将M和其的对应位置的值相加,得到第一次的输出M’,第二次循环同理。

(这段实现细节公式从Word上弄下来就乱码了,所以看起来会比较乱,大家可以从论文中再好好地读)

(我不会用LaTex,所以写的很难看,本人也最不愿意看公式乱码的博客了,等我学会了LaTex,有时间再来更改这篇博客吧)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值