点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者丨黄浴
来源丨计算机视觉深度学习和自动驾驶
arXiv上传于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, )。
实验结果如下:
本文仅做学术分享,如有侵权,请联系删文。
3D视觉工坊精品课程官网:
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的点云处理入门与实战教程
重磅!3DCVer-学术论文写作投稿交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉+ 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~