还是道歉啊 有重复勿怪自己学习省事哦
最近想到公司做的雷视融合,而且看了好多最近的各种展会 写一下融合相关的
多模态感知融合是自动驾驶的基础任务。但是,由于原始数据噪声大、信息利用率低以及多模态传感器未对齐等这些原因,要想实现一个好的性能也并非易事。那么在这篇调研报告里面,总结了多篇论文中Lidar和camera的多模态融合的一些概念方法。
为啥需要多模态融合
在复杂的驾驶环境中,单一的传感器信息不足以有效的处理场景的变化。比如在极端恶劣天气中(大暴雨、沙尘暴)能见度较低的情况下,此时只依靠camera的所反馈的RGB图像完全没有办法对环境的变化做出反馈。而在普通的道路环境中,如红绿灯、色锥等,只依靠Lidar的信息也是无法进行有效识别的,也需要结合camera所带来的RGB信息,才能有效的处理。因此,在自动驾驶感知场景的任务中,不同模态信息的互补会更加的重要。
有什么特征的融合的方法
多模态融合的能用的场景有很多,比如2D/3D的目标检测、语义分割,还有Tracking任务。在这些任务中,重中之中就是模态之间的信息交互融合的工作。从传感器的的信息获取越来越高效精确,成本被压缩得越来越低,自主驾驶中感知任务中的多模态融合方法得到了快速发展的机遇。所以,紧接着来的问题就是,我们到底应该怎么做才能使得多模态融合的工作更加的丝滑和高效呢?
融合的类型
根据多篇论文的统计分析结果,大多数方法遵循将其分为早期(前)融合、特征融合和后融合三大类的传统融合规则。重点关注深度学习模型中融合特征的阶段,无论是数据级、特征级还是建议级。首先,这种分类法没有明确定义每个级别的特征表示。其次,我们一般的方法是对激光雷达和相机的数据信息是开两个分支,在模型的处理过程中两个模态的分支始终是保持对称的,从而使得得两个模态的信息可以在同一特征等级下进行交互。综上所述,传统的分类法可能是直观的,但对最近出现的越来越多的多模态融合的内容,按照传统的理解合分类方式,不足以应付!
两大类和四小类融合方式
最新的融合任务为自主驾驶感知任务提出了一些创新的多模式融合方法。总的来说包括了两大类:即强融合和弱融合,以及强融合中的四个小类,即早期(前)融合、深度(特征)融合、后期(后)融合、不对称融合(这个表示两个分支的特征进行相互决策)
各种任务以及数据集的介绍
一般来说多模态感知融合在自动驾驶环境中的任务包括了经典的目标检测、语义分割、深度估计和深度预测这类的工作品。其实常见的任务也主要也还是语义分割和目标检测。
目标检测
其实常见的无人驾驶的场景的目标检测有几个类型(汽车、行人、自行车、交通灯、交通指示牌、路锥、减速带)这些类型的物体。一般来说,目标检测使用由参数表示的矩形或长方体来紧密绑定预定义类别的实例,例如汽车或行人,这需要在定位和分类方面都表现出色。由于缺乏深度通道,2D对象检测通常简单地表示为(x,y,h,w,c),而3D对象检测边界框通常会比2D的标注信息多了深度和方向两个维度的信息,表示为(x,y,z,h,w,l,θ,c)。
语义分割
除目标检测外,语义分割就是自动驾驶感知的另一个山头了。例如,我们会检测环境中的背景和前景目标,并加以区分,使用语义分割了解物体所在的区域以及区域的细节在自动驾驶任务中也是相当重要的。其次,一些车道线的检测方法还使用多类语义分割的mask来表示道路上的不同车道。
语义分割的本质是将输入数据的基本成分(如像素和三维点)聚类到包含特定语义信息的不同区域中去。具体来说,语义分割是指给定一组数据,例如图像像素DI={d1,d2,…,dn}或激光雷达3D点云DL={d1,d2,…,dn},以及一组预定义的候选标签Y={ y1,y2,y3,…,yk},我们使用模型为每个像素或点DI分配k个语义标签并将其放置在一个区域的任务。(其实这里说得有点复杂和晦涩,语义分割其实就当成是像像素级别的分类问题就行了,就是这么简单)
如果大家觉得还是比较抽象的话,可以看看下面三幅图像,这里面具体交代了不同场景下的的任务,2D/3D的目标检测和语义分割任务。
基于多模态传感器融合的自主驾驶感知模型。
数据集
自动驾驶几个常见的老朋友,Kitti、Waymo、NuScenes,这些都是常见的带有3D信息的自动驾驶场景的数据集,基本上我们的一些多模态融合的任务也是围绕着这三个数据集进行刷榜的。具体的数据集的组成我这里就不交代了,大家可以去网站看看数据集的分布,其实要重点留意的是评价指标,这个其实非常重要,关系道整个优化的方向,所以大家要注意一点啦!其次了解数据集的时候(特别是新手,要注意数据的格式)因为Lidar的数据与以往的RGB图像的数据是不同的,所以要小心设计Lidar的分支,保护数据输入。
数据集一览表
融合模式
这是本次宵夜讨论的高潮,就是关于怎么去融合这两种不同模态(类型)的数据呢?按现在的融合模态的发展模式来说是,一共是分为两大类四小类的模式,什么是两大类,什么是四小类呢?我们继续看下去!
Early Fusion
有的伙伴会说,直接把数据的格式统一,合并起来输入不就行了吗?但是现阶段的Early Fusion并不是这么暴力。
Early Fusion一般是激光雷达数据和Image图像进行融合或者是激光雷达数据与Image的特征进行融合,两种方式。如下图所展示的情况LiDAR这个分支与Image信息的早期信息交互的过程。这种方式在reflectance, voxelized tensor, front-view/ range-view/ BEV,pseudo-point clouds都可以使用。尽管Image的特征在各个阶段都不同,但是都与LiDAR的信息高度相关。所以LiDAR信息+Image特征融合也是可以有效进行融合的。因为LiDAR的分支没有经过抽象化的特征提取阶段,所以这一阶段的数据仍具有可解释性,因此,LiDAR的数据表示依然可以进行直观的可视化。
激光雷达前融合
从图像的角度上看,严格意义上对数据级别图片的定义只能是包含RGB或Gray等数据。其实这种定义方式缺乏通用性和合理性,也比较局限。所以我们格局要大一点,数据级别可以不仅仅是图像,也可以是特征图。与传统的早期融合定义相比,文章将相机数据的定义不仅仅局限在image上,也将特征信息纳入其中。有意识的对特征信息进行选择融合,得到一个语义连接更加紧密的输入数据,之后将这个数据集进行放入网络进行特征提取。
无论是直接将数据类型转化一致,然后concat成一体,还是LiDAR信息与Image的特征信息进行融合,还是说两者先进行特征的语义连接后成为输入,这些都是Early Fusion的操作。其实这样的输入一体化操作的好处自然是结构简便、容易部署。通过语义的提前交互,也解决了传统早期融合,模态之间语义信息交互不充分的问题。所以一定程度上,选择Early Fusion也是一个不错的选择。
Deep-fusion
深度特征融合的方法其实也很常见。如下图
深度特征融合
我们可以很直接清晰的看到LiDAR点图分支和Images分支在经过各自的特征提取器后,得到高维度的特征图,并通过一系列下游模块对两个分支模态进行融合。与其他的融合方式不同,深度融合有时候也会通过级联的方式对高级特征和原始特征进行融合,同时利用高级的特征信息和含有丰富物理信息的原始特征。
Late-fusion
后融合,也称为目标对象级别融合,表示在每个模态中融合结果的方法。一些后融合方法其实是同时利用了LiDAR点云分支和相机图像分支的输出,并通过两种模式的结果进行最终预测。后期融合可以看作是一种利用多模态信息对最终方案进行优化的集成方法。
后融合
Asymmetry-fusion
除了早融合、深度融合和后融合之外,还有一些方法会对不同的分支赋予不同的特权,因此我们将融合来自一个分支的对象级信息,而来自其他分支的数据级或功能级信息的方法定义为不对称融合。与其他强融合方法看似平等地对待两个分支不同,不对称融合方法至少有一个分支占主导地位,其他分支只是提供辅助信息来完成最后的任务。下图就是一个经典的例子。与后期融合相比,虽然它们提取特征的过程是相似的,但不对称融合只有来自一个分支的一个提议,而后融合会融合所有的分支信息。
非对称融合
很显然这类型的融合方法也是合理的,因为卷积神经网络对摄像机数据具有良好的性能,它可以有效的过滤出在点云数据中没有实际语义信息的无用点,在融合的时候就可以一定程度上避免噪声点的干扰。不仅如此,还有一些作品尝试跳出常规,使用激光雷达骨干来指导2D多视角的数据进行融合,通过信息的交互指导实现更高的准确度。
Weak-Fusion
与强融合不同,弱融合方法不直接从多模态分支融合(数据/特征/对象),而是以其他方式操作数据。基于弱融合的方法通常使用基于规则的方法,利用一种模式中的数据作为监督信号,以指导另一种模式的交互。下图展示了弱融合模式的基本框架。弱融合不同于上述不对称融合融合图像特征的方法,它直接将选中的原始LiDAR信息输入到LiDAR主干中,过程中不会直接与Image的分支主干进行特征的交互,会通过一些弱连接的方式(比如loss函数)等方式进行最后的信息融合。与之前的强融合的方法比,分支的信息交互是最少的,但是同时也能够避免在交互过程中彼此的信息不对称带来的信息干扰,又或者是避免了因为单一分支的质量不过关,而影响整理整体的融合推理。
弱融合
Other-Fusion
有些工作不能简单地定义为上述任何一种融合,因为它们在整个模型框架中拥有不止一种融合方法。造融合怪是我们这些盐究圆天生的技能,你说A有xxx好处,B有xxx好处,那我A+B不就是直接赢麻了吗?但是事实上,很多情况都不能有效的把方法缝合进去。如深度融合和后融合方案的相互结合,或者将前融合和深度融合结合在一起。这些方法在模型设计上存在冗余问题,并不是融合模块的主流方法,即没有取得A+B的效果,反而极大的牺牲了推理时间已经增大了算法的复杂度。一些实验结果
2Dkitti上的结果
3Dkitti上的结果
上面的实验结果,大家可以简单的看一下就行
多模态感知融合的未来
近年来,自动驾驶感知任务的多模态融合方法取得了快速进展,从更高级的特征表示到更复杂的深度学习模型。然而,仍有一些更开放的问题有待解决。在此,我们总结了今后需要做的一些关键和必要的工作。
如何做更先进的融合方法
其实当前阻碍模态融合的最大拦路虎有两只。
A:融合模型不对齐
B:信息丢失
相机和激光雷达的内在和外在是截然不同的。两种方式的数据都需要在新的坐标系统下重新组织。
传统的早期和深度融合方法利用外部校准矩阵将所有激光雷达点直接投影到相应的像素上,或反之亦然。因为数据样本会存在噪声,在噪声的干扰下,这种对齐的方式,很显然是没有办法做到精准对齐的。无论怎样,想要单靠机械的手段消除机器带来的误差,不仅难度大,还要付出比较大的成本。所以我们可以看到现在的方法,除了这种严格的转化,一一对应之外,还可以利用一些周围信息作为补充以使得融合工作可以获得更好的性能。
此外,在输入和特征空间的转换过程中不可避免会还存在一定的信息丢失。因为在特征提取的降维过程中投影会不可避免地导致大量的信息丢失。
因此,通过将两个模态数据映射到另一种专门用于融合的高维表示,可以在未来的工作中有效地利用原始数据,减少信息损失。还有一些方法是采用直接的串联数据,通过赋权值的方式进行融合。但是当前的方案依旧是不太成熟,只通过像素之间的赋权值,相加这些简单的操作可能无法融合分布差异较大的数据,因此,很难弥合两种模式之间的语义差距。一些工作试图使用更精细的级联结构来融合数据并提高性能。在未来的研究中,双线性映射等机制可以融合不同特征的特征。
合理利用多个模态的信息
大多数框架可能只利用了有限的信息,没有精心设计进一步的辅助任务来进一步了解驾驶场景。
我们当前做的内容,会把语义分割、目标检测、车道线检测这些任务单独讨论,割裂这些任务。之后再把不同的模型组合到一起提供服务,其实这显然是冗余的工作。所以我们为啥不做一个多任务框架,一次性覆盖不同的任务呢?在自动驾驶场景中,许多具有显式语义信息的下游任务可以大大提高目标检测任务的性能。例如,车道检测可以直观地为车道间车辆的检测提供额外的帮助,同时语义分割结果可以提高目标检测性能。
因此,未来的研究可以同时通过对车道、交通灯、标志等下游任务进行同时的检测,构建大一统的自动驾驶任务,辅助感知任务的执行。
与此同时,其实时序信息这类型的信息在自动驾驶感知任务里面也十分的重要。像BEVFormer就使用了RNN对时序信息进行整合,最后使得整体任务可以有效的生成BEV的视图。时间序列信息包含了序列化的监督信号,可以提供比单一帧的方法更稳定的结果,也更加适应自动驾驶的整体任务需求。
未来的研究可以集中在如何利用多模态数据进行自监督学习,(包括预训练、微调或对比学习)。通过实现这些最先进的机制,融合模型将导致对数据的更深入的理解,并取得更好的结果。大家看到MAE这么好的效果,其实如果我们的感知任务也引入这套方法进行实验,我相信一定会取得更可喜的成绩。
感知传感器的内在问题
区域的偏差或者分辨率上的不一致,与传感器设备有密不可分的关系。这些意想不到的问题严重阻碍了自动驾驶深度学习模型的大规模训练和实现,数据的质量以及数据的收集方案都是当前阻碍自动驾驶感知任务再发展的一大问题点。
在自动驾驶感知场景中,不同传感器提取的原始数据具有严重的领域相关特征。不同的相机系统有不同的光学特性,成像原理也不一致。更重要的是,数据本身可能是有领域差异的,如天气、季节或位置,即使它是由相同的传感器捕获的,他们所呈现出来的影像也有着很大的出入。由于这种变化,检测模型不能很好地适应新的场景。这种差异会导致泛化失败,导致大规模数据集的收集和原始训练数据的可重用性下降。因此,如何消除领域偏差,实现不同数据源的自适应集成也会是今后研究的关键。
来自不同模式的传感器通常具有不同的分辨率。例如,激光雷达的空间密度明显低于图像。无论采用哪种投影方法,都没有办法找到一一对应关系,所以常规的操作会剔除一些信息。无论是由于特征向量的分辨率不同还是原始信息的不平衡,都可能会导致弱化了一边模态分支的信息量,或者说是存在感。变成以某一特定模态的数据为主,因此,未来的工作可以探索一种与不同空间分辨率的传感器兼容的数据方式。