主要内容

imageLIME

使用LIME解释网络预测

    描述

    例子

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

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

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

    例子

    scoreMap特征图featureImportance]=图像石灰(X标签还返回用于计算LIME结果的特征的地图和每个特征的计算重要性。

    例子

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

    例子

    全部崩溃

    使用imageLIME将图像的各个部分可视化对于网络进行分类决策是很重要的。

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

    网= squeezenet;

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

    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)在…上显示亮度图像(scoreMap“字母数据”, 0.5) colormap飞机

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

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

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

    网= squeezenet;

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

    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)在…上显示亮度图像(scoreMap“字母数据”, 0.5) colormap飞机colorbar

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

    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。segmentation子集(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);segmentationMap(xidx,yidx) = segmentation子集+ 2*子集;子集=子集+ 1;结束结束

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

    图imshow (X)在…上显示亮度图像(segmentationMap“字母数据”,0.8); 头衔(“自定义分段图”) colormap灰色的

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

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

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

    图;imshow (X)在…上标题(“Image LIME(金毛猎犬)”) colormap飞机;imagesc(记分图、,“AlphaData”, 0.5);

    地图上的红色区域有更高的重要性——当这些区域被移除时,金毛猎犬的得分会下降。这种分类最重要的特征是耳朵。

    输入参数

    全部崩溃

    图像分类网络,指定为SeriesNetwork物体或物体达格网络对象。您可以通过导入预先训练过的网络或通过使用trainNetwork函数。有关预训练网络的更多信息,请参见预训练深度神经网络

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

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

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

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

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

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

    例子:["猫”“狗”)

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

    名称-值参数

    指定可选的逗号分隔的对名称,值参数。的名字参数名和价值是对应的值。的名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家

    例子:“NumFeatures”,100年,“分割”,“网格”,‘OutputUpsampling’,‘双三次的’,‘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(统计学和机器学习工具箱)然后使用线性模型的权重计算每个特征的重要性。

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

    数据类型:字符|字符串

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

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

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

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

    如果“OutputUpsampling”“最近的”“双三次的”,将计算的映射上采样到输入数据的大小imresize函数。

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

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

    小批量是合成图像集的子集。“小批量大小”指定一次传递到网络的合成图像的数量。较小的批处理大小会导致更快的计算,但会消耗更多内存。

    例子:“MiniBatchSize”,256年

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

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

    • “cpu”—使用CPU。

    • “图形”—使用GPU。

    GPU选项需要并行计算工具箱™.要使用GPU进行深度学习,您还必须有支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱)如果你选择“执行环境”,“gpu”选项和并行计算工具箱或合适的GPU不可用,则软件返回错误。

    例子:“执行环境”,“gpu”

    输出参数

    全部崩溃

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

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

    如果标签指定为向量,则独立计算每个类别标签的分类评分变化。在这种情况下,scoreMap (:,:, k)对应的遮挡映射kth元素标签

    要素地图,作为数字矩阵返回。

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

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

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

    更多关于

    全部崩溃

    石灰

    局部可解释模型不可知解释(LIME)技术是一种可解释性技术,用于解释深层神经网络做出的分类决策。

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

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

    • 将图像分割成特征。

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

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

    • 使用每个合成图像是否存在图像特征作为目标类分数的二元回归预测值,拟合回归模型。

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

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

    介绍了R2020b