深度学习领域的卷积神经网络(CNNs或ConvNets)在各行各业为我们解决了大量的实际问题。但是对于大多数人来说,CNN仿佛戴上了神秘的面纱。我经常会想,要是能将神经网络的过程分解,看一看每一个步骤是什么样的结果该有多好!这也就是这篇博客存在的意义。

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第1张

在近些年,深度学习范畴的卷积神经网络(CNNs或ConvNets)在各行各业为咱们处理了许多的实践问题。可是关于大多数人来说,CNN似乎戴上了奥秘的面纱。我常常会想,要是能将神经网络的进程分化,看一看每一个进程是什么样的成果该有多好!这也便是这篇博客存在的含义。

高档CNN

首要,咱们要了解一下卷积神经网络拿手什么。CNN首要被用来找寻图片中的形式。这个进程首要有两个进程,首要要对图片做卷积,然后找寻形式。在神经网络中,前几层是用来寻觅鸿沟和角,跟着层数的增加,咱们就能辨认愈加杂乱的特征。这个性质让CNN十分拿手辨认图片中的物体。

CNN是什么

CNN是一种特别的神经网络,它包括卷积层、池化层和激活层。

卷积层

要想了解什么是卷积神经网络,你首要要知道卷积是怎样作业的。幻想你有一个5*5矩阵表明的图片,然后你用一个3*3的矩阵在图片中滑动。每逢3*3矩阵经过的点就用原矩阵中被掩盖的矩阵和这个矩阵相乘。这样一来,咱们可以运用一个值来表明当时窗口中的所有点。下面是一个进程的动图:

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第2张

正如你所见的那样,特征矩阵中的每一个项都和原图中的一个区域相关。

在图中像窗口相同移动的叫做核。核一般都是方阵,关于小图片来说,一般选用3*3的矩阵就可以了。每次窗口移动的间隔叫做步长。值得留意的是,一些图片在鸿沟会被填充零,假如直接进行卷积运算的话会导致鸿沟处的数据变小(当然图片中心的数据更重要)。

卷积层的首要意图是滤波。当咱们在图片上操作时,咱们可以很简单得检查出那部分的形式,这是由于咱们运用了滤波,咱们用权重向量乘以卷积之后的输出。当练习一张图片时,这些权重会不断改动,并且当遇到之前见过的形式时,相应的权值会进步。来自各种滤波器的高权重的组合让网络猜测图画的内容的才能。 这便是为什么在CNN架构图中,卷积进程由一个框而不是一个矩形表明; 第三维代表滤波器。

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第3张

留意事项:

卷积运算后的输出不管在宽度上仍是高度上都比本来的小

核和图片窗口之间进行的是线性的运算

滤波器中的权重是经过许多图片学习的

池化层

池化层和卷积层很相似,也是用一个卷积核在图上移动。仅有的不同便是池化层中核和图片窗口的操作不再是线性的。

***池化和均匀池化是最常见的池化函数。***池化选取当时核掩盖的图片窗口中***的数,而均匀池化则是挑选图片窗口的均值。

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第4张

激活层

在CNN中,激活函数和其他网络相同,函数将数值压缩在一个规模内。下面列出了一些常见的函数。

在CNN中最常用的是relu(批改线性单元)。人们有许多喜爱relu的理由,可是最重要的一点便是它十分的易于完成,假如数值是负数则输出0,不然输出自身。这种函数运算简略,所以练习网络也十分快。

回忆:

CNN中首要有三种层,分别是:卷积层、池化层和激活层。

卷积层运用卷积核和图片窗口相乘,并运用梯度下降法去优化卷积核。

池化层运用***值或许均值来描绘一个图形窗口。

激活层运用一个激活函数将输入压缩到一个规模中,典型的[0,1][-1,1]。

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第5张

CNN是什么样的呢?

在咱们深化了解CNN之前,让咱们先弥补一些布景常识。早在上世纪90年代,Yann LeCun就运用CNN做了一个手写数字辨认的程序。而跟着年代的开展,尤其是计算机功能和GPU的改进,研究人员有了愈加丰厚的幻想空间。 2010年斯坦福的机器视觉实验室发布了ImageNet项目。该项目包括1400万带有描绘标签的图片。这个简直已经成为了比较CNN模型的规范。现在,***的模型在这个数据集上能到达94%的准确率。人们不断的改进模型来进步准确率。在2014年GoogLeNet 和VGGNet成为了***的模型,而在此之前是ZFNet。CNN应用于ImageNet的***个可行比如是AlexNet,在此之前,研究人员企图运用传统的计算机视觉技能,但AlexNet的体现要比其他一切都高出15%。让咱们一同看一下LeNet:

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第6张

这个图中并没有显现激活层,整个的流程是:

输入图片 →卷积层 →Relu → ***池化→卷积层 →Relu→ ***池化→躲藏层 →Softmax (activation)→输出层。

让咱们一同看一个实践的比如

下图是一个猫的图片:

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第7张

这张图长400像素宽320像素,有三个通道(rgb)的颜色。

那么经过一层卷积运算之后会变成什么姿态呢?

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第8张

这是用一个3*3的卷积核和三个滤波器处理的作用(假如咱们有超越3个的滤波器,那么我可以画出猫的2d图画。更高维的话就很难处理)

咱们可以看到,图中的猫十分的含糊,由于咱们运用了一个随机的初始值,并且咱们还没有练习网络。他们都在互相的顶端,即便每层都有细节,咱们将无法看到它。但咱们可以制作出与眼睛和布景相同颜色的猫的区域。假如咱们将内核巨细增加到10x10,会产生什么呢?

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第9张

咱们可以看到,由于内核太大,咱们失去了一些细节。还要留意,从数学视点来看,卷积核越大,图画的形状会变得越小。

假如咱们把它压扁一点,咱们可以更好的看到颜色通道会产生什么?

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第10张

这张看起来好多了!现在咱们可以看到咱们的过滤器看到的一些工作。看起来赤色替换掉了黑色的鼻子和黑色眼睛,蓝色替换掉了猫鸿沟的浅灰色。咱们可以开端看到图层怎么捕获照片中的一些更重要的细节。

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第11张

假如咱们增加内核巨细,咱们得到的细节就会越来越显着,当然图画也比其他两个都小。

增加一个激活层

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第12张

咱们经过增加一个relu,去掉了许多不是蓝色的部分。

增加一个池化层

咱们增加一个池化层(脱节激活层***极限地让图片愈加更简单显现)。

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第13张

正如预期的那样,猫咪变成了斑斓的,而咱们可以让它愈加斑斓。

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第14张

现在图片大约成了本来的三分之一。

激活和***池化

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第15张

LeNet

假如咱们将猫咪的图片放到LeNet模型中做卷积和池化,那么作用会怎样样呢?

 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络) 卷积 神经网络 实战 第16张

总结

ConvNets功能强壮,由于它们可以提取图画的中心特征,并运用这些特征来辨认包括其间的特征的图画。即便咱们的两层CNN,咱们也可以开端看到网络正在对猫的晶须,鼻子和眼睛这样的区域给予许多的重视。这些是让CNN将猫与鸟区分隔的特征的类型。

CNN是十分强壮的,尽管这些可视化并不***,但我期望他们可以协助像我这样正在测验更好地了解ConvNets的人。

转载请说明出处
知优网 » 卷积神经网络实战——运用keras辨认猫咪(keras实现卷积神经网络)

发表评论

您需要后才能发表评论