自动驾驶爆雷!美专家4小时发现百度Apollo英伟达DriveAV的561个故障

来源:新智元

2019-11-01 17:41

本文经授权转自新智元(ID:AI_era)。

马斯克曾说:“自动驾驶永远不会完美,但比人类驾驶安全10倍!”真是这样吗?伊利诺伊大学香槟分校的研究人员开发了一种故障评估技术,在对百度Apollo 3.0和英伟达专有自动驾驶系统DriveAV的测试中,4小时发现了561个关键安全故障。

特斯拉CEO马斯克曾经放话:“自动驾驶永远不会完美,但比人类驾驶安全10倍!”

然而,真是这样吗?

伊利诺伊大学香槟分校的一个研究团队在分析了自动驾驶公司2014年至2017年提交的所有安全报告(涵盖144辆自动驾驶汽车,累计行驶1116605英里)后,得出一个截然相反的结论:

在行驶相同里程的情况下,自动驾驶汽车发生事故的可能性是人类驾驶汽车的4000倍。

而就在最近,这个研究团队开发的一种针对自动驾驶的故障评估技术,在对百度Apollo 3.0和英伟达专有自动驾驶系统DriveAV的测试中,短短4小时就发现了561个关键安全故障!

这个研究团队致力于使用人工智能和机器学习,通过软件和硬件的改进来提高自动驾驶技术的安全性。

“由于车辆电气和机械组件的复杂性,以及天气、路况、地形、交通模式和照明等外部条件的变化,使用AI来改进自动驾驶车辆非常困难。”伊利诺伊大学CSL实验室教授Ravishankar K. Iyer说,“目前我们正在取得进展,但安全仍是一个重大问题。”

Ravi Iyer

研究小组目前正在开发技术和工具,从而找到影响自动驾驶车辆安全的驾驶条件和问题。使用他们的技术,可以找到大量的至关安全的场景,在这些场景中,一个小小的错误就可能酿成大祸。如此一来节省了大量的时间和金钱。

在对百度Apollo 3.0和英伟达DriveAV的测试中,该团队所开发的故障注入引擎DriveFI在4小时内发现了500多个该软问题。

示例场景:(1)目标FI导致危险状态;(2)特斯拉自动驾驶仪的真实例子与注入故障类似

这样的发现让这个团队的工作得到了业内的关注。该团队正在为他们的测试技术申请专利,并计划很快进行部署。理想情况下,研究人员希望公司使用这项新技术来模拟已发现的问题,并在部署汽车之前解决问题。

自动驾驶事故可能性比人驾驶高4000倍,安全评估面临挑战

“我们团队正在应对一些挑战,”领导该项目的计算机科学博士生Saurabh Jha说。“解决这一挑战需要跨越科学、技术和制造的多学科努力。”

为什么这项工作挑战性很大?因为自动驾驶是使用AI和机器学习来集成机械、电子和计算技术以做出实时驾驶决策的复杂系统。典型的自动驾驶系统就像放在轮子上的微型超级计算机;拥有50多个处理器和加速器,运行着超过1亿行代码,来支持计算机视觉、规划和其他机器学习任务。

这些车辆的传感器和自动驾驶堆栈(计算软件和硬件)有可能存在问题。当一辆汽车以每小时70英里的速度在高速公路上行驶时,故障对司机来说可能是一个重大的安全隐患。

“如果一辆普通汽车的驾驶员感觉到诸如车辆漂移或拉力之类的问题,他/她可以调整自己的行为并将车辆引导到一个安全的停车点。”Jha解释说:“然而,在这种情况下,除非自动驾驶汽车针对这些问题进行了训练,否则自动驾驶汽车会如何应对是不可预测的。在现实世界中,这样的例子数不胜数。”

多数人在电脑或智能手机上遇到软件问题时,最常见的反应是关机重启。然而,此方法不建议用于自动驾驶汽车,因为耽误的每一毫秒都会影响结果,而响应稍慢一点就可能会导致死亡。在过去的几年里,由于自动驾驶引发的各种事故,人们对这种基于人工智能的系统的安全担忧不断增加。

“现行法规要求Uber和Waymo等在公共道路上测试无人车的公司,每年要向加州车辆管理局(DMV)汇报其车辆的安全性,”CSL和计算机科学专业的研究生Subho Banerjee说。“我们想了解常见的安全问题有哪些,汽车的性能如何,以及理想的安全标准是什么,以了解自动驾驶系统的设计是否足够好。”

