点击上方“3D视觉车间,选择星标
第一时间送达干货
作者丨黄浴
来源丨计算机视觉深度学习和自动驾驶
arXiv2022年6月17日上传的论文VectorMapNet: End-to-end Vectorized HD Map Learning“,作者是HDMap Net清华大学团队和MIT。
自动驾驶系统需要对周围环境有很好的了解,包括移动障碍物和静态高清(HD)语义地图。语义地图问题通过离线手动注释解决,存在严重的可扩展性问题。最近基于学习的方法(如HDMapNet)产生密集的光栅化分割预测,该预测不包括单个地图元素的实例信息,并且需要进行启发式后处理,这涉及许多手动设计的组件,以获得矢量化地图。
为此,引入端到端矢量高清地图学习流水线,称为VectorMapNet。VectorMapNet在鸟瞰图中获取车载传感器观测数据(BEV)预测一组稀疏的多段线(polylines)原素,以模拟高清地图的几何结构。基于这条装配线,地图元素之间的空间关系可以显式建模,对下游自主驾驶任务产生友好的矢量地图,无需后处理。
在实验中,VectorMapNet在nuScenes数据集上实现了强大的高清地图学习性能,mAP超过之前最好的方法14.2。定性上,VectorMapNet能够生成全面的地图,捕获道路几何中更细粒度的细节。
自动驾驶系统需要了解道路上的地图元素,包括车道、人行横道和交通标志,以便在环境中导航和提前规划。这些地图元素通常由现有装配线中的高清标记(HD)提供语义地图。
最新的方法是将高清语义地图学习视为鸟瞰图(BEV)其中一个语义分割问题将地图元素光栅转化为像素,并为每个像素指定类别标签。这种设置使得完全卷积网络的使用简单,结果良好。
然而,光栅地图并不是自动驾驶的理想地图,有三个原因。首先,光栅地图缺乏实例信息,这是区分同类标签但语义不同的地图元素所必需的,如左车道标记和右车道标记。其次,地图元素需要一个紧凑的表示(如矢量表示),以确保下游任务,如预测和规划。然而,在预测的格栅地图中很难强制实现像素之间的一致性,例如,附近的车道像素可能具有矛盾的语义或几何结构。第三,光栅地图与大多数自动驾驶系统不兼容,因为这些系统在高清地图上用实例级矢量表示。之前为了预测矢量化表示,HDMapNet生成语义、实例和方向图,并使用手动设计的后处理算法矢量化这三张地图。
不过,HDMapNet它仍然依赖于网格化的地图预测,其启发式后处理步骤使装配线复杂,并限制了模型的可扩展性和性能。VectorMapNet将地图元素表示为一组多段线,可以很容易地连接到下游任务(如运动预测)。因此,地图学习问题归因于传感器观测和预测一组稀疏的多段线。
如图所示,VectorMapNet采用最先进的集合预测和序列生成方法,分三个步骤生成地图元素:首先,将不同模式(如摄像头图像和激光雷达点云)生成的特征聚集在公共场合BEV在特征空间中;然后,基于地图元素的位置,可以学习查询和检测BEV特征构建粗略的地图布局;最后,给出粗略的布局,生成每个地图元素的多段线。
使用多段表示地图元素有三个主要优点:(1)HD地图通常由不同(如点、线、曲线和多边形)组成。多段线是一种能有效表示这些几何图形的灵活原素;(2) 多段线顶点的顺序是编码地图元素方向信息的自然方式,对车辆规划至关重要。(3) 多段表示已广泛应用于下游自动驾驶模块,如运动预测。
为了解决地图问题,传感器数据需要从传感器视图映射到标准化BEV表示。下一个任务是基于BEV多段线建模的特征。然而,地图元素的结构模式和位置是广泛的,共同学习可能是一个挑战。
因此,建模任务分为两部分:(1)场景级(scene-level )元素检测任务通过预测元素关键点A={ai } 所有地图元素的定位和分类L={li} ;(2) 目标级(object-level)序列生成任务是每个检测到的地图元素(ai、li)产生多段线的顶点序列。
相应地,VectorMapNet用三个模块建模这三个任务,如图所示:首先使用BEV特征提取器将传感器观测提升到BEV空间;然后BEV特征传递给地图元素检测器,获取元素关键点A和类标签L;最后,多段生成器生成多段序列,构建基于元素关键点、类标签和BEV高清地图的特点。
共享图像数据CNN主干在摄像头空间中获取每个摄像头的图像特征,然后使用它IPM将这些特征转化为技术BEV空间。由于相机图像中缺乏深度信息,采用了一种常见的方法,即假设大部分地面是平的,并使用简单的单应性(homography)将图像转换为BEV。如果不知道地平面的确切高度,这种单应性就不是准确的转换。为了缓解这个问题,将图像特征转换为四个不同高度BEV平面(?1m、0m、1m、2m)。摄像头BEV特征是这些特征图的串联。
使用具有动态体素化的激光雷达数据pointpillar变型,将3D空间分为多个柱,柱状点云用于学习柱状特征图。BEV融合,BEV特征是通过将图像BEV特点及激光雷达BEV特征级联,然后处理两层卷积网络的级联结果。
之后VectorMapNet的模块是transformer的变体,将BEV特征展平为序列。然后将固定位置编码添加到序列中,编码BEV空间信息,扁平化BEV特征与地图元素相连。
投影车载传感器数据BEV在特征之后,地图元素检测器的目标是从BEV基于每个地图元素的关键点的特征推断,在这里使用一个transformer的集合预测(set prediction)实现这一目标的探测器。检测器通过预测地图元素的关键点A和类别标签L来表示地图元素的位置和类别。检测器注意模块建模这些元素之间的几何关系。另外,使用检测器bipartite matching训练损失VectorMapNet避免了NMS等待后处理步骤。
与DETR类似地,解码器利用多头自注和交叉注意机制转换扁平元素query。检测器的交叉注意模块BEV作为特征序列key和value。此外,解码器的每个解码器都使用可变形注意模块作为交叉注意模块query在BEV特征中有一个2D在预测的关键点和位置BEV在空间之间建立一对一的对应关系,加快训练收敛。
解码器处理的元素通过两个分支通过预测头处理query回归分支(PHreg)和分类分支(PHcls)。通过共享多层传感器,回归分支分享每个地图元素(MLP)预测每个关键点的坐标从关键点嵌入。分类分支通过线性投影层将每个地图元素的这些关键点嵌入串联,从而预测每个地图元素的类标签。
以紧凑的方式表示地图元素的位置和轮廓。由于多段线没有直接的关键点设计,作者提出了三种简单的表达方法,如图所示:框架是包围多段线的最小框架,其关键点定义为框架的右上下点;Start-Middle-End(SME),由多段线的起点、中点和终点组成;极值点,即多段线最左、最右、最顶、最底的点。
地图元素检测器中的每个关键点都有两个可学习的嵌入,以注意模块识别关键点之间的差异。第一个嵌入是嵌入关键点位置,指示关键点在关键点中属于哪个位置。第二个嵌入代码关键点所属的地图元素。关键点嵌入是这两个嵌入的组合。
多段生成器的目标是生成地图元素的详细几何。具体来说,根据初始布局(即元素关键点和类标签)和BEV在每条多段线上建模分布特征,VectorMapNet利用这种分布推断多段线的顶点。对于每条多段线,通过连接多段线的顶点坐标,可以获得扁平的多段线序列。在每个序列的末尾添加额外的序列结束标记EOS。
将多段线的联合分布分解为一系列条件顶点坐标分布的乘积:
用自回归(AR)该网络建模了该分布,该网络是下一个顶点坐标输出的每一步预测分布的参数。该预测分布定义了顶点坐标值和序列结束标记EOS上面。训练多段生成器,使观测到的多段对数概率相对于模型参数θ和BEV特征最大。
用transformer解码器建模顶点的位置。生成器使用多段关键点的坐标值和其他标签transformer初始输入解码器。transformer解码器的query将BEV特征与交叉注意模块集成。然后通过线性投影层将这些query迭代解码为顶点坐标值。改进transformer变形,在残差路径内规范层(LN),提高训练效率。
多段线的顶点采用离散分布建模,具有在地图上表示任何顶点位置分布的优点。例如,类分布(categorical distribution)各种形状分布,如多模态、倾斜、尖峰或长尾分布,都可以很容易地表达出来。因此,将多段线顶点的坐标值量化为离散令牌(tokens),并用类分布对每个令牌进行建模。
具体来说,地图空间量化为多个bin,合并落入同一bin的顶点值。
遵循PolyGen,每个令牌的属性用三个学习的嵌入来表示:坐标嵌入(Coordinate embedding),指示牌代表x坐标或y坐标;位置嵌入( Position embedding),表示该令牌属于哪个顶点;嵌入值(Value embedding),表示令牌的量化坐标值。
实验的基准方法有两种:HDMapNet和STSU(“Structured bird’s-eye-view traffic scene understanding from onboard images“. ICCV, 2021)。
实验结果如下:
本文仅进行学术分享。如有侵权行为,请联系删除。
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进4.国内首个面向工业级实战的点云处理课程5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
16.基于Open3D的点云处理入门与实战教程
扫码添加小助手微信,可
一定要备注:
▲长按加微信群或投稿
▲长按关注公众号
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题