更多内容可以访问我的个人博客。

论文阅读:

DeepRoad: GAN-based metamorphic testing and input validation framework for autonomous driving systems

作者提出了一种针对自动驾驶系统的基于GAN的蜕变测试以及输入验证框架。主要是为了解决自动驾驶领域的安全问题,具体点说就是当进行自动驾驶系统的测试的时候,很难获取到匹配的图像数据。比如说,你给自动驾驶系统一段路的晴天图像时,系统运行良好,然而此时你想测试雪天场景下系统的鲁棒性,但没有同一段路的雪天场景数据,若给到另一段路的雪天图像,又难以进行对比测试(涉及蜕变测试概念)。基于此,作者提出了解决方案。

读完论文之后,比较有收获的是了解了蜕变测试概念,关于图像转换技术,作者貌似也只是使用了别人给出的已有方法,而且有点语焉不详(也可能就是我没看懂而已……)。

1. 问题定义

基于DNN的自动驾驶系统发生错误可能致命,为了解决基于DNN的自动驾驶系统的安全问题,最近出现了一些测试技术,可以从原始图像自动生成驾驶场景来增加测试用例,然而由于以下局限,这些测试技术是不够的。

1.1 这些技术合成的图像缺乏真实世界的多样性

作者给出了已有的一些测试技术,分析了其缺陷所在。

① DeepXplore

◆ 一种深度学习系统的自动白箱测试方法

◆ 通过“哄骗”系统犯错,以暴露神经网络中的缺陷

② DeepTest

◆ 通过简单的仿射变换和模糊化/雾/雨等各种效果滤波器对原始图像进行变换

上图是从论文中引用的合成图像,a存在彩色补丁,b存在多个黑洞,c存在黑色边线,都影响了图像质量。此外,对于图d,它似乎是通过简单地调暗原始图像并将其与加扰的“烟雾”效应混合而得到的,它违背了雾气密度变化的事实。类似地,在图e中,DeepTest只是通过在原始图像上添加一组线条来模拟雨。

这些事实表明,很难确定错误驾驶行为是由基于DNN的模型的缺陷引起的,还是由于测试技术本身的不足造成的。这些图像转换技术只能生成相似的图像,而不能复杂地合成不同风格的图像,从而限制了测试用例的多样性

1.2 自动驾驶系统基于机器学习,所以当训练数据和应用领域数据不匹配的时候会大幅度降低系统精度

传统软件往往需要验证输入,比如Web应用需要检查和过滤非法和恶意的输入

但据我们所知,目前基于DNN的系统缺乏验证输入(例如驱动场景的图像),因而容易造成系统脆弱性。具体来说,无效的输入,如驾驶场景中的异常图像,会严重降低预测精度,大大增加基于DNN的系统的风险。

例如,假设一个基于DNN的自动驾驶系统被训练在一个数据集上,该数据集只包含阳光下驾驶场景的图像。对于系统没有经过训练的领域外输入(例如驾驶场景的雨天图像),很有可能导致系统输出错误的控制信号,从而给司机和乘客带来危险。

2. 解决方案

文章提出了DeepRoad框架,主要包括两个模块:蜕变测试模块(DeepRoadMT)和输入验证模块(DeepRoadIV)。

2.1 蜕变测试模块

采用了一种基于生成对抗性网络(GAN)的技术来合成各种天气条件下的驾驶场景,并开发了基于DNN的自动驾驶系统的蜕变测试(Metamorphic Testing)系统。

① 蜕变测试

蜕变测试:是一种用来缓解**“测试准则问题”的软件测试技术。当测试人员对于所选择的测试用例难以确定预期的正确结果,或无法判定程序输出是否满足预期的结果时**,便认为存在“测试准则问题"。

蜕变关系:假设p是程序输入映射到程序输出的程序数学表示,也就是有p[i] = o时,那么假设fi和 fo代表对输入和输出域进行特定转换的函数,满足下列关系:

一个或多个用来验证系统或待实现函数的必要属性(称为蜕变关系)的后续测试用例可以被构造出来,然后判断源测试用例和后续测试用例产生的输出是否在蜕变关系下一致。任何不一致的输出表示了程序的实现中存在缺陷

◆ 举例蜕变测试

拿正弦函数举例,正弦函数存在如下蜕变关系:

那么,根据这两个变换关系,可以根据一个测试用例,构造出两个蜕变测试用例:

