DeepRoad: GAN-Based Metamorphic Testing and Input Validation Framework for Autonomous Driving Systems
文章目录
简介
论文标题
- DeepRoad: GAN-based Metamorphic Autonomous Driving System Testing
- DeepRoad:基于GAN的自动驾驶系统蜕变测试与输入验证
- 时间
贡献
- 我们提出了第一种基于GAN的变形测试方法来生成不同天气条件下的驾驶场景,以检测自动驾驶系统的不一致行为。(DeepRoadMT)
- 针对基于DNN的自动驾驶系统,提出了一种新的输入验证方法。我们提出了训练图像的高层特征与输入图像的高层特征之间的距离可以用来验证输入。(DeepRoadIV)
- 我们在DeepRoad上实现了所提出的方法,可以生成不同驾驶场景(如雨雪)的图像,并在嵌入空间中度量多个图像集之间的相似度。我们使用DeepRoad对公认的基于DNN的自动驾驶模型进行了测试,成功地检测到了数千种不一致的驾驶行为。此外,DeepRoad可以准确地将极端天气条件下的图像与训练图像区分开来,这对于验证自动驾驶系统的输入是有效的。
https://www.toutiao.com/a6747848196422107652/
摘要
虽然深度神经网络(DNNs)已经为基于图像的自动驾驶系统奠定了基础,但它们可能会表现出错误的行为,并导致致命的事故。为了解决自动驾驶系统中的安全问题,最近设计了一套测试技术来自动生成人工驾驶场景以丰富测试套件,例如,生成从原始图像转换而来的新输入图像。然而,由于两方面的限制,这些技术是不够的:首先,许多这样的合成图像往往缺乏驾驶场景的多样性,从而影响了所产生的有效性和可靠性。其次,对于基于机器学习的系统,训练域和应用域之间的不匹配会显著降低系统的精度,因此有必要验证输入以提高系统的鲁棒性。
本文提出了一种基于无监督DNN的自动一致性测试框架DeepRoad,用于自动测试基于DNN的自动驾驶系统的一致性和在线验证。首先,DeepRoad无需使用图像变换规则(如缩放、剪切和旋转)即可自动合成大量不同的驾驶场景。特别是,DeepRoad能够通过应用生成性对抗性网络(GAN)以及相应的真实天气场景来生成各种天气条件(包括那些相当极端的条件)的驾驶场景。第二,DeepRoad使用蜕变测试技术使用合成图像检查此类系统的一致性。第三,DeepRoad通过使用VGGNet功能测量输入图像和训练图像之间的距离来验证基于DNN的系统的输入图像。我们使用DeepRoad在Udacity自动驾驶汽车挑战赛中测试了三个公认的基于DNN的自动驾驶系统。实验结果表明,DeepRoad能够检测出这些系统数以千计的不一致行为,并有效地验证了输入图像,从而潜在地增强了系统的鲁棒性.
介绍
自动驾驶有望改变汽车业。通常,自动驾驶指的是利用传感器(相机、雷达、激光雷达、GPS等)[38]自动控制车辆,而无需人工干预。深度神经网络(DNNs)的最新进展使自动驾驶系统能够根据动态环境调整其驾驶行为[2,14]。具体地说,端到端监督学习框架可以通过输入驾驶图像、使用⟨驾驶图像、驾驶行为⟩对作为训练数据来训练用于预测驾驶行为(例如,转向角)的DNN。例如,NVIDIA于2016年发布的DAVE-2[14]仅根据自动驾驶汽车的单个前置摄像头拍摄的图像就可以准确预测转向角度。
最近的测试技术[31,38]表明,自动驾驶系统容易出现驾驶场景的合成图像错误。DeepXplore[31]应用差分测试技术系统地生成图像,揭示了多个DNN系统的不一致行为。具体地说,它将图像生成问题描述为一个联合优化问题,该问题使用基于梯度的搜索技术来寻找图像,以最大化神经元覆盖率和此类系统的不一致行为的数量。DeepTest[38]设计了系统的方法来自动生成测试用例,试图模仿真实世界的驾驶场景。其主要方法是通过对原始图像进行简单的仿射变换和模糊/雾/雨等各种效果过滤器来变换驾驶场景的标签图像,并检查自动驾驶系统在原始场景和变换后的场景中的表现是否一致。DeepTest通过大量的原始和转换后的驾驶场景,可以廉价、快速地检测到一些表现良好的开源自动驾驶模型的各种错误驾驶行为。
然而,我们观察到DeepXplore和DeepTest中用于生成测试用例的方法可能不能准确地反映真实世界的驾驶场景,很少包含彩色补丁或黑洞和边线;简单模拟产生的模糊/雾/雨效果也显得不真实,这损害了它们的有效性和可靠性。例如,图1显示了引用自DeepXplore和DeepTest论文的合成图像。请注意,彩色箭头是用来表示预测的转向角度的。从图1a、1b和1c可以观察到,驾驶场景的图像包含几个伪影(补丁、孔洞和边线),这严重影响了图像质量。此外,对于图1D,它似乎是通过简单地调暗原始图像并将其与混乱的“烟雾”效果混合来合成的,这违反了雾密度沿深度变化的事实。类似地,在图1e中,DeepTest通过在原始图像上添加一组线来简单地模拟降雨。这种降雨效果变换甚至更加扭曲,因为通常在下雨时,相机或前挡风玻璃往往是湿的,图像极有可能变得模糊。这些事实表明,很难确定错误的驾驶行为是由基于DNN的模型的缺陷造成的,还是由于测试技术本身的不足造成的。此外,这些变换(如平移、剪切和旋转)只能生成相似的图像,而不能复杂地合成不同风格的图像,从而限制了测试用例的多样性。例如,积雪的路况需要不同的复杂变换来渲染道路和路边对象(如树木)的纹理,这不是简单的变换规则所能生成的。

