首页> 中国专利> 面向图像分类器的蜕变测试方法和系统

面向图像分类器的蜕变测试方法和系统

摘要

本发明公开了面向图像分类器的蜕变测试方法和系统,包括将原始训练集和原始测试集分别结合预先构造的蜕变关系得到衍生训练集和衍生测试集;根据原始训练集、原始测试集、以及衍生训练集和衍生测试集对预先构建的蜕变关系进行正确性判定;当判定结果为蜕变关系正确时,则通过执行变异算子得到变异图像分类器,利用原始训练集和衍生训练集、衍生训练集和衍生测试集,面向图像分类器对正确的蜕变关系进行有效性判定。本发明通过对预先构建的面向机器学习图像分类器的蜕变关系进行正确性和有效性的判定,解决了利用蜕变测试技术解决了机器学习图像分类器测试判定问题。

著录项

  • 公开/公告号CN113051150A

    专利类型发明专利

  • 公开/公告日2021-06-29

    原文格式PDF

  • 申请/专利权人 中国人民解放军陆军工程大学;

    申请/专利号CN201911379192.0

  • 申请日2019-12-27

  • 分类号G06F11/36(20060101);G06K9/62(20060101);

  • 代理机构32224 南京纵横知识产权代理有限公司;

  • 代理人朱远枫

  • 地址 210007 江苏省南京市光华路海福巷1号

  • 入库时间 2023-06-19 11:39:06

说明书

技术领域

本发明涉及一种软件测试方法,特别是面向图像分类器的蜕变测试方法和系统。

背景技术

软件测试是保证软件可靠性和软件质量的重要手段,是评估软件能否满足设计需求的过程。软件测试旨在检测现有行为与预想行为之间的差异。软件测试是一种可以揭露软件问题并有助于软件的可信度的有效的方式。机器学习(Machine Learning)在计算机视觉、语音识别和自然语言处理等实际应用中已经取得了显著的成功。图像分类已经成为计算机视觉的一个最为重要的分支。因此对于研究机器学习图像分类器的测试就十分有意义。传统的测试技术构建了一组测试用例(<输入,输出>)。测试人员将该输入放入到待测程序中执行并且检查从待测程序中得到的输出是否和预期的输出一致。这种利用预期输出与实际输出做比较的技术对于软件测试而言是十分普遍的。然而,当测试人员测试基于机器学习的应用程序时,通过(<输入,输出>)对验证机器学习应用程序很大程度上是不可行的。这是因为:

(1)这个待测程序需要大量的输入;

(2)在许多情况下,输入的预期输出是未知的或者太昂贵而无法构建;

(3)与传统应用程序的测试不同,找到一个或一些机器学习系统错误分类的实例并不表示存在错误。

当机器学习算法输出不正确时(例如对特定输入进行错误分类),可能存在多种潜在原因。这些包括:缺乏训练数据、使用不恰当的机器学习框架、学习算法存在实现错误;在当前实验阶段,几乎所有的不正确的输出都归因于缺乏训练数据,并敦促开发人员收集更多不同的训练数据。但是如果学习算法本身实现就存在错误,那么收集更多的训练数据将无济于事。正如Davis和Weyuker所说,机器学习图像分类器本身就是用来解决疑难问题的程序,这类程序的输出就是疑难问题的答案。如果答案已知,那么这种程序也就没有存在的价值。这导致了机器学习图像分类器的测试面临着测试判定问题。

为了缓解测试判定问题,香港中文大学的T.Y.Chen提出了蜕变测试技术(Metamorphic Testing,MT)。该技术针对程序在预期输出难以获取的情况下,将检查程序的实际输出是否符合预期输出转变为检查程序的多个输入所对应的执行结果之间是否满足某特性关系,这种关系被称为“蜕变关系”。蜕变测试以原始输入为基础,以蜕变关系为判断准则,当测试用例之间满足一定的输入关系时,检查所对应的输出之间是否符合相应的蜕变关系,若不满足,则可以认为软件存在缺陷,这就为缓解测试判定问题提供了一种有效途径。显然,蜕变测试开展的基础就是蜕变关系的正确性,即需要事先确定蜕变关系一定是程序的必要关系。这样在难以判定测试结果是否正确的情况下,就可以应用蜕变关系提供测试判定。但是目前机器学习图像分类器的蜕变关系的测试判断较为困难,需要提出一种适用于机器学习图像分类器的蜕变测试方法和测试系统。

