主要内容

了解网络使用阻塞预测

这个例子展示了如何使用阻塞敏感性映射到理解为什么一个深层神经网络分类的决定。闭塞的敏感性是一个简单的技术理解图像的哪些部分最重要的深层网络的分类。你可以测量网络阻塞的敏感度不同地区的数据使用的小扰动数据。使用阻塞对高层理解图像特性的网络使用一个特定的分类,并提供洞察网络可以分类图像的原因。

深度学习工具箱提供了occlusionSensitivity函数为深层神经网络灵敏度计算闭塞地图接受图像输入。的occlusionSensitivity功能扰乱小范围的输入,代之以一个阻塞面具,通常一个灰色的方框。掩模移动整个形象,概率评分的变化对于一个给定的类是测量作为掩模位置的函数。您可以使用这个方法来突出图像的哪个部分最重要的分类:当图像的一部分被挡住,概率预测类分数将大幅下降。

负载Pretrained网络和图像

网络加载pretrained GoogLeNet,用于图像分类。

网= googlenet;

提取输入图像的大小和输出类网络。

inputSize = net.Layers (1) .InputSize (1:2);类= net.Layers . class(结束);

加载图像。一个叫莱卡犬的狗的图片。调整图像的网络输入的大小。

imgLaikaGrass = imread (“laika_grass.jpg”);imgLaikaGrass = imresize (imgLaikaGrass inputSize);

图像进行分类,并显示三个类分类图像中得分最高的称号。

[YPred,分数]=(网络,imgLaikaGrass)进行分类;[~,topIdx] = maxk(分数,3);topScores =分数(topIdx);topClasses =类(topIdx);imshow (imgLaikaGrass) titleString =组成(“% s (% .2f)”、topClasses topScores);标题(sprintf(加入(titleString,”;”)));

莱卡犬是一种poodle-cocker猎犬十字架。在GoogLeNet这个品种不是一个档次,所以网络分类图像有一些困难。网络不是很自信的预测,预测的类迷你贵宾犬只有23%的分数。下一个得分最高的类是贵宾犬的一种,这是一个合理的分类。网络也分配一个温和的概率西藏梗类。我们可以使用阻塞理解图像的哪个部分导致网络建议这三个类。

识别领域的一个图像分类的网络使用

您可以使用阻塞找出哪些部分图像的分类是很重要的。首先,看看预测类迷你贵宾犬。图像显示这个类的哪些部分?使用阻塞灵敏度函数映射分类评分的变化时被遮挡部分的图像。

地图= occlusionSensitivity(网,imgLaikaGrass, YPred);

显示图像的莱卡犬闭塞敏感性地图覆盖。

imshow (imgLaikaGrass“InitialMagnification”,150)显示亮度图像(地图,“AlphaData”,0.5)colormap飞机colorbar标题(sprintf (“闭塞敏感性(% s)”,YPred))

闭塞地图显示图像的哪个部分的分数有积极的贡献迷你贵宾犬类,哪些部分有负面的贡献。红色区域的地图有更高价值的证据迷你贵宾犬类——红色区域被遮挡时,得分迷你贵宾犬会下降。在这个形象,莱卡犬的头部、背部、和耳朵提供最有力的证据迷你贵宾犬类。

蓝色区域的图像的映射值较低的部分,导致分数的增加迷你贵宾犬当堵塞。通常,这些区域是另一个类的证据,可以混淆网络。在这种情况下,莱卡犬的嘴和腿有负面贡献总分迷你贵宾犬

闭塞地图强烈关注狗的形象,这表明GoogLeNet分类正确的图像中的对象。如果你的网络没有生产你期望的结果,一个闭塞地图可以帮助你理解为什么。例如,如果网络强烈关注图像的其他部分,这表明网络学习错误的功能。

你可以得到类似的结果使用梯度类激活映射(Grad-CAM)技术。Grad-CAM使用分类评分的梯度对最后卷积层网络中为了理解图像的哪个部分最重要的分类。例如,看到的Grad-CAM揭示了深度学习的决定背后的原因