由以上蜕变测试的定义,文章给出了基于DNN的自动驾驶系统的蜕变关系

公式含义:对于任一输入图像i,做某种图像变换τ,经过DNN预测的转向角应该相同。

② 图像变换

使用UNIT (Unsupervised image-to-image translation network)

上图显示了UNIT的结构,S1和S2表示两个不同的区域(例如晴天和雨天驾驶场景),E1和E2表示两个自动编码器,它们将从s1和s2的图像投影到共享的潜在空间Z。

假设x1和x2是一对图像,它们共享相同的内容。理想情况下,E1和E2将它们编码到相同的潜在向量z,并且可以由两个结构域特异的生成器G1和G2分别将其翻译回S1和S2。

D1和D2是检测图像是否分别属于S1和S2的两个鉴别器。具体来说,它们被期望区分输入图像是从目标域(例如真实图像)取样还是由训练有素的生成器(例如合成图像)产生。

基于自动编码器和生成器,UNIT可以用于两个域之间的图像转换。例如,图像x1可以通过G2(E1(X1)转换为S2。

在图5中,DeepRoadMT首先从两个目标域(例如,晴天和大雪天气下驾驶场景的数据集)获取未配对的训练图像,并通过优化损失函数,利用UNIT将两个域投影到相同的潜空间。训练结束后,DeepRoadmt使用经过良好训练的模型,将整个晴天驾驶场景的数据集转换为多雪天气。具体来说,给出阳光天气I下的任何图像,DeepRoadMT通过E1将其编码为矢量Zi,并使用G2合成在大雪天气下的相应版本τ(I)。DeepRoadMT将每一对真实和合成的驾驶场景图像提供给被测试的自主驾驶系统,即DNN,并比较它们的预测结果DNN⟦τ(I)⟧和DNN⟦I⟧来检测任何不一致的行为。

2.2 输入验证模块

我们可以定义一个输入验证(Input Validation)标准,比如输入数据应该是任何大小为640*480的RGB图像,或者任何输入数据应该存在于训练数据集中,以保证其正确性。但是,第一条准则太弱,无法提高系统的鲁棒性,而第二条准则太强,使得系统缺乏通用性。

文章提到Probably Approximately Correct (PAC)学习理论,即不要求进行零误差的预测,而要求误差在一定范围内;不要求对所有样本都能预测成功,而要求预测误差在一定范围内。

根据PAC学习理论,文章给出输入验证标准:输入数据I应该从训练数据D中取值(从D中采样输入I的概率应该大于预定义的阈值θ)

使用VGGNet提取其内容和风格特征
选择卷积层conv 4_2和conv 5_3分别提取内容和样式特征。成为彩色网格F 4_2和 F 5_3,表示从VGGNet中提取的内容特征,样式特征G 5_3由Gram matrix计算

注意,这些彩色网格只是用来可视化的。它们的尺寸与实际输出不匹配

然后,矩阵F 4_2和G 5_3转换到特征向量V,对所有的图像都进行这样的处理,然后进行PCA主成分分析进行降维。在图6中,我们将目标维度设置为2。所处理的数据Y是在二维平面上给出的,蓝色和红色节点分别表示训练和在线驾驶图像。最后,DeepRoadIV计算训练数据与每个在线I之间的最小距离。拒绝对距离大于某一阈值的图像进行预测

3. 实验设计

3.1 数据准备

◆ 图像数据

1.使用Udacity发布的真实世界数据集作为基线。
2.选择了两集高速驾驶视频,视频中可以观察到不同帧间照明和道路状况的明显变化。
3.为了训练UNIT模型,从YouTube收集极端场景的图像。在实验中,我们选择了大雪和大雨这两种极端的天气条件。
4.为了使采集到的图像的差别比较大,我们只搜索超过20分钟的视频。
5.在大雨的情况下,视频记录了雨刷刮过挡风玻璃,这可能会降低合成图像的质量。因此,在数据预处理阶段,手动检查和过滤这些图像。
6.在实验中使用的所有图像都被裁剪并调整为320*240。
7.对YouTube视频进行了低采样,以跳过内容接近的连续帧。

◆ 自动驾驶系统

选择 Udacity 社区中的Autumn、Chauffeur和Rwightman三种基于DNN的自动驾驶模型进行测试,其中Rwightman的模型细节并不公开,但是,类似于黑匣子测试,我们的方法旨在检测模型的不一致性,因此,Rwightman仍用于测试。

3.2 实验度量

◆ 一致性度量:

如果其转向角预测值在修正后的某一误差范围内,则该系统的行为是一致的。
其中DNN表示自动驾驶模型,I表示真实的驾驶数据集,i表示I中的第i个图像,τ表示能够改变天气状况的图像生成器/转换器。f是一个指示函数,当输入是true的时候返回1,false的时候返回0,而ϵ是错误阈值。

◆ 输入验证度量:

首先,为了平衡输入数据和训练数据,我们从在线驾驶场景中收集M个图像作为输入数据,从训练数据集中随机选取M个图像作为训练数据。第二,为了估计出更稳定的距离,我们平均每幅图像的最小k个距离来表示它们的相似之处。同时使用L2范数来改善过拟合。

4. 实验结果

从上图可以看出,从质量上讲,GAN生成的图像在视觉上与从YouTube视频中收集的图像相似,它们还可以保存原始图像的主要语义信息(如树和道路的形状)。雪天天空相对较暗,雨天清晰度相对较低,与DeepTest有明显对比。

在上图中,每一行分别显示雪和雨的场景。在每个子图中蓝色标题表示模型名称,而红色和绿色曲线分别表示真实图像和合成图像上预测的转向角。这些曲线将预测结果可视化。

从图中我们可以看到,模型Autumn(前两列)在两个场景中都有最高的不一致数;相比之下,模型Rwightman(最后2列)是不同场景下最稳定的模型。这表明,DeepRoadmt能够在不同的道路场景下发现真实世界中的自动驾驶不一致的行为。例如,像Autumn或Chauffeur 这样的模型(它们在Udacity挑战中的排名都高于Rwightman)可能在阳光明媚的日子里工作得很好,但在雨天或下雪的日子里,可能撞到路边或者更糟糕的——迎面而来的汽车。

图10显示了DeepRoadIV关于晴天、多雨的结果还有雪景。具体来说,图10的前三张图分别显示了晴天、雨天和雪景的结果。橙色和蓝色点表示取样t雨和相应的输入图像。
结果表明,晴天和训练图像的分布比较接近,而雨雪图像则远离聚类,和训练图像线性可分,阳光下的图像较分散,而雨雪图像较紧凑。究其原因,可能是由于雨雪图像的纹理统一,内容相对贫乏,使得图像之间的距离较小。。然而,阳光图像的光照条件和内容比较多样,因此距离很远。此外,从图10d中,我们发现晴天图像分布的距离主要在0~3之间,而几乎所有雨雪图像的距离都大于2。那么取阈值为2.5时,DeepRoadIV可以检测到100%的降雨,85%的降雪图像和21%的晴天图像中的离群点作为无效输入,有效地提高了系统的鲁棒性。

4. 可信性威胁

**内部有效性威胁:**在本工作中,对内部有效性的主要威胁是我们的技术实现中的潜在缺陷。为了减少这些威胁,在实现DeepRoadMT时,我们使用了UNIT的原始实现以确保DeepRoadMT的性能。此外,在DeepRoadIV的实现中,我们从PyTorch网站下载了经过预先培训的VGGNet权重,而不是在ImageNet上进行培训。

**外部有效性威胁:**外部有效性的威胁主要来自于图像质量、数据集和自动驾驶模型。

1.我们缺乏评价图像质量(即真实性)的良好标准。在本文中,我们将让读者检查他们的质量。这种方法相当直截了当,但不那么客观。Salimans等人建议的 Inception 评分法来评价合成图像的质量,然而,经过证明,在比较生成模型(如GANs)时,Inception 评分不能提供有用的指导。

2.Udacity上的数据集相对较小,自动驾驶模型比较简单。假如数据集足够大,则可以训练一个更复杂、更健壮的模型,从而显著地减少不一致行为。

3.自动驾驶系统是非常复杂的,而在这项工作中,我们只关注了转向角的准确性。

5. 总结

本文提出了一种无监督学习框架DeepRoad,用于合成真实的驾驶场景来测试基于DNN的自动驾驶系统的不一致行为(DeepRoadMT),并对在线输入图像进行验证(DeepRoadIV)。

在三个真实的Udacity自动驾驶模型上的实验结果表明,DeepRoad能够成功地检测出数千种不一致行为。此外,结果还表明DeepRoad可以有效地验证输入图像,从而提高系统的鲁棒性。

DeepRoad-基于GAN的图片转换以及蜕变测试技术相关推荐

  1. 基于GAN的语音转换技术及语音合成TTS

    https://www.toutiao.com/a6714089773171999244/ 介绍 到目前为止,我主要致力于生成人物的图像(或视频),但我希望他们一旦在屏幕上可见就会用对应的声音说话.所 ...

  2. 一文读懂基于神经网络的图片风格转移

    作者 | moliam 转载自 CSDN 博客 前言 将A图片的风格转移到B图片上,指的是将A图片的抽象艺术风格(如线条.色彩等等)和B图片的内容框架合成为一幅图.自然地,A图片称为风格图,而B图片就 ...

  3. python 人像素描_基于python实现把图片转换成素描

    这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦 ...

  4. 基于java的格式转换,word 转 pdf、word 转图片、office 格式转换、在线文件预览

    一.项目简介 不管你是java程序员.c++程序员,python程序员,在开发项目中肯定遇到过格式转换的问题,如何轻松搞定格式转换的问题呢?当然是百度啦!面向百度编程已经成为当下程序员的日常操作. 基 ...

  5. 基于Python实现图片格式转换的小程序

    基于Python实现图片格式转换的小程序 特点: 批量处理图片 转换常见的4种图片格式 运行窗口 运行窗口-1 选择图片(可批量选择)-2 假设选中4张JEPG格式的图片 格式选择窗口-3 假设选择目 ...

  6. python画素描画_基于python实现把图片转换成素描

    这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦 ...

  7. 南大和中大“合体”拯救手残党:基于GAN的PI-REC重构网络,“老婆”画作有救了 | 技术头条...

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑ 编译 | 一一 出品 | AI科技大本营(ID:rgznai100) 对于喜欢画画的你来说,总是画得七零 ...

  8. 综述:基于GAN的图像翻译模型盘点

    作者丨薛洁婷 学校丨北京交通大学硕士生 研究方向丨图像翻译 图像翻译(Image translation)是将一个物体的图像表征转换为该物体的另一种图像表征,也就是找到一个函数能让 A 域图像映射到 ...

  9. 揭秘腾讯微视人脸技术「黑科技」,基于GAN的人脸魔法特效

    随着小视频越来越流行,兼具趣味与人物个性的人脸特效成为小视频软件的标配,美颜自不必说,现在的人脸特效可谓"千变万化",人脸年轻化.变欧美范儿.发型改变.各种表情.胖瘦等. 不仅人脸 ...

最新文章

  1. 阿里巴巴B2B高效研发管理实践
  2. 嘿!我用python帮我干这些事
  3. Irvine64链接库过程的使用说明 Microsoft x64 调用规范 添加Irvine64.obj 64位链接库错误及解决方法
  4. 密码学赛后技术总结 小片段啦
  5. C语言Catalan number卡特兰数(使用n个键可以搜索多少个二叉搜索树)的算法(附完整源码)
  6. 新增字段赋值_微服务】155:商品新增业务(完)
  7. 截止2020年06月06日证书获得
  8. java反射机制中的getDeclaredField()
  9. 300 万行核心代码全部开源!OceanBase 开启 3.0 时代
  10. UIRefreshControl
  11. 有时候,一个人也挺好
  12. ubuntu16.04下ROS操作系统学习笔记(九)Moveit
  13. Flash Builder 的概要分析
  14. 【基础整理】Mapping representation 机器人所用地图种类及相关介绍
  15. 通过Redis实现数据的交集、并集、补集
  16. 学计算机编程难吗,电脑编程难学吗 如何才能学好电脑编程
  17. html div文字竖向显示,css怎么让文字竖着?
  18. 将有朋自远方来,不亦乐乎
  19. NDK-r25交叉编译qemu:tests/qtest/libqos/libqos.fa.p/pci.c.o报错
  20. android appwidget 空间动画,Android学习之AppWidget笔记分享

热门文章

  1. 【ACM】hdu_zs1_1003_放大的X _201307271557
  2. python nonetype转换str_如何将Nonetype转换为int或字符串?
  3. 懒癌患者的学习记录之JAVA希尔排序
  4. Abp 入门教程 Day01
  5. ERROR: Exception when publishing, exception message [Failed to connect and initialize SSH connection
  6. 全流程3D医疗分割开发工具MedicalSeg重磅开源
  7. JS完美运动框架详解——原理分析及demo
  8. 浏览器F12查看调用接口所用时间
  9. 大前端JS部分基础面试题(含答案)
  10. 3台服务器Redis高可用哨兵模式