自动驾驶计算架构优化

自动驾驶的计算机架构

刘少山, 地平线机器人唐杰, 华南理工大学张哲, 地平线机器人让‐吕克·戈迪奥, 加州大学欧文分校

为了实现自动驾驶,计算堆栈必须在可接受的成本下同时确保高性能、最低功耗和低热耗散。一种将工作负载与计算单元相匹配并实现任务时间共享的架构可以满足这些要求。Interest 在自动驾驶领域的兴趣已经发展到美国交通部的国家公路交通安全管理局(NHTSA)正式定义了五个自动驾驶等级的程度。在0级,驾驶员拥有完全控制权;在1至3级,车辆逐渐增加控制,直到4级时,车辆拥有完全控制权。在此级别,车辆必须在整个行程中从启动到停止(包括停车)执行所有安全关键功能,并且不再要求驾驶员在任何时间控制车辆。

因此,一辆完全自动驾驶汽车必须能够通过多传感器而非人为输入来感知其环境并实现安全导航。传感器包括激光成像检测与测距(LiDAR)、全球定位系统(GPS)、惯性测量单元(IMU)、各种摄像头,或它们的任意组合。每辆车辆都使用传感器输入进行定位——即理解其周围环境的过程——并在此感知环境中做出实时决策以实现导航。

这些任务涉及处理大量传感器数据,并需要复杂的计算流水线。例如,在当前设计中,一辆自动驾驶汽车必须配备多个服务器,每个服务器包含多个高端CPU和图形处理器。因此,自动驾驶汽车消耗大量的计算资源和电能——通常达到数千瓦。由此产生的高昂成本成为自动驾驶技术市场渗透的巨大障碍。

研究人员正在积极探索能够降低自动驾驶成本的计算机架构,以使其达到普通民众可承受的水平。为了更好地理解这些努力,我们研究了当前基于激光雷达的自动驾驶所涉及的任务,并探讨了该方法与基于视觉的自动驾驶之间的差异——后者正受到越来越多的关注。我们还分析了各种计算平台和处理方案如何利用中央处理器、图形处理器、现场可编程门阵列(FPGA)和数字信号处理器(DSP)等计算资源,并尝试为每项自动驾驶任务确定最合适的计算资源。基于我们的分析,我们开发了一种能够在异构ARM移动片上系统(SoC)上运行任务的系统架构。该架构具有模块化、安全、节能以及能够提供高性能计算的特点,目前已在 PerceptIn产品中实现。

自动驾驶任务

示意图0

如图1所示,为了在交通状况不可预测的城市环境中实现自动驾驶,需要多个实时系统协同工作,包括传感器处理、感知、定位、规划和控制。目前大多数成功的自动驾驶实现都严重依赖激光雷达进行地图构建、定位和避障,同时使用其他传感器完成辅助功能。

感知

自动驾驶汽车由多个主要传感器组成,每个传感器都有其优点和缺点,因此需要将传感器进行组合以提高可靠性和安全。

GPS/IMU

GPS/惯性测量单元系统以高频率报告全局位置估计值和惯性更新,因此在帮助自动驾驶汽车进行定位方面至关重要。GPS能够提供较为精确的定位,但其更新频率仅为10赫兹,无法提供实时更新。相反,IMU的精度会随时间推移而下降,因此无法在长时间内提供可靠的定位。然而,IMU可以提供更频繁的更新,达到200赫兹或更高,满足实时性要求。对于以60英里每小时行驶的车辆而言,两次位置更新之间的行驶距离小于0.2米,这意味着最坏情况下的定位误差小于0.2米。

结合GPS和IMU可为车辆定位提供准确且实时的更新,但这并不足以作为唯一的定位路径。存在三个缺点:精度仅约为一米;GPS信号可能从建筑物上反射,引入更多噪声;并且GPS需要无遮挡的天空视野,这使得其在隧道等环境中不可行。

激光雷达

