计算机毕业设计-基于深度学习的验证码识别方法设计与实现

本文主要是介绍计算机毕业设计-基于深度学习的验证码识别方法设计与实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概要

  验证码是一个系统区分人类与非人类行为的有效方式。验证码识别技术能够使计算机程序输入正确的验证码,伪装成人类用户进入目标系统。另一方面,系统方面需要考虑破解验证码识别技术,修补验证方式的可能漏洞,使之能够更有效地区分人类与计算机的行为。深度学习能够使计算机更好地处理复杂的输入,因此能够识别更为复杂的验证码。深度学习是人工智能的一个重要分支,对于识别验证码图像,相对一些其他的学习算法,深度学习在同样的计算资源的条件下,具有更为优秀的性能,因此在处理同样的问题时深度学习能够节省一定的计算资源。
  本课题主要讨论了基于深度学习的验证码识别方法设计与实现。具体地,第一步采集验证码图像。这些验证码图像来源有两种:一是通过编程仿照常见的验证码图像生成数据集;二是从网站上下载验证码图像保存成数据集。第二步对验证码数据集进行去噪、定位等预处理,再使用垂直投影法进行分割,将分割出来的字符保存为学习样本。第三步构建卷积神经网络,使用采集的部分验证码图片对网络进行训练,调整参数。最后一步使用剩余的验证码图像对训练好的网络测试,整理测试结果,统计正确率,分析不同参数对神经网络性能的影响。
  经过测试,本论文设计的卷积神经网络基本能够成功地识别验证码图像,对仅包含数字的验证码图像识别效果较好,正确率达99.28%。

关键词:深度学习, 卷积神经网络, 验证码识别, 图像处理

一、研究背景与意义

  深度学习的应用领域有很多,其中之一就是验证码识别。
  验证码是一个系统区分人类与非人类的有效方式。验证码识别技术能够使计算机程序输入正确的验证码,伪装成人类用户进入目标系统。另一方面,系统方面需要先了解然后破解验证码识别技术,修补自身验证码的可能漏洞,使之能够更有效地区分人类与计算机的行为。随着互联网技术的发展,人们在使用互联网的同时越来越注重验证码的有效保护,希望网络的能够做到人类能识别而拦截所有机器程序的程度。
  当遇到黑客对网站发起攻击的时候,验证码就是网站安全的第一道防线[21,27],因此针对验证码识别的研究的实践意义不容小觑。我们可以通过研究验证码的识别技术,从根本上了解验证码的识别细节,从而做出针对性措施,加强验证码的保护能力,使验证码能够继续实现本身的价值。
  深度学习的初衷就是为了让计算机在处理某些问题时,能够拥有近似于人类的处理能力,这与验证码存在的意义是相对立的。验证码不希望机器能够像人类一样识别图像中的字符,而深度学习则努力使计算机能够尽可能地接近甚至超越人类。这一点一般的机器学习手段也能够实现,但是深度学习的优势在于能够将目标的特征逐级提取,比如我们学习汉字,先从基本的横、竖、撇、捺开始,最后将这些基本的特征进行组合,形成目标的完整特征,据此能够进行学习将目标分类或者预测。

二、验证码图像处理技术

  要使深度神经网络能够学习识别验证码,有两种可行性方案:一是端到端的识别,不对验证码进行分割预处理,而是直接通过神经网络得到输出[11,26,33]。二是分割识别,对验证码进行预处理和分割之后,按分割顺序将字符通过神经网络,并将得到的输出按顺序排列,得到网络对整张验证码图像的识别结果。
端到端的识别,涉及到的多标签分类问题颇为复杂[33]。限于个人能力与时间问题,本设计采用分割识别的方案。

3.1 图像预处理

在这里插入图片描述

图3-1 图像的灰度化和二值化

  由于待识别的验证码图像是彩色的图像,而验证码的识别,依据的是其字符形状而非字符色彩,所以二值化操作不会使需要的数据信息丢失。对输入的验证码样本,经过灰度化、二值化处理之后,能够降低图像数据的维数,有效降低数据处理的复杂度[31]。图3-1为初始的验证码样本图像及其经过二值化之后的图像。
  二值化之后的验证码图像没有了色彩数据的干扰,但是还有明显的噪点的存在,这些噪点无疑会影响到网络的识别效果,更直接的是影响到之后的分割处理,所以在分割识别之前,还需要对验证码图像进行去噪处理。图3-2为去噪之后的效果。
  经过二值化与去噪处理之后,验证码图像上少了许多干扰性数据,只保留待识别的字符和干净的背景,这能在很大程度上提升神经网络的识别效果。
在这里插入图片描述

图3-2 图像去噪

3.2 字符定位和分割

在这里插入图片描述

图3-3 目标定位

由于验证码图像中,字符的位置都是在图像内部,而边缘都是无用的背景信息,所以在进行字符分  割之前,对字符图像进行目标定位,确定字符的位置,割舍可能会带来干扰的边缘信息,能够对提升最终的识别正确率有很大的帮助[14,28]。定位算法并不复杂,其核心是确定字符区域的边界,在边界处进行背景切割,保留字符目标。算法流程如下:
  第一步:经过前面去噪预处理之后的图像通常只有目标区域和背景区域两部分,很容易检测到目标字符的左边界、右边界、上边界和下边界。
  第二步:这四个边界包围起来的区域就是定位到的字符所在的区域,根据这四个边界就能进行边缘切割,保留目标区域。图3-3是进行目标定位的示意图和结果。
