主要内容

gradCAM

使用Grad-CAM解释网络预测

    描述

    例子

    scoreMap= gradCAM (,X,标签)返回gradient-weighted类激活映射(Grad-CAM)地图输入分类评分的变化X当网络评估的类的类分数标签。使用这个函数来解释网络预测和检查你的网络是否集中在正确的地方的数据。

    Grad-CAM的可解释性的梯度技术使用分类评分对最后卷积特性图。观察的部分的一个较大的值Grad-CAM地图是那些最影响该类网络的分数。

    使用这个语法计算Grad-CAM地图分类任务。

    例子

    scoreMap= gradCAM (,X,reductionFcn)返回Grad-CAM地图使用减少函数的重要性。reductionFcn是一个函数处理降低了输出减少层的激活一个标量值。这个标量满足类分数的作用分类任务,并概括Grad-CAM技术nonclassification任务,如回归。

    gradCAM函数计算Grad-CAM地图通过减少差异化的减少输出层对层的功能特性。gradCAM自动选择减少和功能层计算时使用的地图。指定这些层,使用“ReductionLayer”“FeatureLayer”名称-值参数。

    使用这个语法计算Grad-CAM nonclassification任务地图。

    (scoreMap,featureLayer,reductionLayer)= gradCAM (___)还返回功能层和减少层的名称用于计算Grad-CAM映射。使用这种语法的任何输入参数组合在以前的语法。

    例子

    ___= gradCAM (___,名称,值)指定选项使用一个或多个名称参数除了输入参数在以前的语法。例如,“ReductionLayer”、“概率”设置层的减少层命名为“概率”

    例子

    全部折叠

    使用gradCAM可视化图像的哪些部分是重要的分类决定网络。

    导入SqueezeNet pretrained网络。

    网= squeezenet;

    导入图像,调整匹配的输入规模网络。

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

    显示图像。

    imshow (X)

    图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

    图像分类的类标签。

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

    使用gradCAM来确定图像的哪个部分是重要的分类结果。

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

    阴谋的结果对原始图像与图像的透明性,看看哪些地方最有助于分类得分。

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

    图包含一个坐标轴对象。坐标轴对象包含2图像类型的对象。

    网络主要集中在狗的后面,使分类的决定。

    使用Grad-CAM来可视化图像的哪些部分最重要的预测一个图像回归网络。

    加载pretrained网络digitsRegressionNet。这个网络是一个回归卷积神经网络预测的角度旋转的手写数字。

    负载digitsRegressionNet

    查看网络层。网络的输出层是一层回归。

    层= net.Layers
    层= 18 x1层阵列层:1“imageinput”28 x28x1图像输入图像与“zerocenter”正常化2“conv_1”二维卷积8 3 x3x1旋转步[1]和填充“相同”3“batchnorm_1”批量标准化批量标准化8通道4的relu_1 ReLU ReLU 5“avgpool2d_1”二维平均池2 x2平均池步(2 - 2)和填充[0 0 0 0]6“conv_2”二维卷积16 3 x3x8旋转步[1]和填充“相同”7”batchnorm_2批量标准化批量标准化与16通道8 ' relu_2 ReLU ReLU 9“avgpool2d_2”二维平均池2 x2平均池步(2 - 2)和填充[0 0 0 0]10“conv_3”二维卷积32 3 x3x16旋转步[1]和填充“相同”11的batchnorm_3批量标准化批量标准化32通道12“relu_3”ReLU ReLU 13 conv_4的二维卷积32 3 x3x32旋转步[1]和填充“相同”14“batchnorm_4”批量标准化批量标准化32通道15 ' relu_4 ReLU ReLU 16“辍学”辍学辍学17 20% fc的完全连接1完全连接层18“regressionoutput”回归的输出均方误差响应“响应”

    负载测试图像。

    [XTest ~,欧美]= digitTest4DArrayData;

    评估网络的性能测试图像。

    testIdx = 501;testDigit = XTest (:,:,:, testIdx);

    使用预测预测的角度旋转和旋转比较预测真正的旋转。

    testDigit predRotation =预测(净)
    predRotation =26.5635
    trueRotation =欧美(testIdx)
    trueRotation = 29

    可视化图像的区域最重要的网络预测使用gradCAM。选择ReLU层作为功能层和完全连接层的减少层。

    featureLayer =“relu_4”;reductionLayer =“俱乐部”;

    减少定义函数。减少函数必须减少减少的输出层为一个标量值。Grad-CAM地图显示图像的不同部分的重要性,标量。在这个回归问题,网络预测图像的旋转角。因此,完全连接的输出层已经是一个标量值,所以减少函数恒等函数。

    reductionFcn = @ x (x);

    计算Grad-CAM地图。

    scoreMap = gradCAM(净、testDigit reductionFcn,“ReductionLayer”reductionLayer,“FeatureLayer”,featureLayer);

    测试图像显示Grad-CAM地图。

    斧子(1)=次要情节(1、2、1);imshow (testDigit)标题(“真正的旋转= "+ trueRotation +“\换行Pred旋转= '+圆(predRotation, 0)) colormap (ax (1),“灰色”)ax(2) =情节(1、2、2);imshow (testDigit)显示亮度图像(重新调节(scoreMap) colormap (ax (2),“喷气机”)标题(“Grad-CAM”)举行

    图包含2轴对象。坐标轴对象1标题开始2×1矩阵第一行第一列空白T r u e r o T T i o n空白=空白2 9第二行第一列空白P r e d r o T T i o n空白=空白2 7 EndMatrix包含一个类型的对象的形象。坐标轴对象2与标题Grad-CAM包含对象类型的形象。

    使用gradCAM可视化的哪些部分序列的分类决定网络很重要。

    加载pretrained网络JapaneseVowelsConvNet。这个网络是一个pretrained一维卷积神经网络训练中描述的日本元音数据集[1]和[2]。

    负载JapaneseVowelsConvNet

    查看网络体系结构。

    net.Layers
    ans x1 = 11层阵列层:1“sequenceinput”序列输入序列输入12维度2 conv1d_1的一维卷积32 3 x12的隆起与步1和填充“因果”3“relu_1”ReLU ReLU 4“layernorm_1”一层一层标准化规范化32通道64 3 x32 conv1d_2的一维卷积运算与步1和填充‘因果’6”relu_2 ReLU ReLU 7“layernorm_2”一层一层标准化规范化与64个频道8 globalavgpool1d的全球平均水平一维池一维全球平均池9 fc的完全连接9完全连接层10 ' softmax softmax softmax 11“classoutput”分类输出crossentropyex ' 1 ', 8其他类

    负载测试数据。XTest是一个单元阵列包含维度12可变长度的序列。tt是一个分类向量的标签“1”,“2”,……“9”,对应于九个扬声器。

    (XTest, tt) = japaneseVowelsTestData;

    选择第一个时间序列观察。这个序列有19次步骤。

    testSequence = XTest {1};testSize =大小(testSequence)
    testSize =1×212日19
    numFeatures = testSize (1);

    可视化系列第一次在一个阴谋。每一行对应一个功能。

    图绘制(testSequence”)标题(“训练观察1”)包含(“时间步”)传说(“特性”+字符串(1:numFeatures),“位置”,“northeastoutside”)

    图包含一个坐标轴对象。坐标轴对象标题训练观察1包含12线类型的对象。这些对象代表功能1、功能2、特性3功能4、5功能,特性,特性7,特性,功能,功能特性特性11日12。

    分类测试观察。

    testSequence标签=分类(净)
    标签=分类1

    使用gradCAM确定哪些部分的顺序是重要的分类结果。

    地图= gradCAM(净、testSequence标签);

    地图是一个1-by-19向量包含每个19次重要值的步骤。

    阴谋的结果,看看哪个最有助于分类评分时间步骤。

    图次要情节(2,1,1)情节(testSequence”)包含(“时间步”次要情节(2,1,2)情节(地图)包含(“时间步”)ylabel (“Grad-CAM重要性”)

    图包含2轴对象。坐标轴对象1包含12线类型的对象。坐标轴对象2包含一个类型的对象。

    Grad-CAM地图表明网络关注以后的步骤,使分类的决定。

    输入参数

    全部折叠

    训练网络,作为一个指定SeriesNetwork,DAGNetwork,或dlnetwork对象。你可以通过导入pretrained训练网络的网络或通过训练自己的网络使用trainNetwork函数或定制的培训。pretrained网络的更多信息,请参阅Pretrained深层神经网络

    必须包含一个输入层和一个输出层。输入层必须是一个imageInputLayer,image3dInputLayer,或sequenceInputLayer。的网络sequenceInputLayer,InputSize必须标量属性。

    输入数据,指定为一个数值数组或格式化dlarray对象。

    • 对于二维图像数据,X必须是一个h——- - - - - -w——- - - - - -c数组,h,w,c高度,宽度,和数量的渠道网络的输入层,分别。

    • 对于三维图像数据,X必须是一个h——- - - - - -w——- - - - - -d——- - - - - -c数组,h,w,d,c的高度、宽度、深度和数字网络的输入层,分别。

    • 对于向量序列数据,X必须是一个c——- - - - - -t数组,c网络的输入大小吗t是时间序列中的步骤的数量,可以是任何正整数。

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

    类标签使用计算Grad-CAM地图分类和语义分割任务,指定分类,特征向量,一个字符串标量,数字索引,或一个向量的值。

    dlnetwork对象,您必须指定标签作为一个类别或数字索引。

    如果您指定标签作为一个向量,软件独立计算每个类标签的功能的重要性。在这种情况下,scoreMap包含每个类的映射标签。有关更多信息,请参见scoreMap

    gradCAM函数和空间和时间维度的降低层类标签。因此,您可以指定标签作为语义分割任务和感兴趣的课程gradCAM为每个像素返回Grad-CAM重要性。

    例子:["猫”“狗”)

    例子:(1 - 5)

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

    减少功能,指定为一个函数处理。减少降低了输出减少层的激活函数为一个值,必须减少dlarray对象一个dlarray标量。这个标量满足的作用标签在分类任务,概括Grad-CAM技术nonclassification任务,如回归。

    Grad-CAM使用减少输出激活减少层计算梯度的重要性地图。

    例子:@x (x)

    数据类型:function_handle

    名称-值参数

    指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

    R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

    例子:“FeatureLayer”、“conv10’,‘ReductionLayer’,‘问题’,‘OutputUpsampling’,‘双三次的’,‘ExecutionEnvironment’,‘gpu’计算Grad-CAM映射层“conv10”“概率”、执行GPU的计算和upsamples结果映射到同一个大小使用双立方插值作为输入数据。

    功能层的名称从当计算提取特征映射Grad-CAM地图,指定为字符串或字符向量。对于大多数任务,使用最后ReLU层nonsingleton空间或时间维度,或收集的最后一层的输出ReLU层(如深度连接或添加层)。如果您的网络不包含任何ReLU层,指定名称的最后卷积层nonsingleton空间或时间维度的输出。

    默认值是最后一层nonsingleton空间或时间维度。使用analyzeNetwork函数来检查你的网络和选择正确的层。

    例子:“FeatureLayer”、“conv10”

    数据类型:字符|字符串

    减少层名称提取输出激活计算Grad-CAM地图时,指定为字符串或字符向量。对于分类任务,这一层通常是最后softmax层。为其他任务,这一层通常是倒数第二DAG和系列网络层和最后一层dlnetwork对象。

    默认值是倒数第二层DAG和系列网络,和最后一层dlnetwork对象。使用analyzeNetwork函数来检查你的网络和选择正确的层。

    例子:“ReductionLayer”、“概率”

    数据类型:字符|字符串

    数据格式将标签分配给每个维度的输入数据,指定为一个特征向量或一个字符串。中的每个字符格式必须以下维度标签之一:

    • 年代——空间

    • C——频道

    • B——批

    • T——时间

    有关更多信息,请参见dlarray

    gradCAM函数支持最多一个单金宝app批维度。

    例子:“格式”、“SSC的

    数据类型:字符|字符串

    输出upsampling方法,指定为逗号分隔组成的“OutputUpsampling”和下列值之一:

    • “双三次的”——使用双立方插值生成光滑的地图。

    • “最近的”——使用加权插值扩展地图。

    • “没有”——使用没有upsampling。地图可以更小或更大比输入数据。

    如果“OutputUpsampling”“最近的”“双三次的”Grad-CAM地图是一样的大小的空间和时间维度的输入。

    • 对于二维图像数据,地图的大小h——- - - - - -w,在那里hw分别是图像的高度和宽度

    • 三维图像数据,地图的大小h——- - - - - -w——- - - - - -d,在那里h,w,d高度,宽度,和图像的深度。

    • 为输入向量序列,地图大小1×-t,在那里t是时间序列中的步骤的数量。

    如果“OutputUpsampling”“最近的”“双三次的”,计算upsampled使用地图imresize函数的二维图像和矢量序列数据,imresize3(图像处理工具箱)函数3 d图像数据。三维图像数据的选择“双三次的”使用imresize3(图像处理工具箱)“立方”方法。

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

    硬件资源计算地图,指定为逗号分隔组成的“ExecutionEnvironment”和一个以下。

    • “汽车”——使用GPU如果一个是可用的。否则,使用CPU。

    • “cpu”——使用CPU。

    • “图形”——使用GPU。

    GPU选项需要并行计算工具箱™。使用GPU深度学习,你也必须有一个支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU计算的需求(并行计算工具箱)如果你选择“图形”选项和并行计算工具箱和一个合适的GPU并不可用,那么软件返回一个错误。

    例子:“ExecutionEnvironment”、“gpu的

    输出参数

    全部折叠

    Grad-CAM重要性地图,返回一个行向量,矩阵数值或数值数组。正值对应较高的地区地图区域贡献积极的输入数据的预测。

    • 对于分类任务,scoreMap是最后的梯度分类得分为指定的类,对每个特性的功能层。

    • 对于其他类型的任务,scoreMap减少的减少输出的梯度层,对每个特性的功能层。

    的大小scoreMap取决于类型的数据。

    • 对于二维图像数据,scoreMap是一个矩阵。scoreMap (i, j)对应于Grad-CAM空间位置的重要性(i, j)。如果您提供标签作为一个向量的分类、特征向量或字符串,然后scoreMap (:,:, n)对应的地图标签(n)

    • 对于三维图像数据,scoreMap是一个三维数组。scoreMap (i, j, k)对应于Grad-CAM空间位置的重要性(i, j, k)。如果您提供标签作为一个向量的分类、特征向量或字符串,然后scoreMap (:,:,:, n)对应的地图标签(n)

    • 对于向量序列数据,scoreMap是一个行向量。scoreMap(:,我)对应于Grad-CAM重要性在时间步。如果您提供标签作为一个向量的分类、特征向量或字符串,然后scoreMap (:,:, n)对应的地图标签(n)

    功能层的名称从当计算提取特征映射Grad-CAM地图,作为字符串返回。

    默认情况下,gradCAM选择一个功能层使用计算Grad-CAM地图。这一层是最后一层nonsingleton空间或时间维度。您可以指定使用哪个功能层使用“FeatureLayer”名称-值参数。当你指定“FeatureLayer”名称-值参数,featureLayer返回相同的值。

    减少层名称提取输出激活时计算Grad-CAM地图,作为字符串返回。

    默认情况下,gradCAM选择减少层使用计算Grad-CAM地图。这一层是倒数第二层在DAG和系列网络,和最后一层dlnetwork对象。您还可以指定使用哪个还原层使用“ReductionLayer”名称-值参数。当你指定“ReductionLayer”名称-值参数,reductionLayer返回相同的值。

    更多关于

    全部折叠

    Grad-CAM

    Gradient-weighted类激活(Grad-CAM)是一个映射explainability技术,可以用来帮助理解深层神经网络的预测[3]。Grad-CAM,凸轮的泛化技术,确定每个神经元网络预测的重要性通过考虑目标的梯度流经深的网络。

    Grad-CAM计算的梯度可微的输出,例如类分数,对卷积特性选择层。梯度是集中在时间和空间维度找到神经元权重重要性。然后使用这些权重线性组合激活地图和决定哪些特性是最重要的预测。

    假设您有一个2 - d图像分类网络输出yc代表类的分数c,要计算卷积的Grad-CAM映射层k特征图(渠道),一个k我,我,在那里我,我索引的像素。神经元重量是重要性

    α k c = 1 N j y c 一个 , j k 梯度 通过 backprop 全球平均分担 ,

    在哪里N像素的总数在功能映射。Grad-CAM地图然后加权组合的特性与应用ReLU地图:

    = 线性整流函数(Rectified Linear Unit) ( k α k c 一个 k )

    ReLU激活可以确保你得到的特性对感兴趣的类有积极的贡献。因此输出指定的类热图,这是相同的大小特征映射。然后upsampled Grad-CAM地图输入数据的大小。

    虽然Grad-CAM是常用的分类任务,您可以计算一个Grad-CAM地图可微的激活。语义分割任务,例如,你可以通过替换计算Grad-CAM地图yc ( , j ) 年代 y j c ,在那里年代感兴趣的是像素的集合和y我,我c1如果像素(i, j)预计类c否则,0[4]。您可以使用gradCAM函数nonclassification任务通过指定适当的减少减少层的激活函数,降低了输出到一个价值和需要的地方yc神经元的重要性权重方程。

    提示

    • reductionFcn函数接收的输出减少层追踪dlarray对象。一个标量函数必须减少这个输出dlarray,这gradCAM然后区别对激活的功能层。例如,计算Grad-CAM地图频道208年将softmax激活的一个网络,减少函数@ (x) (x (208))。这个函数接收激活和提取第208频道。

    • gradCAM函数计算时自动选择减少和功能层使用Grad-CAM映射。对于一些网络,选择层可能并不合适。例如,如果您的网络有多个层,可以作为功能层,然后函数选择其中一个层,但它可能不是最合适的选择。对于这样的网络,指定使用哪个功能层使用“FeatureLayer”名称-值参数。

    • 显示Grad-CAM地图叠加在一个灰度图像,你必须首先重新调节地图在区间[0,1]。例如,scoreMapRescaled =重新调节(scoreMap);

    引用

    [1]奖赏,Mineichi,小君富山,学者Shimbo。“多维曲线分类使用通过区域。“模式识别字母20,不。11 - 13日(1999年11月):1103 - 11所示。https://doi.org/10.1016/s0167 - 8655 (99) 00077 - x。

    [2]UCI机器学习库:日本元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese +元音。

    [3]Selvaraju, Ramprasaath R。,米我chael Cogswell, Abhishek Das, Ramakrishna Vedantam, Devi Parikh, and Dhruv Batra. “Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization.” 2017 (October 2017): 618–626, https://doi.org/10.1109/ICCV.2017.74.

    基拉,[4]Vinogradova Alexandr Dibrov,迈尔斯和基因。”可判断的语义分割通过Gradient-Weighted类激活映射”。人工智能学报AAAI会议34岁的没有。(2020年4月):13943 - 13944,https://doi.org/10.1609/aaai.v34i10.7244。

    版本历史

    介绍了R2021a