😻(AF)2-S3Net(CVPR2021) 主要贡献:
- 提出一个端到端的 encoder-decoder 3D 稀疏卷积神经网络,其在 semanticKITTI 基准中准确率达到了 SOTA(
2021年
)- 编码器中的多分支注意力特征融合(attentive feature fusion)模块,可以同时学习全局上下文和局部细节
- 采用自适应特征选择(adaptive feature selection)模块,在解码器中对特征映射重新加权,主动加强了来自特征融合模块的上下文信息,提高了模型的通用性
- 在 semanticKITTI、nuScenes-lidarseg 和 ModelNet40 三个基准上,通过消融实验、定性和定量结果,综合分析了论文提出的模型与现有方法相比的语义分割和分类性能
😿自动驾驶机器人系统和自动驾驶汽车依赖于对周围环境的准确感知,语义分割是道路场景感知的重要组成部分,它提供了周围环境的语义信息。近年来,激光雷达三维语义分割的方法层出不穷,虽然这些有效地改进了语义分割的性能,但这些方法要么受高计算复杂性的影响(效率低下),要么缺少小物体的细粒度信息。
😸为了解决这些问题,论文提出了一种用于三维激光雷达语义分割的端到端 encoder-decoder 卷积神经网络 (AF)2-S3Net
。该网络在编码器中使用了一种新颖的多分支注意力特征融合模块,在解码器中使用了一种独特的自适应特征选择模块(该模块具有特征映射重加权功能)。
😻(AF)2-S3Net
将基于体素的方法和基于点的方法融合到一个统一的框架中,从而有效地处理大型 3D 场景。论文的实验结果表明,该方法在大规模 SemanticKITTI 基准测试中优于最先进的方法,在公开的竞争排行榜中排名第一(2021年
)。
网络结构
😸(AF)2-S3Net 由基于残差网络的 backbone、注意力特征融合模块(AF2M)和自适应特征选择模块(AFSM)组成。该模型采用三维激光雷达点云,并将其转化为包含每个点对应坐标和特征的稀疏张量。然后,利用 (AF)2-S3Net 对输入的稀疏张量进行处理,该算法建立在适合稀疏点云的 3D 稀疏卷积运算的基础上(使用 Minkowski Engine
),并在激光雷达扫描后有效地预测每个点的类标签。
🙀一个稀疏张量可表示为
P
s
=
[
C
,
F
]
P_s = [C, F]
Ps=[C,F],
C
∈
R
N
×
M
C \in \mathbb{R}^{N \times M}
C∈RN×M 为
M
M
M 维的输入坐标矩阵(input coordinate matrix),
F
∈
R
N
×
K
F \in \mathbb{R}^{N \times K}
F∈RN×K 为相应的
K
K
K 维特征矩阵(feature matrix)。在本论文中,将点的三维坐标
(
x
,
y
,
z
)
(x, y, z)
(x,y,z) 作为稀疏张量
C
C
C(即
M
=
3
M=3
M=3?),而将点的 normal features
(
n
x
,
n
y
,
n
z
)
(n_x, n_y, n_z)
(nx,ny,nz) 和返回的激光束强度
(
i
)
(i)
(i) 作为稀疏张量特征
F
F
F(即
K
=
4
K=4
K=4?)。利用 normal features 有助于模型学习额外的方向信息,因而通过区分对象的细微细节(fine details)可以提高模型的性能。
😻以下是 (AF)2-S3Net
的网络结构:
- 将点云数据处理成 p i ∈ R d i n , i = 1 , 2 , ⋯ , N p_i \in \mathbb{R}^{d_{in}}, i=1, 2, \cdots, N pi∈Rdin,i=1,2,⋯,N,其中, N N N 为点云数量,而 d i n d_{in} din 为每个点的特征维度(可包括三维坐标 ( x , y , z ) (x, y, z) (x,y,z)、激光束反射强度 ( i ) (i) (i) 和颜色 ( R , G , B ) (R, G, B) (R,G,B) 等)
- 将处理后的点云数据输入 AF2M 中,得到输出 J J J 和特征 [ x 1 , x 2 , x 3 ] [x_1, x_2, x_3] [x1,x2,x3]
- 将 AF2M 的输出 J J J 送入残差骨干网络中得到输出 J ′ J^{'} J′,并将特征 [ x 1 , x 2 , x 3 ] [x_1, x_2, x_3] [x1,x2,x3] 送入 AFSM 中得到输出 D \cal D D
- 将 J ′ J^{'} J′ 和 D \cal D D 拼接起来并进行相关卷积操作得到最终输出,其维度为 [ N , d o u t ] [N, d_{out}] [N,dout]
AF2M
😸为了更好地提取全局上下文信息,AF2M 使用了一种混合的方法,该方法主要使用小、中和大这三种类型的 kernel-size,小的关注 point-based
特征、中的关注中等规模的 voxel-based
特征,而大的关注大规模的 voxel-based
特征。
- AF2M 首先通过
g
(
⋅
)
g(\cdot)
g(⋅) 在相应的分支上融合特征
x
‾
=
[
x
1
,
x
2
,
x
3
]
\overline{x} = [x_1, x_2, x_3]
x=[x1,x2,x3],而
g
(
x
1
,
x
2
,
x
3
)
≜
α
x
1
+
β
x
2
+
γ
x
3
+
△
g(x_1, x_2, x_3)\triangleq\alpha x_1+\beta x_2 +\gamma x_3 + \vartriangle
g(x1,x2,x3)≜αx1+βx2+γx3+△。
- α \alpha α、 β \beta β 和 γ \gamma γ 为缩放稀疏张量中每个点的特征列(feature columns)的对应系数,且这些系数由函数 f e n c ( ⋅ ) f_{enc}(\cdot) fenc(⋅) 处理注意力层 h i , ∀ ∈ { 1 , 2 , 3 } h_i, \forall \in \{1, 2, 3\} hi,∀∈{1,2,3}生成。 h i h_i hi 是通过卷积操作 h h h 处理 x i x_i xi 后得到的
- 引入 △ \vartriangle △,通过添加残余阻尼因子(residual damping factor)可稳定注意力层 h i ( ⋅ ) , ∀ i ∈ { 1 , 2 , 3 } h_i(\cdot), \forall i \in \{1, 2, 3\} hi(⋅),∀i∈{1,2,3},该阻尼因子是残差卷积层 π ≜ s i g m o i d ( b n ( c o n v ( f e n c ( ⋅ ) ) ) ) \pi \triangleq sigmoid(bn(conv(f_{enc}(\cdot)))) π≜sigmoid(bn(conv(fenc(⋅)))) 的输出。
- AF2M 的输出
J
J
J 由
F
(
g
(
⋅
)
)
\cal F \rm (g(\cdot))
F(g(⋅)) 产生,而
F
\cal F
F 用来将稀疏张量尺度空间(sparse tensor scale space)与下一个卷积块对齐
- 对于每个 h i , ∀ i ∈ { 1 , 2 , 3 } h_i, \forall i \in \{1, 2, 3\} hi,∀i∈{1,2,3},其相应权重的梯度 w h i = w h i − ∂ J ∂ g ∂ g ∂ f e n c ∂ f e n c ∂ h i − ∂ J ∂ g ∂ g ∂ π ∂ π ∂ h i w_{h_i} = w_{h_i} - \frac{\partial J}{\partial g}\frac{\partial g}{\partial f_{enc}}\frac{\partial f_{enc}}{\partial h_i} - \frac{\partial J}{\partial g}\frac{\partial g}{\partial \pi}\frac{\partial \pi}{\partial h_i} whi=whi−∂g∂J∂fenc∂g∂hi∂fenc−∂g∂J∂π∂g∂hi∂π
- 如上图右边所示, α x 1 \alpha x_1 αx1、 β x 2 \beta x_2 βx2 和 γ x 3 \gamma x_3 γx3 为 AF2M 的三个分支,第一个分支 α x 1 \alpha x_1 αx1 学习并捕获较小的物体(如:人、杆和交通标志),而较浅的分支 β x 2 \beta x_2 βx2 和 γ x 3 \gamma x_3 γx3 则关注更大的物体(如:植被、人行道和路面)。kernel size 越大则关注越大的物体。
AFSM
😴下面第一幅图为 SE-Net
中的 SE 块,而第二幅图为 AFSM
模块示意图。其主要思想是先通过池化操作降维,然后通过神经网络学习得到各个通道的权重,再对各个通道分别进行加权,最后得到输出。
- AFSM 模块接收从 AF2M 模块处理后的特征 [ x 1 , x 2 , x 3 ] [x_1, x_2, x_3] [x1,x2,x3] 并处理得到输出 [ x 1 ′ , x 2 ′ , x 3 ′ ] [x_1^{'}, x_2^{'}, x_3^{'}] [x1′,x2′,x3′]
- 将输出的 [ x 1 ′ , x 2 ′ , x 3 ′ ] [x_1^{'}, x_2^{'}, x_3^{'}] [x1′,x2′,x3′] 拼接在一起后再通过 ReLU 激活函数后得到输出 f d e c f_{dec} fdec(为了方便直接记函数名为输出名)
- 将
f
d
e
c
f_{dec}
fdec 送入一个
shared squeeze
重加权网络中(论文这里引用的论文为 SE-Net)得到 AFSM 模块的最终输出
✍️这个模块就像一个自适应的 dropout,其有意地过滤掉一些对最终结果没有贡献的特征图(通过学习),而不是直接将加权特征图作为输出。此外,论文将
θ
\theta
θ 设为 0.35
✍️将 AFSM 分支与最后一个解码器块连接起来的跳跃连接(skip connection),确保了错误梯度传播回编码器分支,以获得更好的学习稳定性
Network Optimization
🙀论文使用 geo-aware anisotrophic
、Exponential-log loss
和 Lovasz loss
的线性组合来优化 (AF)2-S3Net。其中,geo-aware anisotrophic 有利于激光雷达场景中精细细节的恢复,而 Exponential-log loss 则通过在高度不平衡的数据集上同时关注小型和大型结构从而进一步提高分割性能。
😸geo-aware anisotrophic 可通过如下式子进行计算:
L
g
e
o
(
y
,
y
^
)
=
−
1
N
∑
i
,
j
,
k
∑
c
=
1
C
M
L
G
A
ψ
y
i
j
k
,
c
l
o
g
y
^
i
j
k
,
c
L_{geo}(y, \hat{y}) = -\frac{1}{N}\sum_{i, j, k}\sum_{c=1}^{C} \frac{M_{LGA}}{\psi}y_{ijk,c}log \hat{y}_{ijk,c}
Lgeo(y,y^)=−N1i,j,k∑c=1∑CψMLGAyijk,clogy^ijk,c
✍️其中,
y
y
y 为 ground true,
y
^
\hat{y}
y^ 为预测标签,
N
N
N(论文中设为 5
) 为局部张量邻居(local tensor neighborhood),
C
C
C 是语义类别数量,
M
L
G
A
=
∑
ψ
=
1
Ψ
(
c
p
⨁
c
q
ψ
)
M_{LGA} = \sum_{\psi=1}^{\Psi}(c_p \bigoplus c_{q_{\psi}})
MLGA=∑ψ=1Ψ(cp⨁cqψ)(定义在这篇论文里)
😸最终损失函数计算公式如下:
L
t
o
t
(
y
,
y
^
)
=
ω
1
L
e
x
p
(
y
,
y
^
)
+
ω
2
L
g
e
o
(
y
,
y
^
)
+
ω
3
L
l
o
v
(
y
,
y
^
)
L_{tot}(y, \hat{y}) = \omega_1 L_{exp}(y, \hat{y}) + \omega_2 L_{geo}(y, \hat{y}) + \omega_3 L_{lov}(y, \hat{y})
Ltot(y,y^)=ω1Lexp(y,y^)+ω2Lgeo(y,y^)+ω3Llov(y,y^)
✍️在这篇论文中,
ω
1
=
1
\omega_1=1
ω1=1,
ω
2
=
1.5
\omega_2=1.5
ω2=1.5,
ω
3
=
1.5
\omega_3=1.5
ω3=1.5
😻论文地址:https://arxiv.org/pdf/2102.04530v1.pdf
😻代码地址:暂无