--关注、星标、回复“智驾圈子”--
(资料图片)
↓↓查看:「智驾最前沿」智驾圈子资料目录↓↓
众所周知,由于离线高精地图High-Definition Map(HDMap)制作成本高昂,且难以实时更新,基于自车实时感知生成的在线局部地图已经逐渐成为替代解决方案或是冗余方案,因为离线地图精度较高且具备全局信息,在线地图虽然不具备全局信息但具有实时性,二者可以互为补充。
欢迎关注「智驾最前沿」微信视频号
博主在这个领域做了简要的调研,总结比较经典的方案主要有三个:清华赵行MARS Lab(和这个组杠上了)的HDMapNet, VectorMap,和华中科技大学与地平线合作的MapTR,觉得三个模型在框架和思路上也有内在联系和演进的过程,并且和BEV动态目标检测也有相通之处,在此做个简要的对比和分析,并加入自己的思考。
首先,传统在线局部地图生成方式大多基于多个透视视角的语义分割,通过IPM投影和拼接等方式转换为鸟瞰视角,再经过比较复杂的后处理得到最终需要的地图要素和拓扑结构,这里不做过多介绍。BEV范式出现后,可以先通过多种方法得到BEV feature,然后在BEV feature上进行后续操作,使整个过程简洁了很多。HDMapNet 是相对较早的BEV在线局部地图构建方案。
HDMapNet (2022.3)[1]
[1] HDMapNet: An Online HD Map Construction and Evaluation Framework
HDMapNet框架
HDMapNet延续了传统方法上基于语义分割的思路。首先使用VPN[2]方法生成BEV Feature,然后地图head分为三个分支,第一个给出在bev feature上做语义分割的结果,将关注的车道线,道路边线,路口等作出分割,这个比较好理解,但是只有分割结果肯定是不够的,我们知道在高精地图的表达形式中,车道线等地图要素是用实例(Instance)来表示的,具体在车道线上代表一段车道线,内部由线段上具有一定顺序的点来表示,实例之间也存在一定的拓扑关系,所以我们需要的是一个由实例构成的适量图。这里作者通过后两个分支和后处理来得到需要的结果。
[2] https://arxiv.org/abs/1906.03560
第二个分支给出实例嵌入(Instance embedding),论文里面介绍比较详细,我的理解是为BEV Feature的每个像素分配一个embedding,类似于NLP中的词向量,通过损失函数的设计,最终训练出属于同一实例相似度较高,不属于同一势力相似度较低的embedding,后续通过对embedding进行相似性度量,即可区分出不同的实例。参考上图对instance embedding的可视化。第三个分支会给出车道线上每个点的方向,这个方向是由相邻两个点的连线方向确定的,并且可以有两种可能性,模型都会给出,并且只有真正落在车道线中心的点才给出方向,这一点通过在训练阶段将不落在车道线中心的点的方向真值赋为0来实现。
有了语义分割,实例嵌入和方向,即可在后处理阶段建立三者的联系,最终给出矢量地图。可以看出这种方法是比较直观,容易理解的,但劣势也是显而易见的,计算量较大,耗时较长,且不够End-to-End,部署难度高,缺少了BEV范式的优美气质,但作为基线也是很难得了。
那能不能通过模型直接得到矢量地图而不需要后处理呢?(感觉各个方向的演进都是这个套路)赵行大佬最后给出了VectorMapNet。
VectorMapNet(2022)[3]
[3] VectorMapNet: End-to-end Vectorized HD Map Learning
VectorMapNet
VectorMapNet摒弃了通过语义分割得到地图的思路,而是使用目标检测的思路(不知道是不是第一个这样做的),将不规则的地图要素实例抽象成几个关键点(可以是bounding box,最大最小值,起点中点终点等等),这样就和目标检测的范式对齐了!是不是很惊艳。当然只有关键点肯定是不够的,论文中后续通过Polyline Generator,即生成的方式逐个得到最终需要的有序点集,不需要后处理,实现了端到端生成矢量地图。
地图要素的关键点
具体来讲,VectorMapNet主要分为三个阶段,第一阶段是通过多高度(−1m, 0m, 1m, 2m)的IPM方式对地图要素投影到BEV空间,这里应该是利用地图要素静态且稳定的特点,没有使用现在流行的基于学习的方式。第二阶段即地图要素检测阶段,使用了经典的DETR[4]和Deformable DETR[5]范式,得到地图要素的关键点,只是这里query的设计比较特殊。在动态目标检测中,我们一般只需要定义几百个地位相同的query,直接输入transformer就可以,但地图要素和动态目标有点不同,我们首先要给出一定数量(数量一般不会很多)的实例,假设最多m个,每个实例又包括一定数量的关键点,假设固定n个,最终需要得到m*n个点,但这些点不是相互独立的,而是有一个二级的继承关系。
如果我们设定每个query预测一个点,一共需要定义m*n个query, 如果直接把m*n个query输入transformer,结果肯定无法体现这种继承关系。文中给出一个比较巧妙的方法,即先定义m个实例query,假设维度为dim, 大小为m * dim, 再定义n个关键点query, 大小为n* dim,使用广播的方式让二者相加,即可得到m*n个同时拥有实例信息和关键点信息的query,依次输入transformer。由于属于同一个instance的query实际上代表一个整体,只能有一种类别,所以类别分支输入的是同一个instance的query的平均值,得到分类score。最终筛选出score高于阈值的多组query,即可得到我们需要的二级结果。
[4] End-to-End Object Detection with Transformers
[5] Deformable DETR: Deformable Transformers for End-to-End Object Detection
说到这里,熟悉DETR的同学肯定会想到,为什么要这么麻烦呢,我们只定义m个实例query,让每个query预测n个关键点不就可以吗,为什么要一个query预测一个关键点,定义两级的query呢,我的第一反应也是这个,但仔细想一下,地图要素和动态目标的区别还是很明显的。
首先一帧图片中的地图元素实例不可能很多的,一般只有几个或更多一点,我们没有必要定义过多的query,多了反而可能影响效果,这样限制了query的数量。
其次,每个实例由于长度比较长,且形状不规则,内部信息其实是比较多的,这样每个关键点相对独立,不像动态目标形状比较规则,每个关键点具有强相关性,只需要定义多个query即可覆盖多种目标的信息。所以如果地图元素检测只定义比较少的m个实例query不是不可以,效果肯定会差一点,作者应该也有这样的考虑。而且如果每个实例不是对应少量关键点而是多个点,两种方法的区别会更加明显。
第三阶段是Polyline生成阶段,关于生成(Generator)的领域,也就是现在大火的GPT-4的基础技术博主了解不是很多,简单地说就是通过自回归的方式,从第二阶段的关键点生成完整的地图要素有序点集。这里点集中点的数量是不固定的,通过生成End of Sequence token (EOS)标志位代表结束,也是类似于NLP的技术,可见目前NLP和cv的结合越来越紧密,因为内核都用了同样的transformer大杀器。数量不固定是生成方法的优势,可以表征不同长度的地图要素,但它的劣势就是生成过程是序列性的,只能做到多个instance的并行,instance内部无法并行,降低了效率。还有一个隐藏的劣势就是有序性,其实地图要素的点虽然是有序的,但起点不是唯一的,例如车道线可以有两种起点,闭合的元素如路口,任意一个点都可以作为起点,而生成的方式只能有唯一的起点,相当于对此做了不必要且不合理的约束,对结果肯定有一定的影响。
有没有更加简洁而合理的方案呢?那就是下面的MapTR了。
MapTR(2023.1)[6]
[6] MapTR: Structured Modeling and Learning for Online Vectorized HD Map ConstructionMap
TRMapTR
可以说和VectorMapNet联系相当紧密了,从大的框架来看,本质上其实就是只使用了VectorMapNet的地图要素检测模块,而丢弃了后面的生成模块。也就是说,MapTR没有先生成地图要素关键点,而是直接使用基于DETR和Deformable DETR的目标检测方式生成最终的地图要素点,但是是固定长度的,文中是20个点。query的设计方式与VectorMapNet完全一致。根据上文的分析,如果只设计m个实例query,那一个query需要预测20个毫无规则的点,显然信息量是不够的,所以二级query的方式更加显得有必要。
当然MapTR相比于VectorMapNet还有其他的改进。第一,它是permutation-equivalent,类似于平移不变性。这是相对于VectorMapNet用生成的方式只能得到唯一的顺序,MapTR去掉了这个不合理的约束。具体方案是将地图要素分为两类处理,一类是Polyline,即开放的要素,一类是Polygon,即封闭的要素,二者通过起点终点的距离来区分。对于Polyline,支持两种方向,因为起点有两种可能,对于Polygon,支持2k种方向(k代表点集的大小),因为起点有k种可能。将Polyline和Polygon的gt都设计成2k大小(Polyline进行padding),使预测值与每一种gt都进行匹配,取误差最小的一种作为匹配结果,这就去掉了顺序唯一的约束。实验表明permutation-equivalent机制的确有较大提升。
MapTR两类地图元素
permutation-equivalent提升效果
permutation-equivalent图示
第二是训练阶段在匈牙利匹配过程中也分为两级,先进行instance级的匹配,匹配成功的再进行point级的匹配,一是更符合二级query的设定,第二也是为了保证一定的顺序(2种和2k种),并且做到permutation-equivalent。而VectorMapNet由于只检测关键点,不涉及顺序,所以只要一次匹配就可以。
另外MapTR使用了GKT[7]作为多视角图像得到BEV feature的方式,文中说效率高且容易部署。
[7] Efficient and Robust 2D-to-BEV Representation Learning via Geometry-guided Kernel Transformer
下面是三种经典方案的效果对比:
结果对比
可见MapTR无论精度还是效率都比前两种有显著的提升,且整个框架简洁优美端到端,可以说是目前BEV在线局部地图领域非常优秀的方案了.这个领域博主其实也是刚刚接触,没想到绕来绕去又绕回DETR了,有个感慨是一切皆可BEV,一切皆可DETR,还有什么是一个优秀的query得不到的呢?大家有其他优秀见解欢迎留言讨论。最后上一张MapTR的效果图。
mapTR效果
转载自自动驾驶之心,文中观点仅供分享交流,不代表本公众号立场,如涉及版权等问题,请您告知,我们将及时处理。
-- END --
关键词:
-
BEV在线实时局部地图构建的经典方案盘点
--关注、星标、回复“智驾圈子”--↓↓查看:「智驾最前沿」智驾圈子资
-
小花仙蓝色冰雪花怎么获得 小花仙蓝色冰雪花
1、1。2、妙宝4级异色之蓝2。3、以前存下来的蓝色冰雪花3。4、戴微微精
-
资信证明 银行资信证明是什么
本文目录导航:1、银行资信证明是什么2、资信证明3、什么是资信证明资
-
丰城市属于省直管吗(丰城市属于哪个市)
您好,现在汉格来为大家解答以上的问题。丰城市属于省直管吗,丰城市属
-
蒋辛屯中心小学(关于蒋辛屯中心小学简述)
,你们好,今天0471房产来聊聊一篇辛屯中心小学,辛屯中心小学简述的文
-
倒挂金钩丨做客梅州,再次败北!“客场虫”的帽子,青岛海牛难摘掉?
半岛全媒体记者黄金龙客场虫碰上主场龙,青岛海牛没带来惊喜。恶战一场
-
化身勤奋小子!登贝莱今日已经完成作为巴黎球员的第一次训练
化身勤奋小子!登贝莱今日已经完成作为巴黎球员的第一次训练,巴黎,转会
-
低价排序法怎么计算(低价优先法计算公式)
大家好,小乐来为大家解答以上的问题。低价排序法怎么计算,低价优先法
-
办理公积金还房款应该提供哪些资料
一、办理公积金还房款应该提供哪些资料1 本人有效身份证件;2 单位提取
-
多人吐槽长沙地铁不支持微信支付宝直接购票 客服称对此不太清楚
暑假迎来旅游高峰期,长沙也是游客最喜欢的目的地之一。近日,有游客在
-
信用卡透支消费利息太多如何办理延期还款
1、逾期后,可与对方协商给出更多的宽限时间。一般是通过延期、分期支
-
薏苡根(薏苡根的中药作用)
每次到桂林,我总是吃得很撑。原因有很多:首先是自己没出息,很贪吃。
-
海河“23·7”洪水判定为流域性特大洪水
人民网北京8月12日电(欧阳易佳)据水利部消息,根据最新洪水调查和实
-
已 10 年未更新,Linux 6.6 内核将彻底清理无线 USB 和 UWB 代码
IT之家8月12日消息,根据国外科技媒体phoronix报道,在即将到来的Linux
-
4消息!小丁试训失败,汾酒回归山西,晓宇受伤,陈盈骏恢复训练
4消息!小丁试训失败,汾酒回归山西,晓宇受伤,陈盈骏恢复训练,汾酒,
-
健康问题本源:岐伯智慧解析皮肤之变与健康关系
中医,作为中国传统医学的精髓,传承着千百年的诊疗智慧。在古代帝王与
-
形容别墅的优美的诗句(形容别墅的词语有哪些)
相信大家对形容别墅的优美的诗句,形容别墅的词语有哪些的问题都很疑惑
-
斗罗:疑似王言的美女老师亮出武魂,有人说是九心海棠,明显不是
在斗罗大陆小说原著中,王言是一名男性,与其说他是一名老师,还不如说
-
应急管理部调度指导陕西西安长安区山洪泥石流救援处置 派出工作组赶赴现场
8月11日8时至18时,陕西省西安市长安区局地出现大暴雨。18时许,长安区
-
变速箱油换一次多少钱(起亚k3多久换一次变速箱油?)
起亚K3(参数|询价)一般每两年或者4万公里更换一次变速箱油,起亚k3是东