Page 194 - 《软件学报》2024年第6期
P. 194

2770                                                       软件学报  2024  年第  35  卷第  6  期


                    以  CNN  为例, Zhou 等人  [25] 提出了基于类激活映射的    CNN  解释方法   CAM, 利用全局平均池化       (global average
                 pooling) 层来替代  CNN  模型中除  Softmax  层以外的所有全连接层, 并通过将输出层的权重投影到卷积特征图来识
                 别图像中的重要区域. 具体地, CAM         首先利用全局平均池化操作输出            CNN  最后一个卷积层每个特征图的空间平
                 均值, 并通过对空间平均值进行加权求和得到               CNN  的最终决策结果. 同时, CAM      通过计算最后一个卷积层的特
                 征图的加权和, 得到      CNN  模型的类激活图, 其反映了       CNN  用来识别该类别的重要图像区域. 最后, 通过热图的形
                 式可视化类激活图得到视觉解释结果.
                    然而, CAM  方法需要修改网络结构并重训练模型, 因而实用性不佳. 为此, Selvaraju                等人  [26] 对  CAM  方法进行
                 了改进, 提出了一种将梯度信息与特征映射相结合的梯度加权类激活映射方法                           Grad-CAM. 给定一个输入数据,
                 Grad-CAM  首先计算预测结果相对于最后一个卷积层中每一个特征图的梯度并对梯度进行全局平均池化, 以获得
                 每个特征图的重要性权重. 然后, 基于重要性权重计算特征图的加权激活, 以获得一个粗粒度的梯度加权类激活
                 图, 用于定位输入数据中       CNN  决策起重要影响的区域. 与        CAM  相比, Grad-CAM  无需修改网络架构或重训练模
                 型, 避免了因修改模型或重训练带来的精度损失, 可适用于不同任务和结构的                        CNN  模型. 因其具有良好的解释效
                 果和兼容性, 本文选择将       Grad-CAM  作为  IATG  的解释方法.
                 的缺陷. 与
                  5.2   自动驾驶软件的缺陷检测方法
                    致错场景    (fault scenario) 表示能够使待测系统发生错误的场景, 在深度学习软件的通用测试研究中, 测试数据
                 生成方法被用于寻找致错场景. 在基于图片的致错场景生成方法中, 蜕变测试方法被广泛应用                             [41−43] . 为将基于致错
                 场景的缺陷检测方法应用于深度学习目标检测系统, Wang                   等人  [44] 提出了针对目标检测系统的蜕变测试方法
                 MetaOD, 该方法通过在背景图像中插入物体实例来合成接近真实的图像, 并使用蜕变关系在排除插入对象对识别
                 结果的影响后, 判断原始图像和合成图像对于目标检测系统的等价性. MetaOD                       工作流程包含物体实例的提取、
                 选择和插入. MetaOD    对  TensorFlow API 提供的  4  个商业目标检测系统服务和      4  个预训练模型进行了测试. 实验
                 结果表明, MetaOD   发现了数以万计的错误检测样本. 为了进一步展示                MetaOD  的实际应用, 他们使用检测出错误
                 的合成图像对模型进行重新训练. 重训练模型的性能显著提高, MAP (mean average precision) 从            9.3%  提高到  10.5%.
                 由于缺少测试预言       (test oracle), MetaOD  生成的测试数据无法用于检测转向角预测模型缺陷. 受             MetaOD  启发,
                 IATG  使用解释分析技术获取原图像中重要物体, 在不改变场景的前提下, 将其替换为语义相同的其他物体来生
                 成测试数据, 并使用蜕变关系来检测转向角预测模型的缺陷.
                    在针对自动驾驶软件的测试工作中, 能够使待测模块发生错误的致错场景常被用于检测缺陷, 目前许多学者
                 致力于研究快速高效生成致错场景的方法, 进而使自动驾驶软件发生错误行为. Tian                         等人  [6] 以同一场景在不同的
                 天气、背景下, 自动驾驶软件应当采取一致的行为作为基本原则, 提出                      DeepTest 使用驾驶员在真实世界驾驶汽车
                 采集的图片作为原始图像, 利用多种变换对其来生成测试数据. 其中包括, 线性变化                         (即使用亮度和对比度两种途
                 径调整图像, 以模拟遭遇强光、镜头失真等情况)、仿射变换                   (即使用平移、缩放、水平剪切和旋转, 以模拟物体
                 的位置变化、特殊的拍摄角度和拍摄异常等情况)、卷积变换                     (即向图像加入雾气和雨天的效果, 用于模拟在特殊
                 天气下各种交通情况). 实验结果表明           DeepTest 能有效提升生成图片对       DNN  的神经元覆盖率, 从而检验        DNN  模
                 型的安全性和测试的充分性. 虽然真实世界可能因为图像采集设备的缺陷而使输入图像产生类似所使用的线性变
                 化和仿射变换的情况, 但是在某种程度上也应该归咎于图像采集设备的缺陷导致, 不能完全认为是自动驾驶软件
                         IATG  相比, DeepTest 生成的测试数据和真实图像差异较大.
                    由于  DeepTest 的变化过于简单, 生成的图片较为粗糙且与真实图像差异较大, Zhang                  等人  [7] 提出了  DeepRoad
                 以提高生成图片的质量, 他们使用了一种基于对抗生成网络的方法生成测试数据. DeepRoad                         方法使用无监督图像
                 转换模型, 将两个目标语义场景          (如晴天图像和雪天图像) 投影到相同的驾驶场景, 并经过训练将晴天图像合成为
                 雪天图像. 实验结果表明, DeepRoad      生成的图片更接近于实际驾驶过程中采集到的视频和图片, 比                    DeepTest 生成
                 的图像更接近真实场景. 但        DeepRoad  生成的测试数据并非难以从现实世界采集, 只需要将装有图像和转向角采
                 集设备的车辆由驾驶员在不同天气条件下, 在现实道路上驾驶便能采集到大量真实带转向角标签的测试数据. 而
   189   190   191   192   193   194   195   196   197   198   199