发明内容

发明目的是解决机器学习图像分类器的测试判定问题,同时为了减少人为因素对测试过程的干扰,规范蜕变测试流程,提出了适用于机器学习图像分类器的蜕变测试方法和测试系统。

为实现上述技术目的,本发明采用了以下技术方案:

一方面,本发明提供面向图像分类器的蜕变测试方法,其特征在于,包括以下:

将原始训练集和原始测试集分别结合预先构造的蜕变关系得到衍生训练集和衍生测试集;

根据原始训练集、原始测试集、以及衍生训练集和衍生测试集对预先构建的蜕变关系进行正确性判定;当判定结果为蜕变关系正确时,则通过执行变异算子得到变异图像分类器,利用原始训练集和衍生训练集、衍生训练集和衍生测试集,面向图像分类器对正确的蜕变关系进行有效性判定。

进一步地,对预先构建的蜕变关系进行正确性和有效性判定的具体方法为:

把原始训练集和衍生训练集分别对已经编写好的图像分类算法进行训练,分别得到第一图像分类器和第二图像分类器;将原始测试集和衍生测试集分别对第一图像分类器和第二图像分类器进行测试;判断两个分类器的测试结果是否满足蜕变关系从而对蜕变关系进行正确性判定;

当正确性判定结果满足预设条件,则执行下述步骤:

通过执行变异算子得到变异体,获得变异图像分类算法;将原始训练集和衍生训练集分别对变异图像分类算法进行训练,分别得到第三图像分类器和第四图像分类器;将原始测试集和衍生测试集分别对第三图像分类器和第四图像分类器进行测试;通过判断两个分类器的测试结果是否一致来度量蜕变关系的有效性。

再进一步地,将得到的变异体中导致运行时异常或不影响程序输出的变异体删除。

进一步地,若预先构造的蜕变关系为多于一个,则将原始训练集和原始测试集分别结合预先构造的每个蜕变关系得到衍生训练集和衍生测试集;

根据原始训练集、原始测试集、以及衍生训练集和衍生测试集对预先构建的蜕变关系进行正确性判定;当判定结果为蜕变关系正确时,则通过执行变异算子得到变异图像分类器,利用原始训练集和衍生训练集、衍生训练集和衍生测试集,面向图像分类器对正确的蜕变关系进行有效性判定;

循环所有蜕变关系遍历完成,结束蜕变测试。

另一方面,本发明提供面向图像分类器的蜕变测试系统,其特征在于,包括:衍生训练集和衍生测试集生成模块、蜕变关系正确性判定模块和蜕变关系有效性判定模块;

所述衍生训练集和衍生测试集生成模块,用于将原始训练集和原始测试集分别结合预先构造的蜕变关系得到衍生训练集和衍生测试集;

所述蜕变关系正确性判定模块,用于根据原始训练集、原始测试集、以及衍生训练集和衍生测试集对预先构建的蜕变关系进行正确性判定;

所述蜕变关系有效性判定模块,用于当蜕变关系正确性判定模块的判定结果为蜕变关系正确时,则通过执行变异算子得到变异图像分类器,利用原始训练集和衍生训练集、衍生训练集和衍生测试集,面向图像分类器对正确的蜕变关系进行有效性判定。

进一步地,所述蜕变关系正确性判定模块具体执行以下步骤:

把原始训练集和衍生训练集分别对已经编写好的图像分类算法进行训练,分别得到第一图像分类器和第二图像分类器;将原始测试集和衍生测试集分别对第一图像分类器和第二图像分类器进行测试;判断两个分类器的测试结果是否满足蜕变关系从而对蜕变关系进行正确性判定。

进一步地,所述蜕变关系有效性判定模块具体执行以下步骤:

当蜕变关系正确性判定模块结果满足预设条件,则执行下述步骤:

通过执行变异算子得到变异体,获得变异图像分类算法;将原始训练集和衍生训练集分别对变异图像分类算法进行训练,分别得到第三图像分类器和第四图像分类器;将原始测试集和衍生测试集分别对第三图像分类器和第四图像分类器进行测试;通过判断两个分类器的测试结果是否一致来度量蜕变关系的有效性。

