参考代码:MGMap
动机与出发点
地面元素的栅格化表示和向量化表示两者的优劣是分明的。栅格化描述更符合实际几何结构特征,但是缺少直接点输出特性;向量化描述直接输出元素点坐标,但是缺少对全局和局部细节的约束能力,导致“蚯蚓线”的情况。
之前的一些算法诸如MapVR、GeMap、HIMap、P-MapNet尝试从各种维度去解决向量化描述的缺点,但其实核心的一点便是在向量化描述下如何利用好栅格化描述的信息(栅格化描述在实际量产中是已被验证的),这样有了栅格化作为性能的baseline,再从向量化维度去提升性能上限。这篇文章结合栅格化描述从如下维度去提向量化描述的性能:
- 1)感受野:由于地面元素多是跨越大半BEV空间,需要有类似FPN这样的结构去增大感受野和融合不同尺度的特征
- 2)栅格化信息定义query与优化:使用实例分割的栅格化信息与BEV特征构造inst-query(做到区分实例和隐式编码栅格信息),再与可学习point-query构建hybrid-query,逐级迭代优化
- 3)points回归精细化处理:以迭代优化后的点作为锚点按照矩形宽度 d d d做RoiAlign截取特征,这个特征编码了语义分割的栅格化信息,从而做精细化单点优化
这篇文章在query构造阶段和point点refine阶段引入栅格化信息:
- 1)第一个阶段相当于每个inst对BEV特征做了cross-attn,attn-weight就是分割概率,以此来引入栅格化信息
- 2)第二个阶段将语义分割进行编码作为栅格化信息表达,以点对齐做RoIAlign实现点的精细化回归
引入栅格化信息之后跟baseline方法进行比较,见下图:
方法设计
这篇文章的整体pipeline见下图,主要划分为了PV2BEV、地面元素一阶段整体优化、地面元素点的二阶段细化三个过程
PV2BEV
这里使用bevformer去构建初始BEV特征,之后通过EML Neck(带channel-wise和spatial-wise的attention)去构建不同尺度的特征,用以满足不同目标感受野需求的不同。不同尺度的特征最后也会统一到一个尺度上去做融合(也就是enhanced BEV),后序inst-query初始化、point的位置细化都是基于这个特征做的。
PV和BEV处的多尺度与栅格化信息引入,对性能带来的影响:
地面元素一阶段整体优化
融合后的BEV特征会经过两个分支:得到语义分割和得到实例分割。语义分割分支经过编码叠加位置信息、融合后的BEV特征得到用于二阶段中点优化的特征
F
m
F_m
Fm。实例分割分支通过矩阵乘法与原本融合特征做融合(类似corss-attn)得到inst-query表达
Q
l
a
n
e
Q_{lane}
Qlane。整个过程见下图:
对于点的query是通过可学习的方式设置的
Q
p
o
i
n
t
s
Q_{points}
Qpoints,它与
Q
l
a
n
e
Q_{lane}
Qlane通过broadcast融合方式得到hybrid-query,之后就是与多尺度BEV特征做attention操作了,去逐层优化。query的设置对性能的影响见下表:
地面元素点的二阶段细化
在逐层优化之后会输出query-embedding和query-coords,deformable-attn是通过offset学习的方式去确定需要抓取的信息,这是稀疏且粗糙的。那么可以在query-coord上依据点的位置为中心抓取边长为
d
d
d的矩形区域,这些稠密的信息通过RoIAlign得到
5
∗
5
5*5
5∗5的patch,这样就可以得到刨除无关信息的key和val。这个过程可以看作是增强版本的deformable-attn,但是更具有针对性
按照矩形区域截取的过程引入了超参数
d
d
d,这个参数的选择对性能带来的影响:
实验结果
nuscenes val上的性能比较: