毕业生-CAM揭示了为什么深度学习决策背后

这个例子说明了如何使用梯度加权级激活映射(梯度-CAM)技术理解为什么一个深刻的学习网络,使得它的分类决定。毕业生-CAM,由Selvaraju及其同事发明了[1],采用分类评分的梯度相对于由网络以了解图像的哪些部分是用于分类最重要的决定的卷积功能。此示例使用图像GoogLeNet预训练网络。

梯度-CAM是类激活映射(CAM)技术的推广。该示例示出梯度-CAM使用dlgradient自动微分函数容易地执行所需的计算。有关现场摄像头的数据激活映射技术,看调查使用类激活映射网络预测

加载预训练网络

加载GoogLeNet网络。

净= googlenet;

分类图片

阅读GoogLeNet图像大小。

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

加载sherlock.jpg。,金毛猎犬的图像包含在此的例子。

IMG = imread(“sherlock.jpg”);

调整图像的大小与网络的输入尺寸。

IMG = imresize(IMG,inputSize);

分类的图像,并显示它,与它的分类和分类评分一起。

[classfn,得分=分类(净,IMG);imshow(IMG);标题(sprintf的(“%S(%.2f)”,classfn,得分(classfn)));

GoogLeNet正确分类的图像作为金毛猎犬。但为什么?什么特征的图像的事业网络,使这个分类?

毕业生-CAM解释了为什么

后面梯度-CAM的想法[1]是计算最后的分类评分的梯度相对于所述最终的卷积特征地图。其中,该梯度大的地方到底在哪里最后的比分最依赖于数据的地方。该gradcam辅助函数计算的所述市-CAM地图dlnetwork,服用衍生物SOFTMAX层得分的给定类相对于卷积特征图。对于自动分化,输入图像dlImg必须是dlarray

类型gradcam.m
函数[featureMap,dScoresdMap] = gradcam(dlnet,dlImg,softmaxName,featureLayerName,classfn)[得分,featureMap] =预测(dlnet,dlImg, '输出',{softmaxName,featureLayerName});classScore =分数(classfn);dScoresdMap = dlgradient(classScore,featureMap);结束

的第一行gradcam函数获得类得分和来自网络的特征图。第二行认定为所选择的分类评分(金毛猎犬,在这种情况下)。dlgradient计算梯度只为标量值函数。所以gradcam计算图像得分的梯度仅针对所选择的分类。第三行使用自动微分来计算最终得分的梯度相对于在特征地图层的权重。

要使用梯度-CAM,创建dlnetwork从GoogLeNet网络。首先,创建来自网络的层图。

lgraph = layerGraph(净值);

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

lgraph = removeLayers(lgraph,lgraph.Layers(端部),请将.Name);

创建一个dlnetwork从该层图形。

dlnet = dlnetwork(lgraph);

指定SOFTMAX和要素地图图层的名称与梯度-CAM辅助函数使用。对于特征地图层中,指定最后RELU层用非单空间维度,或最后层褶裥RELU层的输出(诸如深度级联或添加层)。如果您的网络不包含任何RELU层,指定在输出非单空间维度最终卷积层的名称。使用功能analyzeNetwork检查您的网络,并选择正确的图层。对于GoogLeNet,所述SOFTMAX层的名称是'概率'和深度级联层是“inception_5b输出”

softmaxName ='概率';featureLayerName =“inception_5b输出”;

要使用自动分化,夏洛特的图像转换为dlarray

dlImg = dlarray(单(IMG),'SSC');

通过调用计算所述图像的梯度-CAM梯度dlfevalgradcam功能。

[featureMap,dScoresdMap] = dlfeval(@gradcam,dlnet,dlImg,softmaxName,featureLayerName,classfn);

调整梯度映射到GoogLeNet图像尺寸和缩放的分数以用于显示适当的水平。

gradcamMap =总和(featureMap *总和(dScoresdMap,[1 2]),3。);gradcamMap = ExtractData由(gradcamMap);gradcamMap =重新调整(gradcamMap);gradcamMap = imresize(gradcamMap,inputSize,'方法'“双立方”);

通过使用显示在图像上的梯度-CAM水平'AlphaData'的0.5值。该'喷射'颜色表有深蓝色为最低值,深红色为最高。

imshow(IMG);保持;于imagesc(gradcamMap,'AlphaData',0.5);色彩表喷射保持;标题(“奇格勒-CAM”);

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

对于不同的方法来研究深网络分类的原因,见occlusionSensitivity

参考

[1] Selvaraju,R.R。,M.科格斯韦尔,A.达斯,R.卡沃,D.瑞克和D.巴特拉。“毕业-CAM:通过基于梯度定位从深层网络可视化解释。“在计算机视觉IEEE国际会议(ICCV),2017年,第618-626。可在毕业-CAM在计算机视觉基金会的开放存取网站。

也可以看看

|||

相关话题