该团队分析了2014年至2017年提交的所有安全报告,涵盖144辆自动驾驶汽车,累计行驶1116605英里。他们发现,在行驶相同里程的情况下,自动驾驶汽车发生事故的可能性是人类驾驶汽车的4000倍。这意味着,自动驾驶技术不能妥善处理情况的概率之高非常惊人,往往要依靠人类驾驶员来接管。

研究人员和公司在试图改善这种情况时遇到的一大挑战是,在自动驾驶汽车系统出现特定的问题之前,很难训练软件来克服它。

此外,软件和硬件堆栈中的错误仅在某些驾驶场景下才表现为安全关键问题。换句话说,在高速公路或空旷/不太拥挤的道路上进行的自动驾驶汽车测试可能是不够的,因为这种情况下即使发生软件/硬件故障也很少导致安全问题。

车辆模拟

真的发生故障时,往往是在汽车已经行驶了数十万英里之后。为了测试这些自动驾驶汽车,需要花费大量的时间、金钱和精力,这使得测试过程非常低效。因此,研究团队决定使用计算机仿真环境和人工智能来加速这一过程。

“我们将自动驾驶汽车的软件和硬件堆栈中的错误注入到计算机仿真环境中,然后收集自动驾驶汽车对这些问题的响应数据,”Jha说。“与人类不同,当今的AI技术无法推理出不同驾驶场景中可能出现的错误。因此,需要大量的数据来教会软件在面对软件或硬件故障时采取正确的行动。”

DriveFI:4小时发现百度Apollo、英伟达DriveAV 561个故障

研究人员在论文“ML-based Fault Injection for Autonomous Vehicles: A Case for Bayesian Fault Injection”中,介绍了一种基于机器学习的故障注入引擎DriveFI,它能挖掘最大程度地影响自动驾驶安全性的情况和故障,这在两个工业级自动驾驶系统(来自NVIDIA和百度)上得到了证明。

论文地址:

https://arxiv.org/pdf/1907.01051.pdf

例如,DriveFI在不到4小时的时间里发现了561个安全关键故障。相比之下,花了数周进行的随机注入实验没有发现任何安全关键故障。

故障注入实验

自动驾驶汽车(Autonomous vehicles, AVs)是一个复杂的系统,它使用人工智能和机器学习来集成机械、电子和计算技术以做出实时驾驶决策。AI使自动驾驶汽车能够在复杂的环境中导航,同时保持安全范围,该安全范围由机载传感器(如相机、激光雷达、雷达)不断地测量和量化。因此,迫切需要对自动驾驶技术进行全面评估。

ADS的架构

然而,在实际的驾驶环境中对这些系统进行评估一直具有挑战性,特别是由于随机故障的出现。故障注入(Fault injection,FI)是用于测试计算和网络物理系统在故障下的弹性和错误处理能力的一种成熟方法。基于FI的自动驾驶评估提出了一个独特的挑战,不仅因为自动驾驶的复杂性,也因为AI在这样一个自由流动的操作环境中的中心地位。此外,自动驾驶系统代表了软件和硬件技术的复杂集成,这些技术已经被证明容易出现硬件和软件错误。未来,代码复杂性的增加只会加剧这个问题。

DriveFI架构

DriveFI是一种用于自动驾驶的智能FI框架,它通过识别可能导致碰撞和事故的危险情况来应对上述挑战。

DriveFI包括(a)一个FI引擎,可以修改自动驾驶系统(ADS)的软件和硬件状态以模拟故障的发生;和(b) 基于ML的故障选择引擎,我们称之为贝叶斯故障注入(Bayesian fault injection),可以找到最有可能导致违反安全条件的情况和故障。相比之下,传统的FI技术往往不关注安全违规,在实践中表现率较低,并需要大量的测试时间。请注意,在给定一个故障模型的情况下,DriveFI也可以执行随机FI来获得基线性能。


本研究的贡献

DriveFI的Bayesian FI框架能够通过对ADS在故障下的行为进行因果推理和反事实推理,从而发现关键安全情况和故障。

它通过(a)以车辆运动学和AV架构的形式整合领域知识,(b)基于横向和纵向停车距离的安全建模,(c)使用真实的故障模型来模拟软件错误,从而做到这一点。(a)、(b)和(c)被集成到一个贝叶斯网络(BN)中。

BN提供了一种有利的形式化方法,即用可解释的模型来对故障在AV系统组件之间的传播进行建模。该模型与故障注入结果可用于设计和评估AV的安全性。

此外,BN支持快速概率推理,这使得DriveFI能够快速找到对安全关键的故障。

Bayesian FI框架可以扩展到其他安全关键系统(如手术机器人)。该框架要求对安全约束条件和系统软件架构进行规范,以建模系统子组件之间的因果关系。

