APP下载

字符验证码识别技术的研究

2020-11-13范亚如徐鹏飞

关键词:字符识别字符网络结构

范亚如, 徐鹏飞

(平顶山学院 ,河南 平顶山 467000)

一、传统的验证码识别

(一) 图像的采集模块

由于后期对样本进行训练的时候需要大量的样本集,如果只是简单的人工采集的话,需要耗费大量的时间和精力,所以可以采用python下的Captcha模块,这里我生成了5000张符合要求的字符验证码图片[1]。

(二) 图像的预处理模块

预处理的目的就是尽量排除杂点、像素干扰、字符变形、粘连等干扰因素,使各个字符图像变得更加清晰,以便为后续的字符特征提取和字符识别打下基础。图像预处理功能模块,包括图像的灰度化、二值化、去燥、倾斜度调整、字符分割等的图像处理技术[2]。

(三)样本训练和识别

所谓样本训练,就是根据大量的验证码样本,针对10个阿拉伯数字(0-9)和26个英文字母的大小写,对这些字符制作大量的字模[3]。在经过足够多的样本训练之后,建立一个字模库,从而使要识别的字符进行对号入座。由此可见,样本训练的重要性,它决定了最终识别效率的高低。以下是我在赶集网网站上面选取的样本训练之后制作的字模库,字符识别就是在预处理后的图片的基础之上,将识别出来的字符以文本的形式显示出来。识别结果如图1所示。

图1 识别结果

二、改进的验证码识别:神经网络识别法

上文提到的传统的识别方法仅限于简单的验证码,为了提高网络的安全性,验证码的种类也在不断地更新换代,对于比较复杂的,甚至肉眼都难以识别的验证码,传统的识别方法已不能满足人们的需求。针对这种干扰程度较为复杂的验证码识别,通常采用BP神经网络、卷积神经网络。

(一)BP神经网络

使用梯度下降来搜索可能的权向量的假设空间,以找到最佳的拟合样例的权向量。具体而言,即利用损失函数,每次向损失函数负梯度方向移动,直到损失函数取得最小值。即反向传播算法,是根据损失函数,求出损失函数关于每一层的权值及偏置项的偏导数,也称为梯度,用该值更新初始的权值和偏置项,一直更新到损失函数取得最小值或是设置的迭代次数完成为止,以此来计算神经网络中的最佳的参数[4]。

BP的缺陷:

(1)学习速度慢,需要几百次甚至上千次的学习才能收敛。

(2)容易陷入局部极小值。

(3)权值过多。当隐藏节点过多,层数越多时,权值成倍增长。

(二) 卷积神经网络

1. 基本原理

卷积神经网络(Convolutional Neural Networks,简称CNN)就是一种深度的监督学习下的机器学习模型。CNN的整体结构包含了3种层:

(1) Convolutional layer(卷积层--CONV)

由滤波器filters和激活函数构成。一般要设置的超参数包括filters的数量、大小、步长,以及padding是“valid”还是“same”。此外,还包括选择什么激活函数。

(2)Pooling layer (池化层--POOL)

这里的参数一般是Maxpooling,Averagepooling。需要指定的超参数,包括是Max还是average,窗口大小以及步长。通常,我们使用较多的是Maxpooling参数,而且一般取大小为(2,2)步长为2的filter,这样,经过pooling之后,输入的长宽都会缩小2倍,channels不变。

(3) Fully Connected layer(全连接层--FC)

这与之前的神经网络中的普通的层一样,就是一排神经元。因为这一层是每一个单元都和前一层的每一个单元相连接,所以称之为“全接”[5]。

2. ResNet网络结构

比 较 有 名 的 CNN结构有 AlexNet、ZFNet、VGGNet、GoogleNet和 ResNet。ResNet是卷积神经网络模型之一,它引入了残差网络结构(residual network),通过这种残差网络结构,可以把网络层弄的很深(目前可以达到1000多层),并且最终的分类效果也非常好,残差网络在借鉴了高速网络的跨层连接的思想上进行了改进,残差项原本是带权值的,但ResNet用恒等映射代替了它[6]。

卷积神经网络实现验证码的识别具体流程大致为:

(1)使用python的captcha模块生成验证码图片。

(2)使用PyTorch搭建神经网络模型。

(3)将数据喂入神经网络进行训练。

(4)保存训练好的网络模型。

其中生成的验证码图片样本、模型训练数据图以及最终识别结果分别如图2、3、4、5所示。

图2 训练集

图3 损失率

图4 学习率

图5 识别结果

(三)BP和卷积神经网络的对比

一个良好的算法首先应具有较高的识别效率,其次就是识别过程中所要消耗的时间和精力。通过对算法进行改进和优化之后,可以得出在保证较高识别率的基础之上,CNN能够达到减少训练次数,从而缩短耗时的效果。改进前后的训练效果分别如图6和图7所示。

图6 改进前的训练效果

图7 改进后的训练效果

三、结语

在简单的字符识别基础上进行了改进,采用神经网络字符识别,通过对比两种神经网络,从而得出卷积神经网络在总体上占有很大的优势。而且卷积神经网络的发展历程丰富,具有一系列不同的网络结构及其变体,在此基础上可以优化出更好的网络结构,未来可期。

猜你喜欢

字符识别字符网络结构
快递网络结构研究进展
论高级用字阶段汉字系统选择字符的几个原则
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
基于AutoML的保护区物种识别①
融合字符及字符排列特征的铭牌识别方法
一种基于OpenCV的车牌识别方法
基于MATLAB的图片中字符的分割与识别
基于互信息的贝叶斯网络结构学习