论文链接:https://arxiv.org/pdf/1811.11721.pdf
国内镜像:https://xxx.itp.ac.cn/pdf/1811.11721.pdf
FCN由于固定的几何结构,它们天生局限于局部的接受域和短距离的上下文信息。
全图像依赖提供了有用的上下文信息,有利于视觉理解问题。
- 基于空洞卷积的方法从周围的几个像素点收集信息,实际上并不能生成密集的上下文信息
① Rethinking atrous convolution for semantic image segmentation
② Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution,and fully connected crfs
③ Context contrasted feature and gated multiscale aggregation for scene segmentation - 基于池化的方法以非自适应的方式聚合上下文信息,所有图像像素都采用同构的上下文信息,不能满足不同像素需要不同上下文依赖的要求
① Pyramid scene parsing network
② Context encoding for semantic segmentation - 基于注意力的方法需要生成巨大的attention map来测量每个像素对之间的关系,它们在时间和空间上的复杂性都是O((H×W)×(H×W))
① Psanet: Pointwise spatial attention network for scene parsing
② Non-local neural networks
③ Long short-term memory-networks for machine reading
④ Attention is all you need
主要优势:
- GPU内存友好。与non-local block相比,提出的周期性交叉注意模块需要11×更少的GPU内存使用
- 计算效率高。周期的交叉注意力在计算全图依赖时,与non-local block相比减少了85%的FLOPs
- SOTA
用连续稀疏注意力代替non-local networks中的单层稠密注意力。
使用了两个连续的、十字交叉的注意力模块,其中每个位置只有(H+W - 1)的稀疏连接。
分解策略大大降低了时间和空间复杂度,从O((H×W)×(H×W))减少到O((H×W)×(H+W−1))。
CCNet vs. Non-Local vs. GCN
在上下文信息聚合方面,GCN只有中心点才能感知到所有像素点的上下文信息。Non-local Network和CCNet保证一个像素在任何位置都能从所有像素中感知上下文信息。GCN可将方形卷积运算分解为与CCNet相关的水平和垂直的线性卷积运算,CCNet采用纵横交叉的方式获取上下文信息,比水平-垂直分离方式更有效。
CCNet的提出是为了模仿Non-local Network,通过一个更有效、更高效的递归交叉注意模块获取密集的上下文信息,其中不相似的特征得到的注意权重较低,而高注意权重的特征是相似的
网络设计
整体架构:
首先用CNN提取特征,得到特征图X;
对于给定的X,使用卷积层来获得降维的特征图H;
然后,将特征图H输入到交叉注意模块中,生成新的特征图H’,H’为其交叉路径中的每个聚合了上下文信息的像素;
为了获得更丰富、更密集的上下文信息,再次将H’输入到十字交叉注意模块中,输出H”。如此,特征图H’‘中的每个位置实际上收集了所有像素的信息;前后两个交叉的注意力模块共享相同的参数,避免添加过多的额外参数
然后,concat H’’ 和X,紧跟一个或多个卷积层,bn层和激活层;
最后,将融合的特征送入segmentation layer,来预测标签。
Criss-Cross Attention
输入特征图
H
H
H,分别用两个1x1卷积生成特征图
Q
Q
Q和
K
K
K,
{
Q
,
K
}
∈
R
C
′
×
W
×
H
\{Q, K\}\in \mathbb{R}^{C^{'} \times W \times H}
{Q,K}∈RC′×W×H,
C
′
C^{'}
C′小于
C
C
C,减小维度。
Affinity operatioin:
d
i
,
u
=
Q
u
Ω
i
,
u
T
d_{i,u}=Q_{u} \Omega_{i,u}^T
di,u=QuΩi,uT
其中,
Q
u
Q_{u}
Qu是特征图
Q
Q
Q上
u
u
u点处的向量,
Q
u
∈
R
C
′
Q_{u} \in \mathbb{R}^{C^{'}}
Qu∈RC′;
Ω
u
\Omega_{u}
Ωu是特征图
K
K
K上与
u
u
u点同行同列的一组向量,
Ω
u
∈
R
(
H
+
W
−
1
)
×
C
′
\Omega_{u} \in \mathbb{R} ^{(H+W-1) \times C^{'}}
Ωu∈R(H+W−1)×C′,
Ω
i
,
u
∈
R
C
′
\Omega_{i,u} \in \mathbb{R}^{C^{'}}
Ωi,u∈RC′是
Ω
u
\Omega_{u}
Ωu的第
i
i
i个元素。
动图如下:
此时,
D
∈
R
(
H
+
W
−
1
)
×
W
×
H
D\in\mathbb{R}^{(H+W-1)\times W \times H}
D∈R(H+W−1)×W×H。接着对
D
D
D在channel维做softmax,即可得到attention map A。
用1x1卷积生成特征图 V V V, V ∈ R C × H × W V \in \mathbb{R}^{C \times H \times W} V∈RC×H×W。
Aggregation operation:
H
u
′
=
∑
i
∈
∣
Φ
u
∣
A
i
,
u
Φ
i
,
u
+
H
u
H_{u}^{'}=\sum _{i \in |\Phi_{u}|} A_{i,u} \Phi_{i,u}+H_{u}
Hu′=i∈∣Φu∣∑Ai,uΦi,u+Hu
其中,
Φ
u
\Phi_{u}
Φu是特征图
V
V
V上与
u
u
u点同行同列的一组向量,
Φ
u
∈
R
(
H
+
W
−
1
)
×
C
\Phi_{u} \in \mathbb{R}^{(H+W-1)\times C}
Φu∈R(H+W−1)×C。
动图如下:
Recurrent Criss-Cross Attention (RCCA)
在第一个循环中,交叉注意以从CNN模型中提取的feature maps H作为输入,输出feature maps H’,其中H和H ‘形状相同;
在第二次循环中,交叉注意以特征图H’为输入,以特征图H’'为输出。
一次CCA仅能捕捉到同行同列的信息,两次就可以捕获到全图其他所有点的信息了。
将
A
i
,
x
,
y
A_{i,x,y}
Ai,x,y与点
x
′
x^{'}
x′、
y
′
y^{'}
y′间的权重用公式表示为:
A
i
,
x
,
y
=
f
(
A
,
x
,
y
,
x
′
,
y
′
)
A_{i,x,y}=f(A,x,y,x^{'},y^{'})
Ai,x,y=f(A,x,y,x′,y′)
则两次CCA的信息传递如下:
H
u
′
′
←
[
f
(
A
,
u
x
,
θ
y
,
θ
x
,
θ
y
)
⋅
f
(
A
′
,
u
x
,
u
y
,
u
x
,
θ
y
)
+
f
(
A
,
θ
x
,
u
y
,
θ
x
,
θ
y
)
⋅
f
(
A
′
,
u
x
,
u
y
,
θ
x
,
u
y
)
]
H_{u}^{''} \leftarrow [f(A,u_{x},\theta_{y},\theta_{x},\theta_{y}) \cdot f(A^{'},u_{x}, u_{y},u_{x},\theta_{y})+f(A,\theta_{x},u_{y},\theta_{x},\theta_{y}) \cdot f(A^{'},u_{x},u_{y},\theta_{x},u_{y})]
Hu′′←[f(A,ux,θy,θx,θy)⋅f(A′,ux,uy,ux,θy)+f(A,θx,uy,θx,θy)⋅f(A′,ux,uy,θx,uy)]
实验结果
Cityscapes