无人驾驶中视觉和雷达多传感器如何融合？
感谢商汤学术 2022/06/22 带来的基于BEV环视感知直播课程，借助这次机会，总结了我前段时间的工作，主要内容如下： 1. FOV和BEV的常用方案，对两种视角在视觉检测技术与原理上进行对比，并总结两者的优缺点； 2. 两视角下的融合方案进行了总结：尤其是在当前学术界较为“冷门”的毫米波雷达(Radar) 与“热门”的激光雷达(lidar) 的融合方案进行对比，不同于激光雷达，编者提出了自认为较为合适的针对于Radar融合方案。 编者在本领域的研究不深、对工业界的布局更是了解甚少，仅作为自己学习总结和知识分享，如有不妥和错误，烦请指出，谢谢~ FOV作为一种最接近人类的视角，拥有悠久的历史，如今的2D\3D object detection皆从FOV视角做起，感官上来说，FOV视角能够提供丰富的纹理信息、深度信息，同时能够满足常用的目标检测视角需求如口罩检测、人脸识别等任务，另一方面，FOV的数据信息易于收集标注如imagenet、coco等。但是，FOV的信息也有一些缺点：遮挡问题，尺度问题(不同的物体在不同深度下尺度不同)、难以与其他模态融合(Lidar Radar等适合于BEV视角)等。 这里把技术方案分为两个部分，一方面，简要介绍纯视觉检测方法，另一方面，重点讲解FOV视角下的融合技术，分为lidar+camera与radar+camera两类，两类在融合技术方面相似度很高，许多Radar的融合方法都是启发自Lidar融合方法。 这里不过多介绍，主要分为one-stage, two-stage, anchor-based, anchor-free。 除此之外，3D检测领域具有一些代表性的方法： 1. 改进的2D检测方法：FCOS3D 论文作者在FCOS基础上，对Reg分支进行部分修改，使其能够回归centerpoint的同时，加入其他指标：中心偏移、深度、3D bbox大小等，实现了将2D检测器用于3D检测器的跨越。除此之外，包括YOLO3D等工作，将传统的2D detector经过小部分修改直接用于3D检测的方法，虽然修改取得了一定成效，但是图像本身缺乏精准的深度信息，加之结构并没有较之前的2D检测加入一定的先验结构，导致效果一般。  由公式可知，深度信息对于我们估算目标的位置非常重要，已知像素坐标和相机内参，我们还需要知道深度才能确定目标的位置，因此深度信息对于3D目标检测来说非常关键。   获取深度信息也成为3D目标检测的关键任务：解决方法主要分为： 一训练专门的backbone编码深度信息但是这种方法并不准确 二将深度信息处理成pseudo-lidar作为点云信息 三是通过BEV方式学习BEV特征到图像的映射，避免直接预测深度信息带来的误差损失。 这里介绍第二种学习方式，一篇论文名为”Pseudo-LiDAR from Visual Depth Estimation“，将立体或双目采集的深度信息或者单目深度估计作为深度信息并处理为伪激光点云，后利用基于点云的检测头进行3D目标检测。  CenterNet是基于锚点的检测方法，这种基于锚点的检测方式，不仅能够回归目标的2D属性，对于depth,orientation等3D属性也能够进行预测，因此这种方法也能够用于人体姿态识别，3D目标检测等。 FOV视角的融合方法，主要分为：lidar+camera 与 radar+camera两种。 作者认为，FOV to BEV方法深度信息不准确会导致融合效果不佳，在FOV检测上纯点云检测的稀疏性导致了点云的误识别问题和分类效果不佳问题，为解决纯激光雷达点云存在的纹理信息缺少等问题，以PointPainting为首的融合方法将图像分割结果融入点云图像，丰富点云语义，提高了检测性能。 作者认为，雷达点云主要存在以下问题：1）稀疏性（2）无序性（3）冗余性，这里通过在BEV视角中初次进行region proposal后投影到激光雷达FV与图像FV层进行目标的ROI Pooling，再通过deep fusion融合特征，最后进行3D回归和分类。  在 RGB 图像上运行的 2D detector，产生的2D bbox用于界定3D视锥包含前景目标点云。然后基于这些视锥区域中的 3D 点云（centerfusion的灵感来源于此），使用PointNet++ 网络实现 3D实例分割并随后实现3D 边界框估计。   BEV特征具有以下优点：1. 视角特性具有天然的优势对于多传感器融合，方便下游多任务共享feature。2. 不同物体在BEV视角下没有变形问题，能够使模型集中于解决类内方差问题。3. 能够融合多个视角解决遮挡问题和物体重叠问题。但是，BEV特征也有一些问题，例如grid的大小影响检测的细粒度，并且存在大量背景的信息存储冗余，因为BEV存储了全局的语义信息。 可以看到，下图中BEV检测的方法已经名列前茅，我猜测：一方面是由于BEV特征近期大火，学术界对于BEV的研究导致了最近的模型偏向于BEV，另一方面可能BEV特征更比FOV适合于自动驾驶场景下的3D目标检测。  作者仿照DETR的方法，使用900个object  queries作为query，途径6个decoder完成注意力建模，在最后通过set-prediction方式预测目标的3D属性，作者的创新点在decoder中的"object queries refinement"，也就是将queries用来预测queries对应的3D位置，然后通过相机与点云的转换矩阵转换为2D位置并通过双线性插值提取局部特征add到raw queries中作为下一个decoder block的输入，总结来说就是通过queries隐式融合图像特征，进行一种离散的BEV特征构建并进行预测。 但是这种方法对于大目标检测并不好，其中之一就是只通过F.grid_sample()提取局部的图像信息，缺乏全局的语义信息。 作者通过初始化一个HxWxC的规则、显式BEV queries作为queries。同时，加入了上一时刻的时序信息，当前时刻的空间信息。两个主要创新点模块伪：TSA和SCA，也就是时间注意力和空间注意力。具体来说，每一个时刻对上一时刻的BEV queries做deformable式的局部注意力，同时每一个grid划分为多个高度，同一方格的多个高度的方格对不同图像做空间局部注意力，最后生成原BEV queries大小的BEV特征作为下一帧的输入，同时作为特征图用于下游任务为地图分割和目标检测。 其下游任务：3D检测、地图分割：分别使用deformable-detr和panoptic-segformer作为检测头。 编者认为，这种BEV feature目前只用于单模态的信息，对于如何融合多种模态（例如里程计信息、GPS信息），尤其是在引入Radar等稀疏点云时，如何融入到BEV中，第二，如何在检测精度和grid大小之间做衡量也是一个问题，再者，BEV特征的引入限制了最大的检测距离，在高速公路场景，检测远处目标非常重要，如何权衡BEV的大小与检测距离也是一个需要考虑的问题。  作者考虑了如下问题：1. lidar本身特征稀疏尤其是远处的特征稀疏性会导致检测性能下降问题。2. 图像缺乏空间信息，难以直接用于3D检测这种具有空间信息需求的任务。3. 无论是lidar-to-camera导致的空间位置损失问题还是camera-to-lidar导致的语义特征丢失问题，传统的融合方法都难以兼顾空间和纹理特征的需求。 基于以上问题，作者提出了Transfusion：首先，两类特征分别用各自的通用backbone提取特征信息，后LidarBEV通过image guidance（图像特征引导初始化queries）使queries带有图像信息，加入一定先验能够更快地使模型收敛，后将lidar decoder的输出用于lidar-camera decoder部分的queries对图像特征进行融合检测。 这里主要提出：一：inverse aug与learnable align，分别解决数据增强后模态融合的对齐问题以及实现模态之间的自适应对齐，这里融合的方式为将lidar作为主要的数据来源作为queries融合作为kv的图像特征，并将与query对应的图像特征提取后与雷达特征进行concat并融合用于特征检测。 这篇工作务必要看:  "Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D" 这篇文章，这篇BEVFusion的本质工作就是在LSS的基础上，加速了深度特征分布估计过程，并在基础上引入了雷达BEV特征并做了融合。这篇文章可谓是BEV融合方式的开篇之作，至今仍然占据着榜首，同时这篇文章的另一版本主要介绍的是模型的鲁棒性（对于另一种模态缺失做了消融实验），这一片着重于强调其高效性，如加速了几十倍的Splat过程中的pooling时间。 如上图所示，LSS和BEVFUSION代表了一种转化方式，在深度未知的情况下，通过一种学习的方式，将像素空间（h,w,c)通过LIFT转化到离散的3D空间(h,w,depth)，并通过Splat把3D空间通过转换矩阵转换到BEV中，并通过sum pooling等方式融合不同视角和投影到同一BEV Grid中的特征。   上述BEV融合的方式中，一种是以一种模态作为另一种模态的q去与另一种模态(作为k、v)做注意力并提取相应的特征用于融合，一种是将两种模态单独处理，转移到BEV视角中进行融合： 1. 第一种方式（以DeepFusion和Transfusion为例）的关键在于两种模态的对齐，lidar常作为Q融合图像特征，这种不仅会存在由于lidar特征稀疏导致的查询遗漏问题，还有由于lidar密集致使多个q映射到同一目标的问题。 基于Lidar的检测不做过多介绍，可参考链接。       上面已经介绍  Radar目标检测 雷达检测性能较差，而且工业界多个公司除去了Radar的部署，我认为无非有以下几个原因： Radar与Camera融合检测   如上图，业界采用的融合方式已经趋于统一的BEV范式，下游从特征提取，特征转化，到上游的时序信息引入都具有较高相似度，且都共享统一的场景特征，并利用多个head分别执行不同的下游任务，地平线将下游任务划分为low,semantic等不同层级的任务，这一点略微不同。 BEV特征目前在学术界和工业界趋于认同，主要是由于其在融合、感知鲁棒性、多下游任务的适应性等特点，尤其是在最近的各类榜单中BEV模型的卓越表现，BEV虽然感觉上更加接近真理，但是要承认，如今的BEV特征仍然不能够媲美多模态的BEV特征，同时多模态的BEV特征也仍有亟待解决的许多问题。 对于Radar的融合问题，不能直接将lidar的方案用于Radar，有以下几个原因：第一，毫米波雷达噪声等占比高，难以学习；第二，毫米波雷达特征稀疏，难以用为q对图像特征索引；第三，毫米波雷达穿透性强对金属反射强，这些特征利用能够有效提高对于恶劣天气的检测性能； 对于如何在BEV视角下融合Radar和Camera呢？有挑战性的几点：1. 如何将稀疏的毫米波雷达引入BEV视角？2. 如何减小毫米波雷达的噪声带来的问题？3. 如何将毫米波雷达充分利用，使其能够在其他模态不稳定时提高一定的鲁棒性？