Page 147 - 《软件学报》2021年第7期
P. 147

朱向雷  等:自动驾驶智能系统测试研究综述                                                           2065


                    Tian 等人 [28] 提出的 DeepTest 旨在生成在现实生活中可能出现的图像输入,因此基于现有的自动驾驶采集
                 的种子图片,利用多种变换模拟现实驾驶中可能应对的情况.线性变化,包括调整图片的亮度和对比度两种途
                 径,用于模拟遭遇强光、镜头失真等景象;仿射变换包括平移、缩放、水平剪切和旋转,用以模拟物体的位置变
                 化、特殊的拍摄角度和拍摄异常等情况;卷积变换为图片加入雾气和雨天的效果,用于模拟在特殊天气下各种
                 交通情况.该团队使用贪婪算法,寻找有效的图像变换组合,提升生成图片对神经网络的神经元覆盖率,从而保
                 证深度神经网络模型的安全性和测试的充分性.
                    考虑到 DeepTest 的变化过于简单,生成的图片较为粗糙,难以模拟驾驶过程中捕捉到的真实图像,Zhang 等
                 人 [29] 提出了 DeepRoad.为了提高生成图片的质量,DeepRoad 框架使用了一种基于对抗生成网络的测试用例生
                 成方法.DeepRoad 框架使用无监督图像转换板块,将两个目标域(如晴天数据集和雪天数据集)投影到相同的潜
                 在空间,经过训练,将晴天图像合成为雪天图像.经过对比,DeepRoad 生成的图片更贴近于实际驾驶过程中采集
                 到的视频和图片,比 DeepTest 生成的图片有更高的质量.
                    在真实场景中捕捉的测试用例通常不会存在全局性的扰动,即真实场景中的扰动通常是由图片中的某个
                 实体或者某部分所引起的.为了模拟真实世界扰动的这一特性,Zhou 等人                      [27] 选取了道路中常见的公告牌进行像
                 素级别的对抗扰动.在扰动过程中,保证对抗不会溢出到公告牌面积之外的区域,且随着视角和距离发生变化.
                 实验结果表明,这类基于公告牌扰动的对抗样本确实会对车辆的转向造成一定的影响.
                 2.3   覆盖度量指标
                    覆盖度量是指利用覆盖率对测试的完整性和有效性进行衡量的手段.覆盖度量指标是传统软件工程测试
                 领域中一个重要的评价指标,其能够评价测试用例集合是否有效且完备,同时也能指导测试用例的生成,即通过
                 生成特定的测试用例来达到更高的覆盖度量指标.目前,在人工智能领域,已有许多覆盖度量指标被提出                                    [35] ,包
                 括神经元覆盖、分类准确率、测试覆盖率等,但是由于自动驾驶测试的复杂性以及自动驾驶场景的多样性,人
                 工智能领域的覆盖度量很多都无法应用到自动驾驶领域中.Pei 等人                     [36] 引入的神经元覆盖概念是为数不多的能
                 够应用到自动驾驶领域中的覆盖度量指标.现有的实验不能确定其他人工智能领域的覆盖度量是否能够指导
                 自动驾驶测试(即不能确定 AI 测试的覆盖度量是否和自动驾驶测试的充分性相关).此外,从应用的角度来看,自
                 动驾驶测试由于拥有特殊的使用场景,覆盖度量指标聚焦于具体驾驶场景的覆盖,因此演化出了精细到情境
                 (situation)、场景(scenario)甚至需求(requirement)的高层次覆盖标准,这些标准虽然具有一定的指导意义,但却缺
                 乏对驾驶场景国际化的统一的定义,且驾驶场景粒度粗糙并难以量化,导致目前提出的标准在实际应用中困难
                 重重.更多的关于自动驾驶系统的覆盖度量指标往往针对整车测试,参见第 4 节关于整车测试的描述.
                    为了更有效地测试深度网络模型,Pei 等人             [36] 首先引入了神经元覆盖的概念.一个深度神经网络是由成百
                 上千个神经元构成的,当一个神经元的输出值达到特定阈值时,则认定该神经元被激活.神经元覆盖是统计激活
                 神经元在总体神经元的占比.以神经元覆盖率指导生成测试用例,可以挖掘出更多神经网络的边界行为和错误
                 行为.该团队利用 DeepXplore 框架,在 Nvidia DAVE 自动驾驶系统的模型中,找到了诸多导致导向系统错误转向
                 的危险场景.
                    为了更充分地测试路径规划板块,Laurent 等人             [37] 提出了权重覆盖.该团队使用了加权损失函数,为路径规
                 划的安全性、合理性、合规性和舒适性进行打分.文献[37]中设置了 6 个与驾驶情境相关的权重常数(例如,加
                 速度等),若车辆的某一驾驶决策超出了特定阈值,则权重常数将会以累加或累乘的方式计入到现有的加权损失
                 值中.该团队按照倍率调整权重常数生成路径规划器,检查该变异路径规划器的路径是否会被现有的测试套件
                 侦测出,一旦侦测出不符合测试预言的路径用例,则意味着调整的权重常数被覆盖.实验结果表明,权重覆盖能
                 够有效地指导对路径覆盖器进行测试的充分性.
                 3    综合功能模块

                    除了单独针对感知模块和决策模块进行测试以外,许多学者致力于针对一些综合功能模块进行测试,例如
                 高级驾驶辅助系统(ADAS),这些模块可能包含感知层、决策层和控制层等多个单元,协调完成一项具体的功能,
   142   143   144   145   146   147   148   149   150   151   152