Grad-CAM揭示了深度学习决策背后的原因
这个例子展示了如何使用梯度加权类激活映射(Grad-CAM)技术来理解深度学习网络为什么要做出分类决策。由Selvaraju和合作者发明的Grad-CAM[1],使用分类分数相对于由网络确定的卷积特征的梯度,以了解图像的哪些部分对分类最重要。本例使用GoogLeNet预训练的图像网络。
Grad-CAM是类激活映射(CAM)技术的推广。有关实时网络摄像头数据的激活映射技术,请参见使用类激活映射研究网络预测.Grad-CAM也可以应用于非分类的例子,如回归或语义分割。有关如何使用Grad-CAM研究语义分割网络的预测的示例,请参见基于Grad-CAM的语义分割网络研究.
负载Pretrained网络
加载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正确地将图片归类为金毛猎犬。但是为什么呢?图像的什么特征导致网络做出这样的分类?
Grad-CAM解释了为什么
梯度- cam技术利用分类分数相对于最终卷积特征图的梯度,来识别输入图像中对分类分数影响最大的部分。梯度较大的地方正是最终分数受数据影响最大的地方。
的gradCAM
函数通过对给定类的约简层输出相对于卷积特征映射求导来计算重要性映射。对于分类任务,gradCAM
函数自动选择合适的层来计算重要性图。方法还可以指定层“ReductionLayer”
而且“FeatureLayer”
名称-值参数。
计算Grad-CAM映射。
地图= gradCAM(网,img, classfn);
在图像顶部显示渐变凸轮地图“AlphaData”
值为0.5。的“喷气机”
颜色图中深蓝色为最低值,深红色为最高值。
imshow (img);持有在;显示亮度图像(地图,“AlphaData”, 0.5);colormap飞机持有从;标题(“Grad-CAM”);
显然,狗的上脸和耳朵对分类的影响最大。
有关调查深度网络分类原因的另一种方法,请参见occlusionSensitivity
而且imageLIME
.
参考文献
[1] Selvaraju, R. R., M. Cogswell, A. Das, R. Vedantam, D. Parikh和D. Batra。”梯度- cam:基于梯度定位的深度网络可视化解释。《IEEE计算机视觉国际会议》,2017,第618-626页。可以在Grad-CAM
在计算机视觉基金会开放获取网站上。
另请参阅
gradCAM
|imageLIME
|occlusionSensitivity
|deepDreamImage