基于深度学习的手势识别算法实现

收藏和点赞,您的关注是我创作的动力

概要

  近年来,手写体数字识别是计算机视觉和模式识别中的一个广受关注的问题,引起了越来越多学者的兴趣。这个问题的主要挑战是设计一种有效的方法,可以识别用户通过数字设备提交的手写数字。虽然已有很多相关的研究成果,但是在数字识别这一领域始终不能达到完全使人满意的结果。目前,深度学习算法在计算机视觉中非常流行,被用于解决诸如图像分类、自然语言处理和语音识别等重要问题。
  本文以深度学习的几种常见算法,包括线性感知器、卷积神经网络、循环神经网络、长短时记忆网络为研究对象,分析了其在手写数字识别上的优缺点,并引入了Google第二代人工智能系统TensorFlow,进而对比了相同的算法在不同的框架下识别的速度以及准确率。结果表明,这几类深度学习算法都能够高效的识别数字图像,尤其是多层卷积神经网络算法和长短时记忆网络算法,在提高识别率方面有明显优势,且在训练数据集时不会损耗过多的计算资源。

关键词:深度学习;手写数字识别;TensorFlow

一、 系统内容

  

本文的主要工作

本文就以深度学习的几种常见算法为研究对象,分析了其在数字图像识别上的各种优缺点,并介入了Google第二代人工智能系统TensorFlow[7]进而对比了同样的算法,在两种实现方法下的识别速度以及准确率,并进行实验认证。本文的主要工作如下:
(1)归纳整合了目前用于深度学习的常见高效的几种算法,并且同时实现手工设计以及基于人工智能系统TensorFlow下的实验对比。
(2)分析了深层神经网络的4种训练方法的原理。
(3)进行实验后通过充分的实验数据分析,对系统的功能和性能进行评估和优化,并总结相应的优缺点,对未来进行展望。

二、系统技术

2.1 图像识别技术

   图像识别过程包括训练和测试两个阶段,而其又主要由图像预处理、特征提取以及分类三个环节组成。
   现代许多领域都需要图像识别技术,这一技术具有重要的使用价值。许多小型企业和微型企业的应用需要准确识别图像中的数字信息。因此,通过提高识别准确率以及缩短时间周期的方式来大大提高中小企业的效率。在传统的数字识别方法中,需要手工提取特征,存在效率低,速度低,识别算法的鲁棒性低的缺点。与传统方法相比,深度学习技术的特征提取过程只需要前期的编码以及环境配置正确就可以大大提高在线运算的效率,这是这项技术的魅力所在 [8]。

   随着深度学习技术的深入发展,人们探索出许多可以应用于数字识别的不同算法。因此,本章详细介绍并分析了基于深度学习的各种深层神经网络的训练方法,同时也介绍了Google第二代人工智能系统TensorFlow,以及计算机通用的数据集MNIST数据集[16],并以此来实现对数字的识别功能。

2.2 深层神经网络训练方法

2.2.1 线性感知器算法

   一个感知器[17]由输入权值、激活函数和输出组成,其存在的问题是,当感知数据集不能线性分离时,感知器规则不会收敛,就无法训练完成这个感知器。为了解决这个问题,我们使用微分线性函数而不是感知器的阶梯函数。 这个感知器被称为线性单位。线性元素收敛到最佳逼近值上,在遇到无法线性分离的数据集的时候。
将权重项和偏置项初始化为0,然后利用下面的感知器规则迭代的修改和,直到训练完成。

   其中,,。是与输入对应的权重项,b是偏置项。事实上,可以把看作是值永远为1的输入所对应的权重。t是训练样本的实际值,一般称之为label。根据公式计算得出感知器的输出值y。η是一个称为学习速率的常数,用于控制每一步调整权的幅度。
   每次从训练数据中检索样本输入向量时,传感器用于计算其输出y,并根据上述规则调整权重,为每个处理过的样品调整一次权重。 经过多次迭代后,可以训练感知器权重以实现目标函数。

2.1.3 卷积神经网络算法

   卷积神经网络(Convolutional Neural Network, CNN)是最重要的一种神经网络,它在最近几年大放异彩,几乎所有图像、语音识别领域的重要突破都是卷积神经网络取得的,比如谷歌的GoogleNet、微软的ResNet等,打败李世石的AlphaGo也用到了这种网络[18]

三、数字图像识别的实现与分析

  本章节详细来对上述算法通过纯手写Python代码以及基于Python的TensorFlow框架一一进行数字图像识别的实现,并且附上相应算法的测试准确率的结果图。

4.1 实验环境介绍

  本次方法研究的实验机器配置:
