人工智能

应用机器学习和深度学习

基于遮挡灵敏度的网络可视化

你有没有想过你最喜欢的深度学习网络正在研究什么?例如,如果一个网络将这张图像分类为“法国号”,那么图像的哪个部分对分类最重要?

Birju Patel是计算机视觉系统工具箱团队的开发人员,他帮助我制定了今天这篇文章的主要思想和代码。过去几年,Birju一直专注于深度学习。在此之前,他致力于特征提取方法和优化特征匹配。

让我们使用预先训练好的ResNet-50网络进行这个实验。何开明,张翔宇,任少卿,孙健。图像识别的深度残差学习在IEEE计算机视觉和模式识别会议论文集,第770-778页。2016年)。获得resnet -50 MATLAB网络的一个简单方法是启动Add-On Explorer(从MATLAB中的HOME选项卡)并搜索resnet。

Net = resnet50;

我们需要知道ResNet-50期望输入图像是一个特定的大小。网络的初始层有这些信息。

sz = net.Layers(1).InputSize(1:2)
Sz = 224

所需的图像大小可以直接传递给imresize函数。

url =“https://blogs.mathworks.com/steve/files/steve-horn.jpg”;RGB = imread(url);RGB = imresize(RGB,sz);imshow (rgb)

调用分类通过网络和图像,看看网络认为最可能的类别是什么。

分类(净,rgb)
绝对的法国圆号

ResNet-50以为我在吹圆号。

Birju在读书泽勒和费格斯的一篇论文关于卷积神经网络的可视化技术,在里面他想到了闭塞的敏感性.如果你屏蔽或遮挡图像的一部分,这将如何影响网络的概率得分?遮挡的部分不同,结果又有什么不同呢?

我们试试吧。

Rgb2 = rgb;Rgb2 ((1:71)+77,(1:71)+108,:) = 128;imshow (rgb2)
rgb2分类(净)
分类笔记本

嗯。我猜电视台“认为”那个灰色方块看起来像笔记本。这个区域对于图像分类来说一定很重要。现在让我们在不同的地方尝试遮挡。

Rgb3 = rgb;Rgb3 ((1:71)+15,(1:71)+80,:) = 128;imshow (rgb3)
rgb3分类(净)
绝对的法国圆号

嗯。我想我的头脑没那么重要。

不管怎样,Birju编写了一些MATLAB代码,系统地量化了不同图像区域对分类结果的相对重要性。他的代码生成了大量的图像。对于批处理中的每张图像,一个不同的区域被遮挡。对于遮挡掩模的每个位置,将记录期望类别(在本例中为“法国号”)的预测分数。

让我们用71x71区域蒙版制作一批图像。首先计算所有掩码的角,表示为(X1,Y1)和(X2,Y2)。

Mask_size = [71 71];[H,W,~] = size(rgb);X = 1: w;Y = 1: h;[X1, Y1] = meshgrid(X, Y);X1 = X1(:) - (mask_size(2)-1)/2;Y1 = Y1(:) - (mask_size(1)-1)/2;X2 = X1 + mask_size(2) - 1;Y2 = Y1 + mask_size(1) - 1;

不要让蒙版角偏离图像边界。

X1 = max(1, X1);y = max(1, Y1);X2 = min(W, X2);Y2 = min(H, Y2);

批量生产。

batch = repmat(rgb,[1 1 1 size(X1,1)]);i = 1:size(X1,1) c = X1(i):X2(i);r = Y1(i):Y2(i);Batch (r,c,:,i) = 128;%灰色遮罩。结束

[注:这批有超过50000张图片。你将需要大量的RAM来创建和处理如此大量的图像。

这里有一些蒙面的图片。

蒙太奇(批处理(:,:,:,randperm(大小(X1, 1), 9)))

现在我要用预测(而不是分类),得到每个类别和批次中每个图像的预测分数。的“MiniBatchSize”参数用于降低GPU内存使用。这意味着预测函数将一次发送64张图像到GPU进行处理。

S = predict(净,批量,“MiniBatchSize”, 64);
大小(年代)
Ans = 50176 1000

这是很多预测分数!批处理中有51529张图像,有1000个类别。矩阵年代每个类别和每个图像都有一个分数。

我们特别感兴趣的是对原始图像预测的类别的预测分数。让我们算出它的分类索引。

分数=预测(净,rgb);[~,horn_idx] = max(scores);

这里是法国号批处理中每个图像的分数:

S_horn = s(:,horn_idx);

将号角乐谱集重塑为图像并显示。

S_horn =重塑(S_horn,H,W);甘氨胆酸imshow (-S_horn []) colormap (,“parula”

最亮的区域表示遮挡对概率分数影响最大的位置。

让我们找到使“法国号”概率得分最小的位置。

[min_score,min_idx] = min(s_horn);Rgb_min_score = batch(:,:,:,min_idx);imshow (rgb_min_score)

好了。要辨别法国号,关键在于阀门和阀门滑块。这不是铃声的问题。

关于术语的最后一点说明:我的一些演奏圆号的朋友可能会对我称自己的乐器为“法国圆号”感到难以接受。根据国际号角协会的说法,这种乐器就叫“号角”吧。然而,ResNet-50存储的标签是“法国圆号”,这是我居住的美国最常用的术语。




发布与MATLAB®R2017b

|
  • 打印
  • 发送电子邮件

댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그하거나계정을새로만드십시오。