CCNet: Criss-Cross Attention for Semantic Segmentation

CCNet: Criss-Cross Attention for Semantic Segmentation

这是一篇2018年11月挂在arxiv上的语义分割文章,本文对这篇文章进行详细解读。

1.Abstract

  长依赖关系可以捕获有用的上下文信息,这对于视觉理解问题是有益的。本文提出了CCNet来以一种更有效的方式捕获这种重要信息。具体地说,对于每个pixel,CCNet通过一个criss-cross attention module来获得其criss-cross路径上的上下文信息。并通过一个recurrent操作,使得每个pixel可以捕获所有pixels的长依赖关系。总的来说,CCNet有以下优点: 1)GPU memory friendly。recurrent criss-cross attention module比non-local block需要的GPU内存小11倍。2)High computational efficiency。需要的FLOPS比non-local减少了85%。3)The state-of-the-art performance。作者在两个语义分割数据集Cityscapes, ADE20K和一个实例分割数据集COCO上做了实验,取得了不错的效果。

解释:

这篇文章同样也是解决long-range dependencies问题。和我上一篇介绍的DANet一样,关于什么是long-range dependencies问题可以看我上一篇的介绍,链接如下,https://blog.csdn.net/pangyunsheng/article/details/89047178
这里就不再详细介绍。在DANet中,作者用了non-local的思想来解决这个问题,我在上一篇介绍中也提到了,这种方法的局限性在于需要的计算量很大,因此CCNet提出了criss-cross attention module在解决long-range dependencies的前提下,大幅降低了内存占用和计算量。

2.Introduction

  由于固定的几何结构,一些FCN-based语义分割方法受限于局部感受野和short-range contextual information,因此效果上有所影响。为了捕获长依赖关系,ASPP,PPM等模块被提出,然而,基于空洞卷积的方法只能考虑一小部分周围像素点的信息而不能产生密集的上下文信息。同时,基于池化的方法以非自适应方式聚合上下文信息,并且所有图像像素采用同构上下文信息,这不满足不同像素需要不同上下文依赖性的要求。

解释:

解释下最后两句话什么意思。PSPNet中提出PPM结构来捕获上下文信息,在PPM模块中采用不同的kernel size对输入的feature map作池化,然后upsampling到统一的size。在每个池化分支,由于kernel size是固定的,只能对每个pixel都考虑其周围固定大小的上下文信息,显然,不同的pixel需要考虑的上下文信息是不同的,因此说这种方法是非自适应的。
  为了生成密集的,逐像素的上下文信息,Non-local Networks使用自注意力机制来使得特征图中的任意位置都能感知所有位置的特征信息,从而生成更有效的逐像素特征表达。如图1,特征图的每个位置都通过self-adaptively predicted attention maps与其他位置相关联,因此生成更丰富的特征表达。但是,这种方法是时间和空间复杂度都为O((HxW)x(HxW)),H和W代表特征图的宽和高。由于语义分割中特征图的分辨率都很大,因此这种方法需要消耗巨大的计算复杂度和占用大量的GPU内存。有改进方法吗?
图1
  作者发现non-local操作可以被两个连续的criss-cross操作代替,对于每个pixel,一个criss-cross操作只与特征图中(H+W-1)个位置连接,而不是所有位置。这激发了作者提出criss-cross attention module来从水平和竖直方向聚合long-range上下文信息。通过两个连续的criss-cross attention module,使得每个pixel都可以聚合所有pixels的特征信息,并且将时间和空间复杂度由O((HxW)x(HxW))降低到O((HxW)x(H+W-1))。
  具体地说,non-local module和criss-cross attention module都输入一个HxW的feature map来分别生成attention maps(上面的分支)和adapted feature maps(下面的分支)。然后采用加权和为聚合方式。在criss-cross attention module中,feature map中的每个position(蓝色方格)通过预测的稀疏attention map与其所在同一行和同一列的其他positions相连,这里的attention map只有H+W-1个权重而不是non-local中的HxW,如图2。进一步地,提出了recurrent criss-cross attention module来捕获所有pixels的长依赖关系,并且所有的criss-cross attention module都共享参数以便减少参数量。
图2
  实验上,作者在两个语义分割数据集和一个实例分割数据集上做了实验,都取得了不错的效果。

3.Related Work

  这部分作者介绍了一些语义分割和attention模型,不作过多解释。

4.Criss-Cross Network
Overview

  这部分主要介绍整个网络结构。如下图,一个输入图像经过全卷积式的深度卷积神经网 (DCNN)后得到一个feature map X,X的空间尺寸为HxW。为了获得更多的细节,DCNN作者采用了dilated FCN,并且得到的feature map X为原图的1/8。在得到feature map X之后,首先用一个卷积曾获得维度更低的feature map H。然后将feature map H输入到criss-cross attention module(CCA)中得到新的feature map H’,H’中的每个piexl都包含其criss-cross方向上的上下文信息。紧接着,feature map H’被再次输入到CCA中得到feature map H’’。因此,feature map H’‘中的每个pixel都考虑了所有pixels的特征信息。为了降低参数量,两个CCA模块式参数共享的,作者命名这两个连续的CCA模型为recurrent criss-cross attention (RCCA) module。将密集的上下文feature map H’'与局部的feature map X做concat操作,并加上几个带BN和激活函数的卷积层来融合它们,将融合的特征用于生成最终的segmentation map。
CCNet

Criss-Cross Attention

  这里我们来详细分析Criss-Cross Attention Module的内部细节,如下图。给定一个local feature H(CxWxH),先将H通过两个1x1卷积生成两个低维feature maps Q和K(C’xWxH),其中C’小于C。得到的Q和K用于生成attention map,这里作者将生成attention map的操作定义为Affinity operation。

Recurrent Criss-Cross Attention
  • 9
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值