Grad-CAM揭示深度学习决策背后的原因
这个例子展示了如何使用梯度加权类激活映射(Grad-CAM)技术来理解深度学习网络做出分类决策的原因。由Selvaraju和合作者发明的Grad-CAM[1],使用分类分数相对于网络确定的卷积特征的梯度,以了解图像的哪些部分对分类最重要。这个例子使用了GoogLeNet预训练的图像网络。
Grad-CAM是类激活映射(CAM)技术的推广。有关实时网络摄像头数据的激活映射技术,请参见使用类激活映射研究网络预测.Grad-CAM也可以应用于非分类的例子,如回归或语义分割。有关演示如何使用Grad-CAM来调查语义分割网络的预测的示例,请参见使用Grad-CAM探索语义分割网络.
负荷预训练网络
加载GoogLeNet网络。
Net = googlenet;
图像的分类
读取GoogLeNet图像大小。
inputSize = net.Layers(1).InputSize(1:2);
负载sherlock.jpg
,这个例子中包含了一只金毛猎犬的图像。
Img = imread(“sherlock.jpg”);
将图像大小调整为网络输入尺寸。
img = imresize(img,inputSize);
对图像进行分类并显示,以及其分类和分类评分。
[classfn,score] = category (net,img);imshow (img);标题(sprintf (“% s (% .2f)”, classfn, score(classfn)));
GoogLeNet正确地将这张照片归类为金毛猎犬。但是为什么呢?图像的哪些特征导致网络做出这种分类?
Grad-CAM解释了原因
Grad-CAM技术利用分类分数相对于最终卷积特征图的梯度,来识别输入图像中对分类分数影响最大的部分。梯度较大的地方正是最终得分最依赖数据的地方。
的gradCAM
函数通过对给定类的约简层输出对卷积特征映射求导来计算重要性映射。对于分类任务,使用gradCAM
函数自动选择合适的层来计算其重要性映射。属性指定层“ReductionLayer”
而且“FeatureLayer”
名称-值参数。
计算Grad-CAM地图。
map = gradCAM(net,img,classfn);
控件在图像顶部显示渐变凸轮地图“AlphaData”
0.5的值。的“喷气机”
颜色地图有深蓝作为最低值和深红色作为最高。
imshow (img);持有在;显示亮度图像(地图,“AlphaData”, 0.5);colormap飞机持有从;标题(“Grad-CAM”);
显然,狗的上脸和耳朵对分类的影响最大。
有关研究深度网络分类原因的不同方法,请参见occlusionSensitivity
而且imageLIME
.
参考文献
Selvaraju, r.r., M. Cogswell, A. Das, R. Vedantam, D. Parikh和D. Batra。”梯度- cam:基于梯度定位的深度网络视觉解释。IEEE计算机视觉国际会议(ICCV), 2017,第618-626页。可以在Grad-CAM
计算机视觉基金会开放获取网站。
另请参阅
gradCAM
|imageLIME
|occlusionSensitivity
|deepDreamImage