更改

大数据与机器智能

添加816字节2016年10月25日 (二) 17:42
/* 手写数字识别DIG */
由于技术上对Lucida API调用规则了解不深,我们组在工业云安装完成Lucida后对于这个项目并没能成功做出自己的前端,因此,我们主要是对程序代码以及tutorial里面的内容的一些分析,并查阅了相关资料。
首先,手写数字识别这一个项目,我们可以通过给定一个只包含一个手写数字的jpeg格式照片,那么这一个项目可以识别出这个数字是0到9当中的哪一个。首先,手写数字识别这个项目,可以通过给定一个只包含一个手写数字的jpeg格式照片,这一个项目可以识别出这个数字是0到9当中的哪一个。
然后,这一个项目的代码结构主要分为以下的几个部分:
10.压缩并存储。在这一步当中,程序通过对给定jpeg文件的输入进行分析,并通过将这个文件压缩到一个固定大小然后存储起来。
1.黑白二值化。就是通过对原有图片进行一定的修改,因为初始的神经网络只接受0和1的输入,使得数字部分和背景部分能更好的区分开来。在这一步当中,应该可以通过采取较优的黑白二值化的方法(比如说可以与周围一定数量的像素点进行比对)从而同时消除噪点,提高识别的精度。 2.黑白二值化。就是通过对原有图片进行一定的修改,使得数字部分和背景部分能更好的区分开来。在这一步当中,应该可以通过采取较优的黑白二值化的方法(比如说可以与周围一定数量的像素点进行比对)从而同时消除噪点,提高识别的精度。对正图片中心,因为图片偏移会对神经网络得到正确结果产生较大影响,所以对正图片中心是必不可少的预处理过程。
3.把修改后的图片作为神经网络的输入。这一步,就是把经过上两步操作后得到的像素矩阵输入到神经网络当中,然后通过调用caffe(卷积神经网络框架)返回权值从而得到与各个数字的一个相关权值;
首先,是初始化网络及学习参数,如设置网络初始权矩阵、学习因子等。
然后,就是提供各种相关图片的监督训练模式,训练神经网络,不断修正,直到满足要求为止。然后,就是提供大量的手写的0~9的图片的并且采取监督模式学习,训练神经网络,不断修正,直到满足要求为止。
而训练神经网络这一步,分为前向传播过程和后向传播过程。
后向传播过程则是可分为三个步骤:
1. 计算同一层单元的误差;
2. 修正权值和阈值;
3. 进行下一个训练模式。
上面的具体操作则是通过将原本的特征maps与一个可学习的卷积核进行卷积,并通过一个激活函数得到输出特征map。然后再利用计算出来的灵敏度map进行梯度下降方法对原本的特征maps进行修正。
那么,通过对足够多的训练模式去训练网络,我们就可以得到一个足够优的神经网络去解决手写数字识别问题。
在一定量的数据集训练之后,该网络就具有识别数字的能力,在应用时不必再次学习,只需要载入神经网络每个节点对应的权值即可。所以Lucida没有公开它训练的过程,而是直接提供的具有识别能力的训练好的网络的参数。在一定量的数据集训练之后,该网络具有识别数字的能力之后,在真正应用时不必再次学习,只需要载入神经网络每个节点对应的权值即可。所以Lucida没有公开它训练的过程,而是直接提供的具有识别能力的训练好的网络的参数。 与传统数字模式识别算法的对比:传统数字模式识别算法基于对每个数字连通块、形状、线的弯曲情况的分析制造出一条条规则来判断图片归属,而神经网络不用再去分析每个数字的特点,而是预先准备一定量的数据集,就可以自己寻找特征。传统数字模式识别算法可能会因手写字体、连笔等差异对识别结果产生很大影响,而神经网络在大量数据训练后,能较好提取出区分这些数字的特征,对于字体等条件依赖不大、更接近人脑识别数字。 
最后是学习过程中参考的资料:
8
个编辑