在学卷积可视化的时候,遇到了一些问题,记录一下。
首先推荐一个:
https://blog.csdn.net/weixin_40500230/article/details/84935287
人们经常说深度学习模型是“黑匣子”,学习表示很难以人类可读的形式提取和呈现。尽管对于某些类型的深度学习模型来说部分是正确的,但对于卷积网络绝对不是正确的。卷积网络学习的表示形式非常适合可视化,这在很大程度上是因为它们是视觉概念的表示形式。自2013年以来,已经开发了各种各样的技术来可视化和解释这些表示。我们不会调查所有内容,但是我们将介绍三个最易于访问和有用的内容:
1.可视化中间convnet输出(“中间激活”)。这对于了解连续的convnet层如何转换其输入以及初步了解各个convnet过滤器的含义很有用。
说人话就是,你一层层搭建的网络,是如何将你的输入图片一步步变成什么样子的,可视化看看。
2.可视化卷积过滤器。这对于准确了解卷积网络中每个过滤器可以接受的视觉模式或概念很有用。
这个不太好理解的在于,卷积核都是33,55,7*7的,那么如何可视化。有一种方法就是,我们去看这个卷积核关注了原来图像的哪些点。那么这个想法如何实现?我们知道两个越相似的图像进行卷积,结果越大。因此这个想法就是,我们不断变化输入的图片,来使得输出最大,这个过程可以通过梯度上升来实现。
3.可视化图像中类激活的热图。这对于了解图像的哪个部分被标识为属于给定类很有用,从而可以定位图像中的对象。
论文链接:可视化和理解卷积网络
这种想法如何实现呢?就是我们将激活值与输入图像对应,对应以后,我们就知道原图像的哪些部分被激活了。可是激活值的维度与输入图像的维度不同,我们可以通过反卷积以及上采样的过程来进行逆向操作。
以上的三种方法,使用keras可以轻松实现。