#MapDistill
速度精度双起飞,让End2End更丝滑
在线高精(HD)地图构建是自动驾驶领域的一项重要且具有挑战性的任务。最近,人们对不依赖于激光雷达等其他传感器的基于环视相机的低成本方法越来越感兴趣。然而只使用视觉传感器的方法缺乏明确的深度信息,需要更大的主干网络来实现令人满意的性能。为了解决这个问题,我们首次采用知识蒸馏(Knowledge Distillation, KD)思想进行高效的高精地图构建,引入了一种新的基于KD的在线矢量高精地图构建方法MapDistill。MapDistill将知识从高准确性的Camera-LiDAR融合模型转移到轻量级的仅依赖相机的模型。具体而言,我们采用师生架构,即Camera-LiDAR融合模型作为教师,轻量的只基于相机的模型作为学生,并设计了双BEV转换模块,以促进跨模态知识对齐。此外,我们还提出了一个适用于在线高精地图构建任务的全面蒸馏方案,包括跨模态关系蒸馏、双层特征蒸馏和地图任务头蒸馏。这种方法一定程度上解决了模态间知识转移的困难,使学生模型能够学习更好的用于高精地图构建的特征表示。我们在目前最具有挑战性的nuScenes数据集上的实验结果证明了MapDistill的有效性,超越了基线方法7.7 mAP或实现4.5倍的加速。
项目链接:https://github.com/Ricky-Developer/MapDistill
领域背景介绍
在线高精地图提供了丰富、精确的驾驶场景静态环境信息,是自动驾驶系统规划与导航模块的基础。最近,基于多视角相机的在线高精地图构建由于BEV感知技术的重大进展而受到越来越多的关注。相较于只基于激光雷达的方法和基于激光雷达与相机融合的方法,只基于多视角相机的方法具有更低的部署成本。但由于缺乏深度信息,目前的基于纯视觉的方案常常采用参数更多的骨干网络进行有效的特征提取以取得较好的性能。因此,在实际部署中权衡基于摄像机的模型的性能和效率是至关重要的。
知识蒸馏(Knowledge Distillation, KD)作为训练高效而准确的模型最实用的技术之一,在相关领域受到了极大的关注。基于知识蒸馏的方法通常将知识从训练有素的大模型(教师)转移到小模型(学生)。这类方法在图像分类、二维目标检测、语义分割和三维目标检测等许多领域取得了显著进展。以前的方法大多遵循需学生网络逻辑与教师网络逻辑相匹配的teacher-student范式。最近,基于BEV的知识蒸馏方法推动了3D目标检测任务的发展。这类方法统一了BEV空间中的图像和点云特征,并在师生范式中自适应地跨非同质表示传递知识。此前的工作使用强激光雷达教师模型帮助相机学生模型进行训练,如BEVDistill、UVTR、BEVLGKD、TiG-BEV和DistillBEV。最近,UniDistill提出了一种用于3D目标检测的通用跨模态知识蒸馏框架。
与这些方法相比,基于BEV的在线高精地图构建知识蒸馏方法在两个关键方面有所不同:首先,检测头(DetHead)对目标进行分类和定位输出,而在在线矢量高精地图构建模型(如MapTR)中地图头(MapHead)往往输出的是分类和点回归结果。其次,现有的基于BEV的3D目标检测知识蒸馏方法通常侧重于对准前景目标的特征,以减轻背景环境的不利影响,这显然不适合高精地图的构建。因此,将基于BEV的3D目标检测知识蒸馏方法直接应用于的高精地图构建中,由于两者任务的内在差异性,无法获得满意的结果(实验结果见表1)。据我们所知,基于BEV的用于在线高精地图构建的知识蒸馏方法仍处于探索阶段。
为了填补这一空白,我们提出了一种新的基于知识蒸馏的方法MapDistill,将知识从高性能的教师模型转移到高效的学生模型。首先,我们采用师生架构,即相机-激光雷达融合模型作为教师,轻量化的只基于相机传感器的模型作为学生,并设计了双BEV转换模块,以促进跨模态知识升华,同时保持成本效益的只基于相机传感器的建图方案部署。在此基础上,我们提出了一种包含跨模态关系蒸馏、双层特征蒸馏和地图头部蒸馏的综合蒸馏方案,以减轻模态之间的知识转移挑战,并帮助学生模型学习改进的高精地图构建特征表示。具体来说,我们首先为学生模型引入了跨模态关系蒸馏损失,以便从融合教师模型中更好地学习跨模态表示。其次,为了更好地实现语义知识转移,我们在统一的BEV空间中对低级和高级特征表示都采用了两级特征蒸馏损失。最后,我们特别引入了为高精地图构建任务量身定制的地图头蒸馏损失,包括分类损失和点对点损失,它可以使学生的最终预测与教师的预测非常相似。在具有挑战性的nuScenes数据集上的大量实验证明了MapDistill的有效性,超越了现有竞争对手超过7.7 mAP或4.5倍的加速,如图1所示。
图1:nuScenes数据集上不同方法的比较。我们在单个NVIDIA RTX 3090 GPU上对推理速度进行基准测试。MapDistill可以在速度(FPS)和精度(mAP)之间实现更好的平衡。
本文的贡献主要体现在三个方面:
- 我们提出了一种用于在线高精地图构建任务的有效知识蒸馏模型架构,包括相机-激光雷达融合教师模型,带有双BEV转换模块的轻量级相机学生模型,该模块促进了不同模式内部、之间的知识转移,同时具备低成本、易部署的特征。
- 我们提出了一种同时支持跨模态关系蒸馏、两级特征蒸馏和地图头蒸馏的综合蒸馏方案。通过减轻模态之间的知识转移挑战,该方法可以帮助学生模型更好地学习高精地图构建的特征表示。
- MapDistill的性能优于最先进的(SOTA)方法,可以作为基于知识蒸馏的高精地图构建研究的强大基线。
MapDistill
在本节中,我们将详细描述我们提出的MapDistill。我们首先在图2中给出了整个框架的概述图示,并在2.1节中阐明了教师模型和学生模型的模型设计。然后,我们在第2.2节详细阐述MapDistill的细节,如跨模态关系蒸馏、两级特征蒸馏和地图头蒸馏。
图2:MapDistill由一个基于多模态融合的教师模型(上)和一个基于轻量级相机传感器的学生模型(下)组成。此外,为了使教师模型能够将知识传递给学生,我们采用了三种蒸馏损失以指导学生模型产生相似的特征和预测,即跨模态关系蒸馏、两级特征蒸馏和地图头蒸馏。特别说明,推理只使用学生模型进行。
2.1 模型整体架构
融合模型(教师):为了将Camera-LiDAR融合教师模型的知识转移到学生模型,我们首先基于最先进的MapTR模型建立了基于融合的高精地图构建基线。如图二上半部分所示,融合的MapTR模型有两个分支。对于相机分支,首先使用Resnet50提取多视图图像特征。接下来,使用GKT作为2D-to-BEV转换模块,将多视图特征转换为BEV空间。生成的摄像机BEV特征可表示,其中H、W、C分别表示BEV特征的高度、宽度和通道数,上标T为“teacher”的缩写。激光雷达分支采用SECOND进行点云体素化和特征编码,采用Bevfusion中的展平操作将点云特征投影到BEV空间,表示为。此后,MapTR将和聚合,并使用全卷积网络进行处理,获取融合鸟瞰特征。此后,MapTR使用以融合BEV特征作为输入的地图编码器产生高维BEV特征。
然后,教师地图头(MapHead)使用分类和点分支来生成地图元素类别和点位置的最终预测:
基于相机传感器的模型(学生):为了提升实际部署的实时推理速度,我们采用MapTR的相机分支作为学生模型的基础。特别的,我们使用Resnet18作为主干来提取多视图特征,这可以使网络轻量级且易于部署。在MapTR的基础上,为了模拟教师模型的多模态融合管道,我们提出了一个双流 BEV转换模块,将多视图特征转换成两个不同的BEV子空间。具体的来说,我们首先使用GKT生成第一个子空间特征,其中上标S表示“student”的缩写。然后我们使用LSS生成另一个子空间的鸟瞰特征。此后,我们使用全卷积网络融合上述两个子空间鸟瞰特征,获得融合BEV特征。
2.2 MapDistill的细节
跨模态关系蒸馏:跨模态关系蒸馏的核心思想是让学生模型在训练过程中模仿教师模型的跨模态注意力。更具体地说,对于教师模型,我们调整相机BEV特征和激光雷达BEV特征转换为2D patches序列,表示为。之后,我们计算来自教师分支的跨模态注意力,包含C2L注意和L2C注意力,如下所示:
对于学生分支,我们使用相同的策略:
此后,我们提出了跨模态关系蒸馏,采用KL散度损失帮助对齐学生分支与教师分支的跨模态注意力。
两级特征蒸馏:为了方便学生模型从教师模型中吸收丰富的语义/几何知识,我们利用融合的BEV特征进行特征级蒸馏。具体来说,我们通过MSE损失,让老师分支的low-level融合BEV特征监督学生分支对应的low-level BEV特征:
相似地,我们使用MSE损失帮助对齐由地图编码器生成的和:
我们使用两级特征蒸馏进行统一表示:
地图任务头蒸馏:为了使学生的最终预测接近老师的预测,我们进一步提出了地图任务头蒸馏。具体来说,我们使用教师模型生成的预测作为伪标签,通过地图任务头损失来监督学生模型。地图任务头损失由两部分表示,其中分类损失函数用于地图元素分类,基于曼哈顿距离的点对点损失用于点位置的回归:
实验与SOTA方法的比较
我们在nuScenes数据集进行了大量实验。我们将我们的方法与两类最先进的基线进行了比较,即基于摄像机的高精地图构建方法,以及最初被设计用于实现基于BEV的3D目标检测的知识蒸馏方法。对于基于知识蒸馏的方法,我们实现了三种基于bev的三维目标检测方法,并针对高精地图构建任务进行了修改,分别是BEV-LGKD、BEVDistill和UnDistill。为了公平起见,我们使用与我们的方法相同的教师和学生模型。实验结果如表1所示。
消融实验:
三项知识蒸馏损失函数的影响:如表2所示,在模型变量(a)、(b)、(c)中,我们单独使用不同的蒸馏损失对学生分支进行训练。实验结果表明,与基线方法相比,三项损失函数均对模型表现出提升。此外,模型变量(d)、(e)、(f)证明了不同蒸馏损失项的结果是相互补充的。最终,将所有的蒸馏损失融合在一起,我们得到了完整的MapDistill结果,实现了53.6mAP的先进性能。
不同高精地图构建方法的消融研究:如表5(a)所示,为了探究MapDistill与不同高精地图构建方法的兼容性,我们综合对比了两种流行的方法,结果如表5a所示。其中,Teacher model-1和Teacher model-2分别是使用SwinTransformer-T的MapTR变体模型和最先进的MapTRv2模型。注意,两个学生模型都使用Resnet 18作为主干来提取多视图特征。实验结果表明,效果更好的教师模型将教出更好的学生模型。由于已完成预训练的教师模型已经获得了构建高精地图的宝贵知识,学生模型可以通过知识蒸馏技术(例如所提出的MapDistill)有效地利用这些知识,从而增强其执行相同任务的能力。此外,结果表明我们的方法对不同的教师模型都是有效的。
各种学生模型的消融研究:如表5(b)所示,为了探究MapDistill在不同学生模型下的泛化能力,我们综合考察了两种流行的骨干网络作为学生模型的骨干。其中Student model- i和Student model- ii是指学生模型分别采用Resnet50和SwinTransformer-T作为主干提取多视图特征。这里我们使用MapTR作为Teacher,即表1中的R50&Sec融合模型作为教师模型。实验结果表明,我们的方法始终能取得较好的结果,证明了方法的有效性和泛化能力。
可视化结果
如图4所示,我们比较了来自不同模型的预测,即基于相机-激光雷达的教师模型,没有MapDistill的基于摄像机的学生模型(基线方法),以及带有MapDistill的基于摄像机的学生模型。各模型的mAP值分别为62.5、45.9、53.6,如表1所示。我们观察到基线模型的预测有很大的不准确性。然而,采用MapDistill方法部分纠正了这些错误,提高了预测精度。
图4:nuScenes val 数据集的可视化结果。(a) 输入的6个视角图像。(b)GT (c)基于摄像头-激光雷达的教师模型的结果。(d)没有MapDistill的基于相机的学生模型的结果(基线)。(e)使用MapDistill的基于相机的学生模型的结果。
结论
在本文中,我们提出了一种名为MapDistill的新方法,通过相机-激光雷达融合模型蒸馏来提高只基于相机的在线高精地图构建效率,产生一种经济高效且准确的解决方案。MapDistill是建立在一个相机-激光雷达融合的教师模型,一个轻量级的只依赖于相机的学生模型,和一个专门设计的双流BEV转换模块。此外,我们还提出了一种包含跨模态关系蒸馏、两级特征蒸馏和地图任务头蒸馏的综合蒸馏方案,促进了不同模态内部和不同模态之间的知识转移,帮助学生模型获得更好的性能。大量的实验和分析验证了我们的MapDistill的设计选择和有效性。
局限性与社会影响:使用知识蒸馏策略,学生模式可以继承教师模式的弱点。更具体地说,如果教师模型是有偏见的,或者对不利的天气条件和/或长尾情景没有鲁棒性,那么学生模型可能表现得类似。MapDistill具有成本效益,在自动驾驶等实际应用中显示出巨大的潜力。
#简单总结SLAM中的各种地图
自己搞了这么多年SLAM,使用的主要还是点云地图。虽然知道种种地图表征,但一直没有梳理过。最近集中时间学习了一下各种地图,在这里进行整理与分享。能力有限,难免有不恰之处,请批评指正。
1、地图的不同分类方式
地图有多种不同的分类方式,网上有不少帖子介绍各种各样的地图,但并没有非常完整的总结地图应该怎么分类。论文[1]中将地图分成以下几种:拓扑地图、度量地图、度量-语义地图和混合地图。我觉得按照这种方式进行归类相对比较科学。
1.1 拓扑地图
拓扑地图(Topological Map)使用节点和边来表示环境,其中节点表示重要位置(如拐角、门口),边表示这些位置之间的可达路径。拓扑地图注重表示环境的连接关系,而不是具体的几何细节。这种地图表示方法适用于大型、复杂环境中的高效路径规划和导航。个人简单理解为,是一种表示拓扑关系、不存在准确距离信息的地图,例如:我家地图是,客厅在中间,周围连着卧室、书房、厨房、卫生间,书房又连着阳台。
1.2 度量地图/尺度地图/几何地图
度量地图(Metric Map)或几何地图(Geometric Map)是SLAM种较为常用的一种表示方法,常见的点云(PointCloud)、八叉树地图(OctoMap)、栅格地图(Grid Map)等都属于度量地图,下一节会展开介绍。个人简单的理解为,能够从这个地图中获取具体的尺度信息,例如某个点距离某个点多远、XXX障碍物面积有多大。
根据地图的稠密程度,度量地图还可进一步分为:稀疏地图、稠密地图。稀疏地图例如视觉SLAM建立的特征点地图,是稀疏的,一般多用于自身定位而难以直接导航;而RGBD或LiDAR可以建立稠密地图。
根据地图是连续的还是离散的,还可进一步分为:离散地图、连续地图。栅格地图、体素地图(Voxel Map)就是典型的离散地图,把空间进行了划分,然后离散化表达;连续地图是采用高斯过程或者NeRF方式建立的地图。
离散地图(左)与连续地图(右)
1.3 语义地图
语义地图(Semantic Map)是包含了语义信息的地图,语义信息可以是物体的种类、姿态和形状等描述。例如,无人驾驶需要知道地图中那些是车道、哪些是障碍。需要注意的是,只要包含于语义信息就可以算是语义地图,尺度地图、拓扑地图也可以是语义地图。
带语义信息的点云地图(左)和带语义信息的拓扑地图(右)
1.4 混合地图与多层级地图
混合地图(Hybrid Map)是一种结合多种地图表示的地图,例如在大范围导航时,我们可能既需要拓扑信息(从客厅到卧室),又需要尺度信息(走多少米),这就需要混合地图。
分层级地图(Hierarchy Map)顾名思义,是多层次的地图表示,通过将环境信息组织成不同层次以提高数据管理和处理的效率。例如无人驾驶时,顶层地图表示全局的道路网络,底层表示局部的道路详细结构,可以理解成“分辨率”从粗到细的过程,以适应不同的任务需求。
2、尺度地图细分
2.1 特征地图
特征地图(Feature Map)是仅保留特征的地图,常见于视觉SLAM。一些场景,例如水下的定位放置一些标志物,这样建立的地图就是特征点地图。视觉SLAM一般提取特征点匹配后建立特征点地图。除了点特征意外,线特征和面特征也可以建立地图,但也属于是特征地图的一种。
左:水下声呐建立的声呐目标特征点地图;中:vSLAM建立的特征点地图;右:线+面特征地图
2.2 点云地图
点云地图(Point Cloud Map)是利用点云形式表示地图,常见的激光雷达SLAM建立的都是点云地图。
2.3 栅格地图
栅格地图(Grid Map)将空间划分为均匀的网格,每个网格存储一个值,表征地图的属性。一种常见的方式,用三种状态:占用、空闲、未知,表示某个栅格是否被占用,这种表达方式称作“占用栅格地图”(Occupancy Grid Map),机器人导航常用栅格地图,在“空闲”栅格中规划运动轨迹。一般来说,栅格地图指的是二维平面地图。
2.4 体素地图
体素地图(Voxel Map)可以理解为三维的栅格地图,当然也包括占用体素地图(Occupancy Grid Map)。如果是无人机这类的导航,一般需要用到3D的栅格地图。和点云地图相比,体素地图的“分辨率”更低,对点云地图进行了离散化。
室内场景的占用栅格地图(左)和用于无人机导航的占用栅格地图(右)
2.5 高程地图
高程地图(Elevation Map)也称2.5D地图。如果是平坦地面、二维场景,用栅格地图就可以;如果是无人机,需要用到三维场景体素地图;但如果是无人车在非平坦路面运行、或者是四足/轮式机器人在野外的行进,需要对地形进行建模,常用的方式就是高程地图,例如经典的elevation mapping就是建立的高程地图[2]。在栅格地图的基础上增加了一个维度即高度。
2.6 神经辐射场地图
神经辐射场地图(Neural Radiance Fields, NeRF)是一种新兴的三维场景表示和渲染技术,通过神经网络隐式地表示三维空间中的颜色和密度场。其特点是高精度、连续表示、数据驱动。具体可参考[6]。
2.x 八叉树地图、ikdtree地图、哈希地图等
这些我认为不属于具体的地图表征形式,只是地图存储的数据结构。具体来说:
- 八叉树地图(Octree Map)是利用八叉树数据结构存储体素地图,可以节省数据存储空间。具体实现例如 OctoMap[3]
- ikdtree地图是动态kd-tree的地图,存储的是原始点云形式,由Fastlio2[4]采用,专门用于处理点云数据的高效存储、增量更新和查询
- 哈希地图(Hash Map)使用哈希函数将二维或者三维空间坐标映射到哈希表中,用于存储和检索空间信息,节省存储空间,存取速度快,可以存储点云地图、体素地图
除此之外,还有其他改进例如i-octree[5]等,不展开介绍。
3、一些讨论
这里记录一些自己学习的困惑,或者其他地方的讨论。
3.1 为什么要关注地图的表示?
对于最基础的SLAM而言,实现了定位与建图任务就可以了。但问题是,建立的地图要干什么、如何服务后面的任务?如果不加以考虑、忽视建图,就完全是一个定位过程了。所以,需要根据后续任务决定建立什么地图。
3.2 无人驾驶的高精度地图是什么?
个人简单总结,就是:尺度地图的绝对坐标精度更高,所包含的道路交通信息元素丰富细致。按照第一部分的分类,应该数据多层级地图。
4、小结
本文整理了一些SLAM领域常见的地图,但并没有细致讨论每种地图的优缺点以及应用场景。
参考文献
[1] Survey on Active Simultaneous Localization and Mapping: State of the Art and New Frontiers
[2] GitHub - ANYbotics/elevation_mapping: Robot-centric elevation mapping for rough terrain navigation
[3] https://octomap.github.io/
#ModelMerging
无需训练数据!合并多个模型实现任意场景的感知
近日,来自清华大学智能产业研究院(AIR)助理教授赵昊老师的团队,联合戴姆勒公司,提出了一种无需训练的多域感知模型融合新方法。研究重点关注场景理解模型的多目标域自适应,并提出了一个挑战性的问题:如何在无需训练数据的条件下,合并在不同域上独立训练的模型实现跨领域的感知能力?团队给出了“Merging Parameters + Merging Buffers”的解决方案,这一方法简单有效,在无须访问训练数据的条件下,能够实现与多目标域数据混合训练相当的结果。
论文题目:
Training-Free Model Merging for Multi-target Domain Adaptation
作者:Wenyi Li, Huan-ang Gao, Mingju Gao, Beiwen Tian, Rong Zhi, Hao Zhao
1 背景介绍
一个适用于世界各地自动驾驶场景的感知模型,需要能够在各个领域(比如不同时间、天气和城市)中都输出可靠的结果。然而,典型的监督学习方法严重依赖于需要大量人力标注的像素级注释,这严重阻碍了这些场景的可扩展性。因此,多目标域自适应(Multi-target Domain Adaptation, MTDA)的研究变得越来越重要。多目标域自适应通过设计某种策略,在训练期间同时利用来自多个目标域的无标签数据以及源域的有标签合成数据,来增强这些模型在不同目标域上的鲁棒性。
与传统的单目标域自适应 (Single-target Domain Adaptation, STDA)相比,MTDA 面临更大的挑战——一个模型需要在多个目标域中都能很好工作。为了解决这个问题,以前的方法采用了各种专家模型之间的一致性学习和在线知识蒸馏来构建各目标域通用的学生模型。尽管如此,这些方法的一个重大限制是它们需要同时使用所有目标数据,如图1(b) 所示。
但是,同时访问到所有目标数据是不切实际的。一方面原因是数据传输成本限制,因为包含数千张图像的数据集可能会达到数百 GB。另一方面,从数据隐私保护的角度出发,不同地域间自动驾驶街景数据的共享或传输可能会受到限制。面对这些挑战,在本文中,我们聚焦于一个全新的问题,如图1(c) 所示。我们的研究任务仍然是MTDA,但我们并没有来自多个目标域的数据,而是只能获得各自独立训练的模型。我们的目标是,通过某种融合方式,将这些模型集成为一个能够适用于各个目标域的模型。
图1:不同实验设置的对比
2 方法
如何将多个模型合并为一个,同时保留它们在各自领域的能力?我们提出的解决方案主要包括两部分:Merging Parameters(即可学习层的weight和bias)和 Merging Buffers(即normalization layers的参数)。在第一阶段,我们从针对不同单目标域的无监督域自适应模型中,得到训练后的感知模型。然后,在第二阶段,利用我们提出的方法,在无须获取任何训练数据的条件下,只对模型做合并,得到一个在多目标域都能工作的感知模型。
图2:整体实验流程
下面,我们将详细介绍这两种合并的技术细节和研究动机。
2.1 Merging Parameters
2.1.1 Permutation-based的方法出现退化
事实上,如何将模型之间可学习层的 weight 和 bias 合并一直是一个前沿研究领域。在之前的工作中,有一种称为基于置换 (Permutation-based) 的方法。这些方法基于这样的假设:当考虑神经网络隐藏层的所有潜在排列对称性时,loss landscape 通常形成单个盆地(single basin)。因此,在合并模型参数 和时,这类方法的主要目标是找到一组置换变换 ,确保 在功能上等同于 ,同时也位于参考模型 附近的近似凸盆地(convex basin)内。之后,通过简单的中点合并 以获得一个合并后的模型 ,该模型能够表现出比单个模型更好的泛化能力,
在我们的实验中,模型 和 在第一阶段都使用相同的网络架构进行训练,并且,源数据都使用相同的合成图像和标签。我们最初尝试采用了一种 Permutation-based 的代表性方法——Git Re-Basin,该方法将寻找置换对称变换的问题转化为线性分配问题 (LAP),是目前最高效实用的算法。
图3:Git Re-basin和mid-point的实验结果对比
但是,如图3所示,我们的实验结果出乎意料地表明,不同网络架构(ResNet50、ResNet101 和 MiT-B5)下 Git Re-Basin 的性能与简单中点合并相同。进一步的研究表明,Git Re-Basin 发现的排列变换在解决 LAP 的迭代中保持相同的排列,这表明在我们的领域适应场景下,Git Re-Basin 退化为一种简单的中点合并方法。
2.1.2 线性模式连通性的分析
我们从线性模式连通性(linear mode connectivity)的视角进一步研究上述退化问题。具体来说,我们使用连续曲线 在参数空间中连接模型 和模型 。在这种特定情况下,我们考虑如下线性路径,
接下来,我们通过对 做插值遍历评估模型的性能。为了衡量这些模型在两个指定目标域(分别表示为 和 )上的有效性,我们使用调和平均值 (Harmonic Mean) 作为主要评估指标,
我们之所以选择调和平均值作为指标,是因为它能够赋予较小的值更大的权重,这能够更好应对世界各地各个城市中最差的情况。它有效地惩罚了模型在一个目标域(例如,在发达的大城市)的表现异常高,而其他目标域(例如,在第三世界乡村)表现低的情况。不同插值的实验结果如图4(a)所示。“CS”和“IDD”分别表示目标数据集 Cityscapes 和 Indian Driving Dataset。
图4:线性模式连通性的分析实验
2.1.3 理解线性模式连通性的原因
在上述实验结果的基础上,我们进一步探究:在先前域自适应方法中观察到的线性模式连通性,背后的根本原因是什么?为此,我们进行了消融实验,来研究第一阶段训练 和 期间的几个影响因素。
- 合成数据。使用相同的合成数据可以作为两个域之间的桥梁。为了评估这一点,我们将合成数据集 GTA 中的训练数据划分为两个不同的非重叠子集,每个子子集包含原始训练样本的 30%。在划分过程中,我们将合成数据集提供的具有相同场景标识的图像分组到同一个子集中,而具有显着差异的场景则放在单独的子集中。我们使用这两个不同子集分别作为源域,训练两个单目标域自适应模型(目标域为 CityScapes 数据集)。随后,我们研究这两个 STDA 模型的线性模式连通性。结果如图 4(b) 所示,可以观察到,在参数空间内连接两个模型的线性曲线上,性能没有明显下降。这一观察结果表明,使用相同的合成数据并不是影响线性模式连通性的主要因素。
- 自训练架构。使用教师-学生模型可能会将最后的模型限制在 loss landscape 的同一 basin 中。为了评估这种可能性,我们禁用了教师模型的指数移动平均 (EMA) 更新。相应地,我们在每次迭代中将学生权重直接复制到教师模型中。随后,我们继续训练两个单目标域自适应模型,分别利用 GTA 作为源域,Cityscapes 和 IDD 作为目标域。然后,我们研究在参数空间内连接两个模型的线性曲线,结果如图 4(c) 所示。我们可以看到线性模式连接属性保持不变。
- 初始化和预训练。 使用相同的预训练权重初始化 backbone 的做法,可能会使模型在训练过程中难以摆脱的某一 basin。为了验证这种潜在情况,我们初始化两个具有不同权重的独立 backbone,然后继续针对 Cityscapes 和 IDD 进行域自适应。在评估两个收敛模型之间的线性插值模型时,我们观察到性能明显下降,如图 4(d) 所示。为了更深入地了解潜在因素,我们继续探究,是相同的初始权重,还是预训练过程导致了这种影响? 我们初始化两个具有相同权重但没有预训练的主干,然后再次进行实验。有趣的是,我们发现,在参数空间的线性连接曲线仍然遇到了巨大的性能障碍,如图 4(e) 所示。这意味着预训练过程在模型中的线性模式连接方面起着关键作用。
2.1.4 关于合并参数的小结
我们通过大量实验证明,当领域自适应模型从相同的预训练权重开始时,模型可以有效地过渡到不同的目标领域,同时仍然保持参数空间中的线性模式连通性。因此,这些训练模型可以通过简单的中点合并,得到在两个领域都有效的合并模型。
2.2 Merging Buffers
Buffers,即批量归一化 (BN) 层的均值和方差,与数据域密切相关。因为数据不同的方差和均值代表了域的某些特定特征。在合并模型时如何有效地合并 Buffers 的问题通常被忽视,因为现有方法主要探究如何合并在同一域内的不同子集上训练的两个模型。在这样的前提下,之前的合并方法不考虑 Buffers 是合理的,因为来自任何给定模型的 Buffers 都可以被视为对整个总体的无偏估计,尽管它完全来自随机数据子样本。
但是,在我们的实验环境中,我们正在研究如何合并在完全不同的目标域中训练的两个模型,这使得 Buffers 合并的问题不再简单。由于我们假设在模型 A 和模型 B 的合并阶段无法访问任何形式的训练数据,因此我们可用的信息仅限于 Buffers 集 。其中, 表示 BN 层的数量,而 、 和 分别表示第 层的平均值、标准差和 tracked 的批次数。生成 BN 层的统计数据如下:
以上方程背后的原理可以解释如下:引入 BN 层是为了缓解内部协变量偏移(internal covariate shift)问题,其中输入的均值和方差在通过内部可学习层时会发生变化。在这种情况下,我们的基本假设是,后续可学习层合并的 BN 层的输出遵循正态分布。由于生成的 BN 层保持符合高斯先验的输入归纳偏差,我们根据从 和 得到的结果估计 和 。如图5所示,我们获得了从该高斯先验中采样的两组数据点的均值和方差,以及这些集合的大小。我们利用这些值来估计该分布的参数。
图5:合并BN层的示意图
当将 Merging Buffers 方法扩展到 个高斯分布时,tracked 的批次数 、均值的加权平均值 和方差的加权平均值可以按如下方式计算。
3 实验与结果
3.1 数据集
在多目标域适应实验中,我们使用 GTA 和 SYNTHIA 作为合成数据集,并使用 Cityscapes 、Indian Driving Dataset 、ACDC 和 DarkZurich 的作为目标域真实数据集。在训练单个领域自适应模型时,使用带有标记的源域数据和无标记的目标域数据。接下来,我们采用所提出的模型融合技术,直接从训练好的模型出发构建混合模型,这个过程中无需使用训练数据。
3.2 与Baseline模型的比较
在实验中,我们将我们的模型融合方法在 MTDA 任务上的结果与几种 baseline 模型进行对比。baseline 模型包括数据组合(Data Comb.)方法,其中单个域自适应模型在来自两个目标域的混合数据上进行训练(这个baseline仅供参考,因为它们与我们关于数据传输带宽和数据隐私问题的设定相矛盾)。baseline 模型还包括单目标域自适应(STDA),即为单一目标域训练的自适应模型,评估其在两个域上的泛化能力。
表1:与Baseline模型的比较
表 1 展示了基于 CNN 架构的 ResNet101和基于 Transformer 架构的 MiT-B5 的结果。与最好的单目标域自适应模型相比,当将我们的方法分别应用于 ResNet101 和 MiT-B5 两种不同 Backbone 时,在两个目标域上性能的调和平均值分别提高 +4.2% 和 +1.2%。值得注意的是,这种性能水平(ResNet101架构下的调和平均值为 56.3%)已经与数据组合(Data Comb.)方法(56.2%)相当,而且我们无需访问任何训练数据即可实现这一目标。
此外,我们探索了一种更为宽松的条件,其中仅合并 Encoder backbone,而 decoder head 则针对各个下游域进行分离。值得注意的是,这种条件下,分别使两种 backbone 下的调和平均性能显著提高 +5.6% 和 +2.5%。我们还发现,我们提出的方法在大多数类别中能够始终实现最佳调和平均,这表明它能够增强全局适应性,而不是偏向某些类别。
3.3 与SoTA模型的比较
我们首先将我们的方法与 GTACityscapes 任务上的单目标域自适应 (STDA) 进行比较,如表 2 所示。值得注意的是,我们的方法可以应用于任何这些方法,只要它们使用相同的预训练权重适应不同的域。这使我们能够使用单个模型推广到所有目标域,同时保持 STDA 方法相对优越的性能。
表2:与SoTA模型的比较
我们还将我们的方法与表 2 中的域泛化(DG)方法进行了比较,域泛化旨在将在源域上训练的模型推广到多个看不见的目标域。我们的方法无需额外的技巧,只需利用参数空间的线性模式连接即可实现卓越的性能。在多目标域自适应领域,我们的方法也取得了领先。我们不需要对多个学生模型做显式的域间一致性正则化或知识提炼,但能使 STDA 方法中的技术(如多分辨率训练)能够轻松转移到 MTDA 任务。可以观察到,我们对 MTDA 任务的最佳结果做出了的显著改进,同时消除了对训练数据的依赖。
3.4 多目标域拓展
我们还扩展了我们的模型融合技术,以涵盖四个不同的目标领域:Cityscapes 、IDD 、ACDC 和 DarkZurich 。每个领域都面临着独特的挑战和特点:Cityscapes 主要关注欧洲城市环境,IDD 主要体现印度道路场景,ACDC 主要针对雾、雨或雪等恶劣天气条件,DarkZurich 则主要处理夜间道路场景。我们对针对每个领域单独训练后的模型,以及用我们的方法融合后的模型进行了全面评估。
表3:在4个目标域上的实验结果
如表 3 所示,我们提出的模型融合技术表现出显著的性能提升。虽然我们将来自单独训练模型的调和平均值最高的方法作为比较的基线,但所有基于模型融合的方法都优于它,性能增长高达 +5.8%。此外,尽管合并来自多个不同领域模型的复杂性不断增加,但我们观察到所有领域的整体性能并没有明显下降。通过进一步分析,我们发现我们的方法能够简化领域一致性的复杂性。现有的域间一致性正则化和在线知识提炼方法的复杂度为 ,而我们的方法可以将其减少到更高效的 ,其中 表示考虑的目标域数量。
3.5 消融实验
我们使用 ResNet101 和 MiT-B5 作为分割网络中的图像编码器,对我们提出的 Merging Parameters 和 Merging Buffers 方法进行了消融研究,结果如表 4 所示。我们观察到单目标域自适应 (STDA) 模型在不同域中的泛化能力存在差异,这主要源于所用目标数据集的多样性和质量差异。尽管如此,我们还是选择 STDA 模型中的最高的调和平均值作为比较基线。
表4:消融实验
表 4(a) 和 4(b) 中的数据显示,采用简单的中点合并方法对参数进行处理,可使模型的泛化能力提高 +2.7% 和 +0.6%。此外,当结合 Merging Buffers 时,这种性能的增强会进一步放大到 +4.2% 和+1.2%。我们还观察到 MiT-B5 作为 backbone 时的一个有趣现象:在 IDD 域中进行评估时,融合模型的表现优于单目标自适应模型。这一发现意味着模型可以从其他域获取域不变的知识。这些结果表明,我们提出的模型融合技术的每个部分都是有效的。
3.6 模型融合在分类任务上的应用
我们还通过实验验证了我们所提出的模型融合方法在图像分类任务上的有效性。通过将 CIFAR-100 分类数据集划分为两个不同的、不重叠的子集,我们在这些子集上独立训练两个 ResNet50 模型,标记为 A 和 B。这种训练要么从一组共同的预训练权重中进行,要么从两组随机初始化的权重中进行。模型 A 和 B 的性能结果如图 6 所示。结果表明,从相同的预训练权重进行融合的模型优于在任何单个子集上训练的模型。相反,当从随机初始化的权重开始时,单个模型表现出学习能力,而合并模型的性能类似于随机猜测。
图6:CIFAR-100 分类任务上的模型融合结果
随机初始化会破坏模型线性平均性,而相同的预训练主干会导致线性模式连接。我们在另一个预训练权重上再次验证了这个结论。图 7 中的结果表明,DINO 预训练和 ImageNet 预训练在模型参数空间中具有不同的loss landscape,模型的融合必须在相同的loss landscape内进行。
图7:ImageNet和DINO预训练权重对线性模式连接的影响
4 结论
本文介绍了一种新颖的模型融合策略,旨在解决多目标域自适应 (MTDA)问题,同时无需依赖训练数据。研究结果表明,在大量数据集上进行预训练时,基于 CNN 的神经网络和基于 Transformer 的视觉模型都可以将微调后模型限制在 loss landscape 的相同 basin 中。我们还强调了 Buffers 的合并在 MTDA 中的重要性,因为 Buffers 是捕获各个域独特特征的关键。我们所提出的模型融合方法简单而高效,在 MTDA 基准上取得了最好的评测性能。我们期待本文所提出的模型融合方法能够激发未来更多关于这个领域的探索。
#GaussianBEV
首次将Gaussian引入BEV感知领域!
BEV感知又要进化了!今天看到了一篇BEV感知结合3D Gaussian实现BEV分割的任务,很赞!!!性能暂时算不上惊艳,但范式上有很大的参考性,分割任务上是可行的,OCC、检测等任务也可以考虑!
BEV感知已经广泛用于环视3D感知。它允许将不同相机的特征合并到一个空间中,提供3D场景的统一表示。其核心是view transformer,将图像视图转换为BEV。然而基于几何或cross-att的view transformer方法并不能提供足够详细的场景表示,因为它们使用的3D空间的子采样对于建模环境的精细结构来说是不足的。于是本文提出了GaussianBEV,这是一种将图像特征转换为BEV的新方法,通过使用一组在3D空间中定位和定向的3D高斯来精细地表示场景。然后通过调整基于高斯splatting的3D表示渲染,以生成BEV特征图。GaussianBEV是第一种在线使用这种3D高斯建模和3D场景渲染过程的方法,即不在特定场景上对其进行优化,而是直接集成到单阶段模型中以用于BEV场景理解。实验表明,所提出的表示方法非常有效,将高斯BEV作为nuScenes数据集上BEV语义分割任务的最新技术。
总结来说,GaussianBEV主要贡献如下:
- GaussianBEV利用3D高斯表示从图像生成BEV特征图,从而实现精细的3D场景建模。然后使用栅格化模块在BEV中splatting此表示。据我们所知,这是第一次提出非场景特定的高斯splatting表示并将其集成到感知模型中。
- 验证明了我们的方法的有效性,使其成为BEV语义分割的最新技术。
相关工作回顾
基于深度。基于像素深度估计和图像特征的显式预测,建立了一系列模型。结合相机标定参数,这使得2D特征能够反投影到3D特征点云中,最终在BEV网格中聚合。为了适应深度估计的不确定性,特征实际上沿着穿过其像素的光线传播,并由离散的深度概率估计进行微调。为了改进深度预测,提出了一种在模型训练期间使用LiDAR数据的显式深度监督方案。然而,基于深度的方法对光线采样策略很敏感,通常是沿着光线和物体表面反向投影特征(见图1a)。
基于投影。通过严格的比较研究,[7]建议放弃深度估计,转而采用更简单的投影方案:使用一组预定义的3D点来描述场景,并通过使用校准数据将点投影到相机特征图上来探测相机特征。此投影忽略了实际对象和背景放置,但返回了场景的更密集表示,没有超出对象表面深度的空隙。通过选择稀疏网格表示来减少生成BEV网格的计算和内存开销。基于投影的视图变换方法很简单,但会产生粗略的BEV表示,因为沿着光线的所有体素都接收到相同的特征(见图1b)。
基于注意力。利用Transformer模型的最新进展,深度估计被基于注意力的特征调制方案所取代。提出了几种优化方案来解决图像和BEV网格标记之间成对匹配的计算复杂性:空间和时间注意力的因子分解、可变形注意力、标定和时间戳先验的引入。对于分割任务,由于需要定义密集的查询映射,基于注意力的视图转换在计算和内存方面都是密集的。这就是为什么一些方法预测低分辨率BEV(见图1c),然后通过逆卷积对其进行上采样。
高斯splatting。高斯splatting(GS)是一种3D场景渲染技术,它使用3D高斯来描述场景。每个高斯函数都由其位置、比例、旋转、不透明度和球谐颜色模型参数化。整个渲染管道是差分的,允许基于一组图像将高斯参数优化到特定场景。GS既快速又并行,允许在GPU上进行实时操作。此外,通过修剪更窄、更透明的高斯分布,可以在细节和渲染速度之间进行权衡。与稀疏体素网格相比,高斯网格提供了更有效的场景表示,因为单个高斯网格可以描述大体积,而较小的高斯网格可以以任意分辨率精确编码更精细的细节。细节和光栅化分辨率是渲染管道的参数,而不是场景描述。已经提出了几个扩展,允许管理动态对象或从表示中的基础模型中提取语义特征。在所有情况下,高斯表示都是特定于场景的。
在我们的工作中,我们建议使用高斯表示来克服以前视图变换方法的缺点。与之前离线学习高斯表示的高斯电高斯splatting不同,我们建议学习一个能够提供场景在线高斯表示的神经网络。
详解GaussianBEV
整体结构如图2所示:
3D Gaussian generator
给定输入特征图F,3D高斯生成器使用多个预测头预测场景的3D高斯表示。图3说明了它如何在特征图上运行。
高斯中心。场景中高斯分布的3D位置由应用于F的深度头和3D偏移头估计。第一种方法预测3D中心沿光线的初始位置。第二种方法通过向其添加一个小的3D位移来细化这个3D位置,通过不沿光线冻结高斯分布,为高斯分布的定位提供了更大的灵活性。
更确切地说,对于坐标为($u_{n,i}$,$v_{n,i}$)的相机n的特征图中的像素i,深度头预测视差$d_{n,i}$∈[0,1]。为了补偿从一个相机到另一个相机的焦距多样性对深度预测的影响,如[23]中提出的,在参考焦距f中,视差被预测到一个缩放因子。知道与相机n相关的真实焦距fn,然后对度量深度$z_{n,i}$进行如下解码:
然后使用第n个相机的内参Kn推导出相机参考系中的相应3D点:
产生的3D点被约束为沿着穿过所考虑像素的光线。由于这种约束,它们的定位不一定是最优的。为了克服这个问题,我们建议使用3D偏移预测头。它的目的是提供一个小的位移$△_{n,i}$,应用于高斯的3D中心,以细化其在所有三个方向上的位置。通过以下步骤可以简单地获得精确的3D点:
在这个阶段,为每个相机计算的3D高斯中心在相应的相机参考系中表示。为了在世界参考系中表达这些点,应用了外参矩阵[Rn|tn],实现相机到世界的转换:
高斯旋转。场景中高斯分布的3D旋转是通过应用于F的旋转头来估计的。对于相机n的特征图中的给定像素,它以单位四元数q的形式输出偏心旋转。像素的偏心旋转对应于相对于穿过它的3D光线的旋转。这种建模使旋转头更容易学习,因为它不知道与它正在处理的像素对应的光线。例如,放置在场景中两个不同位置并在相机参考系中具有不同绝对(自中心)旋转的两个对象在图像中可能具有相同的外观。在这种情况下,旋转头预测的偏心旋转将是相同的。然后,使用相机的固有参数来检索自中心旋转信息。
为此,计算表示穿过相机n的像素i的光线与轴$[0,0,1]^T$之间的旋转的四元数。然后通过以下步骤恢复表示相机参考系中的自中心旋转的四元数:
最后,对于高斯中心,使用$q^w_{n,i}$计算表示高斯在世界参考系中的旋转的四元数,该四元数对相机n的相机到世界的旋转进行建模:
高斯尺寸、不透明度和特征。最后三个高斯参数不依赖于光学特性和相机定位,而是编码语义特性。因此,简单地使用三个头来预测BEV光栅化器模块渲染高斯集G所需的集S、O和E。
BEV rasterizer
BEV光栅化器模块用于从3D高斯生成器预测的高斯集G中获得BEV特征图B。为此,高斯高斯splatting中提出的差分光栅化过程已被调整为执行这种渲染。第一种调整已经在其他离线语义重建工作中提出,包括渲染C维特征而不是颜色。在我们的例子中,这会产生一个包含感知任务所必需的语义特征的渲染。第二个调整涉及所使用的投影类型。我们对渲染算法进行了参数化,以生成正交渲染而不是透视渲染,更适合场景的BEV表示。
GaussianBEV training
高斯正则化损失。尽管高斯BEV可以通过上述损失进行有效训练,但直接作用于高斯表示的正则化函数的添加提高了其代表性。特别是,在训练过程中增加了两个正则化损失。
首先,深度损失旨在使用激光雷达在图像中的投影提供的深度信息来规范高斯人的位置。这种损失增加了对深度水头预测的约束,以获得初始3D位置,然后通过3D偏移对其进行细化。深度损失Ldepth定义如下:
其次,早期监督损失旨在优化BEV骨干之前的高斯表示。其想法是限制BEV特征,以直接为语义分割任务提供所有必要的信息。在实践中,分割头被添加并直接连接到BEV光栅化器模块的输出。早期监督损失的定义与Lsem类似。因此,总损失函数由下式定义:
实验结果结论
本文介绍了GaussianBEV,这是一种新的图像到BEV变换方法,是BEV语义分割的最新进展。基于在线3D高斯生成器,它将图像特征图的每个像素转换为语义化的3D高斯。然后,高斯人被泼洒以获得BEV特征图。我们已经证明,高斯表示能够适应场景中存在的不同几何结构,从而实现精细的3D建模。我们希望这项初步工作将为使用在线高斯splatting表示的3D感知的进一步研究打开大门。
#Snail-Radar
专为4D Radar slam设计!
大规模4D radar数据集
近年来,毫米波雷达因其在恶劣条件下的鲁棒性而被用于里程计和建图。常用的雷达类型有两种:
- 扫描雷达,它们通过旋转捕获360°视野的扫描
- 固态单芯片雷达,通常具有大约120°的水平视野。
单芯片雷达频率更高且不如扫描雷达笨重。通过多普勒速度,单芯片雷达可以轻松检测移动物体,从而解决基于摄像头或激光雷达里程计方法中遇到的重要挑战。然而,传统汽车雷达的垂直分辨率较差,导致低高物体在同一视野中的混淆。
近期的单芯片4D成像雷达进展,使得垂直分辨率提高,能精确测量高度,同时具备距离、方位角和多普勒速度(因此称为4D)。利用毫米波,4D雷达能轻松区分移动物体,并在雾、雨和雪等恶劣条件下正常感知。这些特性使4D雷达对需要在动态和恶劣环境中可靠运行的自主系统(如机器人和汽车)具有吸引力。
现有的公共4D雷达数据集在参考轨迹的准确性、数据采集平台的多样性、地理范围以及同一路线的数据采集重复性等方面常常有所欠缺。
武汉大学SNAIL小组从2022年8月开始的数据采集计划的精心制作的数据集Snail-Radar[1]。该数据集包含了在一年内使用手持设备、电动自行车和SUV等多种平台采集的各种数据序列。虽然每个平台的传感器配置略有不同,但每个传感器架通常包括立体摄像头、一到两个4D雷达、一个3D激光雷达、一到两个IMU和一个GNSS/INS系统。发布的序列数据覆盖了从密集植被的大学校园到高速公路隧道等多种环境,在晴天或雨天和夜间进行采集。
考虑到在同步定位与地图构建(SLAM)中的应用,我们提供了使用地面激光扫描仪(TLS)数据生成的参考轨迹。基于已验证的技术进行同步和精心校准,确保了我们数据的可靠性。我们相信这一数据集将大大有助于评估基于4D雷达点云的里程计、建图和位置识别算法。数据集和配套工具可在我们的网站上获取。
- 数据集链接:https://snail-radar.github.io/
- 数据集工具:https://github.com/snail-radar/dataset_tools
该数据集的贡献总结如下:
- 发布了一个大规模多样化的4D雷达数据集,覆盖多种环境条件下由三种不同平台在选定路线多次采集的数据,包括雨天和夜晚、校园道路和高速公路。提供了数据在ROS包和文件夹格式之间转换的工具及校准结果。
- 提出了严格的程序,同步所有传感器的运动相关信息,并校准它们之间的外部参数。同步程序从激光雷达和GNSS的硬件同步开始,然后所有传感器时间映射到GNSS时间,以激光雷达时间为桥梁,最后估计所有运动相关信息类型之间的恒定时间偏差。外部参数通过手动测量初始化并通过相关方法优化。
- 提出了一个定位流水线,用于生成提供序列的参考位姿。流水线从使用TLS捕获测试区域的点云开始,这些拼接的点云在定位模式下被用作LIO方法中的子地图。为了便于在序列末尾生成参考位姿,还提出了一种反向处理激光雷达里程计信息的方法。
雷达信号处理背景
如图1顶部所示,发射天线发送频率递增的射频信号。接收天线检测由物体反射的波,并通过将信号与发射载波混频来获得中频信号。这些信号然后通过模数转换器(ADC)采样,得到复数(同相和正交分量,I/Q)ADC样本。这些ADC样本被传送到数字信号处理器(DSP)进行进一步处理。
数字信号处理,如图1底部所示,包括四个基本组件:距离处理、多普勒处理、恒虚警率(CFAR)检测和2D到达角(AoA)处理。每个组件在TI mmwave SDK文档中有详细说明。这些组件的数学原理在Iovescu和Rao(2017)中解释。这里我们提供这些组件的功能性高层描述,并省略了高级选项以便清晰。
以下是一些符号表示:
- :每帧的多普勒脉冲数
- :接收天线数
- $N_{T_x}:发射天线数
- :每脉冲的ADC样本数
- $N_{D_b}:快速傅里叶变换(FFT)中的多普勒频谱数
- :FFT中的距离频谱数
距离处理过程以ADC脉冲样本I/Q值为输入,在活动帧时间内执行1D距离FFT和可选的直流距离校准,输出一个雷达立方体。ADC数据的大小为 · · · 。雷达立方体的大小为 · · · 。
多普勒处理过程以先前的雷达立方体为输入,在帧间时间内执行2D多普勒FFT和能量求和,输出一个大小为 · 的检测矩阵。
CFAR过程从检测矩阵开始,执行CFAR检测和峰值分组,输出范围-多普勒域中的CFAR检测列表。
2D AoA处理过程以雷达立方体和CFAR检测列表为输入,对检测到的物体的相关条目进行2D多普勒FFT,随后进行2D角度FFT和CFAR选择峰值,以确定检测物体的方位角和仰角,生成具有1D多普勒速度的3D点云。
图1描述了典型的德州仪器(TI)4D雷达的工作原理(Iovescu和Rao,2017)。发射天线发射的射频信号被物体反射,并由接收天线接收。信号被下变频为中频信号,通过模数转换器(ADC)进行采样,得到复数(同相和正交分量,I/Q)ADC样本。这些样本被传送到数字信号处理器(DSP)进行进一步处理。
数字信号处理过程包括距离处理、多普勒处理、恒虚警率(CFAR)检测和2D到达角(AoA)处理。每个步骤的详细说明可以在TI mmwave SDK文档中找到。这些组件的数学原理在Iovescu和Rao(2017)中解释。
距离处理过程包括对ADC样本进行1D距离FFT变换,并在活动帧时间内进行可选的直流距离校准,最终生成一个雷达立方体。多普勒处理过程则是在帧间时间内对雷达立方体进行2D多普勒FFT变换和能量求和,生成检测矩阵。CFAR过程基于检测矩阵进行CFAR检测和峰值分组,生成CFAR检测列表。最后,2D AoA处理过程对CFAR检测列表中的相关条目进行2D多普勒FFT和2D角度FFT,确定检测物体的方位角和仰角,生成3D点云。
数据集
传感器设置
数据集使用了三个平台:手持设备、电动自行车和SUV。这些平台的传感器配置几乎相同,包括一个Hesai Pandar XT32激光雷达、一个Oculii Eagle雷达、一个ZED2i立体摄像头和一个Bynav X36D GNSS/INS系统。电动自行车和SUV还配备了Continental ARS548雷达和XSens MTi3DK IMU。数据通过一台运行Ubuntu 20.04的ThinkPad P53笔记本实时预处理和记录。
文件格式
每个序列的数据以一个整体的rosbag文件和一个包含单独消息的文件夹形式提供。传感器数据类型包括点云、图像、IMU数据和GNSS/INS解决方案。文件夹内的点云数据以pcd文件保存,压缩图像以jpg格式保存,其他类型数据以txt文件保存。
数据集提供了每个序列的参考轨迹,这些轨迹是在TLS地图帧中以10Hz生成的。然而,对于大规模的SUV序列,仅提供起始子序列和结束子序列的参考位姿,这些子序列在TLS覆盖范围内。所有TLS点云及其优化后的位姿也提供在数据集中。数据还包括实时GNSS/INS解决方案及其相应的UTM50N坐标转换结果。
Ground truth
在数据集中,Bynav GNSS RTK/INS系统的解决方案在高度上经常会出现跳跃现象,误差可达几米。因此,我们使用精确的地面激光扫描仪(TLS)点云来生成参考位姿,类似于Ramezani等(2020)的方法,但我们采用的是逐帧对齐未失真的激光雷达帧到TLS地图。
TLS扫描使用Leica RTC360扫描仪在晴天捕获,覆盖了“星湖”和“星湖塔”路线。这些扫描首先通过Cyclone Register 360程序处理,并在Open3D中进一步通过点到平面ICP进行优化。最终的TLS地图由93个扫描拼接而成,期望精度在5厘米以内。
对于完全覆盖在TLS地图内的序列,我们通过两步法将激光雷达扫描相对于TLS地图进行定位:首先获取初始位姿,然后在定位模式下运行LIO方法。对于大型序列,由于TLS地图仅覆盖序列的开始和结束部分,我们仅生成起始和结束子序列的参考轨迹。为了实现反向LIO处理,我们提出了数据反向技术,通过时间反转处理序列信息,从而在序列末端生成参考位姿。
反向处理还提供了一种验证参考精度的方法,通过比较前向和反向处理结果,我们确认参考位置的精度通常在10厘米以内。这一技术保证了数据集的高参考精度,有助于评估和开发基于4D雷达的SLAM算法。
同步
由于在硬件上同步所有传感器具有挑战性,我们提出了一种方案,确保所有传感器消息由同一个虚拟时钟标记。该方案首先使用激光雷达数据作为桥梁,将所有传感器消息的时间戳映射到GNSS时间,以消除抖动和长期漂移。然后,使用里程计和相关算法估算传感器数据与GNSS/INS解决方案之间的恒定时间偏差:
- 激光雷达同步:对所有传感器消息的主机时间进行平滑处理,以消除传输抖动。XT32激光雷达通过GNSS时间同步,因此可以通过主机时间将所有消息时间戳映射到GNSS时间。
- 时间偏差估算:使用相关算法估算不同传感器消息流之间的恒定时间偏差。对于激光雷达数据,使用KISS-ICP方法计算3D激光雷达位姿,并通过中心差分法计算INS位姿和LO位姿之间的角速度,从而确定时间偏差。对于4D雷达,通过GNC方法估算其自我速度,并与INS解进行比较来确定时间偏差。对于IMU,直接计算IMU数据的角速度,并与INS解进行比较来确定时间偏差。
- ZED2i同步:使用Swift-VIO方法估算ZED2i IMU和摄像头之间的时间偏差。虽然在挑战性序列中Swift-VIO的轨迹可能会漂移,但时间偏差通常能迅速稳定下来,精度在1ms以内。
整体同步精度预计在10ms以内,这得益于GNSS/INS解的高频率(100Hz)和相关算法的精细优化,以及ZED2i曝光时间的合理设置(不超过5ms)。
最终,发布的数据集中的所有消息时间戳都已经补偿了与GNSS时间的时间偏差,确保了数据的高精度同步。
传感器刚体标定
为了确保数据集的准确性,定义了基于激光雷达(XT32)的机体坐标系,其x轴指向前方,y轴指向左侧,z轴指向上方。所有传感器的外参相对于机体坐标系进行标定。
初始标定
- 传感器的相对位置通过手动测量获得。
- 相对方向通过CAD图纸确定。
精细标定
- 使用激光雷达IMU校准工具对ZED2i IMU或MTi3DK与XT32激光雷达之间的外部参数进行优化。
- 通过Swift-VIO方法获取ZED2i摄像头和IMU的时间偏差及其外部参数。
- 使用相关算法对Bynav系统的激光雷达与IMU之间的相对方向进行校准。
- 使用相关算法对Oculii Eagle和ARS548雷达与X36D IMU之间的相对方向进行优化。
每个传感器的外部参数都经过多种方法优化,并提供在数据集中,以确保传感器数据的准确性和一致性。
总结一下
Snail-Radar是一个大规模的4D雷达数据集,专为基于多传感器融合的定位和建图应用而设计。该数据集使用三种平台在各种环境条件下进行采集,包括雨天、夜晚、校园道路和隧道,共采集了44个序列,遍布八条路线的多次重复采集。
参考位置(对于大规模序列仅在开始和结束部分)是使用LIO方法生成的,该方法依次将去失真的Hesai激光雷达帧定位到TLS地图上。数据反向处理技术实现了时间上的反向LIO。传感器数据通过两步方案同步:
- 首先使用硬件同步的激光雷达数据将消息主机时间映射到GNSS时间,以消除抖动和长期漂移
- 使用里程计和相关算法估算传感器数据与GNSS/INS解之间的恒定时间偏差。
所有传感器之间的外部参数通过多种方法进行优化,并随数据集一同提供。
#天天说的48V汽车系统,到底是个啥?
这几年,越来越多汽车OEM和Tier1推出12V/48V双电池汽车系统设计的轻混合动力汽车 (MHEV)及方案 ,而自从特斯拉高调宣布,Cybertruck和特斯拉将来推出的所有平台都将采用48V,更是为48V系统“添了一把柴”,12V退出历史舞台的脚步加快了。
第一部分:为什么是48V?
如今,12V已面临过多限制,许多汽车OEM都将48V视作最为合理的发展目标,因为这一电压能够达成一种理想的平衡。
一是功率损耗更低,效率更高,提高能源利用率,有利于简化汽车组件散热设计,降低成本。根据欧姆定律P=I²R,理论上,在48V架构中,由于电流是12V架构的四分之一,所以电力传输系统中电阻导致的各种功率损耗都可以降低到原来的十六分之一。
二是产品/线束更轻,成本降低,并且有利于整车减重,提高电车续航。根据电功率公式P=V·I和 PLOSS = I2R,电压加倍意味着设备可以用一半的电流获得相同的功率,电流降低意味着可以使用规模更小的导线、端子和连接器,这些因素都能减轻重量并降低成本。
三是48V远低于60V这一防范电击危险所要求公认限值,48V电池的充电电压最高56V,已经很接近60V,即48V电池电压是安全电压下的最高电压等级了。
四是48V电网还能在车联网 (V2X) 和 ADAS 方面使系统为未来应用做好准备(负载点控制)。
48V系统由BSG(发动机皮带驱动的电机)+48V 电池+DC/DC三大部分组成。值得注意的是,48V轻混系统并不是完全替代了传统的12V电气系统,而是保留了此前的 12V系统,这样可以最大程度的兼容原有系统,节约大量的研发成本。48V系统对工作温度和软件的匹配标定等方面都有着较为苛刻的要求。
第二部分:48V系统设计难题
既然48V这么万能,为什么汽车行业切换起来这么费劲?实际上,这会牵扯到许多设计方面的问题。同时,48V系统对工作温度和软件的匹配标定等方面都有着较为苛刻的要求。
电弧防护
电弧风险受电压水平及端子间距影响,温度可达2800~19000°C。12V电路中,电弧一般会快速熄灭,但在48V下,电弧可能持续,损坏端子和连接器。
目前尚不确定,用于48V系统的12V刀片式保险丝能否提供足够的电弧防护。而且,由于48V系统所需的继电器触点距离将大于12V系统所需的,因此需要重新设计保险丝和继电器。由于这些组件的要求都可通过采用半导体器件轻松满足,所以这些问题很可能通过电子方案来解决。也就是说,更多eFuse方案会被采纳。
电压架构不断发生变化
目前很难跨越到全48V系统,因此市面大部分方案并没有完全替代传统12V电气系统,而是保留了此前的12V系统,这样可以最大程度的兼容原有系统,节约大量的研发成本,所以设备很有可能是12V系统和48V系统并存,因此整个的电源架构可能在未来每个时期都会有所不同。
EMI要求更高了
在48V下,尽管输出功率相同,但较低负载电流减少了传导(差分)发射,因此开关波形(EMI 的第二主要来源)成了关注重点。较大的开关波形振幅会增加EMI,开关节点的噪声辐射也会因大面积铜区(如电感器)而加剧,尤其在48V输入电压下更为明显。
因此,在选择48V应用的电源稳压器时,必须评估高输入电压对EMI的影响,并选用具有 EMI缓解功能的稳压器,以降低额外的噪声。即便使用低噪声稳压器,设计时仍需遵循低噪声PCB布局原则,选用合适的EMC元件,并以系统化的方法进行设计。设计低噪声电源转换器的最佳步骤是先参考数据表和评估板示例进行仿真。
具有相同负载条件的24V和48V输入的LM5164-Q1 EMI性能,图源|TI
BMS控制更谨慎了
48V电池系统由锂离子电池构成,相较于铅酸电池,需要更多注意和处理。鉴于此,48V汽车需要电池管理系统(BMS)负责监控电池电压和电池温度,以便能够安全地为电池充电。由于48V系统具有再生能力,这种情况也变得更为复杂。当汽车电池的剩余电量足够低时,可发出再生指令,但是对BMS的控制需要非常谨慎,这对于防止过充或过热至关重要。
端子接触及锁定
避免使用有间歇接触或微动腐蚀的端子,否则会形成微电弧,损坏端子材料,增大电阻。采用有效的端子二次锁定,防止端子退出(TPO)导致间歇性断电及电弧形成。维修48V连接器前,务必断电,以免断开时形成高温电弧。
爬电距离和电气间隙
爬电距离是沿绝缘材料表面的最短距离,电气间隙是导体间空气中的最短距离。使用IEC 60664-1规范确定爬电距离和电气间隙。传统汽车连接器大多满足电气间隙要求,但部分需设计调整以满足爬电距离。
爬电距离和电气间隙,图源|APTIV
电压隔离
在混合电压系统中,需避免电流从48V流向12V,因此最佳方式是隔离不同电压的电路,或在连接器内进行物理分区。同时在布线时,尽量分开布置48V和12V电路,并为易受损部位的48V电线提供额外保护。避免使用相同的接地螺栓,以防电流通过共享连接跨电压流动。
密封要求
48V连接器意外接触到盐水等电解液,产生的电化学腐蚀反应对端子的侵蚀比12V情况下更严重,所以必须保持密封足够严密。
配套产业链都要更换
从12V提高到48V后, 零部件、接插件、开关等的耐压要提高;为了兼容12V的硬件,还需增加48V转12V的直流变压器;由于电压升高了,触点更容易产生电弧,所以采通常需要采用电子继电器来代替传统的电磁继电器或者电子保险丝;甚至为了安全着想,48V连接器也通常采纳浅蓝色的颜色编码,提示人们注意穿戴个人防护装备。
第三部分:48V设计架构上的变化
特斯拉是坚定的“48V爱好者”。特斯拉不仅表示,其CyberTruck采用全48V方案,同时将进行一系列设计修改,在几款现有车型中停用12V母线,已经组建了自己的“秘密”附件团队,专门开发面向48V架构的产品,如照明、绞盘和空气压缩机。
不过,经过拆解分析,CyberTruck将48V的连接器和包装设计成了蓝色,较好地与高压的橙色进行了区分,同时目前CyberTruck的设计与特斯拉所说有些出入,并不是所有的低压设计都采用了48V,依然保留了12V的设计。
所以,目前市场还没有真正意义上的全48V汽车系统,只是向48V系统的渐进式过渡,并且预期10到15 年许多车辆将继续使用现有的12V附件和子系统。
目前,使用比较多的48V电气系统的简化图如下图所示。由两个电源总线、一个12V电池和总线组成,用于为大多数传统汽车负载供电;一个48V电池和总线,用于为电动驱动电机和其他高功率附件供电。12V系统运行所有常规设备,包括信息娱乐系统、照明和车身电气附件,如车窗、车门、座椅等。48V系统运行电动驱动电机和任何重型负载,如 HVAC、选定的泵、转向和悬架系统,如果 ICE 使用电动涡轮增压器,则使用电动涡轮增压器。
两个主要电气系统连接到双向升降压DC/DC转换器,该转换器为12V和48V总线提供服务,以及一个用于操作三相同步感应驱动电机的逆变器。一些S/G是皮带驱动的,而其他制造商则将S/G放置在发动机和变速箱之间。
还有一些比较实际方法是实施一种分布式电源传输架构,比如Vicor开发的分布式系统。这种系统中,车辆的48V电源来自主要400/800V电池,然后发送到靠近负载点的12V电源转换器。通过使用两个或更多独立、隔离的电压转换器供电,可以为制动、转向和其他ASIL D安全关键功能提供冗余电源。
此外,Vicor还展示过一个很具有前瞻性方案。当前,汽车E/E架构从域控制Domian过渡到区域控制Zonal是主流,Vicor则将48V和Zonal结合在一起。
从下图来看,包含12V和48V负载,整车低压负载通过48V传输,12V电气负载通过48V进行转换。区域E/E架构配备了高性能计算单元,并通过CAN总线和汽车以太网连接,实现了更高效的负载管理和电源分配。48V PDN通过集成充电器和48V电源传递网络到电池包中,解决了400V/800V充电基础设施之间不兼容性问题。这种集成不仅减少了热量、成本和重量,还提高了系统的整体效率。
写在最后
目前,48V技术的应用还较为有限。48V系统面世已有几年,主要为轻度混合动力汽车的起动机-发电机及大功率配件(如主动悬挂和动力转向)提供动力。正如特斯拉在演示中所述,电压越高,电流越小,需要的电线也越细,从而减轻重量并节省成本。
引入48V轻度混合动力系统后,设计完成的优势显著。然而,改变传统12V供电网络(PDN)的犹豫依然存在,因为转换过程可能涉及大量测试,还可能需要符合汽车产业高安全性和高质量标准的新供应商。数据中心行业在转向48V PDN的过程中发现,这一变革的优势远远超过了转换成本。同样,对于汽车行业而言,48V轻度混合动力系统为快速推出排放更低、油耗更低、行驶里程更远的全新车辆提供了新途径。此外,它为提升性能并减少二氧化碳排放带来了全新设计选择。
那么,48V电机驱动能否彻底取代12V电机驱动?答案是否定的。TI的Karl-Heinz Steinmetz曾向EEWorld表示,高端汽车制造商全面转向48V系统可能仍需10至15年,未来一段时间内12V/48V双动力结构将会继续存在。
参考文献
[1]ONsemi:https://www.onsemi.jp/site/pdf/ONSAR2893_Automotive_Manufacturin_Design_for_China_ONSAR2893.pdf
[2]Vicor:https://www.vicorpower.com/documents/whitepapers/wp-solving-auto-electrification-challenges_CN.pdf
#STR2
论文链接:https://arxiv.org/pdf/2410.15774项目网页:https://tsinghua-mars-lab.github.io/StateTransformer/代码开源:https://github.com/Tsinghua-MARS-Lab/StateTransformer
以下视频来源于
卷不赢躺不平摆不烂
,时长02:59
大型实际驾驶数据集推动了有关自动驾驶数据驱动运动规划器的各个方面的研究,包括数据增强、模型架构、奖励设计、训练策略和规划器架构。在处理复杂和少样本情况下,这些方法有较好的表现。但是由于设计过于复杂或训练范式的问题,这些方法在规划性能上的泛化能力有限。在本文中,我们回顾并比较了以前的方法,重点关注泛化能力。实验结果显示,随着模型的适当扩展,许多设计元素变得冗余。我们介绍了StateTransformer-2 (STR2),这是一种可扩展的、仅使用解码器的运动规划器,它结合了Vision Transformer (ViT) 编码器和混合专家(MoE) 的Transformer架构。MoE骨干通过训练期间的专家路由解决了模态崩溃和奖励平衡问题。在NuPlan数据集上的大量实验表明,我们的方法在不同测试集和闭环模拟中比以前的方法具有更好的泛化能力。此外,我们评估了其在真实城市驾驶场景中的可扩展性,显示出随着数据和模型规模的增长其一致的准确性提升。
下面我们详细解释STR2的模型设计。我们选择的不是向量化的输入,而是栅格化图片的输入,可以方便进行规模化训练。输入还加入了聚类的轨迹作为引导线,结果可以看到在大曲率的场景表现会更合理一些。输入经过一个使用MoE架构增强的Transformer模型,自回归的方式输出引导线类别,关键点以及轨迹。
ViT编码器。我们采用仅解码的ViT图像编码器,以实现更好的可扩展性和性能,它由堆叠的12层Transformer组成。栅格化的图像被切分成16个小块。我们选择GeLU作为ViT编码器的激活函数。
Mixture-of-Expert。语言建模任务要求模型从复杂且通常具有统计争议的专家数据奖励中学习和实现平衡。受MoE模型在语言建模任务上泛化结果的启发,我们将GPT-2骨干网络替换为MoE骨干网络用于序列建模。MoE层通过专用内核和专家并行(EP)提供了更好的内存效率。我们还利用了Flash Attention2 和数据并行(DP)以提高训练效率。
自回归。在生成序列中我们添加了聚类轨迹作为嵌入特征用于模态分类,并使用交叉熵损失。我们使用K-Means聚类,从0.7百万个随机选择的动态可行轨迹中按其时空距离提取了512个候选轨迹。每条归一化的轨迹包括未来8秒的80个轨迹点(x, y和偏航角)。
liauto数据集上的规模化实验。我们采用了liauto数据集进行了scaling law的探索,liauto数据集是一个工业级的超大规模现实世界驾驶数据集。该数据集包括车道级导航地图和来自7个RGB摄像头、1个LiDAR和1个毫米波雷达(MMWR)的传感器设置的跟踪结果。我们选择了过去6个月内收集的城市驾驶场景,其中没有任何人工标注。我们筛选出错误的导航路线,因为这些路线与实际的未来驾驶轨迹不匹配。最终,我们将所有驾驶日志重新整理为长达10秒的训练和测试样本,其中包括过去的2秒和未来的8秒。最终的训练数据集拥有超过1b训练样本。实验结果(如图2)可以看到随着数据规模的增加以及模型参数的增加,test loss都有下降的趋势。均衡考虑训练成本和收益的关系,我们最后采用的为800m的模型。
从图3 nuplan闭环仿真的结果可以看到STR2取得了全面SOTA。结果来看专家轨迹的NR分数较高,R的分数却很低,说明专家轨迹没有一个适应环境变化的能力,仿真环境和实车有一定的区别。结果可以看出PDM-Hybrid相比于其他的方法的R得分明显高于NR,说明生成-评估的范式在模型泛化性能上表现优异。我们借鉴了PDM的生成-评估范式,基于STR2模型的输出结果进行了候选轨迹生成,再经过PDM打分器输出得分最高的轨迹。
图4可视化结果可以看出PDM-Hybrid轨迹因为基于当前车道中心线,没有主动变道和绕障的能力,我们的模型由于泛化性能强,所以很多场景下表现比PDM-Hybrid合理很多。本工作在nuplan testhard 数据集上的实验结果证明了生成-评估范式的合理性。对于生成-评估范式,在后续工作中我们还可以有更多尝试,例如如何在模型层面输出更合理的候选轨迹,如何将未来的不确定性考虑进打分器中,同时可以考虑将本文的方法作为真值标注的一种方式,帮助模型朝着更合理的方向迭代。为了感受模型的泛化性能我们将nuplan数据训练得到的模型直接应用于liauto数据集上推理,结果表现良好,对于动态障碍物的避让交互等都有合理的输出。
#自动驾驶公司扎堆IPO,回报投资人的时候到了
几乎是前后脚,自动驾驶公司地平线和文远知行成功上市。
与此同时,还有一大批公司正在路上,Momenta和小马智行选择赴美上市,纵目科技、佑驾创新则在冲刺港交所……
除此之外,今年1月和8月,激光雷达企业速腾聚创、自动驾驶芯片公司黑芝麻智能也都成功登陆港交所。
自动驾驶企业扎堆寻求上市的背后,除了对资金的需求,更多的还有兑现对投资人的承诺。
“目前这些上市的企业,我感觉有一些是为了上而上,它不是真的业务基本面达到要求了。”有资深投资人对《赛博汽车》表示,“对很多基本面不好的企业来说,投资协议一般都有上市期限的对赌,理论上也可以延长,但是如果上市,这些对赌协议就全作废了,不用再背这个包袱。”
上述人士指出,这些企业上市只是技术性的问题,即只要满足交易所的要求就可以,比如说美股或者港股,都是自由市场。要发行成功,首先合规满足要求,其次要有人能够认购它的股权,这两个条件实现就可以。
说起来容易,但落地并不简单。一方面,无论是港股还是美股都会面临很多的流程审核;另一方面,提前找到上市的基石投资者更是不易。
显然,自动驾驶企业扎堆上市的背后,并非是一片繁花似锦,还有压力和窘迫。
01
兑现承诺,上市是最体面的方式
为什么要上市?
兑现承诺是很重要的原因,到给投资人回报的时候了。
有投资人告诉《赛博汽车》,一般来说,国内一级市场的人民币基金,存续期在7年左右,其中5年投资期,2年时间是资本退出变现。
退出变现有几大途径,包括IPO(基石基金在解禁后卖出)、并购、新三板挂牌、股份转让、回购、借壳上市、清算等等。其中IPO是资本最理想和体面的退出方式。
10月24日地平线正式登陆港股
而细数这一批寻求上市的自动驾驶公司,多在2016年左右成立。其中,地平线成立于2015年7月;小马智行、Momenta均创办于2016年;文远知行(前身景驰科技)成立于2017年;纵目科技和佑驾创新则分别成立于2013年2014年。
在自动驾驶故事最受追捧的那些年,他们或多或少都拿到了资本的加持。甚至,不乏达到独角兽级别估值。
当时拿的钱越多,如今上市的压力就越大。
国内的股权投资,很多时候都会有投资方与创始团队的对赌协议出现,即在公司没有达成一些条款时(比如上市),公司包括创始团队需要掏钱从投资人那里回购股份。
业内人士坦言,现在投资人也挺难的,从大多数公司的实际经营情况来看,不管是创始团队还是企业本身持有的资金,回购股份的难度是很高的。
如果无法完成回购,其他路径又无法行得通,剩下的或许就是一个个创始团队与资方对簿公堂,公司清算,甚至创始人被成“老赖”这样令人唏嘘的故事。
这显然无论对于企业,还是投资人来说,都是是“双输的买卖”。
抽屉协议是私下签订的协议,通常只有协议双方知晓,类似于被放置在抽屉里,不轻易向外界透露
上市,显然是最体面的方式。“很多企业上市募集的资金,在上市前就已经谈好了,甚至很多想要上市的公司是有地方政府兜底的,与地方政府或一些战略方有‘抽屉协议’。”有资深投资人认为,一些公司是为了上而上,并非企业业务需求。
至于为什么多数选择港股和美股,主要是因为,美股或者港股都是自由市场。要发行成功只要实现两个条件,合规满足要求、有人能够认购股权。“企业本身业务好不好、持续性怎么样,这不是必然条件”。
有意思的是,自动驾驶“明星”公司似乎更偏爱美股,除了地平线或许因一些敏感问题选择了港股。小马智行、文远知行、Momenta都选择了美股。上述人士称,原因是美股更撑得住此前高额的估值。
02
普遍缺钱,上市迫在眉睫
上市也并非“百利而无一害”,企业也将面临信息公开,信息披露等成本。
正因为此波“上市潮”也让外界进一步了解智能驾驶、乃至自动驾驶企业的“窘迫面”:缺钱,这也是他们需要上市的另一个重要因素。
以10月28日,刚刚在中国证监会获得境外上市备案,拟在港股发行不超过1.38亿股境外上市普通股的佑驾创新(MINIEYE)为例,截止到去年年末,其账上的现金及现金等价物,仅剩不到2亿元,上市筹资迫在眉睫。
佑驾创新部分财务数据而其他家账面数字稍好一些,比如文远知行账上有18.3亿元、小马智行有23.8亿元(3.35亿美元)、地平线甚至有现金及现金等价物113.6亿元,但结合他们亏损速度来看,如果再不融资、不上市,目前的资金仅能维持公司运转少则一两年,多则五六年。
以现金流情况最好的地平线为例,2021年到2023年,地平线净亏损分别为20.64亿元、87.2亿元以及67.39亿元。就算扣除与经营关系不大的项目后,经调整净亏损也达到11.03亿元、18.91亿元以及16.35亿元,三年经调整亏损超过46.29亿元。
而显然,一级市场这些企业已经很难再融到资。
根据企业披露信息来看,上述提及已经或正在上市的企业中,只有文远知行在今年6月获得了广汽集团一笔不超过2000万美元的战略投资;小马知行今年10月获得了广汽集团2700万美元的战略投资。两者还应该还都“沾了点IPO的光”。
而佑驾创新尽管显示2023年8月和11月都有融资到账,但属于Pre-IPO轮,也都受益于上市计划。
不考虑上市因素,文远知行最后一次融资发生在2022年10月,地平线也是;纵目科技的上一轮融资也在2022年3月;Momenta最新一次融资更是要追溯到2021年11月。
这背后的逻辑很好理解。
一方面,受经济大环境影响,国内资本市场活跃度远不如以前。据《赛博汽车》不完全统计,2021年在汽车智能化方向上,市场累计投融资总额达1591.9亿元,投资热点主要在整车、自动驾驶解决方案、芯片、激光雷达等领域,生长出一批“独角兽”企业,此后资本市场逐年降温,2023年头部自动驾驶公司中只有小马智行拿到了新的融资。
另一方面,投资“估值高的老人”不具性价比。有自动驾驶行业高管表示,自动驾驶领域,只要不是存在很严重路径依赖的情况下,大部分公司的技术差距可以在2-3年内,甚至更短时间完全拉平,而一些“老人”估值已经处于较高位置,在大环境不算好的当下,投一些“小而新”的企业似乎更有性价比。
与此同时,整个汽车产业越来越卷的情况下,作为上游的供应商们日子也不会好过,而且在面对车企的时候,大多数初创智驾公司没有太多的议价权,利润空间被极致压缩,想要走向盈利更是难上加难。
融资不顺畅、研发投入高、盈利遥遥无期,冲刺IPO,既有机会拿到战略融资;又能抛去一些包袱,再拿一笔钱,确实是不错的选择。
03
上岸不易,但现在是最好时间点
越来越多的智能(自动)驾驶公司选择上市。
他们如果去港股或者美股,理论上都是可行的。毕竟,理论上来说,只要满足交易所要求就可以了,即满足合规要求和有人认购股权。
但前者也会面临很多的流程审核。
10月25日文远知行在美股上市
比如文远知行,IPO就两度推迟。
2024年8月15日,路透社旗下IFR媒体发布消息称,文远知行将纳斯达克IPO定价由8月16日推迟至8月19-23日期间;8月22日,IFR又报道称,文远知行推迟纳斯达克IPO,没有新的时间表。
有资深投资人表示,文远知行第一次“失败”有可能就是被美国证监会针对了。
通过流程审核本身并不是一件很容易的事情,更难的是提前找到上市的投资方,在资本市场不算好的当下,想要有投资者认购,不仅要“流血”,还需要足够的诚意和信任。
地平线找到了阿里巴巴、百度、法国达飞集团CMA CGM和JSC(宁波甬宁高芯SP);文远知行找来了Alliance Ventures(雷诺日产三菱联盟的风险投资基金)、JSC International Investment Fund SPC、Get Ride、Beijing Minghong、Kechuangzhixing Holdings、Guangqizhixing Holdings and Gac Capital International、GZJK WENYUAN。
认购者,基本都是企业此前的投资人、“好伙伴”。
尽管困难不少,但当下依然是上市最好的时机。
10月底Waymo获新一轮56亿融资
“最好的上市时机是三年前,其次就是现在。”有自动驾驶从业者表示,一方面,萝卜快跑走红、Waymo获得大额融资、特斯拉发布Robotaxi车型,大众对自动驾驶的认知在不断加深;另一方面,美股降息之后,资本市场流动性也有所增强。
自动驾驶企业们经历过寒冬后,显然想抓住这一波“热浪”。
当然,就算已经上市也不等于一劳永逸,即使已经成功上岸的企业,股价也在遭遇不同程度的波动。
截至11月1日收盘,文远知行的股价报收14.52美元/股,已经低于IPO发行价15.50美元/股(即“破发”)。
但至少,文远知行已经“上岸”,更多的智能驾驶赛道玩家们,还在经历“生存大逃杀”。
#自动驾驶仿真超全综述:从仿真场景、系统到评价
▲ 一个自动驾驶仿真软件的运行可视化界面
什么是自动驾驶仿真?个人来下一个不成熟的定义,自动驾驶仿真是借助计算机虚拟技术对实际交通系统进行某种层次的抽象。
仿真的重要性已经不容置疑,自动驾驶想要大规模商业化落地,仿真是绕不过去的。为什么?因为自动驾驶的核心痛点之一就是成本,而仿真测试能把大量自动驾驶开发和测试的成本转化为GPU的物料成本和工程师的知识经验成本,进而大大缓解该痛点。
当前,几乎每家自动驾驶公司或涉及相应业务的公司都在进行仿真相关的工作。但同是仿真,不同公司的水平却参差不齐,不同工程师的仿真工程经验也有很大差异。如何才能搭建一个良性的高效的自动驾驶仿真体系?如何才能成为一名优秀的自动驾驶仿真工程师?这是公众号的未来讨论核心。
搭建自动驾驶仿真体系是一个下限很低,上限很高的事情。下载一个仿真软件,它可以是MATLAB,CarSim,也可以是CARLA、Lgsvl,或者是Prescan、VTD,通过文档学习一下仿真流程,就基本可以开始进行相关工作,这是大多数人对自动驾驶仿真的认识,也是这个细分领域门槛不高的佐证。但需要清楚的是,一个良性的自动驾驶仿真体系是一个标准的系统工程,它包括广义上的场景、系统以及评价三个主要模块,贯穿自动驾驶的开发、测试、落地以及运营等整个流程。有人说,需要让最熟悉自动驾驶系统的人来承担仿真相关工作,这个观点从某种程度上来说是正确的。
接下来就让我们按照这三个主要维度,来谈谈一个良性的自动驾驶仿真体系应该包括什么。
1、仿真场景
场景是仿真体系的开端,它在整个体系扮演着极其重要的角色,但其重要性相比于仿真系统却相对容易被忽略。而且随着仿真系统和评价体系的逐渐完善,越往后期,场景在整个体系中扮演的角色越重要。场景之所以有此地位,本质是因为其是对自动驾驶相关数据的一种价值提炼,是发挥数据价值的必须且高效的途径之一。基于场景的测试方法可以弥补基于里程的测试方法的局限性,在提高系统开发效率、产品落地效率方面都有重要作用。
以光照程度为自变量的场景
场景是公众号后期要讨论的核心内容之一,主要会围绕场景的形式和内容两方面展开。
1.1 场景形式
场景形式指的是场景数据的具体呈现方式。为什么要着重介绍场景的形式?核心在于三个字:标准化。标准化的场景体系的作用包括但不限于以下几点:
- 提高对原始数据的提取以及转化效率;
- 方便构建冗余度低的场景体系;
- 方便不同场景体系之间的比较以及场景交换;
- 减轻第三方测试时的多余工作。
目前相对比较通用的场景形式是由德国PEGASUS项目提出的功能场景-逻辑场景-具体场景三层体系。举个例子,功能场景可以描述为,“自车(被测车)在当前车道运行,在自车前方有前车加速运行,自车跟随前车行驶。” 逻辑场景则提炼出关键场景参数,并赋予场景参数特定的取值范围,如以上描述的场景可提取自车车速,前车车速以及加速度,自车与前车距离等参数,每个参数都有一定的取值范围和分布特性,参数之间可能还存在相关性。具体场景则需要选取特定的场景参数值,组成场景参数向量,并通过具体的场景语言表示。以上示例只是为了说明三层场景体系的内涵,具体的表述形式会有更多细节,需要有更多的标准和约束。
三层场景体系
具体场景需要转换为计算机可理解的语言即场景语言才能发挥作用。场景语言是一种可用以描述自动驾驶系统待处理的外部环境的计算机可解析的形式化语言。
场景语言的具体形式不一。针对功能场景、逻辑场景以及具体场景都有相应的场景语言:如针对前两者,有M-SDL等高级场景语言;针对后者有OpenSCENARIO、GeoScenario等。不同仿真软件支持的场景语言也不同:如CARLA和lgsvl等都支持基于Python脚本的场景语言;CARLA、VTD和最新版本的51Sim-One1.2等支持基于XML的场景语言。此外,protobuf、JSON都可以作为承载具体场景语言的格式。
这其中的关键不在于语言本身,而在于能全面且不冗余的覆盖交通元素的体系标准。目前已有一些机构在推相应的标准,比较成功的是由VTD发起的由ASAM(国际)/ CASAM(国内)推动的OpenX系列。公众号在后期会围绕OpenX系列展开较多介绍,因为这是目前看来最有可能推广开来的一个标准。具体也可以关注中汽中心周博林周博的分享。
M-SDL 一种高级场景语言
1.2 场景内容
1.2.1 基于知识、数据的场景来源在确定场景形式后,后期日常工作会围绕场景内容的构建展开。场景内容有两个主要来源:知识和数据。其中,基于知识的方法主要是依赖于具体场景结构,综合借鉴各相关学科的知识,分析自动驾驶系统需要处理的静、动态元素类型,并结合自动驾驶系统的测试需求构建场景。基于数据的分析方法则是从采集的自然驾驶数据中分析提取出有价值的场景。
基于知识、数据的场景构建方法最终都可以生成测试所需要的具体场景,这部分也是公众号后期要展开讨论的核心内容之一。
知识驱动和数据驱动的场景生成方法
1.2.2 具体静、动态场景内容从具体元素的角度看待场景内容,可将元素分为静态元素和动态元素(半动态)两部分。
静态场景元素的分析和提取相对较简单,主要包括道路、基础交通设施(交通标线、交通标志、交通信号灯以及抽象的交通规则等)、天气、光照、其他建筑物基础设施等,难点在于一些连续量(如光照和雨量)的取值范围分析,以及不同静态场景元素之间的约束关系。
动态场景元素的提炼和转化相对较为困难。主要原因如下:
- 除了静态场景元素固有的连续值取值范围和多约束问题外,交通行为是在一个高度复杂的存在多种约束条件的环境下的高交互性行为;
- 交通参与者类型众多,包括重卡、轻卡、乘用车、电动车、行人等,每种交通参与者都有自己特定的动态行为模式;
- 具体的动态行为模式有多种类型:带时间戳的轨迹数据、基于行为分类的数据(如跟车、换道等)、基于Agent的动态行为;
- 在实际提取动态交通数据时,需要考虑采集车自身的影响,即考虑处理交互性;
- 简单动态交通元素的分析以及大规模复杂交通元素的提取和具体形式有较多不同,需要不同的技术手段。
以上都是在提取动态场景内容时需要考虑的问题,也是公众号未来会重点展开的内容。
动态交通流示意
1.2.3 场景提取pipline最后再大致回顾一下场景提取的pipline。基本流程是数据采集、数据提取和数据转化。传统的数据采集工作,包括数据存储、数据标注、数据分类在企业中往往由基础架构部门负责,这部分在理论上和实践上也已经相当成熟了。仿真需要重点关注的是如何高效的从数据中提取有价值的场景,并将其转化为具体的场景格式。
2、仿真系统
仿真系统是整个仿真体系中承上启下的部分。它播放仿真场景,测试研究对象,通过仿真数据接口提供被测对象的运行表现数据。仿真系统是当之无愧的仿真体系核心,前面抛出有个仿真软件就能进行仿真工作的观点,只是为了说明构建仿真体系的下限。但在实际应用工作中,仿真系统的性能也决定着整个仿真体系的上限。
接下来我们来谈谈应该怎么看待仿真系统,围绕着仿真系统又该重点关注什么工作。
2.1 仿真软件 | 被测对象 | 通信环境
首先需要明确的是,仿真系统不止是仿真软件。从狭义上来说,它是仿真软件、通信环境与被测对象的集合;从广义上来说,它又包括云仿真环境等。
其次需要明确的是,仿真系统是具体的工具,是“术”。而在构建仿真系统时,作为仿真工程师在关注“术”之余,也需要关注“道”的部分。不同仿真软件、不同的通信环境、不同的被测对象都有各自的特点,作为仿真工程师需要了解不同仿真模块各自的共有属性,并充分理解并利用不同对象的特异性。关键是做到兼容并包,调节需求和客观仿真资源之间的矛盾。
仿真软件
在了解不同仿真软件的共有属性方面,可以学习基本的pipline。从比较粗的粒度上看,基本的仿真pipline是加载静态地图、构建动态场景、接入被测对象、导出运行数据、结果评价处理。这之后就基本可以上手一个仿真软件,剩余的深入拓展工作也可以围绕整体流程向外展开。
在了解不同仿真软件的差异方面,需要明白市面上各类软件各自的特点,集中精力是正确的,但是封闭眼界并不可取。单就自动驾驶仿真软件而言,Prescan、VTD、Panosim、51simOne、GaiA等商业自动驾驶仿真软件,CARLA、lgsvl、Airsim等开源自动驾驶仿真软件,稍微粗糙一些的DeepDrive、一些基于ROS构建的自动驾驶仿真平台,就都有各自的可取之处。
CARLA Simulator
另外,还有一些专精于特定功能仿真的软件。如在交通流仿真方面有Vissim、SUMO、High-env等;在动力学仿真方面有CarSim、Trucksim、Carmaker等软件;在静态场景仿真方面有一些大规模城市构建仿真软件;在构建复杂交通流场景方面也有一些软件。这些软件都可以纳入到整个自动驾驶仿真体系里来。我们会以后也会重点展开介绍各软件的不同点。
SUMO Simulator
被测对象根据被测对象的不同,业界常用的仿真工具链包括模型在环(MIL)、软件在环(SIL)、硬件在环(HIL)、整车在环(VIL)。目前SIL在各类公司应用范围最广,但其他各类也都有自己的独特优势和测试必要性;按照自然开发的流程,完整的测试过程也确实需要兼顾这几种平台。站在具体实践角度,每种在环仿真平台有适配于自己的仿真软件和技术栈,其中部分要掌握的技术如下:
- MIL与SIL相似,最基础的问题是通信环境构建,往上进一步则需要研究仿真效率、实时性、同步性等;
- HIL需要补充实时机与硬件通信接口的知识;
- VIL是大工程,需要投入大量人力物力来搭建专门的实验室,目前一般都应用于驾驶员在环仿真。
各种技术栈也是我们未来要探讨的重点之一,SIL会是主体,其他几种优先级会放的低一些。
通信环境
最后再来说说通信环境,即仿真软件和被测对象之间的信息传输环境。其基础是利用计算机网络的相关知识完成信息传输工作,也即各种JD描述中提到的开发仿真接口。
一般情况下,可以通过通信中间件处理仿真数据,并将其转化为被测对象所需的数据格式进行传输。中间件类型有很多,常用的可能有基于ROS的中间件、基于AutoSAR的中间件等。关键问题是结合具体测试需求选择合适的中间件;以及如何减少仿真消息的延迟和丢失以保证通信效率,这和仿真的可用度密切相关。
总之,优秀的仿真工程师除了需要有为软件增加仿真功能的能力外,更关键的是需要对自动驾驶系统有整体宏观上和局部微观上的理解,并能对接各方其他工程师的需求。在此基础上,如果是基于成熟商业仿真软件进行工作,就围绕着说明书、教程以及培训,同时与仿真软件的技术支持工程师时刻保持交流,并不断积累自己的应用能力。如果是基于开源仿真软件进行开发,则需要时刻关注软件的新版本和新功能,多刷issue以解惑。当然,也可时刻关注借助一些典型的基于仿真平台的优秀项目提升自己的能力。
2.2 静态环境模块 | 交通流模块 | 传感器模块 | 动力学模块 | 数据模块
在了解基本仿真系统的构成后,还是需要再回到仿真软件本身。只有在了解仿真软件的机理并清楚相应软件的缺陷之后,才能高效的对接各种测试需求以及针对性地开发相应功能。
以我个人的理解,一个完整的自动驾驶仿真软件从逻辑上包括静态环境模块,交通流模块 ,传感器模块,动力学模块,数据模块(包括场景模块)。针对每个模块都有一些亟需解决的关键仿真问题。
静态环境模块静态环境模块指构建、维护静态场景的模块。具体需要的静态元素需要同感知组进行对接,也可以结合具体的专家知识提取分析产品ODD。之后需要设计符合真实情况的场景元素并以合理的方法进行泛化。
这一模块的关键问题在于静态环境的真实度保障以及自动化构建大规模静态场景的方法两方面。
交通流模块对应于动态场景的概念,参考51VR公众号的总结,需要重点关注以下几种动态场景构建方式。每种构建方式都有一整套基础理论和实践手段,之后我们会一一展开。
- 典型交通行为建模,如启动、跟车、换道、超车、十字路口处理等。这部分主要可以使用DBM相关方法进行分析。
- 利用AI技术生成驾驶模型,在虚拟世界中设置AI车辆自动行驶,AI可以学习交通流的特性,尤其在行人仿真方面有比较好的成效。这部分主要可以使用模仿学习、强化学习来完成;
- 导入交通学中的交通流模型,并引入数学概率分布数学模型。这样的交通流模型包括宏观交通流模型和微观模型,相应的数学概率分布模型应该以高斯模型为主,这部分可以通过与SUMO/Vissim联合仿真完成,也可直接构建交通流模型。
将真人开车的数据导入交通流中,研究rare-events simulation,主要利用驾驶模拟器实现。
Agent-based traffic simulation
传感器模块传感器模块是连接外界环境和被测车辆的媒介。针对不同的被测对象,有不同的传感器模块使用方法。在进行决策规划系统测试时,可使用对象级传感器,由此可以避免传感器模型的不准确带来的大部分后续问题。对于需要原始仿真信息(如图像、点云)的被测系统,则需要基于实际产品情况精确标定传感器参数,如对于图像传感器标定位置外参和畸变系数等内参,对于激光雷达等传感器,标定线数、旋转速度等。
传感器建模是个处理难度很高的模块,目前有物理建模和统计建模两种典型的传感器建模方法。物理建模难度比较高,且需要大量的计算资源;统计建模方法始终存在真实度gap。如何弥补这两种模型的缺陷是需要深入讨论的问题。
一个可以借鉴的手段来自waymo,对于感知仿真的相关问题,它们似乎没有直接进行传感器建模,而是采用GAN的方式解决。如果必须要用到传感器建模,对于统计建模的方法,可以精心设计噪声参数并通过数据处理方法解决由真实程度带来的仿真结果差异。对于物理建模,则要看各仿真器的硬实力。但不管怎么样,首要的是处理真实程度的问题,其次是考虑计算资源的约束。
Surfel GAN
动力学模块这部分的重要性不再多提。它在传统车辆仿真工作中占有非常重要的地位,相关的理论和实践工作也已非常成熟。但不能因为待攻克的工程问题比较少就忽略它,相反,必须高度重视动力学仿真的结果,因为它的精确度可以直接影响仿真结果的可用程度。这部分的工作主要需考虑的是集成动力学仿真的方式,是内部支持还是通过与CarSim等进行联仿支持高精度动力学仿真?要不要考虑实时性问题?
总的来说,对于动力学仿真模块,要熟练掌握CarSim和TruckSim等动力学仿真软件和各种动力学模型,掌握联仿方法,动力学模型标定方法。另外,百度提供了一种基于数据的动力学建模方法,也有很高的实用价值。
数据管理模块本文指管理整个仿真数据pipline的模块,它的内涵覆盖范围很广,包括场景解析、仿真过程记录、过程回放、数据导出等等。每个具体功能都可以专门拿出一篇文章来谈,这部分也非常重要,但限于篇幅在此就不具体展开了。
2.3 本地仿真 | 大规模云仿真 | 稀有事件仿真
仿真可以降低时间成本、经济成本,提高测试的安全性。但是要保证自动驾驶系统的安全性,需要进行非常多的测试里程。即使采用场景测试的方法作为补充,但由于可能的场景参数较多以及部分参数具有连续性,因此很容易形成海量的测试场景。在这样的前提条件下,只用几个本地仿真系统的话,跑完这些场景的时间成本是不可接受的。能否合理解决这个问题,决定着仿真体系能不能发挥最大效能。
目前学术界/工业界有以下几个主流方案。其一是大规模云仿真,这也是工业界正在推动的主要路径,通过使用云资源进行并行计算,并在不同agent之间交换仿真结果以提高效率。另外一种由学术界重点推动的方法,则是借助场景的概念,通过设计一些策略缩少无风险里程,或者提高能对自动驾驶系统形成特定挑战的场景的生成效率,即通过“压力测试”提高仿真效率。
Sim Cloud of TAD
One Case of Stress Test
3、仿真评价
最后说说整个仿真体系中最容易被忽略的部分,基于仿真的评价。想象这样一个需求,自动驾驶系统更新了一个重要功能,相应的版本从V0.8更新到V0.9,现在需要进行回归测试以保证新的修改在解决新问题的同时,不对系统已经被验证过的能力造成影响。需要怎么做?
这时首要是要准备一个“标准场景库”,这个场景库也必须被精心设计,此处先不具体展开。考虑另外一个问题,如何保证系统过了这个场景库?用pass/fail的二元指标,或者违反交通规则的次数? 这种指标是有局限性的。最大的问题在于,由于仿真测试和实车测试结果的差异性,单纯的二元指标会催生大量的假阴性、假阳性结果,进而造成系统的安全性风险。因此我们需要建立一个更合理的评价体系,设计带有连续值属性的评价指标,通过评估“距离”来评估系统的安全性。
具体仿真评价指标的设计需要精确对接产品需求。不同的算法,不同的系统有自己的特定指标,这些可灵活发挥的点比较少,关键是对接好开发工程师的具体需求;面向第三方的评价体系则相对更具灵活性,可以设计面向安全性、舒适性、经济性等维度的具体指标。
总的来说,评价体系是必须精心设计的,因为它是评估迭代后的系统性能是否变好的基础。
4、主要挑战
在文章的最后,我们再集中谈谈目前仿真工作中遇到的几个挑战。
4.1 Reality Gap
Gap1:仿真对物理现实的表现是不充分的。举个典型例子,在针对感知系统进行测试时,是否需要保证渲染图像/点云和现实世界的高度一致性?由仿真合成的图像/点云等用于训练对应的自动驾驶系统是否能有效提高性能?
保持高度一致性需要非常高的成本。为了规避较高成本,目前也有一部分相关研究工作。典型的如百度的AADS(虚实结合)、谷歌的SurfelGAN(以GAN为代表的一系列工作)等。
Gap2:考虑所有相关的物理现象具有挑战性。举一些典型例子,简单车辆模型如果没有包含轮胎模型,在较高速度下如何考虑转向以及加减速等行为?如何建模随机过程(如信号噪声)并将这些模型作为一个整体集成到仿真中?如何将V2X仿真与物理地形仿真集成在一起?
解决这些问题,要开源节流。例如,感知渲染做不好,从工程的角度,可以考虑把仿真重心放在决策规划和控制上,而感知测试的重心可暂时放在回放型仿真上。或者仿真工程师可在已有的gap下,通过数据处理分析,以及一些交叉验证手段来覆盖掉gap。
总的来说,若系统在仿真环境和实际运行环境之间的表现差异太大,必须仔细分析造成差异的关键矛盾。如果该矛盾在短期内因为客观原因不能解决,则需果断调整重心。仿真非常有用,但不是测试过程的万能药,为了仿真而仿真是没什么意义的。
4.2 Complexity & Lack & Business
Complexity复杂性表征在三个方面。其一,自动驾驶软件本身的多样性;其二,单个仿真软件的功能复杂性;其三,针对特定系统和特定软件开发仿真接口的复杂性。
当前的自动驾驶仿真软件确实很多。VTD、Prescan、51Simone、PanoSim、GaiA、rfPro、CARLA、Airsim、Lgsvl、DeepDrive、Carsim、CarMaker;甚至Matlab/Simulink、GTA-5、Gazebo都可用于自动驾驶仿真。每个仿真软件都有自己的优缺点,如果面对具体测试需求不断切换要使用的模拟器,无疑会增加很多学习成本。此外,面向同一被测系统,针对不同自动驾驶仿真软件,往往需要开发不同的仿真接口,这也需要较高的时间成本。如此之多的仿真套件也不利于工程师日常维护,进而在开展工程级别的大规模仿真测试会有较多掣肘。
Lack
如果有一款足够完美的自动驾驶仿真软件是不是就一劳永逸了呢?
话虽如此,但实际情况没这么简单。从功能来说,目前很难说有一款公认的足够完美的自动驾驶仿真软件。大部分软件都还不能同时支持以下列举的全部功能:
- 由于可能破坏物理引擎的稳定性无法提供高于实时的模拟速度;
- 不支持高效的无GUI运行(headless execution)模式进而影响自动化测试等;
- 建模基于复杂多维真实交通行为的动态场景时需要较高数据成本以及专业知识;
- 构建大规模真实、异构静态场景时需要较高时间成本;
- 适配多种场景语言(或者说,将场景编码为场景语言)时,需要较高的时间成本;
- 不支持多agent联合仿真以及跨多台机器仿真会话有效分发;
- 不支持大规模场景(整个市区级)(此需求合理性有待讨论)。
Business不可否认,对有些自动驾驶仿真领域的深耕玩家而言,以上功能都已直接间接得开发成熟。但在实际进行研发时,还必须考虑软件使用的经济成本、所用数据安全性、仿真与基础架构的契合度(与数据闭环的契合度)。
因此部分机构还是会去独立开发完善一个仿真系统。此时,以上提到的相应功能开发也正是自动驾驶仿真工程师可能的部分日常工作。
4.3 Reproducibility
可复现性,某种角度上也叫仿真结果的确定性,包括两个方面,由仿真到现实的可复现性和仿真本身的可复现性。需要注意的是,前者是可复现性的重点和难点,需要通过精心处理Reality gap 解决,这里只是说说相对容易被忽略的后者。在实际测试过程中,只有在一定程度上保障了系统的可复现性,就可以知道对代码所做的更改是否修复了问题,进而有利于测试自动化和CI,规避假阴性和假阳性的结果。
MIL、SIL、HIL、VIL,无论是哪种仿真系统,仿真结果都可能存在一定噪声。表现在采用同一组场景,重复运行多次,评价指标值会出现一定的波动。自动驾驶系统作为CPS系统的一种,相应的仿真结果出现波动是正常的。由于波动出现的原因受众多较难追溯的因素影响(线程不稳定性、信息传输帧率、指标本身的高度非线性),因此需要精确建模噪声并定量分析的可能性较小。一种可行方法是通过多次运行实验,采用平均值等统计处理手段尝试定性解决这个问题。另外一种可行的方法则是通过设计模糊化、综合化的评价指标实现。
4.4 CI
在CI中集成仿真是大势所趋。但其会受到以下特性影响。
模拟器可靠性。CI的挑战之一是仿真软件本身的可靠性。在自动化中使用仿真软件时,可能有意外的崩溃、时间和同步问题。
接口稳定性。自动驾驶仿真软件接口的稳定性会对自动化过程产生重大影响,因为不一致的、不稳定的、脆弱的仿真软件接口可能会导致客户端应用程序出现故障。这里需要做大量的工程工作,来不断开发并维护仿真接口。
5、结语
自动驾驶仿真体系的搭建,下限很低,上限也很高。它在很多方面上决定着一个自动驾驶公司或部门能走多远。合理的完整的仿真体系能加速整个系统的开发和测试,提供正反馈。
目前已有很多知名公司和前辈分享了许多仿真相关的知识,这些知识令人受益匪浅,但由于每次分享时间有限,所以不太能展开更多,不易形成完整的系统。国内的51VR等于2019年参与出台了自动驾驶仿真蓝皮书,这本书为仿真的学习提供了系统学习路线,但受限于蓝皮书的性质,不易展开更多细节。