主要内容

imageLIME

使用LIME解释网络预测

    描述

    例子

    scoreMap= imageLIME (X标签使用局部可解释模型不可知解释(LIME)技术来计算输入图像中特征重要性的地图X当网络为所给出的类计算类的分数标签.使用这个函数来解释分类决策,并检查你的网络是否专注于图像的适当特征。

    LIME技术近似的分类行为使用一个更简单、更可解释的模型。通过从输入中生成合成数据X,对合成数据进行分类,然后利用结果拟合一个简单的回归模型,得到imageLIME功能决定了每个功能的重要性X以网络的分类分数为班级给出标签

    此功能需要统计和机器学习工具箱™。

    例子

    scoreMapfeatureMapfeatureImportance= imagelme (X标签还返回用于计算LIME结果的特征的映射以及每个特征的计算重要性。

    例子

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

    例子

    全部折叠

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

    导入预训练的网络SqueezeNet。

    网=挤压网;

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

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

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

    imshow (X)

    对图像进行分类以获得类标签。

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

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

    scoreMap = imageLIME(net,X,label);

    将结果绘制在透明的原始图像上,以查看图像的哪些区域会影响分类得分。

    图imshow(X)稍等显示亮度图像(scoreMap“AlphaData”, 0.5) colormap飞机

    该网络主要关注莱卡的头部和背部来做出分类决定。莱卡的眼睛和耳朵对分类结果也很重要。

    使用imageLIME确定图像中最重要的特征,并将它们与不重要的特征隔离开来。

    导入预训练的网络SqueezeNet。

    网=挤压网;

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

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

    对图像进行分类以获得类标签。

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

    计算特征重要度映射,得到特征和特征重要度映射。设置图像分割方法为“网格”,特征的数量64,和合成图像的数量3072

    [scoreMap,featureMap,featureImportance] = imagelme (net,X,label,“分割”“网格”“NumFeatures”, 64,“NumSamples”, 3072);

    将结果绘制在透明的原始图像上,以查看图像的哪些区域会影响分类得分。

    图imshow(X)稍等显示亮度图像(scoreMap“AlphaData”, 0.5) colormap飞机colorbar

    利用特征重要度找到最重要的五个特征的指标。

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

    使用特征的映射来掩盖图像,这样只有最重要的五个特征是可见的。显示掩码图像。

    mask = ismember(特征映射,idx);maskedImg = uint8(掩码).*X;图imshow (maskedImg);

    使用imageLIME使用自定义分割图查看最重要的特征进行分类决策。

    导入预先训练好的网络GoogLeNet。

    Net = googlenet;

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

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

    对图像进行分类以获得类标签。

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

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

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

    segmentationMap = 0 (inputSize(1));

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

    blockSize = 56;segmentation子集= ones(blockSize);segmentation子集= tril(segmentation子集)+ segmentation子集;将对角线元素设置为交替值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“AlphaData”, 0.8);标题(“自定义分割地图”) colormap灰色的

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

    scoreMap = imagelme (net,X,label,...“分割”, segmentationMap);

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

    图;imshow (X)标题(“Image LIME(金毛猎犬)”) colormap飞机;显示亮度图像(scoreMap“AlphaData”, 0.5);

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

    输入参数

    全部折叠

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

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

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

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

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

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

    如果你指定标签作为一个向量,软件独立计算每个类标签的特征重要性。这样的话,scoreMap (:,:, k)而且featureImportance (idx k)对应于特征重要性图和特征重要性图idxk第Th元素标签,分别。

    例子:["猫”“狗”)

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

    名称-值对参数

    的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数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(统计和机器学习工具箱)

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

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

    数据类型:字符|字符串

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

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

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

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

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

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

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

    迷你批是合成图像集的子集。迷你批大小指定一次性传递到网络的合成图像的数量。更大的迷你批处理大小导致更快的计算,但代价是更多的内存。

    例子:“MiniBatchSize”,256年

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

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

    • “cpu”—使用CPU。

    • “图形”—使用GPU。

    GPU选项需要并行计算工具箱™。要使用GPU进行深度学习,还必须有支持GPU的设备。万博1manbetx有关受支持设备的信息,请参见万博1manbetxGPU支万博1manbetx持版本(并行计算工具箱)如果你选择“ExecutionEnvironment”、“gpu的选项和并行计算工具箱或合适的GPU不可用,则软件返回一个错误。

    例子:“ExecutionEnvironment”、“gpu的

    输出参数

    全部折叠

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

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

    如果标签指定为向量时,将独立计算每个类别标签的分类分数变化。这样的话,scoreMap (:,:, k)的遮挡映射k第Th元素标签

    特征映射,作为数字矩阵返回。

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

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

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

    更多关于

    全部折叠

    石灰

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

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

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

    • 将图像分割成特征。

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

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

    • 使用每个合成图像的图像特征的存在或不存在来拟合一个回归模型,作为目标类得分的二进制回归预测因子。

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

    生成的地图可用于确定哪些特征对特定的分类决策最重要。这对于确保你的网络在分类时专注于适当的特征特别有用。

    R2020b中介绍