图像预处理的最后一步是字符分割。
  字符分割的算法有很多种,复杂程度不一,针对待识别的验证码图像,酌情选择合适的分割算法。就本课题处理的验证码图像而言,字符之间无粘连,采用垂直投影法是最简单有效的分割算法,对验证码图像进行垂直方向上的投影,将投影值最少的位置作为分割点对图像进行分割。
在这里插入图片描述

图3-4 垂直投影分割
在这里插入图片描述

图3-5 图像分割结果

  图3-4所示为垂直投影算法分割的细节。算法流程如下:
  首先将待分割图像进行垂直投影,统计投影的值。没有字符存在的地方,甚至有字符存在并且粘连,但是粘连比较少的区域,其投影值会明显比字符所在区域的投影小得多。
第二步寻找这些投影值小的位置,初步确定为选取分割的点。
第三步结合具体的验证码图像特征,去除部分不可能的分割点,在剩下的分割点中选取合适点,即可进行分割。
  图3-5是图像分割前后的对比。为了与后面的卷积操作匹配,对分割之后的字符图像进行了边缘补零操作,避免在进行卷积时丢失字符的边缘特征。经统计,对采用的验证码样本进行使用垂直投影法分割的成功率是96.

三、网络性能分析

  

3.1 参数的选择

根据第四章的内容,网络各参数的选择都有一定限制,最初设置的参数如表5-1所示:
在这里插入图片描述

在实际的使用中,卷积核的大小、池化核大小以及网络层数,都由经验公式大概确定,并根据最终网络的性能进行参数调整以确定合适的参数值。

5.2 识别结果

在5.1节选取的初始值条件下,使用学习样本对网络进行训练,第一次训练的样本是通过编程生成的验证码图像,训练之后,网络对这类验证码的识别正确率较高,为99.28%。图5-1所示是网络对这类验证码的分割结果和识别结果。
此时用另一个测试集去测试网络,正确率并不理想,仅仅为47.246%。这是由两个数据集的差异造成的,虽然都是数字字符,但是第一类数据集本身有倾斜,而第二类没有,此外两种验证码还有其他特征差异,因此网络即使对相同数字提取的特征,也不完全相同。
在初次学习之后由于网络正确率偏低,需要使用第二类数据集在第一次训练的基础上对网络使用相同的参数再重复训练一次,因为样本集发生了变化,需要使网络“熟悉”第二类验证码的字符特征。在第二次学习之后,网络对第二次验证码的识别率有很大的提升,达到96.8116%。
在这里插入图片描述

图5-1 对自生成验证码的识别样例

图5-2是网络对第二类验证码的分割结果和识别结果。
在这里插入图片描述

图5-2 对采集的验证码识别样例

四、总结

  自人工智能兴盛以来,关于深度学习的研究成果如浪花涌现,深度学习在人工智能中的地位也越来越重要。深度学习在对数据进行分类上的优越性能是普通网络无法比拟的,卷积神经网络也因众多研究成果而广受重视,自身也在图像处理领域有着得天独厚的优势。验证码字符的识别分类就是深度学习的一个经典应用。
  本文在参考众多文献的基础上,深入理解深度学习和卷积网络基本理论,运用这些理论来构建卷积神经网络,解决验证码识别的问题。
  验证码数据集来源有二:一为通过编写程序生成与常见验证码类似的验证码图像;二是到网站上进行人工采集。在使用卷积网络进行学习和测试之前,先对验证码数据集做预处理,预处理操作有四:一是二值化,降低数据的维度,很大程度上也减少了数据的复杂度;二是去噪,消除验证码图像中的噪点,能够使网络不受太多无用信息的干扰,提高识别正确率;三是字符定位,一定程度上较少原始图像边缘的无用背景信息对网络的干扰,提高识别正确率;四是字符分割,每次学习一个字符,一方面能够降低识别难度,另一方面也降低了对样本数量的要求。
  本文最后对网络进行学习和测试,并分析了对网络性能影响较大的两个参数:全连接层隐层的神经元个数和学习率,通过分析这两个参数对网络收敛曲线和识别正确率的影响,能够为选取这两个参数的合适值提供方向,从而能够进一步地对网络进行优化。

六、 目录

目录
中文摘要 1
Abstract 2
第一章 绪论 4
1.1 课题研究背景及意义 4
1.2 国内外研究现状 5
1.3 研究内容 6
1.4 论文结构 6
第二章 深度学习的基本理论 8
2.1 神经元的数学模型 8
2.2 多层前向神经网络 9
2.3深度神经网络 10
2.4 神经网络的学习方式 11
第三章 验证码图像处理技术 12
3.1 图像预处理 12
3.2 字符定位和分割 13
第四章 卷积神经网络的设计与实现 16
4.1 网络结构 16
4.2 网络初始化 19
4.3 误差反向传播 21
4.3.1 全连接层的反向传播 22
4.3.2 池化层的反向传播 23
4.3.3卷积层的反向传播 24
第五章 网络性能分析 25
5.1 参数的选择 25
5.2 识别结果 25
5.3 隐层神经元数量对网络性能的影响 26
5.4 学习率对网络性能的影响 28
第六章 总结 30
6.1 工作总结 30
6.2 不足与展望 30
参考文献 32
致谢 35

这篇关于计算机毕业设计-基于深度学习的验证码识别方法设计与实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828759

相关文章

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me