有益技术效果:

本发明通过对预先构建的面向机器学习图像分类器的蜕变关系进行正确性和有效性的判定,实现了利用蜕变测试技术解决了机器学习图像分类器测试判定问题。

附图说明

图1是本发明实施例的方法流程图;

图2是本发明实施例一手写体数字图像和经蜕变关系之后的图像;

图3是本发明实施例一数据满足同分布时的测试结果;

图4是本发明实施例一数据不满足同分布特性时的测试结果;

图5是本发明实施例一两组测试集测试变异体1所得的结果;其中5(a)是原始数据集测试变异体1所得结果,5(b)是MR-1测试变异体1所得结果;

图6是本发明实施例二CIFAR-10数据实例可视化;

图7是本发明实施例二图像经RGB通道置换后的训练图像;

图8是本发明实施例二图像经CONV置换后的训练图像;

图9是本发明实施例二特征乘以一个常数k以后的测试图像;

图10是本发明实施例二MR-1的测试结果;

图11是本发明实施例二MR-1杀死以上变异体的测试损失图;

图12是本发明实施例二MR-3杀死以上变异体的测试损失图;

图13是本发明实施例二MR-2杀死以上变异体的测试损失图。

具体实施方式

为了阐明本发明的技术方案及技术目的,下面结合附图、具体实施方式和具体实施例对本发明做进一步的介绍。

实施方式:图像分类器的蜕变关系测试判定方法(本发明实施方式的方法流程如图1所示),包括:

1)将已收集好的原始训练集S和原始测试集T结合蜕变关系即可得到衍生训练集S′和衍生测试集T′;

2)其次把原始训练集S和衍生训练集S′分别对已经编写好的机器学习图像分类算法A进行训练,分别得到图像分类器AT(即第一图像分类器)和图像分类器AT′(即第二图像分类器);

3)将原始测试集T和衍生测试集T′分别对图像分类器AT和图像分类器AT′进行测试;

4)判断两个分类器的测试结果O

5)再通过执行变异算子得到机器学习图像分类算法A′,再将原始训练集S和衍生训练集S′分别对变异机器学习图像分类算法A′进行训练,分别得到图像分类器AT′(即第三图像分类器)和图像分类器A′T′(即第四图像分类器);

6)将原始测试集T和衍生测试集T′分别对图像分类器A′T和图像分类器A′T′进行测试;

7)通过判断两个分类器的测试结果O

实施例一:图像分类器的蜕变关系测试判定方法,本实施例是面向SVM图像分类器的蜕变测试,包括以下步骤:

首先选择了SVM算法,数据集选用digits手写体数据集,它将手写数字图像分为0到9的类。该机器学习算法是基于官方的Scikit-learn实现的,Scikit-learn是一个流行的机器学习库。该算法可以分为基于线性核函数或非线性核函数实现的。

然后对线性核函数SVM算法和非线性核函数SVM算法均构造了蜕变关系。对于训练,SVM算法采用手写数字的标记数据,并学习这些训练数据中的内在属性是怎样分隔这些类别从而得到决策边界。每个标记数据都是8像素*8像素的图像。像素是在灰度级别中,一个手写体数字图像例子由64个数字的数组表示。

有关一些digits数据集的可视化,如图2所示,对于测试,用已经训练好的模型预测测试图像的类别。该模型的输出为混淆矩阵和测试准确率。测试准确率越高就意味着模型对该测试图像正确分类越高。

根据通用蜕变关系以及SVM算法特有的蜕变关系构造出了下面4种蜕变关系:

(1)MR-1:训练数据集和测试数据集的特征排列改变,分类精度不变;

(2)MR-2:训练数据集中训练用例的顺序改变,分类精度不变;

(3)MR-3:训练数据集和测试数据集的特征扩大常数倍,分类精度不变(只针对非线性核函数);

(4)MR-4:测试数据集的特征经线性缩放之后,分类精度不变(只针对线性核函数)。

