专栏名称: 点云PCL
公众号将会推送基于PCL库的点云处理,SLAM,三维视觉,高精地图相关的文章。公众号致力于理解三维世界相关内容的干货分享。不仅组织技术交流群,而且组建github组群,有兴趣的小伙伴们可以自由的分享。欢迎关注参与交流或分享。
目录
相关文章推荐
山西发布  ·  春节假日山西文旅市场迎来“开门红” ·  昨天  
山西发布  ·  春节假日山西文旅市场迎来“开门红” ·  昨天  
解放军报  ·  中央军委主席习近平签署命令 ... ·  昨天  
小强热线浙江教科  ·  陪爸爸在边防巡逻,给孩子累哭了! ·  昨天  
51好读  ›  专栏  ›  点云PCL

展望自动驾驶软硬件系统

点云PCL  · 公众号  ·  · 2025-01-08 10:00

正文

文章:Moving Forward: Autonomous Driving Software and Hardware Systems Review

作者:Xu Wang, Mohammad Ali Maleki, Muhammad Waqar Azhar, Pedro Trancoso

编辑:点云PCL


欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。 文章仅做学术分享,如有侵权联系删文。未经博主同意请勿擅自转载。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系[email protected] 未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要


自动驾驶系统近年来成为研发的重点,因为它们有潜力显著减少交通事故、提高道路安全、优化交通流量并减少拥堵。除了这些直接的益处,它们还通过降低排放和燃料消耗,促进可持续交通的发展。为了在各种条件下实现高度自动化,系统需要全面了解周围环境。这通过处理来自摄像头、雷达和激光雷达等传感器的数据,并依赖深度学习算法的软件栈实现。这些模型需要大量的计算资源和大规模数据移动,从而对硬件的效率和速度提出了挑战。

本文首先概述了自动驾驶系统的关键组件,包括输入传感器、常用数据集、仿真平台以及软件架构。随后,我们探讨了支持这些软件系统运行的底层硬件平台。通过展示更高自动化需求的案例,我们分析了现有 GPU/CPU 系统的性能与效率,并强调了其在计算组件中的挑战。最后,根据当前趋势和未来需求,我们预测了自动驾驶硬件平台的未来发展方向。

主要贡献


近年来,计算机视觉和深度学习(DL)模型的进步,以及更高效的硬件,使得自动驾驶系统得以不断演进。这些创新提高了在复杂场景(如城市环境)中的决策准确性和效果,相较于传统的规则驱动系统有了显著改进。

图 1 展示了一个简化的自动驾驶系统的高层视图。该系统可以被分为四个基本模块:输入、输出、软件和硬件模块。

  • 输入模块 由多种传感器(如摄像头)组成,用于重建车辆周围的环境并提供其当前位置。

  • 输出模块 包括诸如方向盘、油门和刹车的执行器,这些执行器根据决策对车辆的运动产生影响。

图1:自动驾驶系统模块

自动驾驶任务高度依赖于对车辆周围环境的理解。不同类型的传感器被用来重建环境。直观上,更多的传感器和类型多样化可以提供更全面的环境感知,从而改进决策。然而,处理传感器提供的海量信息需要显著的计算能力。这种权衡必须被仔细审视,因为它被认为是实现高自动化驾驶的限制因素之一。在大多数情况下,不同类型的传感器相互补充,以提供更全面的环境视图。例如:

* 摄像头 是被动传感器,用于捕获 2D 图像数据,可以通过集群重建 3D 视图。然而,摄像头对光照和天气条件敏感,在黑暗或雨天环境中可能生成质量较差的图像。

* LIDAR与被动摄像头不同,激光雷达是主动传感器,可发射并接收反射的红外光,因而对光照和天气条件较不敏感,并且能提供带深度信息的 3D 数据。

* 摄像头与激光雷达(LiDAR)融合 在自动驾驶中越来越受关注。这种融合利用了 LiDAR 点云的深度信息和 2D 图像的色彩信息。

* 毫米波雷达 是另一种用于自动驾驶的主动传感器,与 LiDAR 不同的是雷达发射的是无线电波而不是红外光波。雷达可以探测较远距离的物体,但其精度通常低于 LiDAR。