在基于激光雷达的感知中,传感器将激光束反射到物体表面,并测量反射时间以确定车辆与各个物体之间的距离。由于激光雷达具有高精度,自动驾驶汽车可以将其作为主要传感器,用于生成高精度地图、在行驶过程中利用地图进行自我定位,以及检测障碍物。

通常,一个激光雷达单元(例如 Velodyne 64线激光雷达)以10赫兹的频率旋转,每秒可采集约130万个数据点。尽管具备这些优势,但激光雷达的测量结果可能受到极大噪声干扰,例如当空气中存在雨滴或灰尘时;此外,一个64线激光雷达的成本可能超过8万美元。

摄像头

自动驾驶汽车主要使用摄像头进行物体识别与跟踪,例如,用于检测车道、交通灯和行人。为了提高安全性,现有的实现通常在汽车周围安装八个或更多1,080像素的摄像头,以便能够检测、识别和跟踪车辆前方、后方以及两侧的物体。这些摄像头通常以60 Hz运行,并且当组合在一起时,每秒产生约1.8吉字节的原始数据。

Radar and sonar

雷达和声呐系统主要用于障碍物避让的最后一道防线。生成的数据显示车辆路径前方最近物体的距离。一旦检测到物体靠近且可能发生碰撞,自动驾驶汽车的下一步立即动作就是刹车或转向。由于需要快速响应,雷达和声呐产生的数据直接输送至控制处理器,而不经过主计算流水线。随后,控制处理器执行诸如变道、刹车或预紧安全带等功能。

感知

传感器数据被输入到感知阶段,在该阶段车辆尝试理解其周围环境。三个主要的感知任务是定位、物体检测和物体跟踪。

定位

定位需要融合来自GPS/IMU和LiDAR等传感器的数据,从而生成高分辨率的红外反射地面图。在一些自主车辆实现中,使用粒子滤波器来关联LiDAR测量数据与地图。该方法已实现实时定位,精度达到10厘米,并已在城市环境中证明有效。然而,LiDAR的高成本可能会限制粒子滤波器的广泛应用。

物体检测

近年来,我们见证了基于视觉的深度学习技术的快速发展,该技术能够实现高精度的物体检测与跟踪。卷积神经网络(CNN)是一种深度神经网络(DNN),广泛应用于物体识别任务,其具有四层评估过程:

  • 卷积层包含多种滤波器,用于从输入图像中提取特征。由于每个滤波器都包含一组可学习参数,这些参数将在训练阶段后得出,因此卷积层可能是CNN中最计算密集型的层。
  • 激活层具有决定是否激活目标神经元的机制。
  • 池化层通过减小表示的空间尺寸来减少其参数数量,从而降低所需的计算量。
  • 全连接层中的神经元与池化层中的所有激活值完全连接。
物体跟踪

在物体识别确定需要跟踪的物体后,物体跟踪旨在自动追踪移动物体的轨迹。主要目标是确保车辆不会与移动物体发生碰撞,无论是车辆还是横穿道路的行人。在最近的研究中,深度学习技术在物体跟踪方面相较于基于计算机视觉的方法表现出优势。例如,通过使用辅助自然图像,可以离线训练堆叠自编码器以学习对视角和车辆位置变化更具鲁棒性的通用图像特征。该离线训练模型随后可用于在线跟踪。

决策制定

在了解车辆周围环境的基础上,决策制定任务旨在主要利用概率过程和马尔可夫链实时生成安全且高效的行动方案。三项主要任务是预测、路径规划和障碍物避让。

预测

在交通环境中行驶时,人类驾驶员面临的主要挑战之一是如何预见并应对其他驾驶员的行为。当道路具有多车道或车辆处于交叉路口时,这一问题尤为突出。为了确保车辆在这些环境中的安全行驶,决策制定必须能够预测附近车辆的行为。一种方法是生成其他交通参与者可达位置集合的随机模型,并将这些集合与概率分布相关联。

路径规划

