

♥
步骤1:加载预训练的网络和数据
加载一个预训练的 SqueezeNet 网络。
net = squeezenet;读取并显示图像。
im = imread('Lena.png');
imshow(im)
imgSize = size(im);
imgSize = imgSize(1:2);
步骤2:查看网络架构
分析该网络。
analyzeNetwork(net)
步骤3:显示第一个卷积层的激活
观察卷积层中的哪些区域在图像上激活,并将其与原始图像中的相应区域进行比较,以研究特征。
act1 = activations(net,im,'conv1');激活以三维数组的形式返回,其中第三个维度对 conv1 层上的通道进行索引。
sz = size(act1);
act1 = reshape(act1,[sz(1) sz(2) 1 sz(3)]);显示激活。
I = imtile(mat2gray(act1),'GridSize',[8 8]);
imshow(I)
步骤4:调查特定通道中的激活。
激活网格中的每个图块都是 conv1 层中某个通道的输出。
act1ch22 = act1(:,:,:,22);
act1ch22 = mat2gray(act1ch22);
act1ch22 = imresize(act1ch22,imgSize);
I = imtile({im,act1ch22});
imshow(I)
步骤5:查找最强的激活通道
通过编程方式调查具有大量激活值的通道来尝试查找感兴趣的通道。
[maxValue,maxValueIndex] = max(max(max(act1)));
act1chMax = act1(:,:,:,maxValueIndex);
act1chMax = mat2gray(act1chMax);
act1chMax = imresize(act1chMax,imgSize);
I = imtile({im,act1chMax});
imshow(I)
步骤6:调查更深的层
大多数卷积神经网络在第一个卷积层中学习检测颜色和边缘等特征。
act6 = activations(net,im,'fire6-squeeze1x1');
sz = size(act6);
act6 = reshape(act6,[sz(1) sz(2) 1 sz(3)]);
I = imtile(imresize(mat2gray(act6),[64 64]),'GridSize',[6 8]);
imshow(I)
关注一些更有趣的图像。
[maxValue6,maxValueIndex6] = max(max(max(act6)));
act6chMax = act6(:,:,:,maxValueIndex6);
imshow(imresize(mat2gray(act6chMax),imgSize))
在所有通道的网格中,可能有通道针对眼睛激活。
I = imtile(imresize(mat2gray(act6(:,:,:,[14 47])),imgSize));
imshow(I)
许多通道包含同时存在浅色和深色的激活区域。
act6relu = activations(net,im,'fire6-relu_squeeze1x1');
sz = size(act6relu);
act6relu = reshape(act6relu,[sz(1) sz(2) 1 sz(3)]);
I = imtile(imresize(mat2gray(act6relu(:,:,:,[14 47])),imgSize));
imshow(I)
步骤7:测试通道是否识别眼睛
读取并显示两眼一睁一闭的图像,并计算 fire6-relu_squeeze1x1 层的激活。
imClosed = imread('Lena-eye-closed.png');
imshow(imClosed)
act6Closed = activations(net,imClosed,'fire6-relu_squeeze1x1');
sz = size(act6Closed);
act6Closed = reshape(act6Closed,[sz(1),sz(2),1,sz(3)]);在一个图窗中绘制图像和激活。
channelsClosed = repmat(imresize(mat2gray(act6Closed(:,:,:,[14 47])),imgSize),[1 1 3]);
channelsOpen = repmat(imresize(mat2gray(act6relu(:,:,:,[14 47])),imgSize),[1 1 3]);
I = imtile(cat(4,im,channelsOpen*255,imClosed,channelsClosed*255));
imshow(I)
title('Input Image, Channel 14, Channel 47');
链接:https://ww2.mathworks.cn/help/deeplearning/ug/visualize-activations-of-a-convolutional-neural-network.html?s_tid=srchtitle_site_search_5_%25E5%25A4%258D%25E6%259D%2582%25E7%25BD%2591%25E7%25BB%259C
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!