文章:CCNet: Criss-Cross Attention for Semantic Segmentation(ICCV2019
论文地址:https://arxiv.org/abs/1811.11721
论文代码:https://github.com/speedinghzl/CCNet
Abstract:
对于每个像素采用十字的路径来获取上下文信息;再进一步递归使得每个像素都能获得全局所有像素点的long-range depandence。(本文的方法是一种获得上下文信息的方法)
优点:
1.GPU内存友好
2.高计算效率
3.SOTA
Cityscapes ADE20Kmiou: 81.4, 45.22
代码:https://github.com/speedinghzl/CCNet.
Intro:
作者认为基于FCN的很多model都存在受局限于感受域与short-range上下文信息的情况;不能获得充足的环境信息。
为了扩大感受域,Deeplab用ASPP,PSPNet用金字塔池化模型,PSANet用attention map;但是空洞卷积只能从少数周围的像素中得到稀疏的信息;而基于池化的方法是无适应的方法、从所有像素中获得同质的环境信息,不能满足不同的像素需要不同的环境依赖的需求。全局的attention map难免计算量颇大((H*W)*(H*W))
如上图所示,a是Non-local block的方法,b是作者提出的以十字路径的attention module;上面的分支是attention maps,下面的分支是feature maps。时间空间复杂度从O((H×W)×(H×W)) 到O((H×W)×(H + W − 1)).
(residual connections are ignored.)
Contribution:
1.提出十字的attention module
2.迭代两次十字attention module获得Cityscapes ADE20k MSCOCO的领先效果
模型结构图:
如何获取X? 用DCNN获取fearture map,去掉最后的两层下采样和使用空洞卷积来使得X是1/8的原图大小;
然后降维X至H;然后H进入CCA module;第一个CCA出来的H‘只有水平和垂直方向的上下文信息,再将它送入CCA一遍,得到所有像素点的信息;两个CCA是share参数的;
CCA的细节图:(具体操作见文中)
通过这样CCA的迭代,来实现一个像素对全局所有像素点的依赖,文中举了一个例子:(当迭代数为2时)
在Cityscape上可以达到state-of-the-art的效果;(validation miou81.3 test81.4)
(backbone为ResNet-101)
作者对比了其它的得到上下文信息的方法,可以看到CCNet比ASPP的效果还要好一些。