主要内容

使用闭塞理解网络预测

此示例显示如何使用遮挡敏感性图来理解为什么深神经网络进行分类决策。闭塞灵敏度是一种简单的技术,用于了解图像的图像的哪些部分对于深度网络的分类最重要。您可以使用小型数据的小扰动来测量网络对数据区域的遮挡的敏感性。使用闭塞敏感性来获得对网络用于进行特定分类的图像特征的高级了解,并提供深入了解网络可以错误分类图像的原因。

深度学习工具箱提供了咬合敏感性用于计算接受图像输入的深神经网络的遮挡敏感性图的功能。这咬合敏感性通过用遮挡面罩更换,通常是灰色方形的输入功能erturbs的小区域。掩模在图像上移动,并且作为掩模位置的函数测量给定类的概率分数的变化。您可以使用此方法来突出显示图像的哪些部分对分类最重要:当图像的该部分被遮挡时,预测类的概率分数将急剧下降。

负载净化网络和图像

加载佩带的网络googlenet,将用于图像分类。

net = googlenet;

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

InputSize = Net.Layers(1).InputSize(1:2);classes = net.layers(结束).classes;

加载图像。图像是一只名叫洛卡的狗。将图像的大小调整为网络输入大小。

imglaikagrass = imread(“laika_grass.jpg”);imglaikagrass = imresize(Imglaikagrass,输入);

分类图像,并在图像标题中显示具有最高分类分数的三个类。

