● 摘要
随着互联网的发展,网络安全日渐重要,各种安全技术相继提出。其中,验证码就是保护网络安全的一个重要方法。验证码的使用阻止了自动程序对网络服务的非法攻击,以及垃圾信息肆意传播,给企业和用户提供了一个干净健康的网络平台。但是,由于一些其它目的需要,现在越来越多的验证码遭到恶意破解。因此,对验证码和验证码识别的研究也变得越来越重要。通过对验证码识别的研究,可以让人们设计出更简单、更安全的验证码。同时,由于许多机器学习算法被运用到验证码识别中,因此,对验证码识别的研究也是人工智能的一大进步。
目前,验证码的样式多种多样,如:图像验证码、字符型验证码等,但是在网络中使用最多的依然是字符型验证码。这类验证码通常采用噪音干扰、扭曲粘连等方法来增加其识别难度。目前,对字符型验证码的识别方法大致可分为两类,一类是基于分割的识别方法;一类是基于整体的识别方法,即不分割。
本文采用基于分割的方法对字符型验证码的识别进行研究,选择了京东的验证码和CSDN的验证码作为识别对象。选用这两种验证码的原因是由于它们具有扭曲、部分粘连、有背景干扰等特点。本文采用连通域分割和投影直方图分割相结合的方法对验证码进行分割,使用机器学习中的卷积神经网络作为识别器进行字符识别。本文的主要工作如下:
(1)简单介绍验证码的研究背景、种类以及研究现状。
(2)简述图像预处理和图像分割算法的相关知识;然后通过实验选择验证码预处理算法,并以连通域分割算法和投影直方图分割算法为基础,分别设计两种验证码的分割算法;最后对图片大小进行归一化处理。
(3)详细介绍神经网络的相关知识,并参考LeNet5模型设计本文所使用的神经网络;最后介绍卷积神经网络的训练过程、优化方法和训练技巧。
(4)对软件做相应的需求分析,并详细介绍软件的实现,其中包括验证码抓取、数据集制作、机器学习类库Torch3和类图设计等;最后使用VC++/MFC编程语言和VS2010开发环境实现软件,并对实验结果做相应的分析。