基于遮挡敏感性的网络可视化
你有没有想过你最喜欢的深度学习网络在研究什么?例如,如果一个网络将这张图像分类为“法国圆号”,那么图像的哪一部分对分类最重要?
Birju Patel是计算机视觉系统工具箱团队的一名开发人员,他帮助我完成了今天这篇文章的主要思想和代码。过去几年,Birju一直专注于深度学习。在此之前,他主要研究特征提取方法和特征匹配优化。
让我们在这个实验中使用预先训练的ResNet-50网络。(何,开明,张,翔宇,任少卿,孙,健。“图像识别的深度残差学习”。《IEEE计算机视觉与模式识别会议论文集》,770-778页。2016年)。获取MATLAB的resnet -50网络的一个简单方法是启动Add-On Explorer(从MATLAB中的HOME选项卡)并搜索resnet。
网= resnet50;
我们需要知道,ResNet-50期望输入图像是一个特定的大小。网络的初始层有这些信息。
深圳= net.Layers (1) .InputSize (1:2)
Sz = 224 224
所需的图像大小可以直接传递到imresize函数。
url =“https://blogs.mathworks.com/steve/files/steve-horn.jpg”;rgb = imread (url);rgb = imresize (rgb、深圳);imshow (rgb)
调用分类利用网络和图像,看看网络认为最可能的类别是什么。
分类(净,rgb)
ans =绝对圆号
ResNet-50以为我在吹法国号。
Birju在读Zeiler和Fergus的论文关于卷积神经网络的可视化技术,在那里他想到了闭塞的敏感性.如果你屏蔽或遮挡图像的一部分,这对网络的概率评分有什么影响?遮挡的部位不同,结果会有什么不同?
让我们试一试。
rgb2 = rgb;rgb2 ((1:71) + 77, + 108 (1:71):) = 128;imshow (rgb2)
rgb2分类(净)
分类笔记本
嗯。我猜电视台“认为”那个灰色方块看起来像笔记本。那个区域对图像分类一定很重要。现在让我们在另一个地方尝试遮挡。
rgb3 = rgb;rgb3 ((1:71) + 15 (1:71) + 80:) = 128;imshow (rgb3)
rgb3分类(净)
ans =绝对圆号
嗯。我想我的头没那么重要。
总之,Birju写了一些MATLAB代码,系统地量化了不同图像区域对分类结果的相对重要性。他的代码构建了大量的图像。对于批处理中的每个图像,一个不同的区域被遮挡。对于遮挡掩模的每个位置,将记录预期类别(在本例中为“法国号”)的预测分数。
让我们制作一批71x71区域蒙版的图像。首先计算所有掩码的角,表示为(X1,Y1)和(X2,Y2)。
Mask_size = [71 71];(H, W ~) = (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);Y1 = 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(我):Y2(我);批(r c:, i) = 128;%灰色面具。结束
[注:此批处理包含超过50,000张图像。]你需要大量的RAM来同时创建和处理如此大的一批图像。
这里有一些蒙面的图片。
蒙太奇(批处理(:,:,:,randperm(大小(X1, 1), 9)))
现在我将使用预测(而不是分类),得到每个类别和批处理中的每张图像的预测得分。的“MiniBatchSize”参数用于降低GPU内存占用率。这意味着预测函数将一次发送64张图像到GPU进行处理。
S =预测(净,批,“MiniBatchSize”, 64);
大小(年代)
Ans = 50176 1000
这是很多的预测分数!批处理中有51529个图像,有1000个类别。矩阵年代每个类别和每个图像都有一个分数。
我们特别感兴趣的是原始图像预测类别的预测得分。我们来算一下它的类别索引。
成绩=预测(净,rgb);[~, horn_idx] = max(分数);
这里是法国号批处理中每张图像的得分:
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 =批(:,:,:,min_idx);imshow (rgb_min_score)
那就这样吧。要辨认一个法国圆号,就得看阀门和阀门滑阀。这不是铃的问题。
关于术语的最后一个提示:我的一些吹号的朋友可能会因为我称我的乐器为“法国号”而为难我。根据国际号角协会,这种乐器应该叫“号角”。然而,ResNet-50储存的标签是“法国圆号”,这是在我居住的美国最常用的术语。
- 类别:
- 深度学习
评论
如欲留言,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。