文档

gradcam揭示了Deep Learning决策背后的原因

这个例子展示了如何使用grado - cam方法来理解为什么深度学习网络会做出分类决策。Grad-CAM,由Selvaraju和合作者发明[1],使用分类评分相对于网络中最后一个卷积层的梯度,以理解图像的哪些部分对分类最重要。该示例使用GoogLeNet预先训练的网络来处理图像。

梯度凸轮是凸轮技术的一种推广。这个例子展示了grado - cam使用dlgradient自动微分功能,方便执行所需的计算。有关实时网络摄像头数据的激活映射技术,请参见使用类激活映射研究网络预测

负载Pretrained网络

加载GoogLeNet网络。

网= googlenet;

图像的分类

阅读GoogLeNet的图像大小。

inputSize = net.Layers (1) .InputSize (1:2);

负载sherlock.jpg,本例中包含了一只金毛猎犬的图像。

img = imread (“sherlock.jpg”);

将图像调整为GoogLeNet的尺寸。

img = imresize (img, inputSize);

对图像进行分类和显示,并对图像进行分类和分类评分。

[classfn,分数]=(净,img)进行分类;imshow (img);标题(sprintf (“% s (% .2f)”、classfn评分(classfn)));

GoogLeNet正确地将图片分类为金毛猎犬。但是为什么呢?图像的哪些特征导致网络进行这种分类?

Grad-CAM解释了为什么

graduate - cam背后的想法[1]是计算网络中最终分类评分相对于最终卷积层的梯度。梯度较大的地方正是最终得分最依赖于数据的地方。的gradcam辅助函数计算的梯度凸轮映射dlnetwork,对给定类的softmax层得分对卷积特征映射求导。对输入的图像进行自动区分dlImg必须是一个dlarray

类型gradcam.m
function [convMap,dScoresdMap] = gradcam(dlnet, dlImg, softmaxName, convLayerName, classfn) [scores,convMap] = predict(dlnet, dlImg, 'Outputs', {softmaxName, convLayerName});classScore =分数(classfn);dScoresdMap = dlgradient (classScore convMap);结束

第一行gradcam函数从网络中的最终卷积层获得分数和卷积映射。第二行查找所选分类(在本例中为金毛猎犬)的得分。dlgradient仅为标量函数计算梯度。所以gradcam计算仅针对所选分类的图像评分的梯度。第三行使用自动微分来计算最终得分相对于最终卷积层中的权重的梯度。

要使用grado - cam,请创建dlnetwork来自谷歌网络从网络创建一个层图。

lgraph = layerGraph(净);

要访问GoogLeNet用于分类的数据,请删除其最终分类层。

lgraph = removeLayers(lgraph, lgraph. layers (end).Name);

创建一个dlnetwork从层图。

dlnet = dlnetwork (lgraph);

指定softmax层的名称,“概率”.指定最后一个卷积层的名称,“inception_5b-output”

softmaxName =“概率”;convLayerName =“inception_5b-output”

若要使用自动区分,请将夏洛克图像转换为dlarray

dlImg = dlarray(单(img),SSC的);

调用,计算图像的梯度cam梯度dlfevalgradcam函数。

[convMap, dScoresdMap] = dlfeval(@gradcam, dlnet, dlImg, softmaxName, convLayerName, classfn);

调整梯度地图的大小到GoogLeNet图像的大小,并将分数缩放到适当的级别以供显示。

gradcamMap = sum(convMap .* sum(dScoresdMap,[1 2]), 3); / /计算节点gradcamMap = extractdata (gradcamMap);gradcamMap =重新调节(gradcamMap);gradcamMap = imresize(gradcamMap, inputSize,“方法”“双三次的”);

在图像的顶部显示grado - cam水平“AlphaData”值为0.5。的“喷气机”颜色图以深蓝为最低值,深红为最高值。

imshow (img);持有;显示亮度图像(gradcamMap“AlphaData”, 0.5);colormap飞机持有;标题(“Grad-CAM”);

显然,狗的上面部和耳朵对分类的影响最大。

关于研究深层网络分类原因的另一种方法,请参见occlusionSensitivity

参考文献

[1] Selvaraju, R. R., M. Cogswell, A. Das, R. Vedantam, D. Parikh,和D. Batra。grado - cam:基于梯度定位的深度网络可视化解释。《计算机视觉与视觉》,2017年第3期。可以在Grad-CAM在计算机视觉基金会开放获取网站上。

另请参阅

|||

相关的话题