计算机视觉算法——基于深度学习的高精地图算法(MapTRv2 / PivotNet / BeMapNet)
- 计算机视觉算法——基于深度学习的高精地图算法(MapTRv2 / PivotNet / BeMapNet)
- 1. MapTRv2
- 1.1 网络结构及特点
- 1.2 Decoupled Self-Attention
- 1.3 One-to-many Set Prediction Loss & Auxiliary Dense Prediction Loss
- 1.4 实验结果
- 2. PivotNet
- 2.1 网络结构及特点
- 2.2 Line-Aware Point Decoder
- 2.3 Pivot Dynamic Matching Module
- 2.4 损失函数
- 2.5 实验结果
- 3. BeMapNet
- 3.1 网络结构
- 3.2 IPM-PE Align Layer
- 3.3 Bezier Output Head
- 3.4 损失函数
- 3.5 实验结果
计算机视觉算法——基于深度学习的高精地图算法(MapTRv2 / PivotNet / BeMapNet)
去年总结过几篇经典的高精地图算法计算机视觉算法——基于深度学习的高精地图算法(HDMapNet / VectorMapNet / MapTR / VectorNet),一年过去了这个方向上又许多进展,这篇博客主要记录最近看过的几篇相关Paper
1. MapTRv2
MapTRv2是对MapTR的扩展,相对于MapTR其主要内容区别主要在于
- 引入了Decoupled Self-Attention模块,可以减少内存占用以及提高性能;
- 引入了辅助的One-to-many Set Prediction Loss和Auxiliary Dense Prediction Loss来加速收敛;
1.1 网络结构及特点
MapTRv2的网络结构如下图所示:
1.2 Decoupled Self-Attention
Decouple Self-Attention的原理如上图中Self-Attention Variants所展示的,在原始的MapTR中如果有
N
N
N个Instantce Query和
N
v
N_v
Nv个Point Query,则Self-Attention是在
N
×
N
v
N \times N_v
N×Nv个组合Query上进行的,计算复杂度为
O
(
(
N
×
N
v
)
2
)
O\left(\left(N \times N_v\right)^2\right)
O((N×Nv)2),MapTRv2中提出的方法是先进行Instance级别的Self-Attention,再进行Point级别的Self-Attention,这样计算复杂度可以降低为
O
(
N
2
+
N
v
2
)
)
\left.O\left(N^2+N_v^2\right)\right)
O(N2+Nv2)),实验结果如下:
可以看到如果只进行Instance级别的Self-Attention网络性能是会下降的,使用Decoupled Self-Attention不仅可以降低GPU内存占用,同时可以提高网络性能。
在Cross-Attention部分作者也做了部分调整,如下图所示
当使用BEV+PV混合Cross Attention时,当在有准确的Z值是(av2.3D)数据集,是有性能提升的。
1.3 One-to-many Set Prediction Loss & Auxiliary Dense Prediction Loss
在MapTRv2中损失函数一共由One-to-One Set Prediction Loss、One-to-many Set Prediction Loss、Auxiliary Dense Prediction Loss三部分构成: L = β o L one2one + β m L one2many + β d L dense . \mathcal{L}=\beta_o \mathcal{L}_{\text {one2one }}+\beta_m \mathcal{L}_{\text {one2many }}+\beta_d \mathcal{L}_{\text {dense }} . L=βoLone2one +βmLone2many +βdLdense .其中One-to-One Set Prediction Loss和MapTR中是一致的,参见计算机视觉算法——基于深度学习的高精地图算法(HDMapNet / VectorMapNet / MapTR / VectorNet)
One-to-many Set Prediction Loss的原理如下图所示:
对于One-to-One Set Prediction Branch是对
L
L
L个真值分配
N
N
N个预测的Instance Query,在 One-to-many Set Prediction Branch中则将
L
L
L个真值复制
K
K
K份,然后使用额外的
T
T
T个Instance Query进行预测, 在One-to-many Set Prediction Branch中和One-to-One Set Prediction Branch共享Point Query。这样做相当于增加了正样本的比例,从而可以加速收敛。
Auxiliary Dense Prediction Loss分为三个部分,分别是深度监督损失
L
depth
\mathcal{L}_{\text {depth }}
Ldepth ,BEV分割损失
L
BEVSeg
\mathcal{L}_{\text {BEVSeg }}
LBEVSeg ,PV分割损失
L
PVSeg
\mathcal{L}_{\text {PVSeg }}
LPVSeg ,其中深度监督损失使用的是激光点云作为真值,使用Cross Entropy Loss进行监督:
L
depth
=
∑
m
=
1
M
L
C
E
(
ϕ
depth
(
F
m
)
,
D
m
)
\mathcal{L}_{\text {depth }}=\sum_{m=1}^M \mathcal{L}_{\mathrm{CE}}\left(\phi_{\text {depth }}\left(F_m\right), D_m\right)
Ldepth =m=1∑MLCE(ϕdepth (Fm),Dm)BEV分割损失
L
BEVSeg
\mathcal{L}_{\text {BEVSeg }}
LBEVSeg ,PV分割损失
L
PVSeg
\mathcal{L}_{\text {PVSeg }}
LPVSeg 如下:
L
BEVSeg
=
L
C
E
(
ϕ
B
E
V
S
e
g
(
F
B
E
V
)
,
M
B
E
V
)
.
\mathcal{L}_{\text {BEVSeg }}=\mathcal{L}_{\mathrm{CE}}\left(\phi_{\mathrm{BEVSeg}}\left(F_{B E V}\right), M_{B E V}\right) .
LBEVSeg =LCE(ϕBEVSeg(FBEV),MBEV).
L
P
V
S
e
g
=
∑
m
=
1
M
L
C
E
(
ϕ
P
V
S
e
g
(
F
m
)
,
M
P
V
m
)
.
\mathcal{L}_{\mathrm{PVSeg}}=\sum_{m=1}^M \mathcal{L}_{\mathrm{CE}}\left(\phi_{\mathrm{PVSeg}}\left(F_m\right), M_{P V}^m\right) .
LPVSeg=m=1∑MLCE(ϕPVSeg(Fm),MPVm).如下图是各个各个损失带来的收益:
可以看到收益最明显的是 One-to-many Set Prediction Loss。
1.4 实验结果
MapTRv2和其他方法的对比结果如下:
在相同的配置下,MapTRv2相对于MapTR有10个点的提升,如下图是MapTR和MapTRv2的训练收敛速度,同样提升明显
2. PivotNet
PivotNet发表于2023年ICCV,PivotNet提出了一种基于枢纽点的高精地图建模方法,该方法相对于MapTR提出的基于均匀点的建模方法有Corner Friendly、Geometry Robust、Expression Compact等优势,如下图所示:
枢纽点的定义如下图所示:
Pivot Point
S
p
\mathcal{S}^p
Sp是对线的整体形状和方向有贡献的、保持其基本特征所必需的点。Collinear Point
S
c
\mathcal{S}^c
Sc则是那些除枢纽点之外可以安全删除并且不影响线条形状的点。
2.1 网络结构及特点
网络结构如下图所示:
在Decoder部分使用是Line-Aware Point Decoder获得Point Feature,然后再通过Pivotal Point Predictor进行最终结果预测,下面我们对这两部分进行详细介绍
2.2 Line-Aware Point Decoder
Line-Aware Point Decoder的结构图如下图所示
Decoder的输入是
- 维度为 H × W × C ′ H \times W \times C' H×W×C′的BEV Feature;
- 随机初始化的 M × N M \times N M×N个维度为 C C C的Point Query,其中 M M M为Instance的数量, N N N为每个Instance上Point的数量。
该模块首先将属于同一个Instance的Point Query进行Concat,然后Concat后维度为 N × C N \times C N×C的Feature经过一个MLP将维度降到和BEV Feature相同的维度 C ′ C' C′,得到Line Feature,然后将Line Feature和BEV Feature进行逐Pixel的矩阵相乘得到维度为 H × W × 1 H \times W \times 1 H×W×1的Line-aware Mask。该Line-aware Mask主要是用来限制Point Query和BEV Feature进行Cross Attention的范围,通过这种方式就显示编码了点和线的从属关系
2.3 Pivot Dynamic Matching Module
在MapTR中,因为真值在每个Instance上的Point的数量都是相等的,因此我们设置固定数量的Point Query,对Point Query进行匹配时计算最小距离即可。但是在PivotNet中,真值的每个Instance上Pivot Point的数量都是不相等的,当我们设置固定数量的Point Query时就会面临如何将不同数量的Pivot Point匹配当固定数量的Point Query上进行监督。
例如我们将Point Query定义为 S ^ = { v ^ n } n = 1 N \hat{\mathcal{S}}=\left\{\hat{v}_n\right\}_{n=1}^N S^={v^n}n=1N,其中 N N N为每个Instance分配的Point Query的数量,真值定义为 S p = { v n } n = 1 T \mathcal{S}^p=\left\{v_n\right\}_{n=1}^T Sp={vn}n=1T