论文地址:CCNet: Criss-Cross Attention for Semantic Segmentation
一篇来自华科的语义分割论文
使用了criss-cross方法来改进attention模块,原本的non-local attention模块是要使用整个feature map来进行attention的构成,需要O((H*W)*(H*W))时间和空间来进行,很消耗空间和时间,本文就想到,使用两次criss-cross也就是十字形式的attention组合,可以达到non-local的效果,但是只是用了O((H*W)*(H+W-1))的空间时间
如上图所示为一个criss-cross attention block
每一次的criss-cross的模块如上图所示
首先是将feature mapX使用一层conv减少通道数到H,然后将H分别使用三个1*1卷积,分别得到Q,K,V,将Q和K使用affinity的方法得到attention 模块
也就是将Q上的每个channel维度上的vector与其在K上的位置的横纵方向上的所有vector进行矩阵相乘运算,再使用softmax对channel维度上进行权重平均,最后再使用V来融合得到最终的attention map,然后与H进行相加,得到最终输出
这样的criss-cross模块重复两次,share相同的权重,最终就可以达到non-local的效果