跳到主要内容

卷积神经网络可视化

卷积概念请参考文档:https://www.yuque.com/suanpan_doc/public/rsi4wc#kqfOr

卷积网络可视化

深度学习一直被人们称为“黑盒子”,即内部算法不可见。但是,卷积神经网络(CNN)却能够被可视化,通过可视化,人们能够了解CNN识别图像的过程。
卷积核输出的可视化(Visualizing intermediate convnet outputs (intermediate activations),即可视化卷积核经过激活之后的结果。看到图像经过卷积之后结果,帮助理解卷积核的作用。
想法很简单:向CNN输入一张图像,获得某些卷积层的输出,可视化该输出
可视化结果如下图。  第一层卷积层类似边缘检测的功能,在这个阶段里,卷积核基本保留图像所有信息。
随着层数的加深,卷积核输出的内容也越来越抽象,保留的信息也越来越少。
越深的层数,越多空白的内容,也就说这些内容空白卷积核没有在输入图像中找到它们想要的特征。

案例

要解决的问题

依然使用Cat vs Dog数据集,数据集详情请参考https://www.yuque.com/suanpan_doc/public/dx8z5f。

解决方案

在算盘的项目模板中,已经创建了一个简单的流程可以参考。
在项目模板中,双击keras教材案例中的卷积神经网络可视化: image.png建出以下模板,模板中的组件可以在深度学习的pytorch的分类中找到:image.png

模板

可以看出整个模板分了四块:

  • 模型建立——需要有一个输入层,注意填写接收图片的大小与通道数,后面连接VGG16。注意预训练模型需要被设置为特征提取器,即勾选特征提取器。
  • 数据载入——使用cats vs dogs数据集中的test数据,连接数据采样及数据载入。
  • 可视化——该节点为可以选择需要展现的某个特征层。
  • 图片预处理——由于每张图片的大小不等,需要先将图片比例缩放之后再进行剪裁,案例中将图片变换为1501503的数据格式。

这样就实现了卷积神经网络模型的可视化,你可以修改模型,展现其他网络层!