描述

本文会围绕多传感器融合感知这一任务,对融合方案及常见操作进行简述,文中大部分写的是本人的理解,少部分借用了他人的思想进行了分析总结。

多传感器融合方案

在自动驾驶领域,特斯拉和mobileye采用的是纯视觉技术路线,其他的厂商采用的都是多传感器融合技术路线。

多传感器融合,也称为传感器数据融合,是将来自多个传感器的数据进行组合,以提高所获得信息的准确性和可靠性的过程。在实际项目中,多传感器融合要集成来自不同传感器的数据,如相机、激光雷达和雷达,以创建更完整、更准确的环境表示。

相对于单一传感器的感知能力,多传感器融合有一系列优势。首先,它可以通过组合来自多个来源的信息来提高数据的准确性和可靠性。这有助于减少测量中的误差和不确定性。其次,多传感器融合可以提供更全面的环境覆盖,因为不同的传感器可能更适合不同的任务或条件。最后,多传感器融合可以增强系统的鲁棒性和弹性,因为即使一个或多个传感器出现故障或受损,它也可以继续工作。总的来说,多传感器融合是一种提高传感系统性能和能力的强大技术。

目前有三种融合方案:前融合、中融合、后融合

有一些文献综述对融合方案会做出很多分类,我也看过其中的一篇,自认为分类方式复杂化还是过于学术化和形式化。将所有融合方案简单分为前、中、后,易懂易记。当然了,除了前中后这么分,我们还要知道方案之间的区别,以下是我的简单概况。

前融合:在数据层面就执行融合操作

中融合:对感知算法过程中的部分数据、部分或全部特征,通过空间同步及时间同步等操作,进行的融合操作

后融合:不同传感器数据通过各自感知算法模块,对提取出的感知结果进行融合

有关特征融合方案分类的几个科普链接

科普:多传感器融合基础知识

额外多说一些,以上的链接上提到了一些方法:加权平均法、卡尔曼滤波法、贝叶斯估计、D-S证据推理等,我更倾向于把这些方法称为数据或特征处理方法,仅仅掌握这些,是解决不好自动驾驶领域的多传感器融合问题的。我们更应该掌握的是这些方法的算法原理,以期在实际使用中灵活运用它们的思想。

1.前融合

以激光雷达和视觉,两种数据源的数据融合为例。显然,两者数据存在诸多不同:1.两种数据的坐标系不同,由于厂商对激光雷达和相机制定的感知范围覆盖区域不同,两种传感器的安装位置是不同的。2.两种数据的数据结构不同,雷达点云稀疏且无序,相机像素稠密且有序,雷达点云深度信息良好,相机目标类别信息量更足。3.时间同步,两种传感器的调用周期不同,因此也会引起两种数据的时间戳并不完全同步。

常见的前融合方案,有将雷达点云信息映射到图像中,从而使图像包含了深度信息。也有将图像像素映射到点云坐标系下,从而为点云分割等操作提供先验语义信息。这些方案都有对应的论文,我会进行分析。

但是,前融合在实际量产中较少使用,原因可以说很多很多,但我认为实际上就是一点:车上算力不足。量产中的车,要考虑芯片成本问题,不可能要靠堆硬件来解决一些感知问题。前融合的方案策略,就注定了它要处理的数据量高于其他方案,融合策略较为复杂也增加了算力要求,而不同传感器的位置也一定程度会影响融合效果。

2.中融合

中融合是一种针对特征级别的融合方案,先从每个传感器提供的原始观测数据中提取代表性的特征,再对这些特征进行融合,得到总的特征向量;其中如何选择合适的特征进行融合是关键,常使用的特征包括边缘、方向、速度、形状等。

既然是对特征进行融合操作,就会面临观测坐标系统一的问题。例如,激光雷达提取出的点云聚类特征,视觉提取出的像素边缘特征,两种特征执行融合操作时,我们可以选择将图像边缘特征统一到雷达坐标系下,也可以选择将点云特征投射在图像坐标系下。除此之外,我们还可以将所有的特征统一到一个第三方坐标系下,这会为我们带来理解和算力上的便利。BEV视角,也就是我们这篇文章的主题,将特征全部统一在BEV下就是一个很好的方案,

3.后融合

