【深度学习】基于MatConvNet框架的CNN卷积层与特征图可视化

程序下载链接:https://download.csdn.net/download/jsgaobiao/10422273
VGG-f模型链接:http://www.vlfeat.org/matconvnet/models/imagenet-vgg-f.mat

【题目】
编程实现可视化卷积神经网络的特征图,并探究图像变换(平移,旋转,缩放等)对特征图的影响。选择AlexNet等经典CNN网络的Pre-trained模型,可视化每个卷积层的特征图(网络输入图片自行选择)。其中,第一层全部可视化,其余层选取部分特征图进行可视化。然后对图像进行变换,观察图像变换后特征图的变化。

 【方法概述】
本次实验使用了VGG-f作为预先加载的模型,通过MATLAB中的load方法将imagenet-vgg-f中的参数加载进程序。
imagenet-vgg-f是一个21层的卷积神经网络,其参数在ImageNet数据集上进行了训练。它的网络结构包括了5层卷积层、3层全连接层,输出的类别可达1000种。网络结构图太长了放在文章最后。

实验中共有6个输入图像,分别是原图input.jpg以及对它进行平移、缩放、旋转、水平翻转、垂直翻转后的图像
【深度学习】基于MatConvNet框架的CNN卷积层与特征图可视化_第1张图片
首先将输入图像进行归一化操作,也就是将图片resize到网络的标准输入大小224*224,并且将图片的每个像素与均值图片的每个像素相减,再输入网络。
接下来,可视化卷积核的时候,将网络第一层卷积核的参数net.layers{1}.weights{1}提取出来,并使用vl_imarraysc函数进行可视化。第一层卷积核的3个通道在可视化的过程中就被当作RGB三个通道。
对于feature map的可视化任务,需要先使用vl_simplenn将图片输入神经网络并获取其输出结果。我们需要可视化的是每个卷积层后经过ReLU的结果,每个输入图像对应5个特征图。

 【结果分析】
由于卷积核的参数是预训练得到的,与输入图片无关,所以只展现一幅图就够了。如下图所示,第一层卷积核学到了图片中一些基础性的特征,比如各种方向的边缘和角点。
【深度学习】基于MatConvNet框架的CNN卷积层与特征图可视化_第2张图片
下面展示的是原始图片输入后,5个卷积层的可视化结果。需要说明的是,第二层之后的特征图数量较多,因此每层只选取了64个进行可视化。另外,特征图是单通道的灰度图片,为了可视化的效果更好,我将灰度值映射到了“蓝-黄”的颜色区间内,进行了伪彩色的处理,得到了如下的可视化结果。

其中,第一层特征图的细节比较清晰和输入图片较为相似,提取出了输入图片的边缘(包括刺猬身上的刺)。第2、3、4层特征图的分辨率较低,已经难以看出输入图片的特征,但是可以发现有些特征图对背刺区域激活显著,有些特征图对刺猬的外轮廓、背景等区域激活显著。可以猜测,它们提取了图片中比边缘和角点更高层的语义信息。最后一层特征图中有少量对背刺区域激活显著,少量几乎没有被激活。可以猜测,刺猬的背刺特征是网络判断其类别的显著特征,因此被分类为刺猬的图片在最后一个特征层的背刺区域激活最为明显。
【深度学习】基于MatConvNet框架的CNN卷积层与特征图可视化_第3张图片
【深度学习】基于MatConvNet框架的CNN卷积层与特征图可视化_第4张图片

 【对比分析】
由于篇幅限制,这里只放置较小的略缩图,高清图片可以运行程序自行查看。

我们先对比最清晰的第一层特征图的可视化结果。
可以看出除了缩放的图片以外,其他特征图都随着输入图片的变化而变化:平移的图片作为输入,特征图也产生了相对的平移;翻转、旋转都有类似的效果。只有缩放的输入图片并不影响特征图的表现,其原因应该是VGG-f采用固定大小的输入数据,因此不论图片是否经过缩放,在输入VGG-f之前都会被归一化为同样的大小,所以直观上看并不影响特征图的表现。但是由于分辨率的不同,经过resize之后的图片可能会有像素级别的细微差异,人眼不容易分辨出来。

从另一方面来说,虽然特征图对于输入图片的变换产生了相同的变换,但是特征图中的激活区域并没有显著的变化。这说明VGG-f在图片分类的任务中,对输入图片的大小、旋转、翻转、平移等变化是不敏感的,并不会显著影响其分类结果的准确性。也说明了CNN网络具有一定程度的旋转/平移不变性。
【深度学习】基于MatConvNet框架的CNN卷积层与特征图可视化_第5张图片
【深度学习】基于MatConvNet框架的CNN卷积层与特征图可视化_第6张图片
与第一层特征图类似,其他层的特征图也产生了类似的表现,即除了缩放的图片以外,其他作用于输入图片的变换均体现在了特征图上。由于篇幅所限,这里不再单独放出。运行程序即可得到结果。

附上程序下载链接:https://download.csdn.net/download/jsgaobiao/10422273

VGG-f网络结构图

你可能感兴趣的:(MatLab,机器学习,可视化)