前面介绍了卷积神经网络的卷积层,池化层以及通过MNIST手写数据集实现CNN,认识到CNN的强大之处。在图像处理领域几乎都会使用到CNN,比如LeNet,AlexNet,那么对于这个能高效识别出图像(比如图像中的物体分类)的网络结构,在每一层的处理过程中具体做了哪些骚操作呢?这节我们通过上一节的代码来可视化了解下,每层的滤波器(卷积层的核)在“观察”什么?了解里面的一些处理细节,而不至于把CNN当作一个黑盒来对待。
我们来看下滤波器在卷积运算前后的区别:

import numpy as np
import matplotlib.pyplot as plt
from simple_convnet import SimpleConvNetdef filterShow(filters):'''滤波器的显示'''FN,C,FH,FW=filters.shapefig=plt.figure()fig.subplots_adjust(left=0,right=1,bottom=0,top=1,hspace=0.05,wspace=0.05)for i in range(FN):ax=fig.add_subplot(4,8,i+1,xticks=[],yticks=[])#4行8列ax.imshow(filters[i,0],cmap=plt.cm.gray_r,interpolation='nearest')plt.show()network=SimpleConvNet()
#network.params['W1'].shape#(30,1,5,5),30个通道为1的5x5的滤波器#学习前的滤波器图片(随机初始化)
filterShow(network.params['W1'])#学习后的滤波器图片(加载上次保存的参数pkl文件)
network.load_params('params.pkl')
filterShow(network.params['W1'])

(未学习的滤波器,随机分布)



(学习后的滤波器,变得开始有规律了)

两张对比图,我们可以了解到,第一张没有经过学习(随机初始化的权重)的滤波器,看起来是杂乱无章没有规律;第二张就会出现有上下或左右黑白对比的边界以及一些块状的形态出现了。这就说明了,滤波器在观察边缘(颜色变化的分界线)和斑块(局部的块状区域)等,由此可知,卷积层的滤波器会提取边缘或斑块等原始信息,再将这些原始信息传递给后面的层。

那么随着CNN的层越来越多,各层又会提取什么样的信息呢?根据深度学习的可视化相关研究,随着层次加深,提取的信息(正确地讲,是反映强烈的神经元)也越来越抽象,会从最开始的对边缘的响应,后面的层对纹理的响应,对物体部件的响应,换句话说就是响应的形状会越来越变得更加“高级”。我们使用一张非常出名的美女雷娜(花花公子的玩伴女郎,是图像处理领域最受欢迎的测试图)图片来看下,这张图已有40多年的历史了,应用滤波器之后的情况:

import numpy as np
import matplotlib.pyplot as plt
from simple_convnet import SimpleConvNet
from matplotlib.image import imread
from common.layers import Convolutiondef filterShow(filters):'''滤波器的显示'''FN,C,FH,FW=filters.shapefig=plt.figure()fig.subplots_adjust(left=0,right=1,bottom=0,top=1,hspace=0.05,wspace=0.05)for i in range(16):ax=fig.add_subplot(4,4,i+1,xticks=[],yticks=[])ax.imshow(filters[i,0],cmap=plt.cm.gray_r,interpolation='nearest')network=SimpleConvNet()
network.load_params('params.pkl')
filterShow(network.params['W1'])img=imread('lena_gray.png')#256*256像素
img=img.reshape(1,1,*img.shape)#(1,1,256,256),注意*星号的用法
fig=plt.figure()#雷娜图
for i in range(16):w=network.params['W1'][i]#(1,5,5)b=network.params['b1'][i]w=w.reshape(1,*w.shape)#(1,1,5,5)b=b.reshape(1,*b.shape)conv=Convolution(w,b)out=conv.forward(img)out=out.reshape(out.shape[2],out.shape[3])#滤波器的高和长、ax=fig.add_subplot(4,4,i+1,xticks=[],yticks=[])ax.imshow(out,cmap=plt.cm.gray_r,interpolation='nearest')
plt.show()