[ypred,scores] =分类(net,imglaikagrass);[〜,topidx] = maxk(得分,3);topscores = scores(topidx);topclasses =类(topidx);imshow(imglaikagrass)titlestring = compose(“%s(%.2f)”,顶括号,topscores');标题(Sprintf(加入(Titlestring,“;)));

Laika是一只贵宾犬猎犬十字架。这种品种不是googlenet中的一个类,所以网络对图像进行了一些困难。网络对其预测并不非常有信心 - 预测类微型贵宾犬只有分数为23%。下一个最高分的课程也是一种贵重犬,这是一个合理的分类。网络还将中等概率分配给西藏梗班级。我们可以使用遮挡来了解图像的哪些部分导致网络建议这三个类别。

识别图像用于分类的图像的区域

您可以使用遮挡来了解图像的哪些部分对分类很重要。首先,看看预测的类别微型贵宾犬。图像的哪些部分建议这个课程?使用遮挡灵敏度函数映射分类评分的变化,当图像的一部分被遮挡时。

地图= occlusionsity(Net,Imglaikagrass,Ypred);

显示Laika的图像与覆盖的遮挡敏感性图。

imshow(imglaikagrass,'InitialMagnification',150)持有图像(地图,'alphadata',0.5)Colormap喷射彩色杆标题(Sprintf(“闭塞敏感性(%s)”......ypred))

封闭图显示图像的哪些部分对分数具有积极贡献微型贵宾犬班级,哪些部分具有负面贡献。地图的红色区域具有更高的价值,并且是证据微型贵宾犬类 - 当红色区域被遮挡时,得分微型贵宾犬下跌降落。在这张照片中,Laika的头部,返回和耳朵为此提供了最强的证据微型贵宾犬班级。

具有较低值的地图的蓝色区域是图像的一部分,导致分数增加微型贵宾犬闭塞时。通常,这些领域是另一个类的证据,并且可以混淆网络。在这种情况下,Laika的嘴和腿对整体分数具有负面贡献微型贵宾犬

遮挡图强烈地专注于图像中的狗身上,这表明Googlenet正在对图像中的正确对象进行分类。如果您的网络没有生产您期望的结果,则遮挡地图可以帮助您理解原因。例如,如果网络强烈地专注于图像的其他部分,则这表明该网络学会了错误的功能。

您可以使用梯度类激活映射(Grad-Cam)技术获得类似的结果。Grad-CAM使用分类得分的梯度相对于网络中的最后一个卷积层,以便理解图像的哪些部分对分类最重要。例如,看到Grad-Cam揭示为什么深入学习决策

闭塞敏感性和毕业凸轮通常返回定性相似的结果,尽管它们以不同的方式工作。通常,您可以更快地计算Read-Cab Map,即遮挡图,而无需调整任何参数。然而,毕业凸轮映射通常可以具有比遮挡图更低的空间分辨率,并且可以错过细节。Grad-Cam的潜在分辨率是最后一个卷积特征图的空间分辨率;在Googlenet的情况下,这是7×7像素。为了获得遮挡敏感性的最佳结果,您必须选择正确的值面具步行选项。此调整提供了更灵活的,以检查不同长度尺度的输入功能。

比较不同课程的证据

您可以使用遮挡来比较网络的图像的哪些部分标识为不同类别的证据。这对于网络在分类中没有信心的情况下,这可以是有用的,并且给予几个类别。

为前三个类中的每一个计算遮挡映射。以较高的分辨率检查遮挡结果,减少掩模尺寸并使用升级面具步行选项。一个小步行导致更高分辨率的映射,但可能需要更长时间才能计算和使用更多内存。一个小面具说明了较小的细节,但可能导致噪音结果。

topclasses =类(topidx);topclassesmap = occlusionsentivity(网络,imglaikagrass,topclasses,......“步幅”10,......“面具”15);

绘制前三个类的结果。

为了i = 1:长度(topidx)图imshow(imglaikagrass);抓住ImageC(TopClassesMap(::,i),'alphadata',0.5);COLOROMAP.喷射;classlabel = string(类(topidx(i)));标题(Sprintf(“%s”,classlabel));结尾

图像的不同部分对不同狗品种的课程分数产生了非常不同的影响。狗的背部有强烈的影响,有利于微型贵宾犬玩具贵宾犬课程,嘴巴和耳朵有助于西藏梗班级。

调查错误分类问题

如果您的网络始终会错误分类某些类型的输入数据,则可以使用遮挡敏感性来确定输入数据的特定功能是否会使网络混淆。从Laika坐在草地上的遮挡地图,你可以期待莱卡的图像更专注于她的脸上可能被错误分类为西藏梗。您可以验证使用Laika的另一张图片是这种情况。

imglaikasit = imresize(imread(“laika_sitting.jpg”),输入);[ypred,scores] =分类(net,imglaikasit);[得分,IDX] = MAX(得分);ypred,score.
Ypred =分类西藏梗
得分=单身的0.5668

计算新图像的遮挡图。

地图= occlusionsity(net,imglaikasit,ypred);imshow(imglaikasit);抓住;图像(地图,'alphadata',0.5);COLOROMAP.喷射;标题(Sprintf(“%s(%.2f)”......字符串(类(idx)),得分));

再次,网络强烈将狗的鼻子和嘴联系在一起西藏梗班级。这突出了网络的可能性失败模式,因为它表明Laika的脸部的图像将一直被错误分类为西藏梗

您可以使用从中获得的洞察力咬合敏感性功能要确保您的网络专注于输入数据的正确功能。在这个例子中的分类问题的原因是,可用的Googlenet类不​​包括像Laika这样的交叉狗。遮挡图展示了Laika的这些图像对网络混淆的原因。重要的是要确定您正在使用的网络适用于手头的任务。

在此示例中,网络被错误地识别图像中对象的不同部分作为不同的类。此问题的一个解决方案是用更多标记的数据寄出网络,这些数据涵盖错误分类类的更广泛的观察。例如,可以使用以不同角度拍摄的Laika的大量图像来检测这里的网络,从而了解将狗的后部和正面与正确的类相关联。

参考

[1]塞里默M.D.,Fergus R.(2014)可视化和理解卷积网络。在:舰队D.,Pajdla T.,Schiele B.,Tuytelaars T.(EDS)计算机视觉 - ECCV 2014. ECCV 2014.计算机科学的讲义笔记,Vol 8689。Springer,Cham

也可以看看

|

相关话题