* GPS 传感器 是自动驾驶车辆中广泛使用的另一类传感器。GPS 提供全球定位信息,这对于车辆导航至关重要。为了提高定位精度,GPS 数据通常与来自惯性测量单元(IMU)的本地信息相结合。

表 1 总结了不同自动驾驶系统的传感器配置

主要内容


传感器从周围环境中收集数据后,关键在于如何解释这些信息,并基于此作出适当的控制决策与反应。为解决这一问题,提出了多种自动驾驶软件解决方案。Yurtsever 等人指出,自动驾驶的深度学习系统通常分为两类:(1) 模块化系统 和 (2) 端到端系统。这两类系统分别如图 2 所示,以下章节将详细讨论。

图2:(a)通用模块化系统,(b)端到端系统的系统图。

模块化软件系统

模块化系统将自动驾驶的复杂过程分解为多个模块,每个模块专注于特定功能。任务划分的颗粒度可能因不同系统而异,但通常分为五个阶段:感知、定位、预测、规划和控制(见图 2a)。

  1. 感知:感知模块利用来自不同传感器(如 LiDAR 和摄像头)的输入,检测并解释周围环境信息。例如,它可识别交通信号灯和障碍物(如行人和其他车辆)。

  2. 定位:定位模块通过 GPS 和 IMU 数据生成自车的位置信息。

  3. 预测:预测模块基于感知和定位模块的信息,预测附近障碍物的未来轨迹。

  4. 规划:规划模块根据感知和预测信息,确定最优路径和行动方案,同时确保符合交通规则。

  5. 控制:控制模块执行规划模块输出的决策,控制车辆的方向、速度和刹车。

目标检测:

目标检测需要确定目标物体的位置和尺寸,可分为 2D 检测 和 3D 检测。

(1) 2D 检测模型:

  • Faster R-CNN:通过区域建议网络(RPN)生成候选框。

  • YOLO:一种单阶段网络,无需单独分类器即可预测边界框和类别,推理时间较短。

  • SSD:另一种单阶段网络,速度更快,精度高于 YOLO。

(2)3D 检测模型:

  • VoxelNet:直接处理稀疏 3D 点,无需手工特征提取。

  • PointNet 和 PointNet++:直接基于点云进行处理,支持多样化的 3D 目标检测算法,如 PointPillar。

目标跟踪:

目标跟踪估计物体的速度和方向,可用于后续的风险评估与决策系统。例如,采用 3D LiDAR 数据和 2D 图像融合的方法可提高 3D 目标跟踪的鲁棒性。

交通信号灯感知:

基于摄像头的检测模型,如 YOLO 和 SSD,被广泛用于交通信号灯的检测和识别。

定位模块:

精确的车辆定位对于自动驾驶至关重要,定位需要同时掌握车辆的全局和局部位置信息。

  • 全局定位:依赖 GPS 提供的经纬度信息,并通过 IMU 修正累计误差。

  • 局部定位:通过 LiDAR 和摄像头检测道路障碍物和形状,生成占用图(occupancy map)。

例如,有提出了 GPS 和 IMU 融合框架,以提高定位精度,有基于 LiDAR 生成路标和道路边界的占用图,并通过匹配离线地图中的标记实现在线定位。

预测模块:

预测模块旨在预测道路使用者(如车辆和行人)的未来行为。

  • VectorNet:使用点云处理技术(如 PointNet),结合图神经网络(GNN)生成全局图,用于轨迹预测。

  • Wayformer:通过变压器模型融合多模态特征(如道路、交通灯、道路使用者),捕获时空信息以提高预测能力。

规划模块:

规划分为全局规划和局部规划

  • 全局规划:基于 Contraction Hierarchies(CH)算法,结合道路层级和路况,预测最快路径。

  • 局部规划:如状态网格算法,将连续空间离散化为状态网格,并通过搜索算法寻找最优路径。

Apollo 模块化系统的示例:

Apollo 是模块化方法的典型代表,其感知模块包含多个子模块,如障碍物感知、车道感知和交通灯感知。

  • 障碍物检测:融合摄像头、LiDAR 和雷达数据,通过多任务模型(如 YOLO 和 CenterPoint)处理。

  • 车道检测:使用 denseline 和 darkSCNN 模型。

  • 预测和规划:结合 CNN、LSTM 和多层感知器(MLP)生成轨迹信息,并传递给控制模块执行。

图3:基于9.0版本的阿波罗系统驱动框架,为了清晰起见,只进行了感知分解。

端到端软件系统

与模块化系统不同,端到端系统采用单一复杂模型,从传感器输入直接生成控制指令,无需将任务分解为多个子任务。这种方法通过减少模块间的误差传播,提高了整体性能。

在端到端系统中,深度学习模型从传感器数据中自动提取特征,并直接生成驾驶决策。这种方式的优势在于简化了模型架构,减少了对手动特征工程的依赖,同时也可以利用大量端到端数据来优化整个驾驶过程。

模仿学习

端到端系统的一个核心领域是模仿学习(IL)。模仿学习通过模仿人类驾驶员的行为进行训练,利用驾驶员记录的数据(如转向角、加速度和制动输入)来指导模型的学习。这种方法的关键是收集高质量的驾驶数据,以涵盖尽可能多的驾驶场景。 例如NVIDIA 的端到端自动驾驶系统基于模仿学习,利用卷积神经网络(CNN)从摄像头图像中提取特征,并直接输出转向角。系统的架构包括多个卷积层和全连接层,能够在城市街道和高速公路场景中实现自主驾驶。NVIDIA 的研究表明,经过训练的模型可以应对各种驾驶场景,包括避开障碍物、保持车道和进行简单的转弯操作。

模仿学习的挑战在于,它很容易受到训练数据中偏差的影响。如果训练数据中某些驾驶场景(如雨天或低光条件)不足,模型在这些场景下的表现可能会显著下降。此外,模仿学习倾向于模仿而非理解驾驶决策的原因,因此对复杂场景的泛化能力可能不足。

强化学习

另一种端到端方法是强化学习(RL),它将自动驾驶视为一个马尔可夫决策过程(MDP)。在这种方法中,模型通过与虚拟环境交互不断优化其策略,以最大化累积奖励。强化学习的目标是学习如何在不同驾驶场景中做出最佳决策,例如在交通拥堵中选择最优路径或在复杂交叉路口中优先避让行人。例如,Wayve 是首个将强化学习应用于实际自动驾驶系统的研究。Wayve 使用了一个深度 Q 网络(DQN)来控制自动驾驶车辆,其训练环境包括城市街道和高速公路的仿真场景。通过强化学习,模型学会了如何在动态环境中平衡速度与安全性。

尽管强化学习在自动驾驶中表现出巨大的潜力,但其主要挑战在于训练过程的复杂性和成本。训练一个高性能的 RL 模型需要大量的计算资源和时间。此外,模型在真实世界中的安全性和稳定性也是一个重要问题,因为训练过程中可能没有涵盖所有可能的驾驶场景。

结合多种学习方法

最新的端到端系统试图结合模仿学习和强化学习的优势。例如,研究【79】提出了一种混合模型,首先使用模仿学习进行初始训练,然后利用强化学习在仿真环境中进一步优化策略。这种方法能够更好地平衡训练效率和泛化能力。 此外,端到端方法还可以与多模态数据融合技术结合使用。例如,研究【80】结合了摄像头图像和 LiDAR 数据,通过多模态深度学习模型来提高环境感知的鲁棒性。这种方法利用了不同传感器的优势,进一步提升了自动驾驶系统的性能。

特斯拉:端到端系统示例

图 6 展示了从 2021 年特斯拉 AI 日的演示中提取的一个简化软件系统图【89】。作为端到端系统的示例,特斯拉采用了一系列关键组件来实现高效的自动驾驶功能:

图6:特斯拉自动驾驶系统的简化系统图。

1. 图像校正层

系统首先通过图像校正层(rectification layers)对图像失真进行矫正,确保输入数据的准确性和一致性。

2. RegNets 特征提取

