CNN可视化可行性

一次卷积过程类似于下图,下面动图是GIF图(上下图数据一致,但是只看方法),不过是三维的(可以看做比二维的多一个颜色维,RGB)。如果将上下图结合来看,下图只看两维的话,下面第一行就是把目标图(需要识别的图)利用过滤器求积,步长是2(每次向右向下移动两格)。那么对上图的理解就是,有一个过滤器(曲线)对整个图进行每个局部的求积,从而找到与其对应的最相似的局部(积最大),每个layer层都有若干过滤器,过滤器的值需要机器学习进行一次一次迭代修改,从而让机器自己找到最理想的卷积核(过滤器)例如上图的曲线是一个代表性的,或者一个圆等等,第一层一般都是边界,没有具体语义。

第一层的卷积核人类还可以进行一点解释,但是随着层数的深入,人类越难越能理解机器的识别出这个图片的方法和思维(即三层四层,以及更往后的层数),这就是所谓的“黑盒子”,我们不知道自己训练的机器自己学出了什么,到底什么影响了机器识别出图片、语言等等。哪些(神经元)filter是好的哪些是坏的,是多了还是少了,专家经常只能靠自己的经验和不断的试错才能最终调试出最理想的层数,和每层过滤器最理想的个数(专家所能调出的最理想的,事实上可能还有更好的模型)

过滤器的个数需要专家自己去设定,多了少了都不好,一般是凭借经验,现在可视化是可以与其相结合,将“黑箱子”打开,从而让

卷积神经网络(CNN)作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没有人能够“打开”这个“黑盒”,从数学原理上予以解释。这对理论研究者,尤其是数学家来说当然是不可接受的,但换一个角度来说,我们终于创造出了无法完全解释的事物,这也未尝不是一种进步了!

当然,虽然无法完全“打开”这个“黑盒”,但是仍然出现了很多探索这个“黑盒”的尝试工作。其中一个工作就是今天我们讨论的重点:可视化CNN模型,这里的可视化指的是可视化CNN模型中的卷积核。

可视化工作分为两大类:

一类是非参数化方法:这种方法不分析卷积核具体的参数,而是先选取图片库,然后将图片在已有模型中进行一次前向传播,对某个卷积核,我们使用对其响应最大的图片块来对之可视化

而另一类方法着重分析卷积核中的参数,使用参数重构出图像。

这一篇文章着重分析第一类可视化方法。

最初的可视化工作见于AlexNet[1]论文中。在这篇开创Deep Learning新纪元的论文中,Krizhevshy直接可视化了第一个卷积层的卷积核

我们知道,AlexNet[1]首层卷积层(conv1)的filters是(96,3,11,11)的四维blob:96个神经元,3个颜色分类(RGB),11*11的卷积核。

这样我们就可以得到上述96个11*11的图片块了。显然,这些重构出来的图像基本都是关于边缘,条纹以及颜色的信息。但是这种简单的方法却只适用于第一层卷积层,对于后面的卷积核我们就无法使用这种方法进行直接可视化了。

最开始使用图片块来可视化卷积核是在RCNN[2]论文中

时间: 2024-10-11 06:21:05

CNN可视化可行性的相关文章

CNN 可视化示例

CNN 可视化示例For keras < v1 In [1]: import os os.environ['THEANO_FLAGS']='mode=FAST_RUN,device=gpu,floatX=float32' # This gives a 'perform' error in compile #os.environ['THEANO_FLAGS']='mode=FAST_COMPILE,device=gpu1,floatX=float32' #os.environ['THEANO_FL

CNN 可视化结果分析

本文试图对CNN到底做了什么,给出一些分析解释.通过观察卷积层的输出构成的灰度图,试图寻找这个卷积在物理上有什么作用.训练数据是一些验证码图片,用了四个卷积层和两个全连接层的模型,在训练集上训练到98%的准确率,验证集80%.具体代码可参考我前面的这篇博文<CNN识别图形验证码>.图片似乎只有翻墙才能看到,不好意思. 可视化结果分别从以下几个角度做分析: 1 看每个卷积层经过激活函数(relu)后的输出图像 第一个卷积层的结果(相对比较容易懂): 为了方便人眼观察,对每一幅图的像素值都做了一个

