精华内容
下载资源
问答
  • 卷积网络可视化

    2020-05-10 23:13:31
  • 1 卷积网络可视化 1.1 可视化第一层的滤波器 我们把卷积网络的第一层滤波器权重进行可视化(权重值缩放到0~255之间)可以发现: 第一层的滤波器可以看做模版匹配,那么它寻找的模式就是一些边和线。也就是说...

    本课介绍了近年来人们对理解卷积网络这个“黑盒子”所做的一些可视化工作,以及deepdream和风格迁移。

     

    1 卷积网络可视化

     

    1.1 可视化第一层的滤波器

     我们把卷积网络的第一层滤波器权重进行可视化(权重值缩放到0~255之间)可以发现:

    第一层的滤波器可以看做模版匹配,那么它寻找的模式就是一些边和线。也就是说,当滤波器滑动到边和线的时候,会有较大的激活值。这跟人脑的功能几乎是一致的。

    然而,我们只能可视化第一层滤波器得到如此有意义的结论,可视化后面的滤波器,我们将无法看到什么有用的东西。

     

    1.2 研究最后一层

    这里的最后一层指的是在输入到最后的得分之前的那一层。

    最近邻

    左图是我们在像素空间上求最近邻的结果,右图是我们在最后一层产生的特征向量空间上求最近邻的结果。可以看到右边的有些结果,虽然在像素上大有不同,但是却有相同的语义含义。说明卷积网络处理后的特征向量确实包含着语义信息。

    t-SNE降维后可视化

    还有一种方法是对最后一层产生的特征向量做t-SNE降维(一种非线性降维方法),降到两维。然后在二维坐标系中将这些图片的位置标识出来。具体结果可以看这里:

    http://cs.stanford.edu/people/karpathy/cnnembed/  

     

    1.3 可视化激活层

    有一些研究可视化了中间的激活层(featureMap):

    大部分的激活好像都不能看到什么东西,有一个激活很明显的与人脸对应。

     

    1.4 产生最大激活值的图片碎片

    我们从每层当中选择一个深度切片,然后在CNN上前向传播大量的图片,观察这些深度切片上的神经元的激活值。对每一张图片来说,选取深度切面上激活值最大的那个神经元,并截取这个神经元所能看到的图片区域。然后按照激活值的大小对这些图片区域进行排序。

     

    上图中,每一行表示每一个深度切面的排序结果,可以看到一个深度切面确实是在寻找一种相同的模式。并且,高层所寻找的是一种更大的图片结构,这是因为高层的神经元具有更大的感受野。

     

     1.5 “排除”实验

    有一项研究通过遮挡图像的某一部分,将这部分替换为平均像素值,然后查看对输出分数的影响,绘制热力图。

    可以看到船的主体部分,大象的身体,卡丁车以及赛道都对其具体的分类有较大影响。

     

    1.6 Saliency Maps 

    我们可以查看输出分数关于输入像素的梯度(也就是哪些像素的改变对于输出分数影响最大)。将梯度取绝对值并缩放到0~255之间,进行可视化:

    这也被称为Saliency Maps。 Saliency Maps可以用来做无监督的语义分割(注意,这里事实上还是有监督的,因为产生Saliency Maps的肯定是一个训练好的CNN,只不过我们不需要那些对每个像素都打好标签的图片)。这方面内容可以看看这篇文章:Rother et al, “Grabcut: Interactive foreground extraction using iterated graph cuts”, ACM TOG 2004 

     

    1.7 guided backprop

    与 Saliency Maps类似,只不过我们这里是看某个特定神经元的激活值关于图片像素的梯度。对梯度可视化的结果如下:

    上图我们看到的是(4)中的神经元关于对应的输入图片的梯度。显然,每一个神经元的激活都对图像的一种特定模式特别敏感,印证了我们在(4)中的结论。

     

     1.8 Gradient Ascent 

    Saliency Maps 和guided backprop都是前向传播一张特定的图片,然后看输出分数或中间激活值关于输入像素的梯度。

    Gradient Ascent则是要找到使得某个激活值最大的输入是长什么样子,即生成一张图片。我们使用的方法是输入一张空白图片,前向传播得到激活值(或得分值),然后反向传播计算激活(得分)关于输入的梯度,然后输入使用梯度下降更新,不断迭代,直到生成一张满意的图片。

    这里我们添加了正则项,是为了使得生成的图片更自然。

    这里是一些生成的结果:

    另外还有一些方法能够使得生成的图片更漂亮,具体可以看CS231n课件。

     

    我们可以用Gradient Ascent 的方法来生成对抗样本,步骤为:

    生成的对抗样本在人眼上看不出什么差别,但在神经网络看来却会将其错误分类。这确实有点颠覆我们的认知。

    更多对抗样本的知识见Ian Goodfellow的讲座。

     

    2 DeepDream

    deepdream其实就是利用Gradient Ascent来最大化某一层激活的范数,相当于放大这一层学到的特征。具体步骤为:

    最后会生成一些很crazy的图片,这里不贴图了。可以看看deepdream的官方博客:

    http://googleresearch.blogspot.ch/2015/06/inceptionism-going-deeper-into-neural.html

     

    3 风格迁移

    在介绍风格迁移之前,先介绍特征反演和纹理生成。

     

    3.1 特征反演 Feature Inversion

    特征反演是为了查看不同层的特征向量能保留多少原始的图片信息。

    任选一张图片,前向传播到已经训练好的CNN。然后选取CNN当中某一层产生的特征向量,记住这个向量。现在,我们要生成一张图片,尽量让它在该层产生一样的特征向量。这个任务仍然是用Gradient Ascent来做,目标函数定义为最小化生成图片的特征向量与给定特征向量的L2距离,并且加一些正则化项保证生成图片的平滑:

    用这种方法,我们可以看到不同层的特征向量所包含的信息完整度:

    可以看到,在relu2_2层,可以根据特征向量几乎无损地恢复出原图片。但是随着层的深入,神经网络记住的只是图片的线条结构,颜色这些低阶信息开始丢失。

     

    3.2 纹理生成 Texture Synthesis 

    本节主要介绍目前效果最好的基于深度学习的神经纹理生成方法。注意在这之前有一些传统的方法(最近邻法),这些方法在简单纹理上表现效果可以,但无法处理更复杂的纹理生成。

    格莱姆矩阵 Gram Matrix 

    将一张图片传入一个已经训练好的CNN,选定其中一层激活,其大小是C*H*W,可以看做是H x W 个C维向量。从这个激活图中任意选取两个C维向量,做矩阵乘法可以得到一个矩阵。然后对激活图中任意两个C维向量的组合,都可以求出这样一个矩阵。把这些矩阵求和并平均,就是Gram Matrix。

    Gram Matrix其实是feature之间的偏心协方差矩阵(即没有减去均值的协方差矩阵)。其计算了每个通道特征之间的相关性,考察哪些特征是此消彼长的,哪些特征是同时出现的。我们认为Gram Matrix度量了图片中的纹理特性,并且不包含图像的结构信息。事实上,使用协方差矩阵代替Gram Matrix也能取得很好的效果,但是Gram Matrix有更高效的计算方法:将激活图张量C*H*W展开成C*HW的形式,然后将其乘以其转置,即得到gram矩阵。

    神经纹理生成

    当我们有了Gram矩阵这一度量图像纹理特性的神器后,就可以使用类似于Gradient Ascent的算法来产生特定纹理的图像。算法流程为:

    该算法旨在生成与目标图像具有相同gram矩阵的图像。这里计算的损失是生成图像与目标图像各层gram矩阵的加权L2距离。

    效果 

    这张图表示,如果以更高层gram矩阵的L2距离作为损失函数,那么生成图像就会更完全地重建图像的空间结构。这是由于更高层的神经元具有更大的感受野导致的。

     

    3.3 风格迁移

    如果我们结合特征反演和纹理生成,就可以实现所谓的风格迁移。我们需要两张图像,一张图像称为Content image,生成图像需要重建它的空间结构;另一张图像称为Style image,生成图像需要重建它的纹理结构。使用下面的框架完成这个任务:

    在这个框架中,我们同时优化特征反演和纹理生成的损失函数(与gram矩阵的距离以及与激活图的距离的加权和),使得生成图既具有Content image的空间结构,又具有Style image的纹理结构。

     

    这里有一些超参数,使得我们可以控制生成的图像:

    此外,我们可以使用不同风格的gram矩阵的加权和,来生成多风格图:

     

    Fast Style Transfer 

    上面的风格迁移框架,每生成一张新的图像都需要迭代数次。因此有研究提出了下面的Fast style Transfer的框架:

    同样使用特征反演和纹理生成的联合损失函数,更新前馈网络中的参数值。这样,训练好一个前馈网络后,每次生成一个新图像只需要进行一次前向传播即可。

     

    转载于:https://www.cnblogs.com/coldyan/p/8403506.html

    展开全文
  • 『cs231n』卷积神经网络的可视化与进一步理解 一、反卷积可视化 这是一篇14年的老文章:Visualizing and ...作者可视化卷积网络的手段为添加新的反卷积模块,如下图所示: 将感兴趣层的卷积网络输出的特征中...

    『cs231n』卷积神经网络的可视化与进一步理解

    一、反卷积可视化

    这是一篇14年的老文章:Visualizing and Understanding Convolutional Networks,文中针对的模型为12年的 AlexNet,从可视化的角度对卷积神经网络的理解提出了一个新的视角。

    作者可视化卷积网络的手段为添加新的反卷积模块,如下图所示:

    将感兴趣层的卷积网络输出的特征中选取一个激活单元(一般取最大的),特征中其他单元全部置零,送入一个等效的反卷积网络,还原输出大小。

    1、反向池化

    网上找到的示意图,出处见水印,展示了反最大池化的流程。

    2、反激活

    relu 函数的反向仍为 relu 函数,各个框架反向传播的实现也确实是这么写的。

    3、反卷积

    反卷积实现逻辑如上图(出处见水印),不过本文种描述的方法是将对应层的卷积核转置即可,和印象中的处理不太一致,不过这不是本文重点,我们只要知道这里可以还原卷积即可,权且略过,转置卷积逻辑见:『TensotFlow』转置卷积

    二、可视化分析

    作者首先对比了不同 layer 提取到的特征:

    作者给我们显示了在网络训练过程中每一层学习到的特征是怎么变化的,上面每一整张图片是网络的某一层特征图,然后每一行有8个小图片,分别表示网络epochs次数为:1、2、5、10、20、30、40、64的特征图 :

    (1) 从层与层之间做比较,我们可以看到,低层在训练的过程中基本没啥变化,比较容易收敛,高层的特征学习则变化很大,收敛需要较多轮数

    (2) 从高层网络conv5的变化过程,我们可以看到,刚开始几次的迭代,基本变化不是很大,但是到了40~50的迭代的时候,变化很大,说明高层会在高轮数后快速收敛(训练时不要心急233)

    然后讨论了不同层 layer 提取特征的不变性:

    上图解释:

    第一列表示原图的各种变换(a为平移,b为放缩,c为旋转)
    第二列表示layer1层特征在原图变换前后的像素欧式距离,横坐标为平移像素距离/放缩倍数/旋转角度
    第三列表示layer5层特征的变换前后像素间欧式距离
    第四列表示真实类别的得分变化情况

    作者希望说明底层特征对原图的变换很敏感 高层特征对原图的某些变换并不敏感,平移变换和放缩变换时高层特征欧式距离变化近似线性 卷积神经网络对平移和放缩不变性较好,但是除了特定图片(本身形状特殊)外,旋转对网络影响很大。

    再之后作者探讨了图像特定位置对分类的贡献:

     

    上图解释:

    第一列表示原图及遮挡示意图 
    第二列表示遮挡中心所在不同位置时layer5最大激活值变化 
    第三列简单的可视化layer5的最大激活值 
    第四列表示遮挡中心所在不同位置时真实类别得分的变化 
    第五列表示遮挡中心所在不同位置时最高得分类别的变换

    这里面我们需要注意,layer5 并不是最高层,也就是 layer5 和 classifier 之间还有其他的高层语义信息存储层。

    对于第一行:

    c图可见layer5特征主要针对狗头
    b图可见遮挡住狗头,那么layer5的激活单元最大值会明显降低
    d图可见遮挡住狗头,分类为狗的得分会明显降低
    e图可见遮挡其他位置最高得分都是分类为狗,但是遮挡住狗头后最高得分为网球

    对于第二行:

    c图可见layer5特征主要针对车身标语
    b图可见遮挡住车身标语,那么layer5的激活单元最大值会明显降低
    d图可见遮挡住车轮,分类为车轮的得分会明显降低
    e图可见分类为车轮这一决定是很脆弱的,随随便便就会分给其他类别

    对于第三行:

    c图可见layer5特征主要针对人脸
    b图可见遮挡住人脸,那么layer5的激活单元最大值会明显降低
    d图可见遮挡住狗,分类为狗的得分会明显降低
    e图可见虽然layer5特征针对人脸,但是分类器很好的学到了狗的特征,只要不遮挡住狗,分类器可以很好的识别出狗的类别(由标签可见这是一个单独识别狗种类的数据集,所以人脸特征没什么干扰)

    进一步的验证 layer5 和 最终 layer7 的特征信息实验如下:

    狗种类随机遮挡分类实验,layer5 在遮挡眼睛或鼻子后激活值相比随机遮挡下降明显,layer7则没什么变化,由此推测:layer5较为具体的检测狗头,layer7更侧重抽象的狗类别信息。

    由于是篇老文,我感觉本文的很多部分(包括指导设计更高效网络的部分)对当下已经没什么参考意义了(谁知道15、16年分类网络精度上天了),所以仅将我觉得对当下比较有学习价值的部分展示出来,从侧面一窥黑箱里的秘密。

    转载于:https://www.cnblogs.com/hellcat/p/10649249.html

    展开全文
  • 可视化 第一层的卷积核: 提取基元(纹理) 最后一层,输出的向量:

    第一层的卷积核: 提取基元(纹理)
    中间层: 卷积核,卷积图出来。每个卷积核就是代表一个特征,看哪个响应大。
    倒数第二层,输出的一维向量: 用这个向量和L2距离,能找到和它很相似的图。说明他是一个很有效的图的特征表示。

    将卷积网络反向梯度,其中求每个像素处某种最大值,把所有结果可视化,就能看出响应结果和目标区域是否符合。这是另一种看网络的学习是否正确的方法。
    Guided Backprop 可视化
    Gradient ascent 梯度上升方法: 向网络输入一个灰图,反复对结果做ReLu,就能得到这个网络的响应结果。

    Deep Dream

    特征可逆

    网络是黑盒子

    无法控制哪一层学到哪个特征

    展开全文
  • 来源:机器之心报道什么是 CNN?Convolutional Neural Network,中文译为「卷积神经网络」。这个常见但有些深奥的词汇,只可意会,不能言传。如果打开教材,会看到这...
  • 卷积神经网络 下列代码将会展示一个简单的卷积神经网络。它是 Conv2D 层和 MaxPooling2D 层的堆叠。 用model.summary()查看神经网络的结构 再添加分类器,展平用Flatten(),全连接层和一个激活函数为不变...
  • 卷积特征可视化

    2019-05-19 20:48:35
    改代码可实现对VGG19各卷积特征层的可视化,方便理解VGG19的网络结构
  • 卷积神经网络可视化与可解释性

    千次阅读 2018-05-05 14:59:24
    卷积网络可视化与可解释性相关资料的一些整理,不断更新中~ 主要作用 进一步理解CNN 帮助我们分析训练好的网络 学会如何生成热力图,如下图: 博客 Distill 非常推荐的一个网站 Global Average ...
  • 看了CS231的课程,想自己尝试做下可视化,权当加深对卷积神经网络的理解吧。 可视化第一层卷积核 课程: 课程里提到第一层卷积一般做的是传统视觉的工作,主要提取一些有向边,可视化卷积核的原因是类似模板匹配的...
  • 卷积神经网络可视化

    2020-10-08 21:38:32
    1、卷积神经网络中间层可视化可视化卷积神经网络的中间层时,只考虑卷积层和池化层,因为只有这两类网络层的输出是特征图;但到了全连接层,输入已经被“压平”成一个数组,不适合可视化了。 import numpy as np ...
  • 上篇文章我们介绍了特征图可视化方法,对于特征图可视化的方法(或者说原理)比较容易理解,即把feature map从特征空间通过反卷积网络映射回像素空间。 那卷积核怎样可视化呢,基于什么原理来可视化?卷积核的尺寸...
  • Normal CNN卷积算法可视化 Xception 算法可视化  MobileNets 算法可视化 Normal CNN卷积算法可视化 CNN 卷积算法可视化   Xception 算法可视化  论文: https://arxiv.org/abs/1610.02357  Simple ...
  • 卷积神经网络】之热度图可视化 一、内容 深度学习一直被人们称为**“黑盒子”**,即内部算法不可见。但是,卷积神经网络(CNN)却能够被可视化,通过可视化,人们能够了解CNN识别图像的过程。 介绍三种可视化方法 :...
  • 本文主要是实现卷积神经网络进行手写字体的识别,利用TensorFlow对卷积过程中的提取特征进行了可视化。具体代码如下:# -*- coding: utf-8 -*-"""Created on Thu Apr 26 14:37:30 2018@author: ...
  • pytorch卷积可视化Filter and Feature map Image by the author 筛选和特征图作者提供的图像 When dealing with image’s and image data, CNN are the go-to architectures. Convolutional neural networks have ...
  • 卷积神经网络 可视化

    2020-02-22 19:22:18
    可视化中间激活,是指对于给定输入,展示网络中各个卷积层和池化层输出的特征图 (层的输出通常被称为该层的激活,即激活函数的输出)。 读取图片 #加载保存的模型 from keras.models import load_model model = ...
  • caffe深度学习网络(.prototxt)在线可视化工具:Netscope Editor
  • 这是Made by Adam Harley的一个项目,它帮助我们理解卷积神经网络复杂的黑盒里究竟做了什么,当然一般开源框架也有自己的可视化工具,但我们在入手前不妨先来看看这个 主界面 这里我们可以看到卷积的层数和个数已经...
  • (4)卷积神经网络为什么要可视化 (5)卷积神经网络可视化有哪几类 (6)如何实现卷积神经网络可视化 把握好以上几点,我相信你一定会有感想的 2.本人现在的研究方向是:图像的语义分割,如果有志同道合的朋友...
  • 卷积神经网络过程可视化方面的论文,非常详细,香港科技大学最新研究成果
  • 本文的结构如下:首先,我将展示 VGG-16 网络的几个层次中的卷积特征的可视化;然后,尝试理解其中一些可视化,我将展示如何快速测试一个假设,即特定的滤波器会检测到哪种模式;最后,我将解释创建本文中提供的模式...
  • 卷积神经网络可视化和理解

    千次阅读 2017-06-05 09:31:21
    神经网络可视化
  • 基于反卷积实习卷积神经网络的特征可视化可视化网络模型为VGG-19,将每一卷积层的特征图可视化,数量可以自己设置。
  • 卷积可视化学习

    2017-11-14 15:51:11
    卷积这个概念最早用在图像信号处理上,所以会出现大量改造的卷积神经网络在计算机视觉上应用,这种计算方式是一种矩阵运算,为了便于理解定义为输入的信号x[m,n],激活响应(核)h(m,n) y[m,n]=x[x,y]*h[m,n]=\...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,439
精华内容 575
关键字:

卷积网络可视化