对于传统软件来说,输入验证(IV)是执行程序之前的一个重要步骤。例如,在Web应用程序中,IV检查和过滤非法或恶意输入,以防止应用程序级别的攻击,如缓冲区溢出和代码注入攻击[25]。然而,据我们所知,目前基于DNN的系统缺乏对输入(例如,驾驶场景的图像)进行验证的能力,因此容易导致系统漏洞。特别是,无效的输入,如驾驶场景的离群点图像,会极大地降低预测精度,并极大地增加基于DNN的系统的风险。例如,假设一个基于DNN的自动驾驶系统在一个数据集上进行训练,该数据集只包括阳光明媚的驾驶场景的图像。对于未对系统进行培训的域外输入(例如,驾驶场景的雨景图像),系统极有可能输出错误的控制信号,从而对驾驶员和乘客造成危险。
针对上述问题,本文提出了一种无监督学习框架DeepRoad,对基于DNN的自动驾驶系统进行了系统分析。DeepRoad由变形测试模块DeepRoadMT和输入验证模块DeepRoadIV组成。DeepRoadMT采用一种基于产生式对抗性网络(GAN)的技术[18,27]来合成各种天气条件下的驾驶场景,并为基于DNN的自动驾驶系统开发了变形测试模块。具体地说,定义了变形关系,使得无论如何合成驾驶场景以应对不同的天气条件,驾驶行为都期望与对应的原始驾驶场景下的驾驶行为一致。在这一点上,DeepRoadMT使我们能够测试基于DNN的自动驾驶系统在不同场景下(包括大雪和暴雨)的准确性和可靠性,这可以极大地补充现有的方法(如DeepXplore,DeepTest)。例如,图2展示了DeepRoadMT生成的雪景和雨景(来自晴天场景),这些场景很难与真正的场景区分开来,也不能使用简单的转换规则生成。DeepRoadIV用于基于图像相似度的DNN自动驾驶系统的输入验证。首先,DeepRoadIV使用预先训练好的DNN模型-VGGNet来提取训练和测试输入图像的高层特征(即内容和风格)。然后,利用主成分分析(PCA)技术对这些特征进行降维。最后,DeepRoadIV通过将训练图像和输入图像之间的平均距离与预设阈值进行比较来验证输入