CNN中感受野的计算

感受野(receptive field)是怎样一个东西呢,从CNN可视化的角度来讲,就是输出featuremap某个节点的响应对应的输入图像的区域就是感受野. 比如我们第一层是一个3*3的卷积核,那么我们经过这个卷积核得到的featuremap中的每个节点都源自这个3*3的卷积核与原图像中3*3的区域做卷积,那么我们就称这个featuremap的节点感受野大小为3*3 如果再经过pooling层,假定卷积层的stride是1,pooling层大小2*2,stride是2,那么pooling层节点

图像处理关键词

高频分量: 形象一点说:亮度或灰度变化激烈的地方对应高频成分,如边缘:变化不大的地方对于低频成分,如大片色块区 画个直方图,大块区域是低频,小块或离散的是高频 <1>高通滤波:边缘提取与增强.边缘区域的灰度变换加大,也就是频率较高.所以,对于高通滤波,边缘部分将被保留,非边缘部分将被过滤: <2>低通滤波:边缘平滑,边缘区域将被平滑过渡 高斯滤波:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程.通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个

Convolution Network及其变种(反卷积、扩展卷积、因果卷积、图卷积)

今天,主要和大家分享一下最近研究的卷积网络和它的一些变种. 首先,介绍一下基础的卷积网络. 通过PPT上的这个经典的动态图片可以很好的理解卷积的过程.图中蓝色的大矩阵是我们的输入,黄色的小矩阵是卷积核(kernel,filter),旁边的小矩阵是卷积后的输入,通常称为feature map. 从动态图中,我们可以很明白的看出卷积实际上就是加权叠加. 同时,从这个动态图可以很明显的看出,输出的维度小于输入的维度.如果我们需要输出的维度和输入的维度相等,这就需要填充(padding). 现在我们来看

论文笔记 Visualizing and Understanding Convolutional Networks

之前,我知道可以可视化CNN,也只是知道有这么一回事情.至于它是"怎么做的.其原理是什么.给我们的指导意义是什么",也不清楚.说白了,就是我知道有"CNN可视化",仅仅停留在"知道"层面!但当自己需要运用.理解其他CNN可视化技术时,才晓得将这篇paper精读一下. Background 1)在很多分类任务中(如手写字符识别.人脸识别,以及极具挑战性的Imagenet Classification),CNN取得了极好的性能.但是,CNN是怎么做到

[Thu, 9 Jul 2015 ~ Tue, 14 Jul 2015] Deep Learning in arxiv

这一期的神作论文有蛮多的,都非常有意思. Feature Representation In ConvolutionalNeural Networks 该论文中论述了在某种CNN结构下,是否有准确率较高的off model的分类方法(这里是指非softmax)能达到更有效的分类结果呢? 论文给出了肯定的答案. 该论文还给出了各层特征重要性的图表,蛮有意思的 该论文还交代了实验中用到的开源代码. Towards Good Practices for Very DeepTwo-Stream Conv

grad-cam 、cam 和热力图,基于keras的实现

http://bindog.github.io/blog/2018/02/10/model-explanation/ http://www.sohu.com/a/216216094_473283 https://jacobgil.github.io/deeplearning/class-activation-maps https://github.com/keras-team/keras/issues/8447 凭什么相信你,我的CNN模型?(篇一:CAM和Grad-CAM) 0x00 背景 在

FCN:Fully Convolutional Networks for Semantic Segmentation

今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf 三位大佬:Jonathan Long Evan Shelhamer Trevor Darrell 这个网址是网上一个大佬记录的FCN的博客,同时深深感受到了自己与大佬的差距,但还是硬着头皮把论文阅读完成,贴出网址,和大家一起学习:https://blog.csdn.net/happyer8