原创 测试工具DeepTest : 深度神经网络驱动的 DNN自动驾驶汽车自动化

2020-6-19 11:19 4888 22 22 分类: 汽车电子 文集: 人工智能

总结

本文实现了一个系统化的测试工具 DeepTest,可以自动检测出 DNN 自动驾驶系统可能导致事故发生的错误决策,主要是分析摄像头捕获到的图像致使自动驾驶汽车转向的行为。首先,DeepTest 系统化自动生成测试用例,能使模型的神经元覆盖率最大化,比如模拟下雨,起雾,光照条件等实际场景。其次,本文证明了神经元覆盖率的变化可以影响到自动驾驶汽车转向行为的变化,并且对于摄像机捕获到图像进行各种转换,可以激活 DNN 中不同组的神经元,从而最大化神经元覆盖率。最后,本文对于不同测试用例进行真实图像变换,利用蜕变关系自动检测错误行为,合成的图像还可以用于再训练,使 DNN 自动驾驶汽车系统具有更强的鲁棒性。

摘要

深度神经网络(DNN)的最新研究进展使得 DNN 驱动的自动驾驶汽车的迅猛发展,该自动驾驶汽车使用摄像头,LiDAR 等传感器,无需任何人工干预即可驾驶。包括 Tesla,GM,Ford,BMW 和 Waymo / Google 在内的大多数主要制造商都在致力于构建和测试不同类型的自动驾驶汽车。美国包括加利福尼亚州,德克萨斯州和纽约州在内的几个州的立法者已经通过了新的立法,以进行道路上自动驾驶汽车的测试和部署。但是,尽管 DNN 取得了令人瞩目的进步,但与传统软件一样,它们经常表现出不正确或意外的极端情况,可能导致致命的碰撞。已经发生了几起涉及自动驾驶汽车的实际事故,其中包括一些事故导致死亡。用于 DNN 驱动的车辆测试技术大部分都严重依赖于在不同驾驶条件下手动收集测试数据,随着测试场景需求的增加,这种测试数据获取的成本过高。在本文中,我们设计,实施和评估一种系统测试工具 DeepTest,用于自动检测 DNN 驱动的车辆的错误行为,这些行为可能导致致命的撞车事故。首先,我们的工具旨在根据驾驶条件(如雨,雾,光照条件等)的实际变化自动生成测试用例。DeepTest 通过最大化激活神经元数量来生成测试用例,系统地探索 DNN 的不同部分的逻辑。 DeepTest 在不同的现实驾驶条件下(例如,模糊,下雨,起雾等)发现了数千种错误行为,其中许多行为可能导致 Udacity 自动驾驶汽车挑战赛中三个性能最高的 DNN 产生致命事故。

本文主要贡献:

  1. 我们提供了一种自动合成测试用例的技术,可在安全攸关的 DNN 的系统(例如自动驾驶汽车)中最大化神经元覆盖范围。我们证明了神经元覆盖范围的变化与自动驾驶汽车行为的变化相关。
  2. 我们证明了不同的图像变换(如对比度变化,雾的存在等)可用于测试来增加神经元覆盖率。 我们利用特定于变换关系来自动检测错误行为。 我们的实验还表明,合成图像可用于重新训练,并使 DNN 对不同的极端情况更为稳健。
  3. 据我们所知,DeepTest 是首款针对 DNN 驱动的自动驾驶汽车的系统化和自动化测试工具。 我们使用 DeepTest 对来自 Udacity 驾驶挑战的三个性能最高的 DNN 模型进行系统测试。 DeepTest 在这些系统中发现了数千种错误行为,其中许多行为可能导致潜在的致命碰撞。

背景知识

自动驾驶汽车的关键组件是由底层的深度神经网络(DNN)控制的感知模块。 DNN 接收来自不同传感器的输入,例如摄像机,光检测和测距传感器(LiDAR)和 IR(红外)传感器,这些传感器可感知环境并输出转向角,制动力度等,使得在各种条件下安全操纵汽车。