为了评估深路的效果,我们首先合成了大雪和暴雨下的驾驶场景。特别是,基于GAN,我们从YouTube视频中收集了两个极端天气条件的图像来转换现实世界的驾驶场景,并将它们与相应的天气条件一起传递。随后,这些合成场景被用来测试来自Udacity社区的三个开源的基于DNN的自动驾驶系统[7]。实验结果表明,DeepRoadMT有效地检测这些系统的数千种不同级别的不一致行为。此外,我们还使用DeepRoadIV对不同驾驶场景采集的输入图像进行了验证。结果表明,在嵌入空间中,雨雪图像点的聚类分别分布在训练图像的聚类中,而训练聚类与大部分阳光图像点混合在一起。结果表明,在给定适当阈值的情况下,DeepRoadIV可以有效地验证输入,从而潜在地提高了系统的鲁棒性。
背景
近年来,自动驾驶系统发展迅速[14,32]。例如,许多主要的汽车制造商(包括特斯拉、通用、沃尔沃、福特、宝马、本田和戴姆勒)和IT公司(包括Waymo/Google、Uber和百度)正在努力构建和测试各种自动驾驶系统。通常,自动驾驶系统通过多个传感器(例如相机、雷达、激光雷达、GPU、IMU等)从环境中捕获数据。作为输入,并使用深度神经网络(DNNs)处理数据和输出控制信号(如转向和制动决策)。在NVIDIA的工作[14]中,他们的自动驾驶系统DA VE-2只能根据单个前置摄像头拍摄的图像流畅地控制汽车。在这项工作中,我们主要研究具有摄像机输入和转向角输出的基于DNN的自动驾驶系统。
DNN体系结构
到目前为止,卷积神经网络(CNN)[23]和递归神经网络(RNN)[33]是用于自动驾驶系统的最广泛的DNN。通常,CNN擅长分析视觉图像,而RNN可以有效地处理序列数据。在这项工作中,评估模型建立在CNN和RNN模块上。下面我们简要介绍每个体系结构的基本概念和组件,其中关于DNN的更多详细信息在[24]中提供。
2.1.1卷积神经网络。卷积神经网络类似于常规神经网络,它包含大量的神经元,以前馈的方式传递信息。然而,由于输入数据是图像,因此可以利用一些性质来优化规则神经网络,其中卷积层是CNN的关键组成部分。一层中的神经元不是完全连通的,而是只连接到上一层中的一些神经元,计算过程可以表示为一个带核的卷积。图3a显示了基于CNN的自动驾驶系统的示例,该系统由输入层(图像)和输出层(转向角度)以及多个隐藏层组成。卷积隐藏层允许在多个连接之间分担权重,并且可以极大地节省训练工作量。
2.1.2递归神经网络。常规神经网络和CNN被设计用于处理独立的数据,例如使用CNN对图像进行分类。然而,对于像视频这样的序列数据,神经网络不仅要捕捉每一帧的信息,还应该对它们之间的联系进行建模。与常规神经网络和神经网络不同,RNN是一种具有反馈连接的神经网络。如图3b的左侧所示,RNN使用循环将先前的状态转发到输入,这对输入数据的连接进行了建模。图3b的右侧显示了展开的RNN的工作流程,用于基于图像序列预测转向角度。在每一步,RNN都采取将当前输入图像和以前的隐藏状态作为输入,并预测转向角。

