原文链接:https://arxiv.org/abs/1908.07678
代码:https://github.com/MendelXu/ANN.git
Non-local 是一种特别有用的语义分割技术,但也因其难以进行计算和占用GPU内存而受到批评。本文提出了Asymmetric Non-local Neural Network,其中有两个突出的组成部分:Asymmetric Pyramid Non-local Block(APNB) 和 Asymmetric Fusion Non-local Block(AFNB)。APNB利用金字塔采样模块,在不牺牲性能的前提下,极大地减少了计算和内存消耗;AFNB是由APNB演化而来的,在充分考虑了长期相关性的前提下,融合了不同层次的特征,从而大大提高了性能。
核心思路是:
只要query分支和key分支的输出保持相同的大小,Non-local的输出大小就保持不变。考虑到这一点,如果只从key分支和value分支中选取几个有代表性的点作为样本,就有可能在不牺牲性能的情况下显著降低时间复杂度。如下图所示,其中,S≪N。

Asymmetric Non-local Neural Network
提出了APNB和AFNB,其中APNB旨在减少Non-local的计算开销,AFNB提高了Non-local的学习能力,从而提高了分割性能。
重识Non-local

考虑输入特征图X∈RC×H×W,三个1×1卷积Wϕ、Wθ和Wγ用来将X变换到不同的嵌入式空间ϕ∈RC′×H×W、θ∈RC′×H×W、γ∈RC′×H×W
ϕ=Wϕ(X), θ=Wθ(X), γ=Wγ(X)
接着将他们三个flatten为C′×N,N为空间中总像素数,N=H×W。相似度矩阵V∈RN×N可由矩阵乘法计算
V=ϕT×θ
接着,将V进行归一化
V=f(V)
f有三种形式,分别为softmax、rescaling和none,这里选择用softmax。对于γ中的每个位置,都可以计算输出为
O=V×γT
其中,O∈RN×C′。通过参考Non-local的设计,最终的输出为
Y=Wo(OT)+X or Y=cat(Wo(OT),X)
其中,Wo使用1×1卷积,作为一个加权参数来调整Non-local的重要性,并且将通道维度从C′还原为C。
Asymmetric Pyramid Nonlocal Block(APNB)
动机和分析
Non-local在两个矩阵相乘的时间复杂度为O(C′N2)=O(C′H2W2)。在语义分割任务中,网络的输出通常有较大的分辨率来保持细节的语义信息,N通常很大。
一个更直接的pipeline如下:
RN×C′×RC′×N→RN×N×RN×C′→RN×C′
通过将N变为S(S≪N),输出尺寸保持不变
RN×C′×RC′×S→RN×S×RS×C′→RN×C′
将N变为更小的S相当于从图中采样几个有代表性的点,而不是考虑空间中所有的点,从而将计算量大大减少。
方法

在θ和γ后,通过添加采样模块Pθ和Pγ,来采样一些稀疏的锚点,得到θP∈RC′×S和γP∈RC′×S,其中S为采样锚点的个数。数学公式为
θP=Pθ(θ), γP=Pγ(γ)
ϕ与锚点θP间的相似度矩阵VP如下
VP=ϕT×θP
其中,VP是一个不对称的矩阵,大小为N×S。接下来与Non-local一样进行归一化,得到VP。attention输出为
OP=VP×γPT
最终的输出YP为
YP=cat(Wo(OPT),X)
时间复杂度仅为O(C′NS),比标准Non-local中的O(C′N2)小很多。
前面的工作表明,全局和多尺度对语义分割很有帮助,因此,在Non-local块中嵌入金字塔池化来增强全局表示。

这四个池化结果被平铺并连接起来,作为被采样的点。设置n⊆{1,3,6,8},则锚点的总量为
S=110=n⊆{1,3,6,8}∑n2
Asymmetric Fusion Nonlocal Block(AFNB)

不同层级的特征融合对语义分割有帮助,将特征融合加入到Non-local中,得到Fusion Non-local Block。
标准的Non-local只有一个输入源,而FNB有两个输入源:一个高级特征图Xh∈RCh×Nh和一个低级特征图Xl∈RCl×Nl。同样的,1×1卷积Wϕh、Wθl和Wγl被用来将Xh和Xl变换到嵌入式空间ϕh∈RC′×Nh、θl∈RC′×Nl和γl∈RC′×Nl
ϕh=Wϕh(Xh), θl=Wθl(Xl), γl=Wγl(Xl)
ϕh和θl间的相似度矩阵VF∈RNh×Nl为
VF=ϕhT×θl
同样的,将VF进行归一化得到VF∈RNh×Nl。同理输出为
OF=VF×γlT
YP=cat(Wo(OPT),X)
网络结构

实验结果