后融合,各个传感器对目标进行单独的感知算法,输出带有各自传感器属性的感知结果。随后在搭建的融合算法模块,对这些感知结果进行决策化的融合操作。后融合方案是当前的主流方案。

目前,后融合在实际量产的应用较多。好处包括:不同传感器的感知模块不存在耦合关系,算法过程较为模块化,在开发过程中可以分别进行优化。另外,后融合的方案,可以接受欠数据源的运行模式,因此无论是开发过程中还是实际运行过程中,系统都较为安全冗余。还有一个我觉得是最大的好处,后融合所需的算力是非常小的。

当然缺点也显而易见。针对后融合的方案,算法能做到的工作是非常有限的。后融合感知的缺陷,我认为实际上可以归纳成单一传感器的信息不完备,导致了单一传感器的感知结论存在错误。

融合方案的实施及各自优缺点

“技术无优劣,方案也一样,只有合不合适”——绿竹巷人

使用何种融合方案,取决于感知任务、平台算力、下游需求等。如果硬要去抉择,我认为可以简单这么来说:留给感知的算力富裕,非实时任务,传感器种类丰富,使用前融合方案;单一传感器感知信息不足,感知结果存在明显漏检误检又无法给出准确置信度,存在融合必要性,使用特征级融合也就是中融合方案;以弥补感知能力为目的,传感器之间可以良好解耦,感知结果表征可以不同的情况下,使用后融合方案。

在融合方案具体的实施过程中,肯定要面临另外一个问题:上一次的融合结果是否要纳入计算?有研究者及开发者,称作无记忆融合框架及有记忆融合框架。理解起来很容易,如果是无记忆融合,上一次算出的融合结果,是不参与下一次融合操作的。换句话说,每次的融合结果,数据输入源都只有传感器而已。如果我们输入的传感器数据只是当前帧的数据时,无记忆融合框架输出的就是对应当前时间的感知结果。如果我们还需要历史帧的感知结果时,就要用到有记忆的融合框架。上一次算出的融合结果,参与到下一次融合操作中,也就是t1帧的融合操作数据输入源,是t1时刻的传感器数据及t0时刻的感知结果。不同于一些文章列出的有记忆框架图,这里我认为其实还有一种方式,可以达到感知结果“有记忆”的效果:t1帧的融合操作数据源,除了t1帧的传感器数据外,并不包括t0时刻的感知结果,而是包含t0时刻的传感器数据。这样的好处时,不用对t0时刻的感知结果进行预测或分析,而是直接从全部数据进行新的一次感知计算,有可能在数据层面就剔除了噪声信息。当然了,这样做的方式也有缺点,要求该传感器数据信息较小,显然相机不在可应用此方法的传感器中,我们不可能花费空间去记住历史帧的图像,这对算法开销太大了。

针对融合操作的触发机制,也会有很多种选择:单一传感器触发、多传感器触发、固定频率触发。挺好理解,单一传感器触发需要设定一个传感器为触发传感器,往往这个传感器的周期是更长的,只有在这个传感器的数据来到时,才进行融合操作;多传感器触发,任何一个传感器数据到来时,都要进行融合操作;固定频率,融合操作有设定的融合周期,到达融合周期后取传感器最新的数据来执行融合操作。个人感觉,固定频率触发不依赖于任何一方,是有利于系统稳定的。

融合步骤

对于融合算法的步骤,我参考了一篇知乎文章ADAS多传感器后融合(下),他总结的很好,我把观点写在这里。由于传感器种类不同,融合操作还要取决于具体情况,这里只列出基本步骤

目标起始:新测量数据成为一个跟踪目标。有这样几种思路:逻辑法,在N帧中如果有M帧观测到该目标就起始。一般为2/3逻辑,3帧中有2帧观测到就起始;SPRT:建模目标存在的似然函数P0和不存在的似然函数P1,计算二者的比值,超过门限就起始;IPAD算法:计算目标的存在概率,可以用来做航迹的起始以及终结。主要思想为根据预测状态的位置信息和实际传感器的测量信息计算偏差,动态计算测量落入关联门限的概率,进而迭代增加或减少存在的概率,在概率超过一定阈值时进行起始。

目标合并:多个单传感器的目标,融合成融合目标

目标降级:融合目标,降级为单传感器目标

目标删除:从维护的track目标中删除

目标上报:融合结果报给下游模块

