摘要:
本文提出了一种基于图神经网络结合场景上下文的、用于3D激光雷达语义分割的方法。这个问题被定义为建立图表示中心分割与其邻居的拓扑关系,并推断中心分割的语义标签。图的节点是从距离图像的分割中生成的,适用于稠密和稀疏的点云。边的权重用于评估中心节点和邻居的相关性,由网络自动编码,因此邻居节点的数量就不再是一个敏感的参数。本系统由分割生成、图生成、边权重估计、节点更新和节点预测组成。动态场景数据集的定量评估表明该方法相比于unary CNN提升了8%,比常规的CNN提升了17%。
一、方法
A.问题定义
定义
s
s
s是3D激光雷达数据的一个分割,是通过在深度图像上执行区域增长算法得到的,该算法检测了深度图像中点的一致性。令
Ω
\Omega
Ω为
s
s
s的
M
M
M个最近邻集合。本文的工作是通过邻域
Ω
\Omega
Ω推断,将
s
s
s映射到一个标签
x
∈
{
1
,
.
.
.
,
K
}
x \in \{1,...,K\}
x∈{1,...,K}。数学表示为:
F
θ
:
s
∣
Ω
→
x
∈
{
1
,
.
.
.
,
K
}
(1)
F_{\theta}:s|\Omega \rightarrow x \in \{1,...,K\}\tag{1}
Fθ:s∣Ω→x∈{1,...,K}(1)
本文提出了一种基于GNN的分类器。给定一个中心分割
s
i
s_i
si及其邻域
Ω
i
\Omega_i
Ωi,首先构建一个无向图
G
i
=
{
V
i
,
E
i
}
G_i=\{V_i,E_i\}
Gi={Vi,Ei}表示拓扑关系,其中
V
i
=
{
v
i
}
V_i=\{v_i\}
Vi={vi}是每个分割的节点集合,
E
i
=
{
e
i
j
}
E_i=\{e_{ij}\}
Ei={eij}表示连接中心节点
v
i
v_i
vi和邻域节点
v
j
,
j
∈
Ω
j
,
j
≠
i
v_j,j \in \Omega_j,j \ne i
vj,j∈Ωj,j=i的边的集合。
令
H
i
=
{
h
i
}
H_i=\{h_i\}
Hi={hi}和
W
i
=
{
w
i
j
}
W_i=\{w_{ij}\}
Wi={wij}是图
G
i
G_i
Gi中节点和边的状态。
G
i
G_i
Gi的状态被初始化为
H
i
0
=
{
h
i
0
}
H_i^0=\{h_i^0\}
Hi0={hi0}和
W
i
0
=
{
w
i
j
0
}
W_i^0=\{w_{ij}^0\}
Wi0={wij0},由下式进行计算:
Θ
(
v
i
)
→
h
i
0
(2)
\Theta(v_i) \rightarrow h_i^0 \tag{2}
Θ(vi)→hi0(2)
g
(
Θ
(
v
i
)
,
Θ
(
v
j
)
)
→
w
i
j
0
(3)
g(\Theta(v_i),\Theta(v_j)) \rightarrow w_{ij}^0 \tag{3}
g(Θ(vi),Θ(vj))→wij0(3)
在本文中,
h
j
0
h_j^0
hj0是一个特征向量,通过一个特征提取过程
Θ
(
⋅
)
\Theta(\cdot)
Θ(⋅)初始化。
w
i
j
w_{ij}
wij示是一个比率/权重,用于描述节点
v
i
v_i
vi和
v
j
v_j
vj的关系强度,由操作
g
(
⋅
)
g(\cdot)
g(⋅)计算。
节点和边经过
T
T
T次迭代后,更新为
H
i
T
H_i^T
HiT和
W
i
T
W_i^T
WiT。语义标签最终通过下式进行预测:
f
(
h
i
T
)
→
x
i
^
∈
R
1
×
K
(4)
f(h_i^T) \rightarrow \hat{x_i}\in \mathbb R^{1 \times K}\tag{4}
f(hiT)→xi^∈R1×K(4)
其中
x
i
^
\hat{x_i}
xi^是
s
i
s_i
si的预测标签,
f
(
⋅
)
f(\cdot)
f(⋅)是预测操作。
令
F
θ
F_\theta
Fθ为上述基于GNN的分类器。给定监督样本集合
X
=
{
s
i
,
Ω
i
,
x
i
}
i
=
1
N
X=\{s_i,\Omega_i,x_i\}_{i=1}^N
X={si,Ωi,xi}i=1N,其中
x
i
x_i
xi是
s
i
s_i
si由人工标注的标签,学习
F
θ
F_\theta
Fθ可以表示为寻找最优的
θ
∗
\theta^*
θ∗,使得损失函数
L
L
L最小
θ
∗
=
arg
θ
m
i
n
L
(
X
;
θ
)
(5)
\theta^*=\arg\limits_{\theta}minL(X;\theta)\tag{5}
θ∗=θargminL(X;θ)(5)
B.边权重估计
如果我们假设每一个节点
v
i
v_i
vi是互相独立的,[3]已经验证这个假设对于正确分类是不可行的;相反,上下文信息可以增强节点的表示。因此,我们希望邻域节点的信息可以传递到目标节点。
v
i
v_i
vi有多个邻域节点,显然每个邻居的重要性不尽相同。例如,行人对于移动目标如车辆或者骑行者应该有更多的注意力,对静止目标的注意力应该更小。[24]中设计了一种注意力机制感知上下文信息:
g
θ
e
:
R
s
×
R
s
→
R
g_{\theta_e}:\mathbb R^s \times \mathbb R^s \rightarrow \mathbb R
gθe:Rs×Rs→R。函数
g
θ
e
g_{\theta_e}
gθe在图模型中是由所有的边共享的。两个相邻节点的关系定义如下:
e
~
i
j
=
g
θ
e
(
[
h
i
,
h
j
]
)
(6)
\tilde e_{ij}=g_{\theta_e}([h_i,h_j])\tag{6}
e~ij=gθe([hi,hj])(6)
其中
h
i
h_i
hi和
h
j
h_j
hj分别是几点
v
i
v_i
vi和
v
j
v_j
vj的隐状态,操作
[
⋅
]
[\cdot]
[⋅]表示向量的连接。
g
θ
e
g_{\theta_e}
gθe可以由任何可微的函数实现,最简单是的线性模型,在本文中使用了多层感知器(MLP)。上式描述了节点
v
j
v_j
vj到
v
i
v_i
vi的重要性,反之亦然,因为图是无向图。显然,我们不需要向建立边特征那样对边进行建模,而是利用节点对表示。式(6)使得每一个节点的信息可以流向其他节点,因此可以捕捉长距离的上下文信息。在实际中,我们只考虑
v
i
v_i
vi有限数量的邻居,即上下文信息的范围由
Ω
i
\Omega_i
Ωi调整。在此意义下,边的权重可以定义为
w
i
j
=
1
∣
Ω
i
∣
e
x
p
(
e
~
i
j
)
∑
j
∈
Ω
i
e
x
p
(
e
~
i
j
)
(7)
w_{ij}=\frac{1}{|\Omega_i|}\frac{exp(\tilde e_{ij})}{\sum_{j \in \Omega_i}exp(\tilde e_{ij})}\tag{7}
wij=∣Ωi∣1∑j∈Ωiexp(e~ij)exp(e~ij)(7)
与卷积核的关系:标准的卷积操作也可以捕捉上下文信息,但是感受野较小,范围由卷积核的大小定义。公式(6)的优点在于感受野是不受限制的,可以修改邻域
Ω
i
\Omega_i
Ωi的定义使得感受野范围向标准卷积核一样下,也可以扩展到整幅图。
C.节点更新
节点的
v
i
v_i
vi的隐藏状态
h
i
h_i
hi随迭代次数更新。
h
i
t
h_i^t
hit表示节点
v
i
v_i
vi在
t
t
t时刻的状态。初始状态
h
i
0
h_i^0
hi0由如图所示的ROI pooling的高维输出获得。节点更新分为两个步骤:首先收集邻域信息,然后更新节点状态。
m
i
t
=
1
∣
Ω
i
∣
∑
j
∈
Ω
i
ϕ
θ
n
(
w
i
j
h
j
t
)
(8)
m_i^t=\frac{1}{|\Omega_i|}\sum\limits_{j \in \Omega_i}\phi_{\theta_n}(w_{ij}h_j^t)\tag{8}
mit=∣Ωi∣1j∈Ωi∑ϕθn(wijhjt)(8)
公式(8)中,函数
ϕ
θ
n
\phi_{\theta_n}
ϕθn将邻域节点在
t
t
t时刻的信息映射到向量
m
i
t
m_i^t
mit中,变量
w
i
j
w_{ij}
wij决定了不同节点的贡献度。在本文中,
ϕ
θ
n
\phi_{\theta_n}
ϕθn由MLP实现。
计算
m
i
t
m_i^t
mit后,
ψ
θ
m
\psi_{\theta_m}
ψθm以当前节点状态
h
i
t
h_i^t
hit和上下文信息
m
i
t
m_i^t
mit作为输入,计算
t
+
1
t+1
t+1时刻的状态
h
i
t
+
1
=
R
e
l
u
(
ψ
θ
m
(
[
h
i
t
,
m
i
t
]
)
)
,
t
∈
[
0
,
T
]
(9)
h_i^{t+1}=Relu(\psi_{\theta_m}([h_i^t,m_i^t])), t \in [0,T]\tag{9}
hit+1=Relu(ψθm([hit,mit])),t∈[0,T](9)
其中,
ϕ
θ
n
\phi_{\theta_n}
ϕθn和
ψ
θ
m
\psi_{\theta_m}
ψθm是所有节点共享的。迭代次数
T
T
T是一个人工设计的超参数。它同样可以决定上下文的感知范围。例如,增加
T
T
T将会使得更远距离的信息可以传播到目标节点。
D.节点预测
在公式(9)更新
T
T
T次后,开始预测每个节点的语义标签。对于节点
v
i
v_i
vi,其预测
x
^
i
\hat x_i
x^i由下式计算
x
^
i
=
s
o
f
t
m
a
x
(
f
θ
v
(
h
i
T
)
)
,
x
^
i
∈
R
1
×
K
(10)
\hat x_i=softmax(f_{\theta_v}(h_i^T)),\hat x_i \in \mathbb R^{1 \times K}\tag{10}
x^i=softmax(fθv(hiT)),x^i∈R1×K(10)
最终的节点状态
h
i
T
h_i^T
hiT包含了自身状态和邻居的信息。
f
θ
v
f_{\theta_v}
fθv也是由MLP实现,并且由所有节点共享。
E.损失函数
交叉熵损失函数是语义分割任务中最常用的。对于节点
v
i
v_i
vi,如果只考虑其交叉熵,不能保证
w
i
j
w_{ij}
wij的收敛性。此外,中心节点的损失与邻居节点的损失应该同时包括进去,即
L
=
L
c
e
n
t
e
r
+
L
n
e
i
g
h
b
o
r
(11)
L=L_{center}+L_{neighbor}\tag{11}
L=Lcenter+Lneighbor(11)
具体地,节点
v
i
v_i
vi对应的
L
i
L_i
Li定义如下:
L
i
=
−
(
x
i
l
n
(
x
^
i
T
)
+
1
∣
Ω
i
∣
∑
j
∈
Ω
i
(
w
i
j
x
j
l
n
(
x
^
j
T
)
)
)
(12)
L_i=-(x_iln(\hat x_i^T)+\frac{1}{{|\Omega_i|}}\sum_{j \in \Omega_i}(w_{ij}x_jln(\hat x_j^T)))\tag{12}
Li=−(xiln(x^iT)+∣Ωi∣1j∈Ωi∑(wijxjln(x^jT)))(12)
其中,
x
i
x_i
xi是one-hot向量,作为节点
v
i
v_i
vi的标签。等式分为两部分:第一项是中心损失,第二项为邻域损失。邻域损失的作用是当拥有较高边权重的邻居节点被错误估计的时候增大损失。因此,最终的损失函数为
L
(
X
;
θ
)
=
1
N
∑
i
=
1
N
L
i
=
−
1
N
∑
i
=
1
N
(
x
i
l
n
(
x
^
i
T
)
+
1
∣
Ω
i
∣
∑
j
∈
Ω
i
(
w
i
j
x
j
l
n
(
x
^
j
T
)
)
)
(13)
\begin{aligned} L(X;\theta)&=\frac{1}{N}\sum_{i=1}^NL_i\\ &=-\frac{1}{N}\sum_{i=1}^N (x_iln(\hat x_i^T)+\frac{1}{|\Omega_i|}\sum_{j \in \Omega_i}(w_{ij}x_jln(\hat x_j^T)))\tag{13} \end{aligned}
L(X;θ)=N1i=1∑NLi=−N1i=1∑N(xiln(x^iT)+∣Ωi∣1j∈Ωi∑(wijxjln(x^jT)))(13)