PivotNet:Vectorized Pivot Learning for End-to-end HD Map Construction

参考代码:BeMapNet。PS:代码暂未放出,关注该仓库动态

动机和主要贡献
在MapTR系列的算法中将单个车道线建模为固定数量的有序点集(对应下图Evenly-based),这样的方式对于普通道路场景具备一定适应性。但是却存在对复杂道路建模能力不足,对简单道路建模冗余的问题,针对这样的问题解决思路便是网络依据车道线具体情况预测关键点(对应下图Pivot-based),也就是像下图这样使用关键点描述车道线元素:
在这里插入图片描述
为了使得网络能够依据具体场景动态输出车道线关键点数量,文章做了以下几个方面的工作:

  • 1)对laneline的query做了修改,使用对每个关键点(point-query)采用学习的方式,这样可以使的点与点之间表达可以独立,这样更有利于这样动态点的表示
  • 2)将lane-query和bev下的车道线分割建立关联,使得网络对车道线拓扑结构感知更清晰,同时收敛速度变快
  • 3)对于关键点匹配提出一种代价最小化动态规划算法,加快匹配速度

方案流程与框图
在这里插入图片描述
从上图的框图可以看到算法分为如下几个部分:

  • 1)BEV query构建BEV特征
  • 2)按照点建模的方式构建车道线表达,并通过mlp获得车道线实例表征,之后通过矩阵乘法得到车道线分割结果,这样车道线具有了对位置和车道结构感知能力
  • 3)使用提出的动态匹配算法建立预测和真值之间的关联,实现车道线预测

车道数据预处理
在数据预处理中,需要对车道线中的关键点进行抽取,如下图所示:
在这里插入图片描述
对这样的问题可以采用距离阈值类的方法实现,如Douglas-Peuker。

车道线实例化表达
在初始的时候使用一堆点的方式构建车道线query,它的维度是 Q m , n ∈ R M ∗ N ∗ C Q_{m,n}\in R^{M*N*C} Qm,nRMNC,其中 M , N M,N M,N分别代表车道实例数和车道线线上最大点数。注意由于每条车道线中关键点的位置是不一致的,则使用share方式构建的point-query会存在一定歧义(也就是文中说的Hierarchical Query),这种share方式构建的index-dependent,而对于动态预测车道线关键点则需要index-independent。它们两者的对车道线的建模方式对比见下图:
在这里插入图片描述

自然在文章算法所需要的场景下这两种建模方式的性能比较:
在这里插入图片描述

query确定之后,其经过几层全联接得到车道线的表达 I m ∈ R C I_m\in R^C ImRC,再与BEV特征 F b ∈ R C ∗ H ∗ W F_b\in R^{C*H*W} FbRCHW做矩阵乘法得到分割结果 M m ∈ R H ∗ W \mathcal{M}_m\in R^{H*W} MmRHW,也就是下图表述的过程:
在这里插入图片描述
这里涉及到分割损失:
L L A = L b c e ( M ^ l i n e , M l i n e ) + L d i c e ( M ^ l i n e , M l i n e ) \mathcal{L}_{LA}=L_{bce}(\hat{M}_{line}, M_{line})+L_{dice}(\hat{M}_{line}, M_{line}) LLA=Lbce(M^line,Mline)+Ldice(M^line,Mline)

车道线回归
上述内容得到了车道线的实例表达,接下来就是预测得到车道线的回归值 S ^ = { v ^ n } n = 1 N \hat{S}=\{\hat{v}_n\}_{n=1}^N S^={ v^n}n=1N,而关键点的真值 S p = { v n } n = 1 T S^p=\{v_n\}_{n=1}^T Sp={ vn}n=1T。由于两者的数量是不一致的,需要在预测中寻找与关键点真值最匹配的一组点,也就是下图描述的这样:
在这里插入图片描述
自然是不能用暴力枚举的方式了,这里使用了动态规划寻找最小代价的方式,具体实现文章里已经给出了。那么对于监督这块可以具体划分为几个部分:

按照匹配的结果对关键点构建约束:
L p p = 1 T ∑ n = 1 T ∣ ∣ S ^ n p − S n p ∣ ∣ 1 L_{pp}=\frac{1}{T}\sum_{n=1}^T||\hat{S}^p_n-S^p_n||_1 Lpp=T1n=1T∣∣S^npSnp1
除开关键点之外的其它点则采用插值的方式构建约束,首先由关键点得到其它点:
C n , r = ( 1 − θ n , r ) S n p + θ n , r S n + 1 p C_{n,r}=(1-\theta_{n,r})S^p_n+\theta_{n,r}S^p_{n+1} Cn,r=(1θn,r)Snp+θn,rSn+1p
则预测的关键点和真实关键点之间差值的结果建立约束:
L c p = 1 N − T ∑ n = 1 T − 1 ∑ r = 1 R n ∣ ∣ C ^ n , r − C n , r ∣ ∣ 1 L_{cp}=\frac{1}{N-T}\sum_{n=1}^{T-1}\sum_{r=1}^{R_n}||\hat{C}_{n,r}-C_{n,r}||_1 Lcp=NT1n=1T1r=1Rn∣∣C^n,rCn,r1
对于每条车道线都会预测出 N N N个点,那么那些点才是关键点呢?这里使用BCE方式去约束:
L c l s = 1 N ∑ n = 1 N L b c e ( p n , f ( S ^ n ∈ S ^ p ) ) L_{cls}=\frac{1}{N}\sum_{n=1}^NL_{bce}(p_n,f(\hat{S}_n\in \hat{S}^p)) Lcls=N1n=1NLbce(pn,f(S^nS^p))
最后车道线回归部分损失就是几个的和:
L D V S = α 1 L p p + α 2 L c p + α 3 L c l s L_{DVS}=\alpha_1L_{pp}+\alpha_2L_{cp}+\alpha_3L_{cls} LDVS=α1Lpp+α2Lcp+α3Lcls

实验结果
与其它一些向量化车道线方法的对比:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m_buddy/article/details/134231753