接下来,特斯拉使用 RegNets【90】对图像进行处理,提取不同尺度和分辨率的特征。这些特征随后通过双向特征金字塔网络(Bidirectional Feature Pyramid Network, BiFPN)进行整合,BiFPN 的作用是促进各层之间的信息共享。

3. 变压器模型的自注意力机制

系统使用了带有自注意力机制的transform模型,以权衡不同输入特征的重要性,从而提高来自多个摄像头的感知效率。这种机制能够更好地处理多模态数据,增强系统对不同环境的感知能力。

4. 特征队列模块

特征队列模块缓存了关键特征,包括物体位置、多摄像头提取的特征,以及车辆自身运动学(ego kinematics)。这些特征随后被拼接到一起,以供进一步处理。特斯拉在此模块中使用了两种队列:

* 基于时间的队列:用于处理遮挡问题;

* 基于空间的队列:用于预测道路几何结构。

5. 视频模块和空间 RNN

视频模块利用空间循环神经网络(spatial RNN)对缓存的帧进行时间融合,并仅更新附近的关键点。通过这种方式,系统能够动态生成在线地图,增强场景理解能力。

6. 任务模块

基于视频模块生成的在线地图,系统可以执行多种任务,包括目标检测和车道预测等。

7. 神经网络规划器

最后,神经网络规划器使用由视觉模块生成的向量空间,通过蒙特卡罗树搜索(Monte Carlo Tree Search, MCTS)算法,预测最优的驾驶轨迹。

特斯拉的端到端系统通过上述模块的协作,大幅提高了感知与决策的效率,体现了其在自动驾驶领域的技术优势。

硬件系统

自动驾驶的关键在于实现短推理时间和低功耗。由于任务的计算需求极大,仅依靠传统的中央处理单元(CPU)不足以应对复杂的并行计算任务。本节将讨论在自动驾驶系统中最常用的硬件,它们通常与 CPU 协同工作以满足这些需求。


图形处理单元(GPU)

图形处理单元(GPU) 通过其并行计算能力加速自动驾驶系统。与传统 CPU 顺序处理任务不同,GPU 可以同时处理多个任务,大幅提高复杂计算的速度与效率。

这一能力使 GPU 成为现代自动驾驶系统的首选,例如 Waymo 和 Apollo。例如:Apollo 平台推荐两种工业级 GPU 计算机:Nuvo-6108GC 和 Nuvo-8108GC。

  • Nuvo-6108GC 集成 NVIDIA RTX 3070 GPU 和 Intel Xeon 处理器,计算能力高达 20.31 TFLOPS。

  • Nuvo-8108GC 支持计算能力高达 82.6 TFLOPS 的 GPU。

在 Pony.ai 的初期阶段,采用了 CPU+GPU 配置,其中 CPU 负责传感器数据处理和任务调度,GPU 用于深度学习推理。然而,这种架构对 CPU 负载过高。如果增加传感器或提高输入分辨率,会显著增加计算负载,可能导致系统瓶颈,降低关键性能指标(如 FPS)。此外,GPU 的高功耗导致车辆内的热管理面临挑战。

图7:(a)传统的基于CPU+GPU的系统,(b)在基于CPU+GGPU的系统上集成FPGA作为数据处理器,(c)在系统中集成专用神经网络加速器(NNA)。

可编程门阵列(FPGA)

为了解决 GPU 的问题,可编程门阵列(FPGA) 可用于处理传感器数据或作为更节能的硬件加速器。FPGA 的可重配置性在自动驾驶系统的早期开发阶段具有显著优势。例如:

  • Pony.ai 利用 FPGA 来处理传感器数据,减轻 CPU 的负载。FPGA 可直接将必要数据传输到 GPU,绕过 CPU,从而降低延迟(见图 7b)。

  • 在 Apollo 感知框架中,FPGA 被证明是 GPU 的节能替代方案。

研究表明,基于 FPGA 的深度学习加速器在多个任务中性能优于 GPU,例如车道跟踪和交通灯检测。

片上系统(SoC)

随着对计算效率和低功耗的需求增加,自动驾驶系统逐渐采用 片上系统(SoC) 架构。SoC 提供集成化的解决方案,提升性能的同时减少功耗和延迟,非常适合自驾驶所需的复杂任务。