闭塞的敏感性和Grad-CAM通常返回结果相印证,尽管他们以不同的方式工作。通常,您可以计算Grad-CAM闭塞地图地图更快,不调整任何参数。然而,Grad-CAM地图通常可以比一个闭塞地图空间分辨率较低,可以忽略细节。底层解决Grad-CAM最后卷积特性图的空间分辨率;对于GoogleNet 7-by-7像素。从闭塞的灵敏度得到最好的结果,你必须选择正确的值MaskSize选项。这个调优提供了更大的灵活性来检查输入特性在不同长度尺度。

比较不同类型的证据

您可以使用阻塞比较形象的哪个部分网络标识作为证据为不同的类。这可能是有用的在这种情况下,网络是没有信心的分类和给几类类似的分数。

计算一个闭塞地图的三大类别。检查的结果具有较高分辨率的阻塞,减少使用面具的大小和进步MaskSize选项。一个更小的导致更高分辨率的地图,但需要更长的时间来计算,可以使用更多的内存。一个更小的MaskSize说明了小细节,但会导致结果吵着。

topClasses =类(topIdx);topClassesMap = occlusionSensitivity(净、imgLaikaGrass topClasses,“步”10“MaskSize”15);

阴谋的结果为每个三大类别。

i = 1:长度(topIdx)图imshow (imgLaikaGrass);持有显示亮度图像(topClassesMap(:,:我),“AlphaData”,0.5);colormap飞机;classLabel =字符串(类(topIdx(我)));标题(sprintf (“% s”classLabel));结束

图像的不同部分有一个非常不同的影响类分数不同的犬种。狗的背上有很强的影响的迷你贵宾犬玩具贵宾犬类,而嘴和耳朵做出贡献西藏梗类。

调查误分类问题

如果你的网络是始终将某些类型的划分输入数据,您可以使用阻塞灵敏度来确定特定输入数据混淆网络的特性。莱卡犬闭塞地图的坐在草地上,你可以认为图像的莱卡犬更关注她的脸可能会被误诊西藏梗。你可以确认这是莱卡犬的情况下使用另一个形象。

imgLaikaSit = imresize (imread (“laika_sitting.jpg”),inputSize);[YPred,分数]=(网络,imgLaikaSit)进行分类;[得分,idx] = max(分数);YPred,分数
YPred =分类西藏梗
分数=0.5668

计算闭塞地图的新形象。

地图= occlusionSensitivity(网,imgLaikaSit, YPred);imshow (imgLaikaSit);持有;显示亮度图像(地图,“AlphaData”,0.5);colormap飞机;标题(sprintf (“% s (% .2f)”,字符串(类(idx)),得分));

再次,网络强烈associates狗的鼻子和嘴巴西藏梗类。这突显出可能的故障模式的网络,因为它表明,图像的莱卡犬的脸始终会被误诊西藏梗

您可以使用获得的见解occlusionSensitivity函数来确保你的网络是专注于正确的输入数据的特点。分类问题在这个例子的原因是可用的类GoogleNet不包括混杂狗像莱卡犬。闭塞地图展示了为什么莱卡犬的网络是被这些图片。重要的是要确保你使用的网络适用于手头的任务。

在这个例子中,网络是错误地识别对象在图像的不同部分不同的类。这个问题的一种解决方案是重新培训网络有更多的标签数据涵盖了广泛的分类错误的类的观察。例如,这里的网络可以使用大量的图片重新训练莱卡犬在不同角度拍摄,所以它学会副后面和前面的狗与正确的类。

引用

[1]Zeiler医学博士,Fergus R. (2014) Visualizing and Understanding Convolutional Networks. In: Fleet D., Pajdla T., Schiele B., Tuytelaars T. (eds) Computer Vision – ECCV 2014. ECCV 2014. Lecture Notes in Computer Science, vol 8689. Springer, Cham

另请参阅

|

相关的话题