自动驾驶汽车的自主系统和机械系统,及其与DriveFI的交互作用。

研究小组在两个工业级的4级ADS上演示了这种方法的能力和通用性,分别是DriveAV(NVIDIA的专有ADS)和Apollo 3.0(百度的开源ADS)。

结果

研究团队使用三种故障模型:(a)非ECC保护的处理器结构中的随机故障和一致故障;(b) ADS软件模块输出中的随机故障和一致故障;(c) ADS模块输出中被Bayesian FI损坏的故障。

主要结果包括:

使用错误模型(b),我们编制了一个包含98,400个错误的列表。在模拟的驾驶场景中,如果要对所有98,400个故障进行彻底的评估需要615天。相比之下,Bayesian FI能够在不到4小时的时间内找到561个对AV安全性影响最大的故障。也就是说,Bayesian FI比传统方法快了3690倍。

Bayesian FI能够发现导致安全隐患的关键故障和场景。(a)在561个已确定的故障中,460个显示为安全隐患。(b)这460个故障与68个安全关键场景有关(总共7200个场景)。

通过对挖掘出的关键故障进行检测,发现最容易发生车辆碰撞事故的ADS模块输出前3位分别是节气门值(561个关键故障中的24%)、PID控制器输入(18%)和传感器融合障碍类值(15%)。Bayesian FI用于创建违反车道的目标的ADS模块输出是:(a)车道类型值(2%)、(b)油门(1.4%)、(c)转向(1.4%)。56%的故障类型从未被Bayesian FI使用过;例如Bayesian FI从未注入到相机传感器对象分类模块的输出中。

使用FI 获得的故障/错误影响表征

相比之下,在5000次random FI试验的几周内,没有发现一个安全隐患。只有1.93%的单比特注入导致了静态数据损坏(SDC),从而导致启动错误。ADS从所有这些错误中恢复了,没有任何安全违规。在7.35%的FIs中,发生了内核恐慌和死机。预期可以通过AV中现有的备份/冗余系统从这些故障中恢复。

作者表示,Bayesian FI方法挖掘关键情况将具有比故障注入法更广泛的适用性。结合一系列故障注入实验的结果来创建一个情况库,将有助于制造商制定AV测试和安全驾驶的规则和条件。

自动驾驶问题多,离真正上路还有多远?

这项新研究表明,即使像百度、英伟达这些大厂的自动驾驶技术也存在不少问题,而且自动驾驶技术还有很多不能妥善处理情况,往往要依靠人类驾驶员来接管。

对于自动驾驶这一新生事物,安全性是最受关注的,以至于一旦无人车发生事故立刻就会成爆炸新闻。自2016年初以来,加州共报告了111起涉及自动驾驶汽车的撞车事故(这还不包括可能造成的事故风险)。根据对DMV报告的分析,其中71起事故发生时,车辆处于自动驾驶模式。其中,有接近70%涉及自动驾驶车辆被追尾事故。

最典型的是Uber去年3月的“全球首起无人驾驶致死”事故:一辆处于自动驾驶模式的Uber无人车在道路测试时发生致死车祸。

事件发生于凤凰城以东11英里的Tempe镇。当时,Uber无人车正在向北行驶,一名女子在人行横道外穿,被车辆撞倒,被送往医院后,由于伤势过重死亡。

尽管经过近一年的调查后证明,Uber在这起事故中不担刑责,但事故直接导致Uber自动驾驶业务元气大伤。

对自动驾驶技术颇为激进的特斯拉,其Autopilot自动驾驶仪也频频发生事故,包括一起“一辆Model X在自动驾驶模式下撞上高速公路护栏”的致死事故,装上卡车、追尾消防车等等,每一起事故都冲击着大众对自动驾驶的信任度。

特斯拉自动驾驶致死车祸

这样看来,在无人车上路前就检测到可能存在的自动驾驶系统的故障显得尤为重要。对于伊利诺伊大学香槟分校的研究团队在4小时内发现了百度Apollo 3.0、英伟达DriveAV系统存在561个故障,你怎么看?你觉得自动驾驶什么时候才能真正上路呢?

参考链接:

https://www.sciencedaily.com/releases/2019/10/191025170813.htm

https://arxiv.org/pdf/1907.01051.pdf

责任编辑:程北墨
自动驾驶 百度阿波罗 waymo
观察者APP,更好阅读体验

“6年增加两倍”,美军高官又炒:中国速度“惊人”

NASA局长抹黑中国登月,连专业常识都不顾了

“中国报价太香,加税50%都吓不跑美国买家”

挺巴抗议席卷全美高校,大批学生遭逮捕

习近平主持召开新时代推动西部大开发座谈会