每一个步骤都要精心设计来实现,这里先介绍这些,以后再来补充

融合方案中需要的常见操作

时间对齐

其实离线开发融合算法时,才需要时间对齐操作。需要我们从录制的数据中,提取出不同传感器每帧数据的时间戳,对齐后输入融合算法完成开发操作。开发中使用的时间戳,一般采用的是传感器的采集时间,而不是soc端接收时间。因为数据在空中飞的时间考虑进去的话,细小的时间差距也可能轻微影响感知结果的。

而在实时计算中,输入融合算法的数据时间比较好操作。单一传感器触发的话,周期长的传感器1是触发传感器,记忆周期较短的传感器2数据,融合时输入传感器1的当前数据,及传感器2的最新数据即可。多传感器触发不涉及时间对齐问题。固定频率触发,取每一个传感器最新采集的数据,判断其采集时间是否与当前时间的差距。差距小于一定范围可以输入,大于一定范围内可以自定义处理,是置为空指针认为新数据未到,或是仍然输入,均可。

空间对齐

根据机械结构或标定结果得到的传感器外参,对传感器数据进行坐标变换后,可以实现空间对齐。以前写了很多坐标变换的文章,可以去参考

轨迹预测

对于融合感知算法来说,轨迹预测不是很关键,算法的输入大部分是车辆位姿,车辆的轨迹预测不归在感知任务中。

我看了一些别人的分析文章,会提到一些有关于速度和角速度的模型(匀速模型CV、匀加速模型CA、恒定速度与转速模型CTRV、恒定加速度和角加速度模型CTRA),用模型中的参数对目标进行滤波。在这一部分,我了解的不多也没有使用过这些模型,以后来补充。

###目标跟踪

对于感知算法,我们识别到的目标是对应当前车辆位姿的。如果是非记忆的融合策略,显然我们并不需要对目标进行跟踪,每一帧都有对应的目标信息。但是,一旦我们使用了带记忆的融合策略,或者是在非记忆融合框架内需要目标的连贯信息时,就需要对目标进行跟踪预测,判断它在前后两帧的变化。简单来说,就是预测前一帧的物体在当前帧的位置,从而与这一帧的传感器信息或感知结果,进行关联计算。

目标跟踪会涉及到数据关联的问题。数据关联算法是一种用于在数据集中查找相关数据的算法,目标是找到与给定数据相关的其他数据,以便可以使用这些数据来提供更好的结果或更准确的预测。目标检测中的数据关联算法主要用于将不同帧之间的目标进行匹配,以便跟踪目标的运动轨迹。常见的数据关联算法包括以下几种:

- 卡尔曼滤波器(Kalman Filter):用于估计目标的状态和位置,并预测目标的下一个位置。它可以通过将当前观测值和先前的状态估计值进行加权平均来计算目标的最终位置。
- 基于匈牙利算法的多目标跟踪(Multiple Object Tracking with Hungarian Algorithm):用于将当前帧中的目标与前一帧中的目标进行匹配。它通过计算两个目标之间的距离来确定它们是否匹配,并使用匈牙利算法来解决分配问题。
- 基于卡尔曼滤波器和匈牙利算法的多目标跟踪(Multiple Object Tracking with Kalman Filter and Hungarian Algorithm):将卡尔曼滤波器和匈牙利算法结合使用,以便更准确地跟踪目标的位置和运动轨迹。
- 基于深度学习的目标跟踪(Deep Learning-based Object Tracking):使用深度学习模型来学习目标的特征,并使用这些特征来跟踪目标。这种方法通常需要大量的标注数据和计算资源。

除了以上几种算法,还有几种涉及到概率的经典数据关联算法:最近邻域算法、概率数据关联算法(PDA)、联合概率数据关联算法(JPDA)。一句话来带过:这三种算法都设定了一个门限(可以理解为特定的阈值或者条件),在这个门限内,选取距离预测值最近的测量值作为结果的,就是最近邻域算法。落在门限内的全部测量值,进行概率加权求和得到的值作为结果的,就是PDA。前两个都是用于单传感器的目标跟踪,在PDA基础上考虑多个传感器的运动轨迹,计算联合概率密度的,就是JPDA。

参考文献

https://zhuanlan.zhihu.com/p/474211508
https://www.cnblogs.com/ccpang/p/11350656.html