imageLIME
解释网络预测使用石灰
语法
描述
(
还返回一个地图的功能用来计算石灰结果和计算每个特性的重要性。scoreMap
,featureMap
,featureImportance
)= imageLIME (净
,X
,标签
)
例子
可视化图像的哪些部分对分类很重要
使用imageLIME
可视化图像的部分是一个分类的重要网络决定。
导入SqueezeNet pretrained网络。
网= 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“AlphaData”,0.5)colormap飞机
网络主要关注莱卡犬的头部和背部的分类决策。莱卡犬的眼睛和耳朵也很重要的分类结果。
想象只有最重要的功能
使用imageLIME
确定一个图像最重要的特征和隔离的重要特性。
导入SqueezeNet pretrained网络。
网= 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“AlphaData”,0.5)colormap飞机colorbar
使用功能重要性的指标最重要的五个特性。
numTopFeatures = 5;[~,idx] = maxk (featureImportance numTopFeatures);
使用的地图功能掩盖了图像只最重要的五个特性是可见的。蒙面的图像显示。
掩码= ismember (featureMap idx);maskedImg = uint8(面具)。* X;图imshow (maskedImg);
使用自定义分割地图视图重要特性
使用imageLIME
与一个定制的分段映射到视图分类决策的最重要的功能。
导入GoogLeNet pretrained网络。
网= googlenet;
导入图片和大小相匹配的输入规模网络。
X = imread (“sherlock.jpg”);inputSize = net.Layers (1) .InputSize (1:2);X = imresize (X, inputSize);
图像分类的类标签。
标签=分类(净,X)
标签=分类金毛猎犬
创建一个矩阵定义一个自定义地图分割将图像划分为三角形的片段。每个三角形部分代表一个功能。
首先定义一个矩阵大小等于输入图像的大小。
segmentationMap = 0 (inputSize (1));
接下来,创建一个较小的分割图56-by-56像素区域分为两个三角形的特性。赋值1和2的上、下段,分别代表第一和第二特征。
blockSize = 56;segmentationSubset = 1 (blockSize);segmentationSubset =下三角阵(segmentationSubset) + segmentationSubset;%设置对角元素替代值1和2。segmentationSubset (1: (blockSize + 1):结束)= repmat ([1 - 2], 1 blockSize / 2) ';
创建一个自定义地图为整个图像分割,重复小分段映射。每次重复的小地图,增加了特征索引值,这样在每个三角形像素段对应于一个独特的特性。在最后的矩阵,值1表示第一个功能,第二特征值2,所以图像中的每个部分。
blocksPerSide = inputSize (1) / blockSize;子集= 0;为我= 1:blocksPerSide为j = 1: blocksPerSide xidx = (blockSize *(张))+ 1:(blockSize *我);yidx = (blockSize * (j - 1)) + 1: (blockSize * j);segmentationMap (xidx yidx) = segmentationSubset + 2 *子集;+ 1 =子集子集;结束结束
查看地图分割。这张地图将图像划分为32三角地区。
图imshow (X)在显示亮度图像(segmentationMap“AlphaData”,0.8);标题(“自定义分割图”)colormap灰色的
使用imageLIME
与自定义图像的分割图来确定哪些部分最重要的分类结果。
scoreMap = imageLIME(净,X,标签,…“分割”,segmentationMap);
阴谋的结果imageLIME
在图像的原始图像,看看哪些地方影响分类的分数。
图;imshow (X)在标题(“图像石灰(金毛猎犬)”)colormap飞机;显示亮度图像(scoreMap“AlphaData”,0.5);
红色区域的地图有更高的重要性——当这些区域移除,金毛猎犬类的分数下降。这种分类的最重要的特征是耳朵。
输入参数
净
- - - - - -图像分类网络
SeriesNetwork
对象|DAGNetwork
对象
图像分类网络,作为一个指定SeriesNetwork
对象或一个DAGNetwork
对象。你可以通过导入pretrained训练网络的网络或通过训练自己的网络使用trainNetwork
函数。pretrained网络的更多信息,请参阅Pretrained深层神经网络。
净
必须包含一个输入层和一个输出层。必须是一个输入层imageInputLayer
。必须是一个输出层classificationLayer
。
X
- - - - - -输入图像
数字数组
输入图像,指定为一个数字数组。
图像必须相同大小的图像输入规模网络净
。输入指定的大小InputSize
网络的属性imageInputLayer
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
标签
- - - - - -类标签
分类|char向量|字符串标量|向量
类标签用来计算功能重要性地图,指定分类,一个char向量,这些值的字符串标量或矢量。
如果您指定标签
作为一个向量,软件独立计算每个类标签的功能的重要性。在这种情况下,scoreMap (:,:, k)
和featureImportance (idx k)
对应的地图功能重要性和功能的重要性idx
为k
th元素标签
,分别。
例子:["猫”“狗”)
数据类型:字符
|字符串
|分类
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:“NumFeatures”, 100年,“分割”,“网格”,‘OutputUpsampling’,‘双三次的’,‘ExecutionEnvironment’,‘gpu’
段约100的输入图像到一个网格功能,执行计算GPU, upsamples结果映射到相同的大小作为输入使用双立方插值图像。
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”
——输入图像分为superpixel特性,使用superpixels
(图像处理工具箱)函数。特点是形状不规则,基于像素的值。这个选项需要图像处理工具箱™。“网格”
——输入图像分为普通网格的特性。特点是大约广场,基于输入图像的纵横比和指定的值“NumFeatures”
。网格细胞的数量可以小于指定值“NumFeatures”
。如果输入图像是广场,指定“NumFeatures”
作为一个平方数。数字矩阵,输入图像分为自定义特性,使用数字矩阵作为一个地图,每个像素的整数值指定相应的像素的特性。
“NumFeatures”
是一样的独特的矩阵中元素的数量。矩阵的大小必须匹配输入图像的大小。
为摄影图像数据“superpixels”
选项通常给出更好的结果。在这种情况下,功能是基于内容的图像,通过图像分割成区域相似的像素值。等其他类型的图像,声音,更普通“网格”
选择或自定义分割地图可以提供更多有用的结果。
例子:“分割”、“网格”
模型
- - - - - -类型的简单的模型
“树”
(默认)|“线性”
简单的模型,以适应类型,指定为指定为逗号分隔组成的“模型”
和“树”
或“线性”
。
的imageLIME
使用网络功能分类合成图像净
然后使用适合一个简单的结果,可说明的模型。方法以适应的结果,并确定每个特性的重要性取决于使用的简单的模型类型。
“树”
——适合回归树使用fitrtree
(统计和机器学习的工具箱)然后计算每个特性使用的重要性predictorImportance
(统计和机器学习的工具箱)“线性”
——适合用套索回归使用线性模型fitrlinear
(统计和机器学习的工具箱)然后计算每个特性使用的重要性权重的线性模型。
例子:“模型”、“线性”
数据类型:字符
|字符串
OutputUpsampling
- - - - - -输出upsampling方法
“最近的”
(默认)|“双三次的”
|“没有”
输出upsampling分割方法时使用的方法“网格”
,指定为逗号分隔两人组成的“OutputUpsampling”
和一个以下。
“最近的”
——使用加权插值扩展映射到相同的大小作为输入数据。地图显示的大小每个特性对输入数据的大小。“双三次的”
——使用双立方插值生成光滑映射相同的大小作为输入数据。“没有”
——使用没有upsampling。地图可以小于输入数据。
如果“OutputUpsampling”
是“最近的”
或“双三次的”
,计算映射upsampled使用的输入数据的大小imresize
函数。
例子:“OutputUpsampling”、“双三次的“
MiniBatchSize
- - - - - -mini-batch大小
128年(默认)|正整数
mini-batch使用的大小来计算地图功能的重要性,指定为逗号分隔组成的“MiniBatchSize”
和一个正整数。
mini-batch是合成图像的集合的一个子集。mini-batch大小指定数量的合成图像传递到网络。大mini-batch大小导致更快的计算,在更多的内存的成本。
例子:“MiniBatchSize”, 256年
ExecutionEnvironment
- - - - - -硬件资源
“汽车”
(默认)|“cpu”
|“图形”
硬件资源计算图,指定为逗号分隔组成的“ExecutionEnvironment”
和一个以下。
“汽车”
——使用GPU如果一个是可用的。否则,使用CPU。“cpu”
——使用CPU。“图形”
——使用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
th元素标签
。
featureMap
——地图的功能
数字矩阵
地图的功能,作为一个数字矩阵返回。
为每个像素(i, j)
在输入图像,idx = featureMap (i, j)
是一个整数对应的索引功能包含像素。
featureImportance
——功能重要性
数值向量|数字矩阵
功能的重要性,作为数值向量或返回一个数字矩阵。
的价值featureImportance (idx)
计算指定的功能的重要性吗idx
。如果你提供标签作为一个向量分类值,char向量,或字符串标量featureImportance (idx k)
对应于特征的重要性idx
为标签(k)
。
更多关于
石灰
本地可判断的model-agnostic解释(石灰)技术是一种explainability技术用来解释深层神经网络分类决策。
鉴于深层网络的分类决策的输入数据,石灰的方法计算每个特性的重要性的输入数据的分类结果。
石灰技术接近深神经网络使用一个简单的行为,更可翻译的模式,如回归树。将输入图像的不同部分的重要性imageLIME
函数的执行以下步骤。
图像分割成特性。
由随机生成合成图像数据包括或不包括的功能。每个像素在一个排除特性是平均图像像素的值所取代。
使用深度网络分类的合成图像。
适合一个回归模型使用图像特征的存在与否对于每个合成图像的二元回归预测目标类的分数。
计算每个特性使用回归模型的重要性。
生成的地图可以用来确定哪些特定分类特征是最重要的决定。这可以确保您的网络特别有用是专注于适当的特征分类。
版本历史
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。