使用LIME解释网络预测
用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:blocksPerSide为j = 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);
地图的红色区域具有更高的重要性 - 当这些区域被删除时,金毛猎犬类的分数下降。此分类最重要的特征是耳朵。
网
- - - - - -图像分类网络SeriesNetwork
对象|Dagnetwork.
对象图像分类网络,指定为aSeriesNetwork
对象或A.Dagnetwork.
目的。您可以通过导入预磨损的网络或使用您自己的网络使用培训的网络来获得培训的网络trainNetwork
函数。有关预训练网络的更多信息,请参见普里德深度神经网络.
网
必须包含一个输入层和一个输出层。输入层必须是imageInputLayer
.输出层必须是aclassificationLayer
.
X
- - - - - -输入图像输入图像,指定为数字数组。
图像必须与网络的图像输入大小相同网
.属性指定输入大小输入
网络的财产imageInputLayer
.
数据类型:单
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
标签
- - - - - -类标签用于计算特征重要性映射的类标签,指定为分类,CHAR矢量,字符串标量或这些值的向量。
如果您指定标签
作为向量,软件独立计算每个类标签的特征重要性。在这种情况下,ScoreMap(:,:,k)
和featureImportance (idx k)
对应于特征重要性的地图和功能的重要性idx
为了k
in标签
,分别。
例子:["猫”“狗”)
数据类型:char
|字符串
|分类
指定可选的逗号分隔的对名称,值
论点。的名字
参数名和价值
是相应的价值。的名字
必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen
.
'numfeatures',100,'分割','grid','countupsampling','bicubic','executionenvironment','gpu'
将输入图像分割成约100个特征的网格,在GPU上执行计算,并使用双三次插值将结果映射上采样到与输入图像相同的大小。
“NumFeatures”
- - - - - -目标特征数量49
(默认)|正整数将输入图像分成的目标的特征数,指定为逗号分隔对“NumFeatures”
和一个正整数。
更大的价值“NumFeatures”
将输入图像分成更多、更小的特征。为了在使用大量特征时获得最好的结果,还需要增加使用该方法的合成图像数量“NumSamples”
名称值对。
特征的确切数量取决于输入图像和使用指定的分割方法“分割”
名称-值对,可以小于目标特性的数量。
当你指定“分割”、“superpixels”
,实际的特征数量可以大于或小于使用指定的数量“NumFeatures”
.
当你指定“分割”、“网格”
,特性的实际数量可以小于指定的数量使用“NumFeatures”
.如果您的输入图像为广场,请指定“NumFeatures”
作为平方数。
当你指定'分割',细分
, 在哪里分割
是一种二维矩阵,“NumFeatures”
与矩阵中的唯一元素的数量相同。
例子:'numfeatures',100
数据类型:单
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
“NumSamples”
- - - - - -合成图像数2048.
(默认)|正整数生成的合成图像数量,指定为逗号分隔的对组成“NumSamples”
和一个正整数。
更大数量的合成图像提供了更好的结果,但需要更多时间来计算。
例子:“NumSamples”,1024年
数据类型:单
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
“分割”
- - - - - -分割方法'superpixels'
(默认)|'网格'
|数字矩阵用于将输入图像划分为特征的分割方法,指定为逗号分隔的对组成“分割”
和'superpixels'
,'网格'
,或二维分割矩阵。
的imageLIME
功能将输入图像分段为以下方式,具体取决于分段方法。
'superpixels'
-将输入图像划分为超像素特征,使用superpixels
(图像处理工具箱)函数。基于像素的值,特征是不规则的形状。此选项需要图像处理工具箱™。
'网格'
-输入图像被划分为规则的特征网格。根据输入图像的宽高比和的指定值,特征近似为平方“NumFeatures”
.网格单元的数量可以小于指定值“NumFeatures”
.如果输入的图像是正方形的,请指定“NumFeatures”
作为平方数。
数字矩阵 - 输入图像被分成自定义特征,使用数字矩阵作为地图,其中每个像素的整数值指定相应像素的特征。“NumFeatures”
与矩阵中的唯一元素的数量相同。矩阵的大小必须匹配输入图像的大小。
用于摄影图像数据,'superpixels'
选项通常会提供更好的结果。在这种情况下,通过将图像分割成相似像素值的区域,特征基于图像的内容。对于其他类型的图像,例如谱图,更常规'网格'
选项或自定义的分割地图可以提供更有用的结果。
例子:“分割”、“网格”
'模型'
- - - - - -简单模型类型'树'
(默认)|“线性”
类型为简单模型拟合,指定为指定为逗号分隔对组成'模型'
和'树'
或者“线性”
.
的imageLIME
功能使用网络对合成图像进行分类网
然后用结果来拟合一个简单的、可解释的模型。用于拟合结果和确定每个特征重要性的方法取决于所使用的简单模型的类型。
'树'
- 使用回归树使用fitrtree
(统计学和机器学习工具箱)然后计算每个功能的重要性predictorImportance
(统计学和机器学习工具箱)
“线性”
-拟合线性模型与lasso回归使用fitrlinear
(统计学和机器学习工具箱)然后使用线性模型的权重计算每个特征的重要性。
例子:“模型”、“线性”
数据类型:char
|字符串
“OutputUpsampling”
- - - - - -输出upsampling方法'最近'
(默认)|“双三次的”
|“没有”
在分段方法是时使用的输出上采样方法'网格'
,指定为逗号分隔的配对组成“OutputUpsampling”
下面是其中之一。
'最近'
—使用最近邻插值将映射扩展到与输入数据相同的大小。映射指示每个特性相对于输入数据的大小的大小。
“双三次的”
—使用双三次插值生成与输入数据大小相同的平滑映射。
“没有”
-不使用上采样。映射可以比输入数据小。
如果“OutputUpsampling”
是'最近'
或者“双三次的”
,计算的地图使用该映射到输入数据的大小imresize
函数。
例子:“OutputUpsampling”、“双三次的“
“MiniBatchSize”
- - - - - -mini-batch大小用于计算映射特性重要性的mini-batch的大小,指定为逗号分隔对组成“MiniBatchSize”
和一个正整数。
迷你批处理是该组合图像集的子集。Mini-Batch Size指定立即将其传递给网络的合成图像数。较大的小型批量尺寸导致更快的计算,以更高的内存成本。
例子:“MiniBatchSize”,256年
“ExecutionEnvironment”
- - - - - -硬件资源“汽车”
(默认)|“cpu”
|'GPU'
硬件资源计算映射,指定为逗号分隔对组成“ExecutionEnvironment”
下面是其中之一。
“汽车”
—如果有图形处理器,请使用图形处理器。否则,请使用CPU。
“cpu”
- 使用CPU。
'GPU'
—使用GPU。
GPU选项需要并行计算工具箱™。要使用GPU进行深度学习,您还必须有支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱).如果你选择了'executionenvironment','gpu'
选项和并行计算工具箱或合适的GPU不可用,然后软件返回错误。
例子:'executionenvironment','gpu'
scoreMap
-功能重要性地图具有重要特性的映射,以数字矩阵或数字数组的形式返回。地图中正数值较高的区域对应于输入数据中对指定分类标签有正贡献的区域。
的价值scoreMap (i, j)
表示图像像素的重要性(I,J)
到简单模型,除非你使用选项“分割”、“网格”
, 和“OutputUpsampling”、“没有”
.在这种情况下,scoreMap
小于输入图像,值scoreMap (i, j)
表示特征在位置的重要性(I,J)
在特征网格中。
如果标签
被指定为向量,每个类标签的分类评分的变化是独立计算的。在这种情况下,ScoreMap(:,:,k)
对应的遮挡映射k
in标签
.
Featuremap.
-功能图功能映射,作为数字矩阵返回。
对于每个像素(I,J)
在输入图像中,idx = featuremap(i,j)
为包含该像素的特征的索引所对应的整数。
特征性
- 特征重要性特征的重要性,返回为数字向量或数字矩阵。
的价值featureImportance (idx)
是计算所指定的功能的重要性idx
.如果您将标签作为分类值、字符向量或字符串标量的向量提供,则featureImportance (idx k)
对应于功能的重要性idx
为标签(k)
.
局部可解释的模型 - 不可止结的解释(石灰)技术是用于解释由深神经网络制成的分类决策的解释性技术。
在给定输入数据的深度网络分类决策的情况下,LIME技术计算输入数据的每个特征对分类结果的重要性。
LIME技术使用更简单、更可解释的模型(如回归树)来近似深度神经网络的行为。为了映射输入图像不同部分的重要性,使用imageLIME
函数执行以下步骤。
将图像分割成特征。
通过随机包括或排除功能来生成合成图像数据。排除特征中的每个像素被替换为平均图像像素的值。
利用深度网络对合成图像进行分类。
使用每个合成图像的图像特征的存在或不存在作为二进制回归预测因子,适用于目标类别的二进制回归预测器。
使用回归模型计算每个特征的重要性。
结果图可用于确定哪些特征对特定的分类决策最重要。这对于确保您的网络在分类时关注适当的特性特别有用。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。