可视化探索卷积神经网络提取特征

  发布时间:   文章分类:数据库 浏览数: 21

文章来源: mp.weixin.qq.com/s/8wDAGJBRxI5......, 本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

前言

卷积神经网络的发展主要是为了解决人类视觉问题,不过现在其它方向也都会使用。发展历程主要从Lenet5->Alexnet->VGG->GooLenet->ResNet等。

传统神经网络

传统BP神经网络层与层之间都是全连接的,对于图像处理领域,当神经网络处理大图像时,全连接会导致待训练的参数非常庞大,比如100万个像素的图像,对于100个节点的隐层,则会产生亿级别的参数,如果更多层及更多个节点那参数数量将会无比庞大。此外,传统BP神经网络没有假设相邻图像之间存在紧密联系。综上所述,BP神经网络不适合做图像处理。

卷积神经网络

为减少参数数量,首先想到可以构建部分连接的神经网络,每个神经元不再与上层所有神经元相连,而是连接某部分。另外还能通过权值共享来减少参数数量,一组连接共享权重而不必每个连接权重都不同。除此之外,还能通过池化来减少每层的样本数,从而减少参数数量。结合以上特点,卷积神经网络就是这样的一种网络。

看一个卷积神经网络示意图,它包含了若干卷积层、池化层和全连接层。图像输入经过第一层卷积层处理后,得到4层feature,为什么可以是4层呢?其实就是可以自定义4个不同的filter对输入分别运算,就得到4层feature。然后池化层对卷积后的feature进行池化处理,得到更小的feature,这里运算后同样是4层feature。接着继续根据filter做卷积和池化处理,最后通过两个全连接层完成输出。

image

可视化探索卷积网络

其实有时候我们很好奇图片经过卷积神经网络的每个层后变成什么样子,想了解下这个过程发生了什么变化,此时我们就可以使用一个工具——Quiver。它开源再github上,https://github.com/keplr-io/quiver 。通过它可以很方便对卷及网络进行探索,以web浏览器形式实现对模型的可视化,可以看到不同网络层的变化。

为方便起见,这里直接创建VGG16模型实例。通过下面脚本将下载VGG16模型的权重参数(这里自动下载的是经过Imagenet训练的模型参数,包含了1000个类别),权重参数总大小达到百兆字节,然后模型被加载到内存中并创建一个监听5000端口的服务。

import keras.applications as apps
from quiver_engine.server import launch

model = apps.vgg16.VGG16()
launch(model, input_folder="data")

访问浏览器,选择其中一个图片作为输入,左侧为网络架构图形,并且点击不同层可以看到不同的输入。右侧的图片我们可以点击选择,然后应用程序会自动将其作为输入,模型再根据该输入预测出可能性最高的五个结果。其中可以看到224x224的输入,而且是3层,分别代表原始图像的红、绿、蓝。

image

然后选择第一个卷积层,可以看到通过卷积核的操作后不同的特征被突出,突出的特征包括不同类型的边缘、亮度和对比度等等。

image

继续往下可以看到特征越来越抽象,包含了不同的纹理、角度等等,还可能是眼睛和鼻子。

image

继续往下到最后的卷积层时,此时的特征已经抽象到我们人类已经无法理解了,对于我们来说,看到的特征并没有任何意义。最终通过完全连接层并得到包含了1000个元素的概率数组,即对应ImageNet中每个类别的概率。

image

--------------------------------------

跟我交流:

-------------推荐阅读------------

我的开源项目汇总(机器&深度学习、NLP、网络IO、AIML、 mysql 协议、chatbot)

为什么写《Tomcat内核设计剖析》

2017文章汇总——机器学习篇

2017文章汇总——Java及中间件

2017文章汇总——深度学习篇

2017文章汇总——JDK源码篇

2017文章汇总——自然语言处理篇

2017文章汇总——Java并发篇

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 Coder·码农网

码农可能感兴趣的文章:

本文永久链接:www.codercto.com/a/43954.html

相关码农书籍:
Hadoop实战

Hadoop实战

Chuck Lam / 韩冀中 / 人民邮电出版社 / 2011-10 / 59.00元

《Hadoop实战》作为云计算所青睐的分布式架构,Hadoop是一个用Java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,是谷歌...

相关码农工具:
MD5 加密

MD5 加密

MD5 加密工具

JSON 在线解析

JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换

RGB HSV 转换

RGB HSV 互转工具