自动驾驶汽车中使用的大多数 DNN 可以分为两种类型:(1)前馈卷积神经网络(CNN)和(2)循环神经网络(RNN)。 我们测试的 DNN 包括两个 CNN 和一个 RNN。

实验方法

1. 基于神经元覆盖的系统性测试。

在本文中,我们基于所有具有相似神经元覆盖率的输入均属于同一等价类的假设(即目标 DNN 对于这些输入的行为类似),利用神经元覆盖率作为划分输入空间的一种机制。

2. 利用图像合成的方法最大化神经元覆盖率

DeepTest 通过将图像变换应用于种子图像并模拟不同的现实世界情况(例如相机镜头变形,物体移动,不同的天气条件等)来生成逼真的合成图像。为此,我们研究了九种不同的逼真的图像变换(改变亮度,改变对比度,平移,缩放,水平剪切,旋转,模糊,添加雾效果和施加下雨效果)。 这些转换可以分为三类:线性,仿射和卷积。我们的实验结果表明,转换后所有测试的 DNN 都显著提高了神经元覆盖率。

3. 用变换组合提高神经元覆盖率

不同的图像变换可以激活不同的神经元,如果这些变换堆叠起来的话,可以激活更多的神经元。可是,所有变换组合的状态空间非常巨大,本文提供了一种神经元覆盖率引导的贪婪搜索技术,可以有效地找到导致更高覆盖率的图像变换组合。

4. 利用蜕变关系创造 Test Oracle

自动驾驶系统是一个基于 DNN 的复杂系统,手动创建系统规范是极其困难的,因为这涉及到重新创建人类驾驶员的逻辑。本文巧妙地避免了这个问题,转而考虑不同合成图像间对应汽车不同决策行为之间的蜕变关系。例如,在任何灯光/天气条件、模糊或任何具有小参数值的仿射变换下,对于同一图像,自动驾驶汽车的转向角不应发生显著变化。本文使用相对宽松的蜕变关系寻求一种权衡,于是借助均方差重新定义了一个蜕变关系,即认为模型对于输入的转换图像产生的误差应该在 λ 倍的均方差内。

实验结果

本文将 deeptest 工具用于对三款在 Udacity 自动驾驶挑战赛中获得优异名次的 DNN 车型上进行评估,分别为 Rambo(第二名), Chauffeur (第三名), 和 Epoch(第六名).得出以下四个结论:

  1. 神经元覆盖率与输入输出多样性相关,可用于系统化测试生成。
  2. 不同的图像变换倾向于激活不同的神经元。
  3. 通过系统地组合不同的图像变换,神经元覆盖率比原始种子图像可以提高约 100%。
  4. 借助神经元覆盖率引导生成的合成图像,DeepTest 成功地检测到三个模型所预测的 1,000 多种错误行为(图 1)。
  5. 通过使用 DeepTest 生成的合成数据对 DNN 进行重新训练,可以将 DNN 的准确性提高多达 46%。
DeepTest : 深度神经网络驱动的自动驾驶汽车的自动化测试

图 1 DeepTest 所发现的错误行为示例

实验有效性讨论

DeepTest 通过对种子图像应用不同的图像变换来生成逼真的合成图像。 但是,这些转换可能无法涵盖所有现实情况。 虽然我们设计的转换(如雨雾效果)是逼近现实的,但由于大量不可预测的因素(例如太阳的位置,雨滴的角度和大小),所生成的图片在现实中可能无法完全重现。 但是,随着图像处理技术变得越来越复杂,生成的图片将越来越接近现实。除此之外,完整的用于驾驶自动驾驶汽车的 DNN 模型还必须处理转向角以外的制动和加速问题。我们限制自己只能测试转向角的准确性,因为我们测试的模型尚不支持制动和加速。 但是,假设模型支持它们,我们的技术也应该很容易应用于测试这些输出。


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
22
关闭 站长推荐上一条 /3 下一条