主要内容

imageLIME

使用LIME解释网络预测

    描述

    例子

    scoreMap= imageLIME (X标签使用局部可解释的模型不可知解释(LIME)技术来计算输入图像中特征重要性的地图X当网络评估所给班级的班级分数标签.使用此功能来解释分类决策并检查您的网络是否关注图像的适当功能。

    石灰技术近似于近似的分类行为使用更简单、更可解释的模型。通过从输入生成合成数据X,对合成数据进行分类,然后使用结果适合简单的回归模型,imageLIME函数确定每个功能的重要性X以网络的分类评分为纲给出的标签

    这个函数需要Statistics和Machine Learning Toolbox™。

    例子

    scoreMapFeaturemap.特征性] = ImageLime(X标签还返回用于计算石灰结果的功能的地图以及计算每个功能的重要性。

    例子

    ___= imageLIME (___名称,值除了前面语法中的输入参数外,还使用一个或多个名称-值对参数指定选项。例如,'numfeatures',100将目标数量设置为100。

    例子

    全部收缩

    imageLIME为了可视化图像的部分对网络的分类决策很重要。

    导入经过预先训练的网络SqueezeNet。

    net =挤压;

    导入图像并调整大小以匹配网络的输入大小。

    x = imread(“laika_grass.jpg”);inputSize = net.Layers (1) .InputSize (1:2);X = imresize (X, inputSize);

    显示图像。图像是一只名叫洛卡的狗。

    imshow (X)

    将图像分类以获取类标签。

    标签=分类(净,X)
    标签=分类玩具贵宾犬

    imageLIME确定图像的哪些部分对分类结果重要。

    scoreMap = imageLIME(净,X,标签);

    绘制原始图像的结果,具有透明度,以查看图像的哪个区域会影响分类分数。

    图imshow (X)ImageC(ScoreMap,'alphadata',0.5)Colormap飞机

    该网络主要针对莱卡的头部和背部进行分类决策。莱卡的眼睛和耳朵对分类结果也很重要。

    imageLIME确定图像中最重要的特征,并将它们从不重要的特征中分离出来。

    导入经过预先训练的网络SqueezeNet。

    net =挤压;

    导入图像并调整大小以匹配网络的输入大小。

    x = imread(“sherlock.jpg”);inputSize = net.Layers (1) .InputSize (1:2);X = imresize (X, inputSize);

    将图像分类以获取类标签。

    标签=分类(净,X)
    标签=分类金猎犬

    计算要素的图形,也可以获得功能的地图和特征重要性。将图像分段方法设置为'网格',功能的数量64,以及合成图像的数量3072.

    [scoreMap, featureMap featureImportance] = imageLIME(净,X,标签,“分割”'网格'“NumFeatures”,64,“NumSamples”, 3072);

    绘制原始图像的结果,具有透明度,以查看图像的哪个区域会影响分类分数。

    图imshow (X)ImageC(ScoreMap,'alphadata',0.5)Colormap飞机彩色栏

    使用特征的重要性来找到最重要的五个特征的索引。

    numTopFeatures = 5;[~, idx] = maxk (featureImportance numTopFeatures);

    使用要素的地图来掩盖图像,只有最重要的五个功能都是可见的。显示屏蔽图像。

    掩码= ismember (featureMap idx);maskedImg = uint8(面具)。* X;图imshow (maskedImg);

    imageLIME使用自定义分段图以查看分类决策的最重要功能。

    导入经过训练的网络GoogLeNet。

    网= googlenet;

    导入图像并调整大小以匹配网络的输入大小。

    x = imread(“sherlock.jpg”);inputSize = net.Layers (1) .InputSize (1:2);X = imresize (X, inputSize);

    将图像分类以获取类标签。

    标签=分类(净,X)
    标签=分类金猎犬

    创建定义自定义分段映射的矩阵,该映射将图像划分为三角形段。每个三角形段代表一个特征。

    首先定义大小等于图像的输入大小的矩阵。

    segmentationMap = 0 (inputSize (1));

    接下来,创建一个更小的分割地图,将一个56 × 56像素的区域分成两个三角形特征。给上面和下面的部分赋值1和2,分别代表第一个和第二个特征。

    blockSize = 56;segmentationSubset = 1 (blockSize);segmentationSubset = tril(segmentationSubset) + segmentationSubset;%设置对角线元素为交替值1和2。semonationsumset(1:(blocksize + 1):end)= Repmat([1 2],1,BlockSize / 2)';

    要为整个图像创建自定义分段映射,请重复小分段映射。每次重复较小的地图时,增加特征索引值,使得每个三角段中的像素对应于唯一的特征。在最终矩阵中,值1表示图像中的每个段的第一特征,值2,依此类推。

    blocksPerSide = inputSize (1) / blockSize;子集= 0;我= 1:blocksPerSidej = 1:blocksperside xidx =(blocksize *(i-1))+ 1 :( blocksize * i);yidx =(blocksize *(j-1))+ 1 :( blocksize * j);semunationMap(xidx,yidx)= semonationsubset + 2 *子集;子集=子集+ 1;结束结束

    查看分割地图。这张地图将图像分成32个三角形区域。

    图imshow (X)ImageC(SemmentationMap,'alphadata',0.8);标题('自定义分段图')ColorMap.灰色的

    imageLIME用自定义分割图来确定图像的哪些部分对分类结果最重要。

    scoreMap = imageLIME(净,X,标签,...“分割”,secmentationmap);

    绘制结果imageLIME在原始图像上查看图像的哪些区域影响分类得分。

    图;imshow (X)标题(“Image LIME(金毛猎犬)”)ColorMap.飞机;ImageC(ScoreMap,“alphadata”, 0.5);

    地图的红色区域具有更高的重要性 - 当这些区域被删除时,金毛猎犬类的分数下降。此分类最重要的特征是耳朵。

    输入参数

    全部收缩

    图像分类网络,指定为aSeriesNetwork对象或A.Dagnetwork.目的。您可以通过导入预磨损的网络或使用您自己的网络使用培训的网络来获得培训的网络trainNetwork函数。有关预训练网络的更多信息,请参见普里德深度神经网络

    必须包含一个输入层和一个输出层。输入层必须是imageInputLayer.输出层必须是aclassificationLayer

    输入图像,指定为数字数组。

    图像必须与网络的图像输入大小相同.属性指定输入大小输入网络的财产imageInputLayer

    数据类型:|双倍的|INT8.|int16|INT32.|INT64.|uint8|uint16|uint32|uint64

    用于计算特征重要性映射的类标签,指定为分类,CHAR矢量,字符串标量或这些值的向量。

    如果您指定标签作为向量,软件独立计算每个类标签的特征重要性。在这种情况下,ScoreMap(:,:,k)featureImportance (idx k)对应于特征重要性的地图和功能的重要性idx为了kin标签,分别。

    例子:["猫”“狗”)

    数据类型:char|字符串|分类

    名称值对参数

    指定可选的逗号分隔的对名称,值论点。的名字参数名和价值是相应的价值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

    例子:'numfeatures',100,'分割','grid','countupsampling','bicubic','executionenvironment','gpu'将输入图像分割成约100个特征的网格,在GPU上执行计算,并使用双三次插值将结果映射上采样到与输入图像相同的大小。

    将输入图像分成的目标的特征数,指定为逗号分隔对“NumFeatures”和一个正整数。

    更大的价值“NumFeatures”将输入图像分成更多、更小的特征。为了在使用大量特征时获得最好的结果,还需要增加使用该方法的合成图像数量“NumSamples”名称值对。

    特征的确切数量取决于输入图像和使用指定的分割方法“分割”名称-值对,可以小于目标特性的数量。

    • 当你指定“分割”、“superpixels”,实际的特征数量可以大于或小于使用指定的数量“NumFeatures”

    • 当你指定“分割”、“网格”,特性的实际数量可以小于指定的数量使用“NumFeatures”.如果您的输入图像为广场,请指定“NumFeatures”作为平方数。

    • 当你指定'分割',细分, 在哪里分割是一种二维矩阵,“NumFeatures”与矩阵中的唯一元素的数量相同。

    例子:'numfeatures',100

    数据类型:|双倍的|INT8.|int16|INT32.|INT64.|uint8|uint16|uint32|uint64

    生成的合成图像数量,指定为逗号分隔的对组成“NumSamples”和一个正整数。

    更大数量的合成图像提供了更好的结果,但需要更多时间来计算。

    例子:“NumSamples”,1024年

    数据类型:|双倍的|INT8.|int16|INT32.|INT64.|uint8|uint16|uint32|uint64

    用于将输入图像划分为特征的分割方法,指定为逗号分隔的对组成“分割”'superpixels''网格',或二维分割矩阵。

    imageLIME功能将输入图像分段为以下方式,具体取决于分段方法。

    • 'superpixels'-将输入图像划分为超像素特征,使用superpixels(图像处理工具箱)函数。基于像素的值,特征是不规则的形状。此选项需要图像处理工具箱™。

    • '网格'-输入图像被划分为规则的特征网格。根据输入图像的宽高比和的指定值,特征近似为平方“NumFeatures”.网格单元的数量可以小于指定值“NumFeatures”.如果输入的图像是正方形的,请指定“NumFeatures”作为平方数。

    • 数字矩阵 - 输入图像被分成自定义特征,使用数字矩阵作为地图,其中每个像素的整数值指定相应像素的特征。“NumFeatures”与矩阵中的唯一元素的数量相同。矩阵的大小必须匹配输入图像的大小。

    用于摄影图像数据,'superpixels'选项通常会提供更好的结果。在这种情况下,通过将图像分割成相似像素值的区域,特征基于图像的内容。对于其他类型的图像,例如谱图,更常规'网格'选项或自定义的分割地图可以提供更有用的结果。

    例子:“分割”、“网格”

    类型为简单模型拟合,指定为指定为逗号分隔对组成'模型''树'或者“线性”

    imageLIME功能使用网络对合成图像进行分类然后用结果来拟合一个简单的、可解释的模型。用于拟合结果和确定每个特征重要性的方法取决于所使用的简单模型的类型。

    • '树'- 使用回归树使用fitrtree(统计学和机器学习工具箱)然后计算每个功能的重要性predictorImportance(统计学和机器学习工具箱)

    • “线性”-拟合线性模型与lasso回归使用fitrlinear(统计学和机器学习工具箱)然后使用线性模型的权重计算每个特征的重要性。

    例子:“模型”、“线性”

    数据类型:char|字符串

    在分段方法是时使用的输出上采样方法'网格',指定为逗号分隔的配对组成“OutputUpsampling”下面是其中之一。

    • '最近'—使用最近邻插值将映射扩展到与输入数据相同的大小。映射指示每个特性相对于输入数据的大小的大小。

    • “双三次的”—使用双三次插值生成与输入数据大小相同的平滑映射。

    • “没有”-不使用上采样。映射可以比输入数据小。

    如果“OutputUpsampling”'最近'或者“双三次的”,计算的地图使用该映射到输入数据的大小imresize函数。

    例子:“OutputUpsampling”、“双三次的“

    用于计算映射特性重要性的mini-batch的大小,指定为逗号分隔对组成“MiniBatchSize”和一个正整数。

    迷你批处理是该组合图像集的子集。Mini-Batch Size指定立即将其传递给网络的合成图像数。较大的小型批量尺寸导致更快的计算,以更高的内存成本。

    例子:“MiniBatchSize”,256年

    硬件资源计算映射,指定为逗号分隔对组成“ExecutionEnvironment”下面是其中之一。

    • “汽车”—如果有图形处理器,请使用图形处理器。否则,请使用CPU。

    • “cpu”- 使用CPU。

    • 'GPU'—使用GPU。

    GPU选项需要并行计算工具箱™。要使用GPU进行深度学习,您还必须有支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱)如果你选择了'executionenvironment','gpu'选项和并行计算工具箱或合适的GPU不可用,然后软件返回错误。

    例子:'executionenvironment','gpu'

    输出参数

    全部收缩

    具有重要特性的映射,以数字矩阵或数字数组的形式返回。地图中正数值较高的区域对应于输入数据中对指定分类标签有正贡献的区域。

    的价值scoreMap (i, j)表示图像像素的重要性(I,J)到简单模型,除非你使用选项“分割”、“网格”, 和“OutputUpsampling”、“没有”.在这种情况下,scoreMap小于输入图像,值scoreMap (i, j)表示特征在位置的重要性(I,J)在特征网格中。

    如果标签被指定为向量,每个类标签的分类评分的变化是独立计算的。在这种情况下,ScoreMap(:,:,k)对应的遮挡映射kin标签

    功能映射,作为数字矩阵返回。

    对于每个像素(I,J)在输入图像中,idx = featuremap(i,j)为包含该像素的特征的索引所对应的整数。

    特征的重要性,返回为数字向量或数字矩阵。

    的价值featureImportance (idx)是计算所指定的功能的重要性idx.如果您将标签作为分类值、字符向量或字符串标量的向量提供,则featureImportance (idx k)对应于功能的重要性idx标签(k)

    更多关于

    全部收缩

    酸橙

    局部可解释的模型 - 不可止结的解释(石灰)技术是用于解释由深神经网络制成的分类决策的解释性技术。

    在给定输入数据的深度网络分类决策的情况下,LIME技术计算输入数据的每个特征对分类结果的重要性。

    LIME技术使用更简单、更可解释的模型(如回归树)来近似深度神经网络的行为。为了映射输入图像不同部分的重要性,使用imageLIME函数执行以下步骤。

    • 将图像分割成特征。

    • 通过随机包括或排除功能来生成合成图像数据。排除特征中的每个像素被替换为平均图像像素的值。

    • 利用深度网络对合成图像进行分类。

    • 使用每个合成图像的图像特征的存在或不存在作为二进制回归预测因子,适用于目标类别的二进制回归预测器。

    • 使用回归模型计算每个特征的重要性。

    结果图可用于确定哪些特征对特定的分类决策最重要。这对于确保您的网络在分类时关注适当的特性特别有用。

    介绍了R2020b