Tesla 的全自动驾驶(FSD)计算机,Tesla 设计了世界首个专用全自动驾驶计算机,其中核心是两块 FSD 芯片,采用 SoC 架构(见图 7c)。每块 FSD 芯片集成 GPU、12 个 CPU、两个专用神经网络加速器(NNA)和图像信号处理器(ISP)。该系统的特点包括:

  • ISP 处理图像数据并将其传输到 DRAM;

  • CPU 协调 NNA 和 GPU 的任务;

  • 单个 FSD 芯片提供 72 TOPS(万亿次运算/秒)的计算能力,最大功耗低于 40W。

NVIDIA DRIVE Orin 平台

DRIVE Orin 系统包括 Ampere 架构 GPU、12 个 ARM Cortex-A78 CPU、两个深度学习加速器(DLA)和一个可编程视觉加速器(PVA)。该系统的计算能力高达 254 TOPS,最大功耗为 200W。

Mobileye 的 EyeQ™ 系列

EyeQ™ 6 High 采用多异构计算架构,集成了通用 CPU 和功能特定加速器。这些专用单元包括卷积神经网络(CNN)加速器和矢量微码处理器(VMP),支持 34 TOPS 的计算能力,最大功耗仅为 33W。表 4 总结了几种常见硬件平台的配置和特性:

硬件展望


扩展现有硬件

自动驾驶系统对实时感知和控制的需求,加上向更高自主级别(4级和5级)转变,要求更强大且更具能力的硬件。随着这些更高自主级别涉及系统全栈中越来越复杂的模块和模型,以及来自各种传感器的更多输入,强大的处理能力变得至关重要。根据表V,除了特斯拉,大多数我们研究的自动驾驶系统通常使用CPU和GPU的混合系统来应对这些高计算需求。

表V:自动驾驶汽车的硬件配置

为了评估不同自动驾驶系统在各种现成硬件配置下的性能,我们选择了三个端到端基准:TransFuser ,InterFuser 和MILE(表VI)。用于这些评估的硬件系统的规格也在表VII中总结。正如表中所示,CPU和GPU提供了广泛的能力,代表了各种计算能力的广泛范围。

图8展示了在表VII所述的硬件系统上评估的三个基准的性能和效率。

图8:(a)三个端到端系统在各种设备上的性能(以每秒帧数计)(b)效率(每瓦性能)。阴影条表示性能低于要求水平。

任务定制加速器

正如上文所讨论的,我们正在处理一个多模型异构系统,其中必须在有限的时间框架内处理多种根本不同的任务。使用单一类型的硬件管理这些多样化的模型会导致次优的性能,正如前一部分简要展示的那样。为了应对这些挑战,研究和工业界已经做出了显著的努力。例如,特斯拉和Mobileye开发了专门的任务核心,旨在处理软件系统全栈中的不同任务。稀疏性是另一个需要解决的异质性问题。例如,来自LiDAR的3D点云具有较高的稀疏性,这对通常优化为密集矩阵操作的常规GPU带来了挑战。

除了这种粗粒度的异质性,每个自动驾驶系统中使用的不同模型层之间也存在显著的差异。例如,图9展示了InterFuser模型中样本层的算术强度。与观察到的不同任务之间的异质性类似,优化性能和效率需要在设计加速器时仔细考虑这种层特定的变化。一个关键考虑因素是找到专业化与通用性之间的平衡。鉴于自动驾驶车辆的长生命周期,硬件必须保持一定的适应能力,以应对未来的工作负载,确保在新的需求和模型出现时仍然有效。

图9:(a)InterFuser AD系统中样品层的算术强度与存储器操作(从读取数据)(b)InterFuser AD系统中样本层的算术强度与浮点运算次数的关系。

内存内处理:一种有前景的解决方案

尽管高效的数据流可以减少数据移动并提高能效,但加速器和外部存储器(通常是DRAM)之间的带宽仍然是瓶颈,尤其是在多核系统中,高度并行性要求内存同时为多个核心服务。此外,外部内存和片上组件之间的数据移动在能耗和延迟方面代价高昂。

