卷积神经网络 [卷积层可视化]

版权声明:作者原创,转载请注明出处 https://blog.csdn.net/gukedream/article/details/86549323

卷积网络设计的初衷是通过卷积层和池化层逐级提取图像在各个不同抽象层次的特征,我们会有这样的疑问:现实结果真的是这样的吗?

先看图像卷积之后的结果。下面是一张卡车的图像:

卡车图像

用AlexNet网络处理之后,第一个卷积层的输出结果(我们把各个卷积核的结果依次排开了)是这样的:

卷层1的结果

可以看到这里抽取了一些边缘信息。第二个卷积层的输出结果是这样的:

卷层2的结果

它抽取了更大区域的特征。后面几个卷积层的结果是这样的:

卷层3—5的结果

卷积层3-5的结果在上图中依次排开。然后我们看全连接层,下图自上向下是3个全连接层的输出结果:

全连接层的结果

我们再来看卷积核的可视化结果。第一个卷积层的卷积核图像如下图所示:

     卷积层1的卷积核

可以看到,这些卷积核确实是在提取边缘,方向等信息。再看第2个卷积层的卷积核:

卷积层2的卷积核

看上去很杂乱,没有反应太多信息。有没有更好的办法?答案是肯定的,目前出现了一些文章解决卷积层可视化的问题。在这里,我们介绍一种典型的方法,通过反卷积运算将卷积核的效果可视化出来。

文献[1]设计了一种用反卷积操作可视化卷积层的方案。具体做法是,将卷积网络学习到的特征图像左乘产生这些特征图像对应的卷积核的转置矩阵,将图片特征从特征图像空间投影到像素空间,以发现是哪些像素激活了特定的特征图像,达到分析理解卷积网络的目的。这这操作称为反卷积,也叫转置卷积

对于卷积层,在反卷积运算时使用正向传播时的卷积核的转置矩阵对特征图像进行卷积,将特征图像还原到原始的像素图像空间得到重构的图像。通过反卷积操作得到卷积核的可视化图像如下图所示:

     通过反卷积进行可视化

上图表明,前面的层提取的特征比较简单,是一些颜色、边缘特征。越往后的卷积层提取的特征越复杂,是一些复杂的几何形状。这符合我们对卷积神经网络的设计初衷,即通过多层卷积完成对图像的逐层特征提取和抽象。

另外一种分析卷积网络机理的方法是根据卷积结果图像直接重构原始输入图像,如果根据卷积结果可以重构出原始输入图像,则说明卷积网络很大程度上保留了图像的信息。文献[2]设计了一种方法,通过卷积网络提取出来的特征反向表示图像来观察卷积网络的表达能力。在这里,反向表示是指由卷积网络编码后的向量近似重构原始输入图像。具体做法是给定卷积网络编码后的向量,寻找一张图像,这种图像通过卷积网络编码之后的向量与给定向量最匹配,这通过求解一个最优化问题实现。下图是根据卷积输出结果重构出来的图像:

卷积图像重构

其中,上面一行是原始图像,下面一行是重构后的图像。从这个结果可以看出,卷积神经网络确实提取出了图像的有用信息。

参考文献:

[1] Zeiler M D, Fergus R. Visualizing and Understanding Convolutional Networks. European Conference on Computer Vision, 2013.

[2] Aravindh Mahendran, Andrea Vedaldi. Understanding Deep Image Representations by Inverting Them. CVPR 2015.

 

猜你喜欢

转载自blog.csdn.net/gukedream/article/details/86549323