涉及论文:
- Graph Attention Convolution for Point Cloud Semantic Segmentation
- Dual Attention Network for Scene Segmentation
在一篇标题包含“Attention”的论文中,你可能会看到以下公式:
a
i
j
,
k
=
e
x
p
(
a
~
i
j
,
k
)
∑
l
∈
N
(
i
)
e
x
p
(
a
~
i
l
,
k
)
a_{ij,k} = \frac{\mathrm{exp}(\tilde{a}_{ij,k})}{\sum_{l \in \mathcal{N}(i)}\mathrm{exp}(\tilde{a}_{il,k})}
aij,k=∑l∈N(i)exp(a~il,k)exp(a~ij,k)
h i ′ = ∑ j ∈ N ( i ) a i j ∗ M g ( h j ) + b i h_{i}^{'} = \sum_{j \in \mathcal{N}(i)}a_{ij}*M_{g}(h_{j})+b_{i} hi′=j∈N(i)∑aij∗Mg(hj)+bi
或者
s
j
i
=
e
x
p
(
B
i
⋅
C
j
)
∑
i
=
1
N
e
x
p
(
B
i
⋅
C
j
)
s_{ji} = \frac{\mathrm{exp}(B_{i} \cdot C_{j})}{\sum_{i = 1}^{N}\mathrm{exp}(B_{i} \cdot C_{j})}
sji=∑i=1Nexp(Bi⋅Cj)exp(Bi⋅Cj)
E j = α ∑ i = 1 N ( s j i D i ) + A j E_{j} = \alpha \sum_{i = 1}^{N}(s_{ji}D_{i}) + A_{j} Ej=αi=1∑N(sjiDi)+Aj
或者类似的形式,那么恭喜你,你看到 Self-Attention 了!
Self-Attention 的作用不是特征提取,而是指导特征提取。简单地说,通过一些计算学习一种 mask,这个 mask 再作用在特征提取上。如下图所示,通过 mask 的作用,特征提取模块有侧重的提取了目标类(table)的点的特征,在理想情况下忽视非同类点(chair)的特征。

《Graph Attention Convolution for Point Cloud Semantic Segmentation》中的 Attention
这篇工作将 Attention 应用在 图(Graph) 多层感知机上,完成点云分割任务。因为原文中的标记符号的使用与习惯不同,所以此处不使用原文中的标记符号。
记图 G ( V , E ) G(V, E) G(V,E), V = { v 1 , v 2 , … , v N } ∈ R N × 3 V = \{v_{1}, v_{2}, \dots, v_{N}\} \in \mathbb{R}^{N \times 3} V={v1,v2,…,vN}∈RN×3 是图中所有节点的集合, E E E 为边集, N N N 为节点个数。 F = { f 1 , f 2 , … , f N } ∈ R N × f F = \{f_{1}, f_{2}, \dots, f_{N}\} \in \mathbb{R}^{N \times f} F={f1,f2,…,fN}∈RN×f, f f f 为特征维度。 M M M 为多层感知机(MLP)。
记某一节点 v i v_{i} vi 的邻域 N ( i ) \mathcal{N}(i) N(i), Δ v i j = v j − v i \Delta v_{ij} = v_{j} - v_{i} Δvij=vj−vi 表示邻域 N ( i ) \mathcal{N}(i) N(i) 中的点到中心点的某种距离, Δ f i j = M g ( f j ) − M g ( f i ) \Delta f_{ij} = M_{g}(f_{j}) - M_{g}(f_{i}) Δfij=Mg(fj)−Mg(fi) 表示邻域 N ( i ) \mathcal{N}(i) N(i) 中的点与中心点的特征经过某种计算后的差值,可以简单地理解为 Δ f i j = f j − f i \Delta f_{ij} = f_{j} - f_{i} Δfij=fj−fi,这并不影响对后续工作的理解。
我们知道在点云数据的处理中,通常需要将点云根据距离或者其他的规则划分众多邻域。根据规则不同,可能会计算所有点的邻域,也可能计算采样点的邻域,不管怎样,都会有很多“域”。那么点云中的一个点可能会同时属于不同“域”,形象地说,你有很多邻居,那么你就会是不同人的邻居。对于点云中的某一点
v
k
v_{k}
vk,其在
v
i
v_{i}
vi 的邻域
N
(
i
)
\mathcal{N}(i)
N(i) 中被记为
v
j
v_{j}
vj,其在该邻域
N
(
i
)
\mathcal{N}(i)
N(i) 中,其 mask 可由如下公式计算得到:
a
~
i
j
=
M
α
(
Δ
v
i
j
⊗
Δ
f
i
j
)
\tilde{a}_{ij} = M_{\alpha}(\Delta v_{ij} \otimes \Delta f_{ij})
a~ij=Mα(Δvij⊗Δfij)
前面说了,Self-Attention 的目的是抑制非同类的点,那么,在另外一个邻域中, v k v_{k} vk 的 mask 可能就是其他值。
考虑到不同邻域的形状或尺寸是不同的,对
a
~
\tilde{a}
a~ 做一次标准化:
a
i
j
,
k
=
e
x
p
(
a
~
i
j
,
k
)
∑
l
∈
N
(
i
)
e
x
p
(
a
~
i
l
,
k
)
a_{ij,k} = \frac{\mathrm{exp}(\tilde{a}_{ij,k})}{\sum_{l \in \mathcal{N}(i)}\mathrm{exp}(\tilde{a}_{il,k})}
aij,k=∑l∈N(i)exp(a~il,k)exp(a~ij,k)
其中,
k
k
k 表示节点
v
i
v_{i}
vi 的第
k
k
k 个特征。
最后将其作用在特征提取的计算中:
f
i
′
=
∑
j
∈
N
(
i
)
a
i
j
∗
M
g
(
f
j
)
+
b
i
f_{i}^{'} = \sum_{j \in \mathcal{N}(i)}a_{ij}*M_{g}(f_{j})+b_{i}
fi′=j∈N(i)∑aij∗Mg(fj)+bi
那么,取决于
v
i
v_{i}
vi 与邻域的关系(是否是同一类),这一个特征
f
i
f_{i}
fi 可能被抑制,也可能被增强。
看完代码之后,发现就是在 PointNet++ 基础上增加了一个多层感知机,所以跟图(Graph)有什么关系?
《Dual Attention Network for Scene Segmentation》中的 Attention
这篇工作中有两个 Attention 结构,只不过是作用在不同的数据上,具有不同的具体含义,但大体结构是相同的。
如上图所示,一个特征图
A
A
A 包含
H
×
W
H \times W
H×W个“像素”,每个“像素”有
C
C
C 个通道,也就是
C
C
C 个特征。同样的,通过某种计算,为每一个“像素”分配一个 mask。与点云不同,图像是结构化的数据,所以这块使用卷积做可学习的计算。特征图
A
A
A 经过三个不同的卷积之后得到
B
B
B、
C
C
C、
D
D
D,且
B
,
C
,
D
∈
R
C
×
H
×
W
{B,C,D} \in \mathbb{R}^{C \times H \times W}
B,C,D∈RC×H×W。令
N
=
H
×
W
N = H \times W
N=H×W,那么
B
B
B、
C
C
C、
D
D
D 经过 reshape 后降维成二维矩阵
B
′
,
C
′
,
D
′
∈
R
C
×
N
{B^{'},C^{'},D^{'}} \in \mathbb{R}^{C \times N}
B′,C′,D′∈RC×N。然后,
S
=
s
o
f
t
m
a
x
(
(
B
′
)
T
⋅
C
′
)
∈
R
N
×
N
S = \mathrm{softmax}((B^{'})^{T} \cdot C^{'}) \in \mathbb{R}^{N \times N}
S=softmax((B′)T⋅C′)∈RN×N ,
S
S
S的每一个元素就是对应位置的“像素”的 mask。
具体而言,同样需要经过标准化:
s
j
i
=
e
x
p
(
B
i
⋅
C
j
)
∑
i
=
1
N
e
x
p
(
B
i
⋅
C
j
)
s_{ji} = \frac{\mathrm{exp}(B_{i} \cdot C_{j})}{\sum_{i = 1}^{N}\mathrm{exp}(B_{i} \cdot C_{j})}
sji=∑i=1Nexp(Bi⋅Cj)exp(Bi⋅Cj)
最后,将 mask 作用在特征提取上,并按照上图所示,与原特征图
A
A
A 相加:
E
j
=
α
∑
i
=
1
N
(
s
j
i
D
i
)
+
A
j
E_{j} = \alpha \sum_{i = 1}^{N}(s_{ji}D_{i}) + A_{j}
Ej=αi=1∑N(sjiDi)+Aj
式中, α \alpha α 是一个可学习的标量。 E j E_{j} Ej 可以理解为两个特征图 ∑ i = 1 N ( s i j D i ) \sum_{i = 1}^{N}(s_{ij}D_{i}) ∑i=1N(sijDi) 和 A j A_{j} Aj 的带权相加,那么 α \alpha α 就是那个权值。当然了,关于 α \alpha α 的讨论不在本篇博文的范围中。
结论
虽然理论上是很合理的,目标也是很美好的,但是就这两个工作,从现有的评价指标(mIoU)上来看,效果并不是那么得卓越。与其他工作相比,高的会高出不少,但也存在低的。
本文深入探讨了Self-Attention机制在深度学习中的应用,特别是在《Graph Attention Convolution for Point Cloud Semantic Segmentation》和《Dual Attention Network for Scene Segmentation》两篇论文中的实现。Self-Attention不仅用于特征提取,还指导特征提取,通过学习的mask对特征进行加权。在点云处理中,Attention机制帮助区分同类和非同类点;而在图像场景分割中,通过卷积计算为每个像素分配mask。尽管在某些评价指标上效果不一,但Self-Attention为深度学习带来了新的视角。

1024

被折叠的 条评论
为什么被折叠?