其中MR-1和MR-2是基于分类算法的通用蜕变关系进行构造的,MR-3和MR-4是基于图像属性以及SVM特有的线性核函数和非线性核函数进行构造的。构造的4种MR中的每一种都可以具有多种变化的方式。例如,在MR-1中,可以以多种方式对特征进行置换。针对每个MR构建一组新的数据集。然而,该数据集每条数据都发生了相对应的改变。例如,在MR-1中,每个特征都发生置换。在MR-2中,每个训练数据实例的顺序被改变了。同理,对于MR-3和MR-4,也相应的构建了一组新的数据集。

蜕变关系的正确性判定具体如下:

接下来从以上4种蜕变关系分别选出一个蜕变关系,并用实验证明其正确性。针对MR-1,改变训练数据集和测试数据集的特征排列,得到衍生训练集和衍生测试集。并依照机器学习蜕变测试框架,分别将原始的训练集和衍生训练集放入SVM算法进行训练,可得到原始的训练模型和衍生训练模型,再将这两个训练模型分别对原始的测试集和衍生测试集进行测试,图3为本实施例中两个训练模型的测试结果。

上述实验测试集和训练集满足同分布特性,下面针对原有数据集构造不同分布的测试集和训练集进行上述同样的实验,图4为测试集和训练集不满足同分布特性时的测试结果。

对比上述两个实验可得训练数据集与测试数据集在不满足同分布特性情况下,蜕变关系依旧正确。由上图测试结果可以得到,改变训练数据集和测试数据集的特征排列,其分类精度不改变。因此证明了MR-1的正确性。同理,针对MR-2,MR-3,MR-4依次按照机器学习蜕变测试框架进行实验,实验结果表明该4条蜕变关系的正确性。

变异体的构造具体如下:

采用上述的Mutpy工具为线性内核SVM图像分类器构造了52个变异体,为非线性内核的SVM图像分类器构造了52个变异体,并删除了那些会导致运行时异常或不影响程序输出的变异体。例如改变“print”函数的变异体,将手动删除,最后一共得到了6个满足实现错误的变异体,其具体变异体如表1所示:

表1 SVM图像分类器的变异体构造列表

实验结果具体如下

将原始训练集和衍生训练集分别执行6个变异体,得到6个变异图像分类器,再将原始测试集和衍生测试集对这6个变异图像分类器进行测试。如果变异图像分类器和原图像分类器的对应输出不满足蜕变关系,则认为变异体被杀死。图5(a)为原始数据集测试变异体1所得的结果,图5(b)是由原始数据集通过MR-1变化之后得到的新数据集测试变异体1所得的结果。由图5可以看出两组测试精度不相等,则认为变异体1被MR-1所杀死。

通过比较原图像分类器与6个变异的图像分类器的输出结果分析得出,表2线性SVM分类器杀死变异体的结果。表3非线性SVM分类器杀死变异体的结果。其中表中的√表示变异体被杀死。

表2 线性SVM分类器杀死变异体的结果

表3 非线性SVM分类器杀死变异体的结果

从2个表可以看出,线性核函数和非线性核函数的SVM图像分类器构造的6个变异体都能被这4种蜕变关系所杀死。同时,可以看到MR-1(改变数据集的特征排列)杀死了所有变异体。这是因为Mutpy工具生成的所有6个变异体均对应于对输入数据错误处理,而MR-1改变了数据集的特征排列导致类标签也发生改变,因此该蜕变关系可以杀死所有变异体。同理,MR-3也能杀死所有的变异体。

实施例二:图像分类器的蜕变关系测试判定方法,本实施例是面向VGG16图像分类器的蜕变测试方法,包括以下步骤:

蜕变关系的构造具体如下:

选择的第二个图像分类器是深度学习的图像分类器被称为VGG16。VGG16模型的出现,使得卷积神经网路取得了突破性的成就。该模型能将图像分类这一任务很好的完成,并在2014年ILSVRC竞赛中取得了优异的成绩。本实施例基于tensorflow框架实现VGG16。VGG16图像分类器对已标记数据进行训练和测试,选用CIFAR-10数据集。该数据集的每个数据实例都是32*32像素彩色图像,即每个实例具有32×32×3特征数字并已被分为10个互斥类。图6中显示了一些数据实例的可视化。对于给定的一组测试实例,VGG16图像分类器输出分为测试分类准确度和测试损失,测试损失表示预测类和实际类之间的交叉熵用来衡量分类效果的值。

