普适性感知处理架构
智能驾驶汽车上已经越来越多的应用了计算密集型的计算机视觉算法,这就对汽车SoC提出了很多关于硬件加速的要求。这些硬件加速单元主要用于图像信号处理、镜头畸变校正、密集光流、深度学习等。其中,基于视觉点云和激光点云深度学习由于其对环境的几何重建能力、目标运动估计,在各种识别任务中越来越发挥着主导作用。因此,为了最大限度地提高处理硬件的性能,最好从处理阶段的角度考虑嵌入式视觉,并在每个处理阶段考虑共享处理策略。对于自动驾驶中的视觉处理架构而言,这种共享处理策略通常是指对多传感输入源进行多维算法同步并行的管道处理方式(即Pipelines设计处理)。
如上图所示,总体上Pipelines的传感数据处理包含预处理、像素/点云级处理、中间过度处理、核心目标处理、后处理等几个阶段。
在感知数据的“预处理阶段”,涉及图像视频信息处理过程包含有基础的ISP处理模块,如白平衡、去噪、颜色校正和颜色空间转换等。这类处理过程通常是像素级别的处理过程,因此需要在SOC芯片中设置专门的硬件引擎模块进行处理。激光雷达数据预处理方面,包括从指定区域获取点云、去除给定区域的点、点云下采样,通过格栅化采样和区域密度规律滤波,从而获得可以被稳定观察和筛选的激光点云。毫米波雷达的预处理则包含根据反射目标能量剔除空目标和无效目标,以保证环境感知的准确性,避免因干扰目标的出现而引起误判。该阶段在神经网络阶段主要是编码阶段出现。
“像素级/点云级处理阶段”主要是有硬件加速器和GPU主导的前端精细化处理阶段。这类处理算法相对固化(比如经典的前端处理算法:边缘检测、特征提取、描述算子、点云配准、视差估计等),其核心主要与硬件每秒运行次数相关。
“中间过度处理”是一种从像素级到目标级处理的过渡阶段,主要涉及神经网络CNN的解码过程。该阶段的主要处理器是DSP处理器,包括通过视觉里程表估计车辆运动,双目视差图进行场景深度信息估计和点云三维重建等过程。
“前融合处理阶段”简单的说就是进行目标聚类,以便为高层次推理提供依据。聚类的原理是对已经具备先验知识的目标对象进行分类提取。可以应用一定的算法来抑制移动目标的重缩放,也可以应用目标重构的方式进行自学习。并且该过程需要将各类传感器聚类的各种目标按照指定分配不同的置信度进行一定的目标融合。通常这类前融合算法会将相同类型的传感器数据首先进行融合(如先分别做7V视觉前融合、5R毫米波雷达前融合、2-3激光雷达前融合)。融合过程给各传感器本身识别能力参数标定为相同的值,而给予传感器感知的场景方位数据分配不同的权重。比如对于本车道的前方目标,给前视摄像头分配比侧视摄像头分配更高的权重。这类算法通常需要在ARM或DSP这类通用处理单元上进行有效处理。
“后融合处理阶段”又称为全局感知目标处理阶段。即对于前端感知形成一定持久性、稳定性的大空间数据地图进行后期优化。该优化过程包含Bundle adjustment、地图构建、高级目标跟踪和预测,也包括对探测的相同类目标的不同感知源根据其本身特性和感知目标的关注特性分配不同的权重,从而获得系统对环境目标的最高级别推理。
非标准同构双目摄像头能否考虑深度估计
通常对于车载相机的多任务处理而言:包含深度估计、视觉里程计、语义分割、移动分割、物体检测以及镜头污染检测等六个主要任务。在智能驾驶场景中,移动目标的相关信息是非常重要的,一般采用连续帧或者光流来进行计算。此外,为了衔接后续规控任务,往往需要基于视觉里程计来实现检测物体建图。
这里我们重点讲解下其中的深度估计方法。
在智驾汽车域中的深度信息估计中,大范围采用的是利用前视同构双目相机来进行深度估计的。其目的是通过深度估计来实现对前方目标的三维立体信息检测。在最新的视觉感知算法中,还会进一步考虑对车辆侧边的目标进行距离信息估计,这时就需要考虑利用鱼眼相机进行深度距离信息估计。
基于此,随着智驾感知研究深度逐渐提升,很多厂家也在考虑采用鱼眼摄像头进行视差估计(甚至有些也在研究侧视或前视大小眼相机的深度估计)。实际上,四个鱼眼相机/普通侧视同侧相机虽然从基本的构造上可以被视作简单同构相机(当然由于安装位置的不同,需要排除简单的基线影响)。但是其安装位置上讲,确实无法真正满足对于标准双目摄像头的布置需求(可以说两种非标准鱼眼/侧视相机的基线是非常巨大的,测出来的结果也不准确)。因此,环视/侧视这类非标准相机图像会增加对于三维信息重建任务的复杂度。
考虑鱼眼图像会增加三维重建任务的复杂度,比如对于多视角几何、立体视觉和深度估计而言,大多数工作通常是假设其拍摄的场景是平面透视图像的,并且传统的立体几何求解方式进一步限制了图像中的极线必须是水平的。
此外,对于真实的全景鱼眼相机而言,由于镜头拍摄的图像存在大量的畸变,除了很难保证其宽动态范围需求外,也会导致相机坐标模型不再适用于标准的投影模型,因此在对鱼眼相机做立体几何重建之前需要进行有效的图像校准和畸变矫正。
当然,对于立体几何重建而言,通常会考虑保持极线笔直和水平的立体要求(主要满足立体几何中的对极几何要求),在此前提下,可能会利用类似最小化重采样的方式对非平面图像进行定制化畸变矫正。这类定制去畸变方法可能会导致有些边缘的几何图像扭矩甚至深度畸变。此外,整个图像重采样过程中,噪声函数也会被重采样过程扭曲,这种扭曲将增加重投影误差。
如上所述,采用不合理的校正算法可能会有比较大的副作用,比如视场角减小以及重采样扭曲缺陷等。同一物体因为成像空间畸变破坏了表观特征位移不变性,同样会给下游感知算法带来了巨大挑战。
因此,是否能够在深度学习中尽量绕开畸变矫正环节或者期间做适当优化,使得处理过程变得更加符合真实性呢?
这里,我们可以通过建立多任务学习模型来实现相应的深度估计。“多任务”顾名思义就是同时通过对场景建立多种模型估计,这种模型可以利用单目和多目摄像头的各种优势来弥补由于畸变矫正导致的图像边缘信息扭曲、失真等。同时,实现估计过程的并行处理Pipeline(包括环境目标的外观、移动、深度估计等),期间也可以实现计算资源共享的问题。
此外,整个多视角图像的深度估计过程也可以通过附加监督信号(如光流和目标运动),加强其估计的准确性。通过建立视差网络可以将各个不同方位的摄像头数据所采集的立体视频数据集信息传输到真实世界的深度估计中。
基于此,我们对于鱼眼/侧视相机这类非标准同构双目相机而言,其深度估计则可以参照如下图的方式进行。
如上图中所示,其基础原理是将来自多个周围视图的信息合并到一起,以预测摄像头之间的深度图,具体地说:
1)使用一个图像联合网络来处理所有相机拍摄的周边视图;
2)使用一个交叉视图转换器来有效地融合来自多个视图的信息,并进行全局交互;
3) 使用多组摄像头外参矩阵,结合采用其运动估计架构的稀疏矩阵所构造的深度图来训练识别模型,以实现对真实世界的尺度预测;
4)估计自车的整体运动状态,并将其传输到每个视图,以实现多视图估计的一致性;
此外,也可以适当引入曲面法线来帮助进行预测深度,因为深度信息估计会受到曲面法线所确定的局部切平面约束(如下图所示)。其中,深度到法线(depth-to-normal)关系将迫使最终预测遵循几何约束。因此整个目标深度在法线投影后仍然遵循场景目标约束。
众所周知,从图像坐标到世界坐标的投影由于受到校准不良、平地假设、检测变化、像素密度和相机模型误差的影响很容易出错。由于测量噪声的失真取决于图像中感兴趣点的位置以及相机相对于路面的位置,因此解决这一问题变得更加复杂。如果目标在感兴趣的点都没有实际接触地面,那么对于投影到世界坐标系的平地假设将存在重大错误。
比如对于多视角几何、立体视觉和深度估计而言,大多数工作通常是假设其拍摄的场景是平面透视图像的,并且传统的立体几何求解方式进一步限制了图像中的极线必须是水平的。
大火的BEV需要解决哪些问题
这两年智驾系统中的BEV相关算法发展让深度学习应用于BEV空间转换的方式逐渐成为主流。BEV感知的本质是对物理世界的三维重建,这个过程需要高效优质的检测端和精确标定的摄像头内外参数。基于数据输入,整个BEV的感知研究通常是以视觉为中心的算法,用于从多个周围摄像头角度进行三维目标检测或分割,BEV激光雷达描述了点云输入的检测或分割任务。
本文通过阐述了BEV感知原理,并对不同解决方案进行深入分析,描述行业中几个BEV系统设计方法。从而针对BEV存在的如下核心问题进行了详细的方案分析。
(a)如何通过从透视图到BEV的视图转换来重建丢失的3D信息;(b)如何在BEV网格中获取真值标注;(c)如何制定流水线,纳入来自不同来源和视图的特征;(d)当传感器配置在不同场景中不一样时,如何适应和推广算法。
如图是BEV摄像机的普通流水线(仅摄像机感知)。它包括三个部分,包括二维特征提取、视图变换和三维解码器。
然而,对于整个BEV设计中,目前还需要解决的问题还包括:
1) BEV模块如何设计更精确的深度估计器;
搭载多传感器生成的BEV主要解决不同的深度预测场景。首先就是标准的立体视差估计,并在时域范围内进行运动预测;其次,将2D图像到3D图像设置对应的投影矩阵进行合理的变换。
这里为了保证更好的估计性能,引入大量的监督数据也显得至关重要。监督数据可以作为很好的先验数据来为整个变换做前置条件。
视图变换是构建3D信息和编码3D先验假设的主要模块。大体上,它可以分为两个方面:一是利用2D特征构造深度信息并将2D特征“提升”到3D空间,即从2D特征预测深度信息;核心问题是如何从2D图像中重建丢失的3D信息。
从2D到3D,有如下几种常用的方法:
① 基于LSS的单目方法
这是根据2D特征预测每个像素的深度分布,而立体视觉方法沿着成本体构建的截头锥体发散2D特征。从3D到2D的变换是基于单应矩阵的方法假定3D采样点是一种稀疏矩阵,通过摄像机内外参数构建的投影矩阵将其投影到2D平面,从而拼接成图。
② 基于纯网络的方法
与以往的算法相比,利用神经网络进行二维BEV空间变换可以获得更好的视觉效果。而其中,基于纯网格的BEV方法可以使用MLP或transformer的方法进行隐式建模,从而构建整个3D空间到2D平面的投影矩阵。
2) 如何在新的融合机制中更好地对齐来自多个传感器的特征表示;
BEV的传感器融合算法最直接的设计是将摄像机和激光雷达的两组特征分别连接起来。由于3D空间中的点云与2D域中的点云有精确的对应关系,这就需要保证激光雷达和摄像头之间实现有效的软同步和硬同步。
BEV融合阶段则需要将如上几种不同的传感器端数据(例如摄像头、激光雷达、全球导航卫星系统、里程计、高清地图、CAN总线等)进行有效的数据融合。该阶段需要在BEV空间设计了一种融合策略,同时从摄像机和激光雷达输入执行3D检测和跟踪。特斯拉发布了系统流水线,用于检测矢量空间(BEV)中的目标和车道线,用于L2高速公路导航和智能召唤。
BEV感知背后的要点是从摄像机和激光雷达输入中学习鲁棒性和可泛化的特征表示。BEV感知背后的核心问题需要从原始传感器输入进行深度估计的实质性创新,特别是对于摄像头分支。由于BEV感知需要摄像机和激光雷达,高质量标注和2D和3D目标之间的精确对齐是此类基准点的两个关键评估。这些新提出的基准通常具有高质量的标签;场景多样性和数据量也在很大程度上扩大。对于BEV感知任务,3D目标边框标注和3D分割标注至关重要,高清地图配置已成为主流趋势。
3) 考虑BEV算法需要具备更强的鲁棒性,算法应考虑与传感器姿态变化或位置进行解耦,并同步实现在各种场景中实现更好的泛化能力;
BEV感知中要求在每个数据集中都需要针对性的进行训练、数据、标注等。实际上BEV的整个网格参数是与摄像机参数关联的,因此整个BEV的感知过程会对不同的传感器设置(摄像机的内外参数如物理位置、重叠区域、FOV和畸变参数等)提出不同的需求。同时,如上这些因素都会造成良好性能从一个场景迁移到另一个领域的(极端)困难。因此,重要的方案是要确保BEV网络与摄像机参数进行解耦,使得特征学习独立于内外参数之外,以确保由于路面颠簸和摄像机不稳定导致的检测跳变,不鲁棒的问题。
4)BEV算法模块如何以基础模型为蓝本进行性能提升;
BEV的感知模型目前已经相对固化,目前形成的基础模型子块已经在很多场景上已经得到了广泛的运用。但是如何选择适配性更好的基础模型将会很深刻的影响整个自动驾驶控制的任务。同时,如果能够在单BEV模型中构建多任务学习机制,也将会更多的影响认知领域对复杂场景的协作处理。
总结
智驾系统的感知常规处理方法中还有很多不被人们重点关注的部分,比如如何进行Pipelines的并行处理,如何考虑结合功能设计场景的将整个前端能力建设,其中包括识别、重构、重定位等重要步骤元素。此外,从成本和性能角度上讲,还有一些适配于传统感知架构的优化模型,比如如何应用已有的摄像头做更深层次的感知探索(涉及利用非标准同构双目左深度信息识别等)。这类优化传感性能的算法实际还有很多。我们在开发过程中还可以做进一步的能力探索。
编辑:黄飞
评论
查看更多