基于深度学习的验证码识别方法设计与实现.doc
《基于深度学习的验证码识别方法设计与实现.doc》由会员分享,可在线阅读,更多相关《基于深度学习的验证码识别方法设计与实现.doc(39页珍藏版)》请在三一办公上搜索。
1、本 科 毕 业 设 计(论 文)学院(部)电子信息学院题 目基于深度学习的验证码识别方法设计与实现年 级2014专业电子信息工程班 级14电信学号1428403048姓 名温美松指导老师黄鹤职称副教授论文提交日期2018年5月目录中文摘要1Abstract2第一章 绪论41.1 课题研究背景及意义41.2 国内外研究现状51.3 研究内容61.4 论文结构6第二章 深度学习的基本理论82.1 神经元的数学模型82.2 多层前向神经网络92.3深度神经网络102.4 神经网络的学习方式11第三章 验证码图像处理技术123.1 图像预处理123.2 字符定位和分割13第四章 卷积神经网络的设计与实
2、现164.1 网络结构164.2 网络初始化194.3 误差反向传播214.3.1 全连接层的反向传播224.3.2 池化层的反向传播234.3.3卷积层的反向传播24第五章 网络性能分析255.1 参数的选择255.2 识别结果255.3 隐层神经元数量对网络性能的影响265.4 学习率对网络性能的影响28第六章 总结306.1 工作总结306.2 不足与展望30参考文献32致谢35中文摘要验证码是一个系统区分人类与非人类行为的有效方式。验证码识别技术能够使计算机程序输入正确的验证码,伪装成人类用户进入目标系统。另一方面,系统方面需要考虑破解验证码识别技术,修补验证方式的可能漏洞,使之能够更
3、有效地区分人类与计算机的行为。深度学习能够使计算机更好地处理复杂的输入,因此能够识别更为复杂的验证码。深度学习是人工智能的一个重要分支,对于识别验证码图像,相对一些其他的学习算法,深度学习在同样的计算资源的条件下,具有更为优秀的性能,因此在处理同样的问题时深度学习能够节省一定的计算资源。本课题主要讨论了基于深度学习的验证码识别方法设计与实现。具体地,第一步采集验证码图像。这些验证码图像来源有两种:一是通过编程仿照常见的验证码图像生成数据集;二是从网站上下载验证码图像保存成数据集。第二步对验证码数据集进行去噪、定位等预处理,再使用垂直投影法进行分割,将分割出来的字符保存为学习样本。第三步构建卷积
4、神经网络,使用采集的部分验证码图片对网络进行训练,调整参数。最后一步使用剩余的验证码图像对训练好的网络测试,整理测试结果,统计正确率,分析不同参数对神经网络性能的影响。经过测试,本论文设计的卷积神经网络基本能够成功地识别验证码图像,对仅包含数字的验证码图像识别效果较好,正确率达99.28%。关键词:深度学习, 卷积神经网络, 验证码识别, 图像处理AbstractThe verification code is an effective way to distinguish human or non-human behavior. The verification code recogniti
5、on technology enables the computer program to input the correct verification code, disguised as a human user to enter the target system. On the other hand, the system needs to consider cracking the verification code recognition technology, repair the possible holes in the verification methods, so th
6、at it can more effectively distinguish the behavior of human and computer. Deep learning enables computers to process complex inputs better, and therefore to recognize more complex verification codes. It is an important branch of artificial intelligence. For the recognition of verification code imag
7、es, compared with some other learning algorithms, deep learning in the same condition of computing resources, has better performance. Therefore, deep learning can save certain computing resources when dealing with the same problems than other general algorithms.This paper mainly discusses the design
8、 and implementation of verification code recognition method based on deep learning. Specifically, the first step is to capture the images of the verification code. There are two sources of these CAPTC-code images: one is to generate by programming to emulate common CAPTC-code images; the other is to
9、 download the CAPTC-code images from websites and save them into datasets. The second step is to pre-process the data set of verification code such as de-noising, locating, and then using vertical projection method to segment the characters and save the characters as training samples. The third step
10、 is to construct the convolutional neural network and to train the network using some pictures of the CAPTCA to adjust the parameters. The last step is to use the rest of the verification code images to test the network. And then collate the test results, count the correct rate and analyz the effect
11、 of different parameters on the performance of neural network.After testing, the convolutional neural network designed in this paper can recognize the image of verification code successfully, and it is better to recognize the image which only contain numbers, the correct rate is 99.28%.Keywords : De
12、ep Learning, Convolutional Neural Network, Verification Code Identification, Image Processing第一章 绪论人工智能指的是模仿生物神经学,构建神经元的数学模型,使其能对复杂的信息进行处理。自从西班牙解剖学家Cajal在19世纪末创立神经元学说之后,神经元的一些生物学特征和相关的部分电学性质相继被发现。1943年,神经元的M-P模型被首次提出,创建该模型的是来自美国的心理学家McCulloch以及另一位数学家Pitts。来自加拿大的神经心理学家Hebb在1949年提出了“Hebb法则”,他认为学习现象的发生
13、在于神经元突触的产生和变化。来自美国的心理学家Rosenblatt结合了以上三人的理论,首次用精确的数学算法来定义神经网络,提出了“感知机”模型。神经网络的基础就是感知机。一般的神经网络也叫多层感知机,分为输入层、隐藏层和输出层,而具有多个隐藏层的神经网络就是深度神经网络。深度学习就是运用深度神经网络,模仿人脑对声音、图像等数据进行解释的过程,能够很好地将复杂多变的输入映射为具体输出,具有从少量样本中学习集中特征的能力。1.1 课题研究背景及意义深度学习的应用领域有很多,其中之一就是验证码识别。验证码是一个系统区分人类与非人类的有效方式。验证码识别技术能够使计算机程序输入正确的验证码,伪装成人
14、类用户进入目标系统。另一方面,系统方面需要先了解然后破解验证码识别技术,修补自身验证码的可能漏洞,使之能够更有效地区分人类与计算机的行为。随着互联网技术的发展,人们在使用互联网的同时越来越注重验证码的有效保护,希望网络的能够做到人类能识别而拦截所有机器程序的程度。当遇到黑客对网站发起攻击的时候,验证码就是网站安全的第一道防线21,27,因此针对验证码识别的研究的实践意义不容小觑。我们可以通过研究验证码的识别技术,从根本上了解验证码的识别细节,从而做出针对性措施,加强验证码的保护能力,使验证码能够继续实现本身的价值。深度学习的初衷就是为了让计算机在处理某些问题时,能够拥有近似于人类的处理能力,这
15、与验证码存在的意义是相对立的。验证码不希望机器能够像人类一样识别图像中的字符,而深度学习则努力使计算机能够尽可能地接近甚至超越人类。这一点一般的机器学习手段也能够实现,但是深度学习的优势在于能够将目标的特征逐级提取,比如我们学习汉字,先从基本的横、竖、撇、捺开始,最后将这些基本的特征进行组合,形成目标的完整特征,据此能够进行学习将目标分类或者预测。1.2 国内外研究现状早在1986年,Rumelhar、Hinton等人就初步将反向传播算法(BP,Back Propagation)应用于神经网络的学习之中1,使神经网络的学习过程变得简单可行。但是,第一因为训练数据集规模太小,第二由于计算资源有限
16、,即使训练一个比较简单的网络都可能需要非常长的时间。与其它的机器学习模型相比较,当时的BP网络模型在正确率上并没有明显优势,更多的学者普遍青睐其他的浅层的机器学习模型,比如支持向量机模型、Boosting模型等。直到1989年,LeCun根据误差的反向传播算法,成功地将神经网络应用于识别美国邮政服务提供的手写邮政编码数字2。根据这一成果,并结合Fukishima在1980年提出的关于卷积(Convolution)、池化(Pooling)的概念(当时还不称为卷积和池化)3,1998年LeCun提出了LeNet-5网络模型4。LeNet-5具有多层神经元,使用合适的梯度学习方法和反向传播算法,能够
17、对图像进行特征的逐级提取,在针对手写字母的识别中取得了非常好的效果,是深度学习史上第一个可称为完善的卷积神经网络(CNN,Convolutional Neural Networks)。至此,人们对卷积神经网络的研究步入了第一次高潮时期。但是在之后近十年的时间里,有关卷积神经网络的研究渐渐陷入泥沼,其中的主要原因分为两点:第一是当时的人们发现深度神经网络在根据BP算法进行训练时所需的计算资源非常多,仅仅凭借当时的硬件方面的研究水平几乎不可能实现那种大规模的计算;第二是包括支持向量机(SVM,Support Vector Machine)在内的许多浅层机器学习算法也渐渐开始崭露头角,人们投入到卷积
18、神经网络中的研究热情和精力渐渐稀少。一直到2006年Hinton指出“多隐层神经网络具有更为优异的特征学习能力,并且其在训练上的复杂度可以通过逐层初始化来有效缓解”5,10,有关深度学习和卷积神经网络的研究才再度为人们所关注,深度学习的研究再一次涌起热潮。2012年,Hinton的学生Alex等人在ImageNet竞赛上提出了AlexNet24。这是在LeNet-5诞生之后深度学习的又一大进步。AlexNet较LeNet-5有许多新的思想,包括但不局限于数据增强、局部归一化、激活函数采用ReLU、DropOut方法等6,10,19,25,在ImageNet竞赛中以高出第二名近10%正确率的优异
19、性能奠定了CNN在深度学习中的重要地位22。继Alex之后,关于CNN的研究迭出不穷,成果丰硕,其中较为经典的模型之一是2014年香港中文大学教授汤晓鸥、王晓刚及其研究团队提出的DeepID深度学习模型,在LFW (Labeled Faces in the Wild)数据库上获得了99.15%的识别率,这个结果超过了人眼的识别效果(实验表明,如果仅仅给出人脸中心区域,人的肉眼在LFW上的识别率为97.53%)18。汤晓鸥及其团队于2014年连续发表了文三篇文献,对深度学习进行了系统阐述的同时,尝试从理论上解释CNN模型强大的特征提取能力,这也是人们首次试图去研究CNN的本质属性,标志着对CNN
20、的研究步入新的时代7,8,9。1.3 研究内容本课题主要讨论基于深度学习的验证码识别方法设计与实现,在深度学习的理论基础上,设计了一个卷积神经网络,对几种常见的验证码图像进行识别,通过调整神经网络的参数来分析讨论不同的识别结果。这些验证码图像部分来自计算机生成与网站上类似的验证码,部分来自人工在网站上的采集。在图像识别之前首先对验证码样本进行二值化和去噪处理,并采用垂直投影法进行图像字符的分割,将分割之后的字符按顺序保存,作为卷积神经网络的输入数据。从所有验证码样本中选取部分作为网络的学习样本,对网络进行训练,部分作为测试样本,用于检测训练后的网络的性能。最后通过调整网络的参数,分析了总结部分
21、参数对网络性能的影响。1.4 论文结构本论文第一章是绪论,详述了深度学习的研究背景、验证码识别的研究意义和国内外的深度学习的发展现状,介绍了主要的工作情况和论文的结构。第二章介绍了深度学习的一些基本理论内容,从神经元的M-P模型,到通用的神经网络模型,再到深度神经网络的一般模型,都做了具体的介绍。第三章介绍了本课题所用到的图像处理技术,包括图像去噪、目标定位与图像分割,图像预处理是保障网络识别率的重要前提之一。第四章是关于如何用Matlab语言构建深度神经网络的内容。涉及到采用的卷积神经网络的基本结构、数据的前向传播、误差的反向传播、网络的权值参数更新等内容。第五章描述了运用第四章构建的网络进
22、行训练学习之后,对实验结果的分析讨论。通过观察实验结果,分析并修改可能对其产生影响的参数,尝试进一步优化网络。第六章是总结和展望。第二章 深度学习的基本理论人工神经网络是计算机对生物神经网络的一种模拟和近似,由大量的人工神经元(感知器)通过相互连接,构成自适应的非线性动态网络。神经网络的每一层都由大量的神经元节点组成,节点之间通过权值参数连接,成功训练好的神经网络能够独立处理复杂的非线性问题,而神经网络学习的本质就是权值和偏置量的自适应调整。2.1 神经元的数学模型依据人体神经元的生物结构,来自美国的心理学家McCulloch和另一位数学家Pitts于1943年提出了神经单元的数学模型:图2-
23、1 神经元的M-P模型根据图2-1可以得到神经元的输出为:其中,、.是输入的个数据量,、.是神经元的连接量,是偏置量,为神经元的输出。是激活函数,它的作用是加入非线性因素,在一定程度上能够用来解决线性模型表达、分类能力不足的问题12,13。使用较为广泛的激活函数有sigmoid函数:tanh函数:relu函数:以及softmax函数:这里表示输入向量中的第个数据,输出代表的指数占所有输入数据的指数的和的概率。2.2 多层前向神经网络神经网络是大量神经元组成的网络,处于不同层的神经元作用不同,它们彼此合作,组成了能够对复杂的输入数据进行解释的网络。典型的前向神经网络结构如图2-2所示32。图2-



- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 深度 学习 验证 识别 方法 设计 实现

链接地址:https://www.31ppt.com/p-3867202.html