根据图像的几何属性以及VGG16算法特性构造出了下面3种蜕变关系:

(1)MR-1:训练数据集和测试数据集输入RGB通道排列改变,分类精度不变;

(2)MR-2:训练数据集和测试数据集卷积操作排列改变,分类精度不变;

(3)MR-3:测试数据集的特征均乘以一个常数k,分类精度不变。

图7为原始训练图像和将该图像经过RGB通道置换后的训练图像的可视化,图8为原始训练图像和将该图像经过CONV顺序置换后的训练图像的可视化,图9为原始测试图像和将该图像每个特征乘以一个常数k以后的测试图像的可视化。

蜕变关系的正确性判定具体如下:

接下来从以上3种蜕变关系分别选出一个蜕变关系,并通过实验证明该蜕变关系正确性。对于MR-1,改变训练数据集和测试数据集RGB通道排列顺序,得到衍生训练集和衍生测试集。并按照机器学习蜕变测试框架,分别将原始的训练集和衍生训练集放入VGG16进行训练,可得到原始的VGG16图像分类器和衍生的VGG16图像分类器,再将这两个图像分类器分别对原始的测试集和衍生测试集进行测试,下图为个训练模型的测试结果。由于测试损失和测试精度都是能很好反应测试性能的,又因为测试精度本身差值最多为100%,这里选用测试损失更好的反应不同的RGB通道变化曲线。

由图10示出的MR-1的测试结果可以得到,改变训练数据集和测试数据集RGB通道排列顺序,其测试损失大致不变。因此证明了MR-1的正确性。

同理,针对MR-2,MR-3依次按照机器学习蜕变测试框架进行实验,实验结果表明该3条蜕变关系的正确性。

变异体的构造具体如下:

采用上述的Mutpy工具为VGG16图像分类器一共构造了459个变异体,通过筛选并删除了那些会导致运行时异常或不影响程序输出的变异体。最终得到10个变异体,如表4所示。

表4 VGG16图像分类器的变异体构造列表

实验结果具体如下:

图11,图12,图13分别显示了MR-1,MR-3,MR-2在杀死以上变异体的测试损失图,其中横轴Epochs为迭代次数,纵轴Test loss为测试损失,Original为原始图像,Transpos为原始训练图像转置,rotate90为原始训练图像旋转900,rotate90transpose为旋转900后转置,rotate180为原始训练图像旋转1800,rotate180transpose为旋转1800后转置,rotate270为原始训练图像旋转2700,rotate270transpose为旋转2700后转置。RGB,RBG,BGR,BRG,GRB,GBR为图像R,G,B3个通道口不同的排列次序;图12中图像特征乘以一个常数k以后的测试图像k分别为1/2,2,30。

这三个图展示了VGG16图像分类器每10次迭代次数所对应的输出结果,从以下3个图可以清楚的看到一些异常值,同时通过计算了每个迭代次数的测试损失的差值δ,并求出最大测试损失的差值δ

表5为这3种蜕变关系执行所有的变异体之后的结果。括号中的值是通过计算每张测试损失图的最大损失的差值,使用阈值2作为最大阈值,通过测试损失图可以计算得出每个变异体的δ

表5 VGG16图像分类器杀死变异体的结果

从表5中可以看出MR-1杀死了M6,M7,M8这3个变异体,MR-2杀死了M2,M4,M5,M8这4个变异体,同样我可以得到MR-3也能杀死变异体,这将是非常有用的,因为MR-3可以在已经运用训练好的模型上,这样就不再需要重新训练模型,这将更好的推进整个过程的自动化。

以上实施例将机器学习图像分类器的蜕变测试框架具体化,将其应用于SVM和VGG16的图像分类器的蜕变测试中;通过面向SVM与VGG16图像分类器的蜕变测试研究,证明了蜕变测试技术能有效的检测出机器学习图像分类器的实现错误。

根据通用蜕变关系和特有蜕变关系的构造方法,为SVM和VGG16图像分类器分别构造了4种蜕变关系和3种蜕变关系。并通过Mutpy变异测试工具为其构造了大量的变异体,然后筛选出机器学习图像分类器实现错误的变异体,最后通过实验验证了蜕变测试方法在解决机器学习图像分类器的实现错误的有效性。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号