在动态环境中为自主的敏捷车辆规划路径是一个棘手的问题,特别是当车辆必须充分利用其机动能力时。采用暴力搜索方法——即搜索所有可能的路径并使用成本函数来确定最佳路径——将需要巨大的计算资源,并且可能无法实时提供导航计划。为了规避确定性、完整算法的计算复杂性,一个研究团队提出使用概率规划器来实现有效的实时路径规划。

障碍物避让

由于安全是自动驾驶中的首要关注点,至少需要两个级别的避障机制,以确保车辆不会与任何物体发生碰撞。第一级为主动式,基于交通预测。在运行时,交通预测机制会生成诸如碰撞时间或预测最小距离等指标,避障机制利用这些指标重新规划局部路径。如果主动式机制失效,则由第二级的反应式机制接管。该机制依靠雷达数据来检测障碍物,并利用该数据覆盖当前控制,以避开检测到的障碍物。

激光雷达与基于视觉的系统

激光雷达每秒可生成超过一百万个数据点,测距范围可达200米,但高端激光雷达传感器可能花费数万美元。一种前景且经济的替代方案是基于视觉的自主驾驶。相较于激光雷达,基于视觉的定位的一个优势在于其不依赖粒子滤波器,而是使用视觉里程计——一种更依赖特征描述的技术。基于视觉的系统首先对立体图像对进行三角测量以获得视差图,然后利用该视差图推导每个数据点的深度信息。通过在连续立体图像帧之间匹配显著特征,基于视觉的系统建立不同帧中特征点之间的关联性,从而估计出过去两帧之间的运动。最后,通过将显著特征与已知地图中的特征进行比对,系统可推导出车辆的当前位置。

如该处理流程所示,基于视觉和激光雷达的系统在定位上采用了不同的方法。激光雷达生成的点云提供了环境的形状描述,但很难区分单个点。因此,激光雷达系统必须使用粒子滤波器将特定观测到的形状进行比较已知地图以减少不确定性。在基于视觉的定位中,观测数据通过完整的图像处理流程进行处理,以检测特征并生成特征描述。因此,基于视觉的系统可以唯一识别每个数据点,并利用显著点直接计算车辆的当前位置。

此外,与激光雷达相比,基于视觉的方法引入了多个高度并行的数据处理阶段,包括特征提取、视差图生成、光流、特征匹配和高斯模糊。这些阶段广泛使用向量计算,且每项任务通常具有短处理流水线,这意味着这些工作负载最适合由数字信号处理器(DSP)处理。

相比之下,激光雷达方法大量使用迭代最近点(ICP)算法,这是一种难以并行化的迭代过程,因此在顺序执行的CPU上执行效率更高。

当前平台

要了解自主驾驶计算中的主要挑战平台方面,我们评估了四级自动驾驶原型车的计算硬件。随后,我们研究了芯片制造商如何应对这些挑战。我们对车辆硬件的研究是基于与设计该系统的公司(该公司要求匿名)的互动。

该车辆当前的计算平台由两个计算盒组成,每个计算盒均配备一个英特尔至强E5处理器和四到八个英伟达K80 GPU加速器,并通过PCI‐E总线连接。在峰值性能下,12核CPU可提供每秒400吉操作(GOPS),功耗为400瓦。每个GPU能够实现每秒8万亿次操作(TOPS),功耗为300瓦。总体而言,该系统可在约3000瓦的功耗下提供64.5万亿次操作每秒的性能。其中一个计算盒连接车辆周围的12个高清摄像头,用于物体检测和物体跟踪。车辆顶部安装有一个激光雷达单元,用于车辆定位以及部分避障功能。第二个计算盒用于提高可靠性,执行完全相同的任务;如果第一个计算盒发生故障,第二个计算盒可立即接管。两个计算盒同时以峰值性能(最坏情况)运行时,功耗将超过5000瓦,这将产生大量热能。此外,每个盒子的成本约为20,000到30,000美元,使得整个解决方案对于普通消费者来说难以承受。

