深度学习

理解和使用深度学习网络

基于遮挡敏感性的网络可视化

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

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

我们使用预先训练好的ResNet-50网络来进行这个实验。(何开明,张翔宇,任少青,孙健。图像识别的深度残差学习IEEE计算机视觉与模式识别会议论文集,770-778页。2016年)。获得MATLAB的resnet -50网络的一个简单方法是启动附加资源管理器(从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在读塞勒和费格斯的一篇论文关于卷积神经网络的可视化技术,在这个过程中他想到了闭塞的敏感性.如果你遮挡,或遮挡,图像的一部分,这如何影响网络的概率得分?阻塞的部位不同,结果会有什么不同?

让我们试一试。

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

嗯。我猜网络“认为”灰色方块看起来像一个笔记本。这个区域对于图像的分类是很重要的。现在让我们在不同的地方试试咬合。

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] =网格(X, Y);X1 = X1(赋值)- (mask_size(2)-1)/2;Y1 = Y1(赋值)- (mask_size(1)-1)/2;X2 = X1 + mask_size(2) - 1;mask_size(1) - 1;

不要让遮罩角偏离图像边界。

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

批处理。

批处理= repmat(rgb,[1 1 1 size(X1,1)]);c = X1(i):X2(i);r = Y1(我):Y2(我);批(r c:, i) = 128;%灰色面具。结束

[注:这批有超过50,000张图片。你将需要大量的内存来创建和处理这样一大批图像。

下面是一些蒙面图像。

蒙太奇(批处理(:,:,:,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中存储的标签是“法国圆号”,这是我居住的美国最常用的术语。




MATLAB®R2017b发布

|
  • 打印
  • 发送电子邮件

评论

请点击留下评论在这里登录到你的MathWorks帐户或创建一个新的。