卷积神经网络之计算机视觉应用(二)

  
我们在开启卷积神经网络第二节之前,我们先来回顾这几个知识点,卷积神经网络中的卷积核通道数目是依据什么而定的,卷积神经网络中卷积核的个数决定了什么,如果这几个知识点我们还没有搞清楚的话,我们可以再去了解一下。

http://blog.csdn.net/m0_38031488/article/details/79121184 
<http://blog.csdn.net/m0_38031488/article/details/79121184>
 一 引言
  卷积网络中一个典型层包含三级。在第一级中,这一层并行的计算多个卷积产生一组线性激活相应。在第二级
中,每一个线性激活相应会通过一个非线性的激活函数,例如整流线性激活函数。这一级有时也被称为探测级。 在第三级中,我们使用池化函数来进一步调整这一层的输出。
卷积网络中一个典型层包含三级。在第一级中,这一 层并行的计算多个卷积产生一组线性激活相应。在第二级中,每一个线性激活相应会通过一个非线性的激活函数,例
如整流线性激活函数。这一级有时也被称为探测级。在第三级中,我们使用池化函数来进一步调整这一层的输出。
二 池化
 池化函数使用某一位置的相邻输出的总体特征来代替网络在该位置的输出。例如最大池化函数给出相邻区域 内的
最大值。其他常用的池化函数包括相邻区域内的平均值、局域中心像素的加权平均值函数。下面我们通过一  个最大池化的小例子来具体了解一下 
 如上图所示,我们有一个4*4的原始输入图像,我们对其进行窗口大小为2*2步幅为2的最大池化操作,如上图所
示我们有4个颜色的输出,分别代表从不同的颜色区域来提取最大的值来表示这一区域,我们使用的公式与卷积
运算一样,一个n*n的原始输入图像,窗口大小为f*f,步幅为s,那么输出图像就应为((n-f)/s+1)*
((n-f)/s+1),与卷积核不同的是卷积核中的所有值都是超参数,而池化操作中没有任何参数,我们只是对 相应的位置进行特征提取,并没有涉及到参数的设定。 
三 padding
 目前位置我们对卷积运算和池化操作都有了解,那么我们不难发现会有一个问题的出现。那就是随着卷积运算
和池化操作的进行我们的图像的大小会越变越小,这对于深度学习来说是一个致命的问题,因为深度学习中通
常网络的深度是成百上千层的,每一层中我们都要进行卷积和池化操作,那么进行不了几层我们的的图像就会
变成1*1的大小了,这显然不是我们想要的结果。对于这一问题我们引入了填充(padding)来解决它。这里我 们之介绍卷积网络中常用的same
padding,顾名思义我们使用了same padding后在进行卷积运算图像的大小
就保持不变了。如下图所示,我们给一个原始的6*6的图像外侧又补充了许多0像素点,使其变成了一个8*8的图
像,然后在用3*3的卷积核对其进行卷积运算,根据我们所学过的公式,最后输出的图像大小还是应该为6*6,
在进行了卷积运算的同时又保持了图像的大小没有变化,使卷积运算可以在深层的网络中使用。最后我们对公式
进行推广:我们又一个n*n的原始图像,填充层为p,卷积核的大小为f*f,每次移动的步幅大小为s,那么我们输
出图像的大小就为((n+2p-f)/s+1)*((n+2p-f)/s+1)。

四 手写体识别
 有了以上的知识,我们现在就来学习如何通过卷积神经网络来对一个手写体图片进行识别。如下图所示:


原始图片为32*32*3的彩色手写体图片,先经过6个5*5*3的卷积核的卷积运算,然后进行2*2步幅为2的最大池化操作,至此第一层完成得到大小为14*14*6的图像。第一层的输出为第二层的输入,我们第二层接着进行16个5*5*6的卷积核的卷积运算,然后进行2*2步幅为2的最大池化操作,最后输出图像为5*5*16的大小。我们再将其转换为一个一维的数组,大小为5*5*16=400个,然后进行全连接操作(接下来的章节我们会对全连接操作进行讲解),经过两层全连接操作我们会得到一个输出,加上softmax函数的话会产生0-9十个数字的概率,我们选中最大的概率作为我们的结果。至此一个完整的利用卷积神经网络进行手写体识别的实验就完成了。








 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信