为了解决这些缺点,芯片制造商提出了多种平台类型和处理方案,包括基于GPU、数字信号处理器、现场可编程门阵列和专用集成电路的方案。

GPUs

英伟达PX2平台是目前领先的基于GPU的自动驾驶解决方案。每个PX2包含两个Tegra片上系统和两个帕斯卡图形处理器。每个GPU都配有专用内存,以及用于深度神经网络加速的专用指令。为了实现高吞吐量,每个Tegra通过PCI‐E Gen 2 × 4总线直接连接到帕斯卡GPU(总带宽为4.0吉字节/秒)。此外,双CPU−GPU集群通过千兆以太网连接,提供70 Gbits/s的传输速率。凭借优化的输入/输出架构和深度神经网络加速能力,每个PX2每秒可执行24万亿次深度学习计算,在运行AlexNet深度学习工作负载时相当于每秒处理2,800张图像。

DSPs

德州仪器的TDA是一种基于数字信号处理器的自动驾驶解决方案。TDA2x片上系统包含两个浮点C66x数字信号处理器核心和四个完全可编程视觉加速器,专为视觉处理功能而设计。这些加速器使TDA在执行视觉任务时的速度比ARM Cortex‐15中央处理器快八倍,同时功耗更低。

CEVA的 CEVA‐XM4 是另一种基于数字信号处理器的解决方案,专为在视频流上执行计算机视觉任务而设计。其主要优势在于能效;CEVA‐XM4 所需的能耗更少30 mW,适用于每秒30帧(fps)的1080像素视频。

FPGAs

Altera的Cyclone V片上系统是一种基于现场可编程门阵列的自动驾驶解决方案,用于奥迪产品中。Altera的现场可编程门阵列针对传感器融合进行了优化,结合多个传感器的数据以实现高度可靠的物体检测。另一种解决方案是Zynq UltraScale MP片上系统。在运行卷积神经网络任务时,UltraScale每瓦可达14张图像/秒(images/s/W),优于特斯拉K40图形处理器(4 images/s/W)。此外,在1080像素视频流中进行物体跟踪时,它可达到60帧每秒。

ASICs

Mobileye EyeQ5是用于自动驾驶的领先专用集成电路解决方案。EyeQ5具有异构的完全可编程加速器,每个加速器都针对其特定的算法家族进行优化,包括计算机视觉、信号处理和机器学习任务。凭借这种架构多样性,应用程序可以为每项任务使用最合适的内核,从而节省计算时间和能耗。为了支持通过多个设备进行系统扩展,EyeQ5实现了两个PCI‐E端口用于处理器间通信(IPC)。

寻找最优平台

每种可行的解决方案都有其优势,但似乎没有一个平台是最佳选择。作为分析自动驾驶计算机体系结构当前状态的一部分,我们尝试回答了三个问题:

  • 哪些计算单元最适合处理哪些工作负载?
  • 移动处理器是否足以执行自动驾驶任务?
  • 我们能否为自动驾驶设计出最高效的计算平台?

将工作负载匹配到计算单元

为了回答第一个问题,我们必须确定哪些计算单元最适合卷积和特征提取工作负载,因为这些是计算密集度最高的任务。我们在现成的ARM移动SoC上进行了实验,该SoC包含一个四核CPU、一个GPU和一个高通骁龙820数字信号处理器(qualcomm.com/products/snapdragon/processors/820)。为了研究这一异构平台的性能和能耗,我们实现并优化了卷积和特征提取任务,并测量了芯片级的能耗。

图2a中的卷积任务结果证实,GPU是最高效的计算单元。在CPU上,每次卷积需要约8毫秒完成,消耗20毫焦;在数字信号处理器上,每次卷积需要5毫秒完成,消耗7.5毫焦;而在GPU上运行时,每次卷积仅需2毫秒完成,仅消耗4.5毫焦。