基于DNN的自动驾驶系统本质上是软件系统,容易出错,并可能导致悲剧。例如,2018年1月,一辆特斯拉ModelS在使用自动驾驶时以每小时65英里的速度撞上了一辆消防车[9]。2018年3月,一辆自动驾驶优步在夜间道路测试中未能减速,导致一名行人死亡[10]。为了保证软件系统的质量,在文献[11,29]中已经提出了许多软件测试技术,其中通常会生成一组特定的测试用例来测试软件程序是否按预期执行。对于给定的测试输入,确定软件程序是否按预期执行的过程称为测试预言问题[11]。尽管有大量的传统软件测试技术,但它们不能直接应用于基于DNN的系统,因为基于DNN的软件的逻辑是从人工干预最少的数据(如黑盒)中学习的,而传统软件程序的逻辑是手动创建的。
方法
基于DNN的自动驾驶系统蜕变测试
3.1.1蜕变DNN测试。变形测试[35](MT)已被广泛用于自动生成测试以检测软件故障。MT的优势在于它能够通过变形关系(MRS)自动解决测试甲骨文问题。特别地,设p是将程序输入映射到程序输出的程序数学表示(例如,p⟦i⟧=o)。假设fI和fO分别是用于转换输入域和输出域的两个特定函数,并且它们满足以下MR公式:
∀ i , p [ [ f I ( i ) ] ] = f O ( p [ i ] ] ) \left.\forall i, p\left[\left[f_{I}(i)\right]\right]=f_{O}(p[i]]\right) ∀i,p[[fI(i)]]=fO(p[i]])
其中i表示程序p的输入。
利用这样的这些MR,我们可以通过检查对于各种输入i是否ˆp⟦fi(I)⟧=fo(ˆp⟦i⟧)来测试p的特定实现。因此,MT被定义为通过与MRS交叉检查输入和输出来测试程序实现。例如,给定一个实现正弦函数的程序,MT可以用来描述测试预言并创建各种新的测试。对于测试函数正弦的任何现有输入i,各种事实可以用作MRS,例如SIN(−i)=−SIN(I)和SIN(i+2π)=SIN(I)。这些事实可以表示为1)fi(X)=fo(X)=−x,2)fi(X)=x+2π和fo(X)=x。有了这样的MRS,我们可以根据FI转换现有的测试输入,以生成额外的测试,并基于fo检查输出。例如,假设函数正弦的默认测试用例是AssertTrue(sin(0.5·Pi),1.0)。基于上述MRS,我们可以生成两个额外的测试:AssertTrue(sin(-0.5·Pi),-1.0)和AssertTrue(sin(2.5·Pi),1.0)。
在这项工作中,我们进一步将机器翻译应用于基于DNN的自动驾驶系统的测试。正式地说,DNN是一个基于数字神经网络的自动驾驶系统,它将每个图像连续映射到预测的转向角信号中(例如,左转15◦)。一个MR可以被定义为给定原始图像流I,各种图像变换T可以简单地改变道路场景(在第3.1.2节中详细示出),而不影响对每个图像I∈i的预测(例如,在不同天气条件下同一道路上的预测方向应该大致相同)。使用附加变换输入测试DNN的MR可以形式化如下:
∀ i ∈ I ∧ ∀ τ ∈ T , D N N ∥ τ ( i ) ∥ = D N N ∥ i ∥ \forall i \in \mathbb{I} \wedge \forall \tau \in \mathbb{T}, D N N \mathbb{\|} \tau(i) \mathbb{\|}=D N N \mathbb{\|} i \mathbb{\|} ∀i∈I∧∀τ∈T,DNN∥τ(i)∥=DNN∥i∥
现在测试DNN基本都是蜕变测试思想,输入有细微差异但输出应该相同或相似
3.1.2基于DNN的道路场景变换。最近的工作DeepTest[38]还将机器翻译应用于测试基于DNN的自动驾驶系统。然而,它只执行基本的图像转换,如添加简单的模糊/雾/雨效果滤镜,因此具有以下限制:(1)DeepTest可能会生成违反常见场景的图像(在第1节中讨论)。(2)DeepTest不能模拟复杂的道路场景变换(如雪地场景)。
为了通过自动生成各种真实道路场景来补充DeepTest,在这项工作中,我们利用最近发布的基于DNN的单元[27],基于生成性对抗性网络(GANS)[18]和变分自动编码器(VAE)[22]来执行无监督图像到图像的转换。单元的一个观点是,假设两个图像包含相同的内容,但位于不同的域,则它们在共享潜在空间中应该具有相同的表示。因此,给定来自一个域(例如,原始驾驶场景)的新图像,单元可以在另一个域(例如,下雨驾驶场景)中自动生成其对应版本

图4[27]表示单元的结构,S1和S2表示两个不同的域(例如,晴天和下雨的驾驶场景),E1和E2表示将来自S1和S2的图像投影到共享潜在空间Z的两个自动编码器。假设X1和X2是共享相同内容的成对图像。理想情况下,E1和E2将它们编码成相同的潜在向量z,并且可以分别由两个区域特定生成器G1和G2将其翻译回S1和S2。D1和D2是分别检测图像是否属于S1和S2的两个鉴别器。具体地说,期望它们区分输入图像是从目标域(例如,真实图像)采样的,还是由训练有素的生成器(例如,合成图像)产生的。基于自动编码器和生成器,单元可用于在两个域之间转换图像。例如,图像x1可以通过G2(E1(X1))变换成S2。
在单元中,所有的Di、Ei和Gi都体现为神经网络,单元的学习目标可以分解,以优化以下成本:
- VAE损失:将每个 ⟨ E i , G i ⟩ \left\langle E_{i}, G_{i}\right\rangle ⟨Ei,Gi⟩的图像重建损失降至最低。
- GAN损失:在每个 ⟨ G i , D i ⟩ \left\langle G_{i}, D_{i}\right\rangle ⟨Gi,Di⟩的极小极大博弈中达到平衡点,其中Di的目的是区分图像,以找出它们是否是从Si或者旨在愚弄Di的Gi中采样的。
- 周期一致性损失:最小化每个 ⟨ E i , G j , E j , G i ⟩ \left\langle E_{i}, G_{j}, E_{j}, G_{i}\right\rangle ⟨Ei,

提出DeepRoad框架,利用GAN合成不同天气条件下的驾驶场景,检测自动驾驶系统不一致行为,同时验证输入图像,增强系统鲁棒性。
最低0.47元/天 解锁文章
1687

被折叠的 条评论
为什么被折叠?



