论文部分内容阅读
验证码在设计之初只是一个用来区分人和计算机程序的图灵测试,随着互联网的发展,现在的验证码主要作为维护互联网安全的工具。一般会出现在用户登录网站、网站的注册、信息的查询、网站发帖等场景。在这些场景中我们希望用户是一个真正的人,而不是计算机程序。图片字符识别对人类来说是很简单的,然而对计算机程序来说却比较难。因此验证码的存在能一定程度的维护一个良好的网络环境。一些场景下验证码的存在可能也会影响用户的体验,同时为了提高网络的安全性,作为学术研究去识别验证码,可以发现现有验证码存在的漏洞。本文中利用深度学习框架Keras,选择Theano为后端,针对比较容易分割的验证码,经过去噪、分割后,通过卷积神经网络以及深度神经网络进行训练识别,取得了很好的效果。对于不易分割的验证码,利用端到端的思想把验证码作为一个整体去标记,利用卷积神经网络以及递归神经网络分别进行模型训练,取得比传统方法更好的效果。具体的工作内容和成果如下:(1)对当前常见的几种验证码进行介绍,同时对每一种验证码的识别进行分析。详细介绍了验证码识别中的验证码的获取、灰度化、二值化、去噪、分割等环节中的常用方法及其原理。(2)介绍了深度学习发展的现状,对神经网络的前向传播及反向传播进行介绍,介绍了卷积神经网络的卷积、池化等操作的原理,对于易分割的验证码,本文以山东移动网上营业厅的验证码为例,通过去噪、分割完成预处理,利用卷积神经网络建模识别,识别正确率达到90%左右,同时利用深度神经网络进行建模识别,最终正确率达到87%左右。(3)介绍了递归神经网络以及长短期递归神经网络的原理,对于不易分割的验证码,本文以山东电信网上营业厅的验证码为例,利用端到端的卷积神经网络建模识别,识别正确率达到85%左右,同时利用卷积神经网络和长短期递归神经网络相结合的方法进行建模识别,最终正确率达到70%左右。