图2b显示了特征提取的结果,该过程为定位生成特征点,是定位流程中计算最密集的任务。每个在CPU上运行的特征提取任务需要约20毫秒完成,消耗50毫焦;在GPU上运行时,每个任务需要10毫秒完成,消耗22.5毫焦;而在数字信号处理器上运行时,每个任务仅需4毫秒完成且消耗6毫焦。因此,数字信号处理器在特征提取任务中无论是性能还是能耗方面都是最高效的单元。

移动处理器上的性能

为了确定自主驾驶系统在ARM移动SoC上的运行效果,我们实现了图3所示的基于视觉的系统。

当我们在移动SoC上运行导航系统时,定位流水线能够以每秒25帧图像的速度进行处理,而深度学习流水线每秒可完成三次物体识别任务。我们设计的规划与控制流水线可在6毫秒内规划一条路径。整个片上系统(SOC)平均功耗仅为11瓦,并且我们能够以每小时5英里速度驾驶车辆,而不会丢失任何定位信息。考虑到车辆是在移动SoC上运行的,这些结果非常显著。通过增加计算资源,该系统应能处理更多的数据,使车辆行驶得更快,并最终满足量产级自主驾驶系统的需求。

设计一个高效的平台

我们在ARM移动SoC上实现的性能得益于充分利用了系统的异构计算资源,并为每项任务应用了最合适的计算单元。然而,我们无法将所有任务都集成到该系统中,不得不排除物体跟踪、变道预测、交叉路口交通预测等任务。此外,自主驾驶系统应能够上传原始传感器数据和处理后的数据到云端,这将占用所有可用的网络带宽。

一种解决方案是认识到物体跟踪、变道预测、交叉路口交通预测和数据上传等功能并非一直需要,而是间歇性需求。例如,物体识别会触发物体跟踪,而物体跟踪会触发交通预测。数据上传无需持续进行,因为批量上传数据通常能提高吞吐量并减少带宽使用。

因此,我们认为为每项任务配备专用集成电路芯片会浪费芯片面积,而现场可编程门阵列则非常合适。这些任务可以然后共享使用现场可编程门阵列。事实上,研究人员已经证明,部分重构技术可以在几毫秒内更改现场可编程门阵列的核心,从而实现实时共享。

图4展示了我们用于自动驾驶的计算堆栈,该堆栈已应用于PerceptIn的自动驾驶产品线中。在计算平台层中,包含一个由输入/输出子系统、CPU和共享内存组成的SoC架构,计算和输入/输出组件通过共享内存进行通信。数字信号处理器对图像进行预处理流用于提取特征;GPU执行物体识别和其他深度学习任务;多核CPU用于规划、控制和交互任务;现场可编程门阵列可动态重新配置并分时用于数据压缩和上传、物体跟踪以及交通预测。

在计算平台层之上是运行时层,通过OpenCL将不同的工作负载映射到异构计算单元,并在运行时调度不同的任务。接下来是操作系统层,该层采用机器人操作系统(ROS;ros.org)的设计原则。ROS是一个由多个ROS节点组成的分布式系统,每个节点封装了自动驾驶中的一个任务。最上层由感知、感知和决策应用组成。

我们的架构具有多个关键优势。它是模块化的,可以根据需要添加ROS节点以实现更多功能。它是安全的,因为每个ROS节点都有防止其他节点影响它的机制。它是高度动态的,因为在运行时层可以为最大吞吐量、最低延迟或最低能耗调度任务。它具备高性能,因为每个异构计算单元都被用于最适合的任务。最后,它是节能的,即为每个任务使用最节能的计算单元。

Existing 用于四级自动驾驶的计算解决方案通常消耗数千瓦的功率,散发大量热量,并且成本高达数万美元。这些功耗、散热和成本障碍使得自动驾驶技术难以推广到普通大众。

PerceptIn 已经凭借我们的自动驾驶计算堆栈推出了产品,我们相信它能够实现我们所描述的多项优势。随着自动驾驶计算领域的进一步发展,我们预计4级车辆将变得更加经济实惠并广泛普及,从而为更多人的日常生活带来便利。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值