●环境:Microsoft Windows 10 Enterprise_64bit + Python 3.6.5 + TensorFlow 1.8.0
●CPU(Central Processing Unit,中央处理器):Intel Xeon E3-1231 v3
●GPU(Graphics Processing Unit,图形处理器):GTX 970
●RAM(random access memory,随机存储器):16G

4.2 基于Python对数字图像识别的实现

  此小节使用自写手工Python实现对数字图像的识别功能,分别使用线性感知器算法、CNN算法、RNN算法以及LSTM算法,并附上相应的实验结果截图。

4.2.1 线性感知器算法实现

  运行线性感知器算法基于手工实现的结果如表4.1,进行样本数为1000的测试,每十个数据进行一次准确率的输出。进行5次测试集实验数据结果得出该算法的手工Python实现的精确率约为0.8922,其中某一次迭代的线性感知器算法的手工实现截图片段如下图4.1。

在这里插入图片描述

图4.1 线性感知器算法的手工实现截图片段
表4.1 线性感知器算法的手工实现结果
在这里插入图片描述

4.2.2 CNN算法实现

  将手工实现的CNN算法进行5次迭代,每次进行20次的精确率结果输出,其中某一次的测试实现截图片段如下图4.2。

在这里插入图片描述

图4.2 CNN算法的手工实现截图片段
运行CNN算法基于手工实现的结果如表4.2,平均精确度为0.8969。
表4.2 CNN算法的手工实现结果
在这里插入图片描述

4.2.3 RNN算法实现

实验中我进行了样本为2000且以10为维度的训练测试,通过两层循环层的误差,得出结果。其中某次的RNN算法的手工实现截图片段如下图4.3。

在这里插入图片描述

图4.3 RNN算法的手工实现截图片段
记录实验结果得出下表4.3,测试平均精确率为0.4327。但是由测试的结果我们发现从前往后一个逐渐上升的精确率,但是在第5次实验的时候,精确率反而下降了很多。这是因为在反向传播时,发生了梯度消失,RNN算法无法更新参数,这样子长时记忆的效果就没有了,所以精确率奇低无比。
表4.3 RNN算法的手工实现结果
在这里插入图片描述

结 论

   本文主要工作如下:
(1)实现目前用于深度学习的几种通用高效的算法,同时分别基于人工智能系统TensorFlow和基于手动设计进行实验比较。通过实验数据我们可得,在数据量相对较小的情况下,两种实现方法的精度和时间相差不大,但是数据量一旦扩大,需要的分类器变多之后,手工Python的实现方法、工具、性能仍难以和TensorFlow框架下的同样的算法的效率相匹及。
(2)分析深度神经网络四种训练方法的原理以及两种不同的实现方法,并通过具体的实验结果进行优缺点分析。
(3)实验结束后,通过分析充足的实验数据,对系统的功能和性能进行评估和优化。

六、 目录

目 录
摘 要 1
Abstract 2
前 言 3
第一章 绪 论 4
1.1 研究背景及意义 4
1.2 深度学习概述 4
1.3 本文的主要工作 5
1.4 本文的组织结构 5
第二章 数字图像识别技术 7
2.1 图像识别技术 7
2.2 研究现状分析 7
2.2.1 基于神经网络 8
2.2.2 基于小波矩 9
2.2.3 基于分形特征 9
2.3 本章小结 9
第三章 基于深度学习的数字识别方法 10
3.1 深层神经网络训练方法 10
3.1.1 线性感知器算法 10
3.1.2 卷积神经网络算法 10
3.1.3 循环神经网络算法 13
3.1.4 长短时记忆网络算法 14
3.2 Google第二代人工智能系统TensorFlow 15
3.3 手写数字数据库MNIST数据集 16
3.4 本章小结 17
第四章 数字图像识别的实现与分析 18
4.1 实验环境介绍 18
4.2 基于Python对数字图像识别的实现 18
4.2.1 线性感知器算法实现 18
4.2.2 CNN算法实现 19
4.2.3 RNN算法实现 20
4.2.4 LSTM算法实现 20
4.3 TensorFlow对数字图像识别的实现 21
4.3.1 线性感知器算法实现 21
4.3.2 CNN算法实现 22
4.3.3 RNN算法实现 23
4.3.4 LSTM算法实现 23
4.4 两种实现方法的对比分析 24
4.5 本章小结 25
第五章 总结与展望 26
5.1 本文总结 26
5.2 后续工作及展望 26
参考文献 28
致 谢 30

猜你喜欢

转载自blog.csdn.net/m0_73485263/article/details/133999087
今日推荐