主要内容

毕业生

使用Grad-Cam解释网络预测

    描述

    例子

    太纪念碑= gradCAM (X标签返回图像分类分数的变化的渐变加权类激活映射(Grad-Cam)映射X,当网络评估所提供课程的课程分数标签.使用此功能来解释网络预测并检查您的网络是否关注图像的右侧部分。

    Grad-CAM解释性技术使用分类得分的梯度相对于最终卷积特征图。具有大值为Grad-CAM地图的图像的部分是那些大多数人影响该类的网络分数。

    使用此语法计算用于图像或像素分类任务的grado - cam映射。

    例子

    太纪念碑= gradCAM (XREANSEYFCN.使用缩小功能返回Grad-Cam重要性地图。REANSEYFCN.是一个函数手柄,可将减少到标量值的输出激活减少到标量值。该标量满足了类别分类的作用,以及将Grad-CAM技术推广到非分类任务,例如回归。

    毕业生功能通过区分特征层中的特征来通过区分减速层的减小输出来计算渐变凸轮映射。毕业生自动选择减少和特征层使用时,计算地图。要指定这些层,请使用'Reganslayer''featulexayer'名称值参数。

    使用此语法来计算非分类任务的渐变凸轮映射。

    太纪念碑featureLayerreductionLayer] = GradCam(___也返回用于计算grado - cam映射的特征层和约简层的名称。将此语法与前面语法中的任何输入参数组合一起使用。

    例子

    ___= gradCAM (___名称,值除了以前语法中的输入参数之外,使用一个或多个名称值参数指定选项。例如,'Reganslayer','prob'设置还原层为层命名为'概率'

    例子

    全部折叠

    使用毕业生可视化图像的哪些部分对网络的分类决策很重要。

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

    net =挤压;

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

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

    显示图像。

    imshow (X)

    将图像分类以获取类标签。

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

    使用毕业生确定图像的哪些部分对分类结果重要。

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

    将结果绘制在原始图像上,具有透明度,看看图像的哪个区域最为贡献到分类分数。

    图imshow(x)持有ImageC(ScoreMap,“AlphaData”,0.5)Colormap喷射

    该网络主要集中在狗的背部,以作出分类决定。

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

    加载样本数据,它由手写数字的合成图像组成。第三个输出包含相应的数字旋转角度,以度数表示。

    rng默认[XTrain ~, YTrain] = digitTrain4DArrayData;[XTest ~,欧美]= digitTest4DArrayData;numTrainImages =元素个数(YTrain);idx = randperm (numTrainImages 20);

    构建一个可以预测图像旋转的图像回归网络。

    层= [......imageInputlayer([28 28 1],“名字”“输入”)卷积2dlayer(12,25,“名字”'conv') reluLayer (“名字”'relu')全康连接层(1,“名字”“俱乐部”) regressionLayer (“名字”“输出”));

    指定培训选项。

    选择= trainingOptions ('sgdm'......“InitialLearnRate”,0.001,......'verbose'假的,......“阴谋”'培训 - 进步');

    培训网络。

    net = trainnetwork(xtrain,ytrain,图层,选项);

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

    testdigit = xtest(:,:,idx(4));

    使用预测预测旋转角度,并将预测的旋转与真实的旋转进行比较。

    predaration =预测(net,testdigit)
    predRotation =单身的-47.5497
    trueRotation =欧美(idx (4))
    truerotation = -40

    可视化的区域的图像最重要的网络预测使用毕业生.选择ReLU层作为特征层,全连接层作为还原层。

    FeatureLayer ='relu';RegayLayer =“俱乐部”

    定义约简函数。约简函数必须将约简层的输出减少到一个标量值。梯度凸轮映射显示图像不同部分对标量的重要性。在这个回归问题中,网络预测图像的旋转角度。因此,全连通层的输出已经是一个标量值,因此约简函数就是恒等函数。

    RexingFCN = @(x)x;

    计算grado - cam map。

    scoreMap = gradCAM(净、testDigit reductionFcn,......'Reganslayer'reductionLayer,......'featulexayer', featureLayer);

    在测试图像上显示渐变凸轮映射。

    斧头(1)=子图(1,2,1);imshow(testdigit)标题(“真正的旋转=”+ Truerotation +.'\ newline pred rotation ='+圆(predRotation, 0)) colormap (ax (1),'灰色的')斧头(2)=子图(1,2,2);imshow(testdigit)持有显示亮度图像(scoreMap) colormap (ax (2),'喷射') 标题(“GradCAM”)举行

    Grad-CAM地图显示网络专注于左下方的区域,这是数字的尾部是图像是否具有零旋转。该地图表明,要预测负旋转,网络正在使用空的空间。

    输入参数

    全部折叠

    训练有素的网络,指定为aSeriesNetworkDagnetwork., 或者dlnetwork.目的。您可以通过导入预磨损的网络或使用您自己的网络使用培训的网络来获得培训的网络trainNetwork功能或定制培训。有关预训练网络的更多信息,请参见预先训练的深度神经网络

    必须包含单个输入层和单个输出层。输入层必须是一个imageInputlayer.或者image3dInputLayer

    输入数据,指定为数字数组或标记dlarray目的。

    X大小必须等于网络的输入大小。

    数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

    用于计算用于图像分类和语义分割任务的grade - cam映射的类标签,指定为这些值的类别、字符向量、字符串标量、数字索引或向量。

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

    如果您指定标签作为向量,软件独立计算每个类标签的特征重要性。在这种情况下,ScoreMap(:,:,k)对应于的映射标签(k)

    毕业生函数对类的约简层的空间维数求和标签.因此,您可以指定标签作为语义分割任务和兴趣的类别毕业生返回每个像素的grade - cam重要性。

    例子:["猫”“狗”)

    例子:[1 5]

    数据类型:char|细绳|分类

    还原函数,指定为函数句柄。约简函数将约简层的输出激活减少到一个值,并且必须减少一个dlarray对象一个dlarray标量。这个标量实现了角色标签在分类任务中,并将毕业CAM技术推广到非分类任务,例如回归。

    Grad-CAM使用还原层的降低输出激活来计算重要性图的梯度。

    例子:@x(x)

    数据类型:function_handle

    名称-值对的观点

    指定可选的逗号分隔的对名称,值论点。姓名参数名和价值为对应值。姓名必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

    例子:“FeatureLayer”、“conv10’,‘ReductionLayer’,‘问题’,‘OutputUpsampling’,‘双三次的’,‘ExecutionEnvironment’,‘gpu’计算关于层的梯度凸轮图“conv10”'概率',执行GPU的计算,并将产生的映射上拉到与输入图像相同的尺寸,作为使用双向插值的输入图像。

    从计算渐变凸轮映射时,要从将特征映射提取的特征图,指定为字符串或字符向量。有关大多数任务,请使用与不明的空间尺寸或收集Relu层输出的最后一层(例如深度连接或添加层)的最后一层。如果您的网络不包含任何Relu层,请指定在输出中具有非星级空间维度的最终卷积层的名称。

    默认值是带有非挂车间空间尺寸的最终图层。使用分析函数检查您的网络并选择正确的图层。

    例子:'FeatureLayer','conv10'

    数据类型:char|细绳

    减少层的名称以从计算渐变凸轮映射时提取输出激活,指定为字符串或字符向量。对于分类任务,该层是最终的Softmax层。对于其他任务,该层通常是DAG和系列网络的倒数第二层和最终图层dlnetwork.对象。

    缺省值是DAG和系列网络的倒数第二层,在DAG和系列网络中是最后一层dlnetwork.对象。使用分析函数检查您的网络并选择正确的图层。

    例子:'Reganslayer','prob'

    数据类型:char|细绳

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

    • 年代- 空间

    • C- 渠道

    • B- 批

    有关更多信息,请参阅dlarray

    例子:“格式”、“SSC的

    数据类型:char|细绳

    输出上采样方法,指定为逗号分隔对组成“OutputUpsampling”以及下列值之一:

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

    • '最近'—使用最近邻插值将映射扩展到与输入数据相同的大小。

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

    如果“OutputUpsampling”'最近'或者'bicubic',计算的地图使用该映射到输入数据的大小imresize2-D数据的功能和imresize3(图像处理工具箱)三维数据的功能。对于3-D数据,该选项'bicubic'用途imresize3'立方体'方法。

    例子:'OutputupSampling','Bicubic'

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

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

    • '中央处理器'- 使用CPU。

    • 'GPU'—使用GPU。

    GPU选项需要并行计算工具箱™。要使用GPU进行深度学习,您还必须有支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱)如果你选择了'GPU'选项、并行计算工具箱和合适的GPU都不可用,则软件返回错误。

    例子:“ExecutionEnvironment”、“gpu的

    输出参数

    全部折叠

    Grad-Cam重要性地图,返回为数字矩阵或数字阵列。具有较高正值的地图中的区域对应于对预测贡献的输入数据区域。

    • 对于分类任务,太纪念碑是指定类别的最终分类评分的梯度,关于特征层中的每个特征。

    • 对于其他类型的任务,太纪念碑关于特征层中的每个特征,还原层的降低输出的梯度。

    ScoreMap(I,J)对应于空间位置的grado - cam重要性(I,J).如果您提供标签作为类别向量、字符向量或字符串的向量ScoreMap(:,:,k)对应于的映射标签(k)

    在计算grado - cam地图时提取特征图的特征层名称,以字符串形式返回。

    默认情况下,毕业生选择一个特征层来计算grado - cam贴图。这一层是具有非单例空间维度的最后一层。控件可以指定要使用的特性层'featulexayer'名称-值参数。当你指定'featulexayer'名称值参数,featureLayer返回相同的值。

    在计算grado - cam映射时提取输出激活的约简层的名称,以字符串形式返回。

    默认情况下,毕业生选择一个还原层来计算grado - cam贴图。这一层是DAG和系列网络的倒数第二层,是DAG和系列网络的最后一层dlnetwork.对象。属性也可以指定要使用的缩减层'Reganslayer'名称-值参数。当你指定'Reganslayer'名称值参数,reductionLayer返回相同的值。

    更多关于

    全部折叠

    Grad-Cam

    梯度加权类激活映射(Grad-Cam)是一种可解释的技术,可用于帮助理解深神经网络所做的预测[1].Grad-CAM,凸轮技术的概括地通过考虑流过深网络的梯度来确定每个神经元在网络预测中的重要性。

    gradcam计算可微输出的梯度,例如,相对于所选层的卷积特征的类分数。梯度在空间上汇合以找到神经元的重要性权重。然后使用这些权重来线性组合激活图,并确定哪些特征对预测最重要。

    假设您有一个带有输出的图像分类网络yc,代表课堂的分数c,并希望计算卷积层的渐变凸轮映射k特征映射(频道),一个k我,J., 在哪里我,J.索引的像素。神经元的重要性权重为

    α. k c 1 N σ. σ. j y c 一个 j k } 梯度 通过 背面 { 全球平均水平汇总

    在哪里N为特征图中像素的总数。grado - cam地图是特征地图与应用ReLU的加权组合:

    σ. k α. k c 一个 k

    Relu激活可确保您只能获得对兴趣类具有积极贡献的功能。因此,输出是指定类的热图,其与特征映射相同。然后将渐变凸轮映射覆盖到输入数据的大小。

    虽然Grad-CaM通常用于图像分类任务,但您可以计算毕业凸轮映射以进行任何可微分的激活。例如,对于语义分割任务,您可以通过更换计算Grad-CAM地图yc σ. j 年代 y j c , 在哪里年代是感兴趣的像素集合和y我,J.c如果是一个像素是1(I,J)预计是上课吗c,否则为0[2].你可以使用毕业生函数的非分类任务,指定适当的约简函数,该函数将约简层的输出激活减少为一个值,并取代yc在神经元重要性权重方程中。

    提示

    • REANSEYFCN.函数接收来自缩减层的跟踪输出dlarray目的。该函数必须将此输出减少到标量dlarray,这毕业生然后区分特征层的激活。例如,为了计算网络的SoftMax激活的通道208的渐变凸轮映射,还原功能是@ (x) (x (208)).该函数接收激活并提取第208通道。

    • 毕业生功能自动选择减少和特征层使用时,计算grado - cam地图。对于某些网络,所选择的层可能不合适。例如,如果您的网络有多个可以用作特征层的层,那么函数将选择其中的一个层,但它的选择可能不是最合适的。对于这样的网络,使用'featulexayer'名称-值参数。

    参考

    [1] Selvaraju,Ramprasaath R.,Michael Cogswell,Abhishek Das,Ramakrishna Vedantam,Devi Parikh和Dhruv Batra。“Grad-Cam:通过基于梯度的本地化的深度网络的视觉解释。”2017年(2017年10月):618-626,https://doi.org/10.1109/ICCV.2017.74。

    Vinogradova, Kira, Alexandr Dibrov和Gene Myers。“基于梯度加权类激活映射的可解释语义分割”。AAAI人工智能会议论文集34岁的没有。10(2020年4月):13943-13944,https://doi.org/10.1609/aaai.v34i10.7244。

    介绍了R2021a