传感器融合是汽车无人驾驶技术的关键之一。
总的来说,自动驾驶的四大核心技术,分别是环境感知、精确定位、路径规划、线控执行。由于环境感知和精确定位都需应用多个传感器,传感器融合技术正是归类于这两大核心技术的。
举个例子,感知是通过摄像头、LiDAR和RADAR来精确地对障碍物的类别、位置和速度进行检测。而另一方面,定位是指将GPS、LiDAR和摄像头数据融合在一起,从而精准获得厘米级精度的定位。
本文将重点介绍环境感知的过程,尤其是LiDAR与摄像头之间的数据融合。
01LiDAR与摄像头融合
摄像头— 2D传感器
众所周知,摄像头可作为汽车传感器之一,用于输出边界框、车道线位置、交通信号灯和路标状态以及其他相关信息。我们必须明确一点是:摄像头是2D传感器!
尽管摄像头技术存在局限性,但可以通过拍摄图像、机器学习和深度学习算法来获得我们想要的结果。
自动驾驶汽车中的计算机视觉应用
LiDAR — 3D传感器
LiDAR是指激光探测与测量。它是一个可以输出一组具有(X,Y,Z)坐标的点云数据的3D传感器。同时,LiDAR可以对3D数据执行许多应用程序,包括运行机器学习模型和神经网络。下图展示了一个输出示例。
LiDAR障碍物检测
如何融合3D和2D数据?
那么,如何将处于不同空间维度中的数据进行融合呢?
在传感器融合中通常可能涉及两个过程:
前期融合-原始数据融合
后期融合-结果融合
前期融合是关于原始数据的融合。例如,我们可以将 3D LiDAR点云投影到2D图像上, 然后检查点云是否属于2D边界框。
前期融合展示如下图:
前期的LiDAR —相机融合
后期融合是指对独立检测的结果进行融合。例如,我们可以将摄像头的2D边界框投影到3D边界框,然后将这些边界框与LiDAR检测过程中获得的边界框进行融合。
后期LiDAR —相机融合
注意:3D IOU匹配是通过3D并集寻找交点的过程来实现的。为方便理解,我在2D摄像机图像上显示了它的完成情况,但实际这是3D场景所中发生的3D融合过程。
现在,我们知道了两种在LiDAR传感器和相机之间融合数据的方法。但是还需要解决的问题是障碍物关联和追踪。
02障碍物追踪
在牛喀网其他文章中曾详细介绍了一种在两帧之间通过匈牙利算法和卡尔曼过滤器对对象进行关联的技术。如下图:
在上图中,我们一边追踪边界框的位置,一边使用IOU作为指标。同时,我们还可以通过深度卷积功能来确保边界框中对象的同一性。此过程命名为SORT,或Deep SORT(如使用卷积功能)。
此过程在案例条件下效果呈现十分出色,除了这个方法,还有另一种适用方法:特征追踪。
03特征追踪
在特征追踪中,我们直接追踪特征,而非边界框。与前期和后期融合类似,我们也将进行前期和后期追踪。
前期追踪是指追踪图像中的特征。
后期追踪是指追踪检测到的边界框。
结果如下:
2帧之间的特征追踪
特征追踪的工作机制
这里的基本理念是在图像中定位和追踪关键点。关键点可以是角、边、渐变或特定的像素变化。
下图中,我们可以清楚地看到一条线、一个角和一个椭圆。所有这些都是通过测量相邻的暗像素和亮像素之间的对比度来完成的。
线/角/椭圆关键点
找到边和角
我们通过以下三步骤来检测和追踪关键点:
检测器
描述符
匹配
检测器
检测器主要用于检测图像中某个角点或边缘的具体像素。其算法有很多种,以下仅为部分示例:
Harris角点探测-1988年
SIFT-1996年
SURF-2006年
FAST-2006年
其他相关算法还包括:BRISK、BRIEF、FREAK、KAZE、ORB和Shi-Tomasi。
以上所有算法的建立都基于相同的目标:快速找到关键点。一些技术对于光照下的变化比较敏感,一些着重于更快的计算速度,而另一些诸如Harris的技术注重角点检测。
输出结果如下:
图像
角点检测
综上:关键点(有时也叫包括兴趣点或显着点)检测器是一种算法,可根据函数的局部最大值从图像中选择点(例如我们在Harris探测中看到的“角点”度量)。
描述符
在使用检测器找到了关键点(角点和边缘)后,我们可以通过描述符将它们与图像进行匹配。
为此,我们需要查看给定关键点周围的像斑。可以通过比较原始像素值或者方向梯度直方图(HOG)来完成查看。
应用最广泛的描述(和检测)方法是之前已介绍过的SIFT。
SIFT与HOG属于同一系列。
以下是其工作原理的概述。
1. 检测关键点
2. 选择每个关键点周围的一个像斑
3. 通过计算方向和大小来获得方向梯度直方图(HOG)。
4. 通过这里的直方图,我们可以在两帧之间进行比较。
结果
这是检测器/描述符的结果-我们得到了关键点和方向。
描述符的应用
综上:描述符是数值的矢量表达,它用于描述关键点周围的像斑。描述符相关的方法有很多,包括比较原始像素值,甚至更为复杂的方法(如方向梯度直方图HOG)。
匹配器
如上所述,我们得出结论:描述符比单个像素值更有利于在两帧之间进行比较。
我们使用什么度量来匹配描述符?
我们有两个直方图或代表特征的矢量。
随后,需要使用损失函数来确定这些矢量相似或不同之处。可以通过平方差总和(SSD)来获取数值并将其设置为阈值。对于一组检测器和描述符,一些错误干扰的存在并非坏事。
我们还可以使用最邻近匹配器,甚至可以使用蛮力匹配。
最常用和最有效的技术之一是函数链接型神经网络(FLANN)。
那么我们需要注意什么呢?
以下示例所展示的就是我们需要注意的方面:
这些描述符的特征非常相似,而且帧t-1中的描述符可能导致不正确的匹配。为解决此问题,可以使用SSD比率之类的过滤技术。
04结论
现在,大家应该对LiDAR和摄像头之间的传感器融合过程有了全面了解。
让我们总结一下所学知识:
• 传感器融合过程的目的是将来自不同传感器(这里主要用的传感器是LiDAR和摄像头)的数据进行融合。
可能存在前期或后期融合--在前期融合中,我们要将3D点云投影到2D图像,而在后期融合中,我们需要将2D边界框投影到2D空间中,以便进行数据融合。
• 追踪也是传感器融合过程的重要组成部分--可能存在后期追踪(主要为边界框追踪)或后期追踪(主要为像素追踪)。
对于前期追踪,我们通过将检测器、描述符和匹配器进行结合来实现帧到帧的关联。其中,检测器用于查找关键点,描述符用来对其进行编码,匹配器用来判断两帧之间是否相似。
总结完毕!
摄像头和LiDAR之间的传感器融合和追踪所需要的步骤就是这些!然而真正实施起来并非易事,而且很多细节我们这里也未提及,比如“如何在图像中投影点云?”或“如何确保匹配的有效性”等。