鉴于这些挑战,一个潜在的解决方案是将计算直接集成到存储数据的内存中,称为内存内处理(PIM)。这一概念最早在大约五十年前提出,它涉及将计算逻辑嵌入到内存中。然而PIM的采用最初受到技术限制的限制。如今3D堆叠内存技术的进步以及新型内存标准的开发,如高带宽内存(HBM)和混合内存立方体(HMC),使这些想法重新受到关注。3D堆叠内存可以提供比传统DDR内存更高的带宽,三星的HBM提供的带宽为1TB/s,而GDDR5仅为32GB/s。通过将加速器集成到内存的逻辑层中,PIM可以充分利用高内部带宽,通过短“导线”和通孔来实现。

在自动驾驶系统中,深度神经网络(DNN)和卷积神经网络(CNN)广泛用于物体检测、传感器融合和决策等任务,PIM为满足自动驾驶系统在性能和效率上的严格要求提供了有力的优势。Neurocube 就是一个内存近处理加速器的例子,它将处理单元(PE)集成到HMC的逻辑芯片中,利用高内部带宽加速神经网络计算。可编程神经序列生成器实现完全数据驱动的计算,每个金库与一个PE连接,PE通过2D网格网络进行通信。每个PE包括多个MAC、缓存内存、时序缓冲区和内存模块,以优化数据重用。通过15纳米FinFET工艺合成,Neurocube在进行ConvNN推理时可达到132 GOPS,功耗为3.41瓦。

TETRIS是一个基于HMC的加速器,旨在通过将计算阵列直接集成到内存的逻辑层中来提高DNN性能(见图10)。内存堆栈被划分为16个金库,每个金库包含DRAM银行和控制逻辑。DNN加速器用2D网格NoC取代了控制逻辑中的交叉开关网络,类似于Eyeriss架构。数组中的每个处理单元(PE)都有一个小的寄存器文件和一个定点ALU,而所有PE共享的全局缓冲区则支持数据重用。

图10:TETRIS加速器采用的架构,实际数组大小为14×14。

自动驾驶加速器的未来之路

自动驾驶系统的演变将需要越来越复杂的硬件平台,以满足对实时处理、能效和适应性的不断增长的需求。随着深度学习模型、传感器融合和决策算法的进步,自动驾驶软件也在持续演进,底层硬件必须跟上这一步伐。虽然专门针对特定任务的核心(如图像处理、传感器融合或神经网络推理)对于实现最佳性能和高效能至关重要,但也需要灵活性。

鉴于自动驾驶车辆的10至15年使用寿命,硬件必须能够适应新的算法、模型和软件更新。基于这些事实,我们预计未来的自动驾驶加速器将很可能涉及越来越异构的架构,结合通用的CPU和GPU、基于PIM的任务特定加速器以及一些可编程硬件(如FPGA或CGRAs),以实现长期适应性。在设计这些多核系统级芯片(SoC)时,专业化与灵活性之间的平衡将是至关重要的,以便高效处理当前和未来的工作负载。


总结


受到深度学习算法进展的推动,自动驾驶系统在过去十年中取得了显著进展。然而,实现完全自主驾驶的目标需要跨整个系统堆栈进行仔细的协同设计。本综述概述了自动驾驶系统的关键组件,突出了学术界和工业界在软件和硬件方面的最新进展。鉴于更高自主性水平的日益增长的需求,例如三个最先进的端到端系统的多样化计算和内存要求,讨论了未来硬件平台的潜在发展方向。我们强调,可持续、适应性强且高效的硬件解决方案将是支持下一代完全自动驾驶车辆的关键。

资源

自动驾驶及定位相关分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

自动驾驶中基于光流的运动物体检测

基于语义分割的相机外参标定

综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍

高速场景下自动驾驶车辆定位方法综述

Patchwork++:基于点云的快速、稳健的地面分割方法

PaGO-LOAM:基于地面优化的激光雷达里程计

多模态路沿检测与滤波方法

多个激光雷达同时校准、定位和建图的框架

动态的城市环境中杆状物的提取建图与长期定位







请到「今天看啥」查看全文