lena雷娜图

卷积神经网络(CNN)结尾篇:可视化跟踪(Visualize)相关推荐

  1. CNN---用于图像分类的经典的卷积神经网络CNN

    文章目录 概览 1.计算机视觉简介: 2.图像分类 一.LeNet-5 1.模型架构 2.模型简介 3.模型特点 二.AlexNet 1.网络架构 2.模型介绍 3.模型特点 三.VGGNet 1.模 ...

  2. 基于卷积神经网络 CNN 的猫狗识别详细过程

    目录 一.卷积神经网络(CNN) 1.1 卷积 1.2 前馈神经网络 1.3 卷积神经网络(CNN) 二.配置环境 三.猫狗数据分类建模 3.1 猫狗图像预处理 3.2 猫狗分类的实例--基准模型 3 ...

  3. 卷积神经网络(CNN)的参数优化方法

    积神经网络的参数优化方法--调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少. 著名: 本文是从 Michael Nielsen的电子书Neural Network and Deep L ...

  4. 卷积神经网络CNN究竟是怎样一步一步工作的?

    转载:https://www.jianshu.com/p/fe428f0b32c1 [透析] 卷积神经网络CNN究竟是怎样一步一步工作的? 视频地址:https://www.youtube.com/e ...

  5. 【综述】一文读懂卷积神经网络(CNN)

    卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习 ...

  6. 让我们一起详细了解一下卷积神经网络CNN

    作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 回顾基于全连接的人工神经网络和深度神经网络 ANN和DNN原理详解请见我的另外两 ...

  7. 卷积神经网络(CNN)简介

    卷积神经网络(CNN)简介 多层的线性网络和单层的线性网络没有区别,而且线性模型的能够解决的问题也是有限的 1. 更复杂抽象的数据 一个单隐含层有更多的神经元,就能捕捉更多的特征.而且有更多隐层,意味 ...

  8. 卷积神经网络(CNN)前向传播算法

    在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...

  9. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  10. 卷积神经网络CNN总结

    从神经网络到卷积神经网络(CNN) 我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢? 其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进.比如 ...

最新文章

  1. matlab python比较_MATLAB与Python的比较
  2. 软件工程第二次作业——模仿主流网站:搜狗输入法
  3. java Queue常用方法
  4. oracle 生成目录树,jQuery zTree插件快速实现目录树
  5. 装载服务器安装和配置_一站式解决方案
  6. 对老赖 绝不要忍 !一位美女程序媛的讨薪经历...
  7. [转] Silverlight Navigation(多页面切换、传值)
  8. Java Swing Mysql学生成绩管理系统
  9. @开发者 想成为行业应用开发的实力派吗?TA 或者能帮到你
  10. 代码无错是优? 工厂模式
  11. 如何根据相机的参数知道摄像机的内参数矩阵
  12. 超微主板升级bios_超微主板bios升级大盘点
  13. 最新谷歌本地搜索api
  14. pytorch BiLSTM+CRF模型实现NER任务
  15. Linux并非无毒 十五年病毒简史
  16. LDAP——实现用户统一登录管理
  17. 开发Web版一对一远程直播教室只需30分钟 - 使用face2face网络教室
  18. linux 下部署tomcat问题
  19. 程序员该如何提高睡眠质量?—程序媛233酱的助攻~
  20. 用HTML编写的一个小调查表

热门文章

  1. 从小编程,到架构师,我们应该具备什么
  2. 【转】关于维生素的那些事
  3. 高性能红黑二叉树实现
  4. 【leetcode】Majority Element
  5. 《数学之美》 第六章 信息的度量和作用
  6. 动与静--软件的雕塑艺术
  7. Vue插件_自己封装插件_以及使用自定义插件---vue工作笔记0017
  8. SpringCloud工作笔记102---苞米豆mybitis增强工具
  9. STM32工作笔记0040---认识MOS管
  10. STM32工作笔记0026---平时说的电气烧了是什么意思