APP下载

基于渐进式学习的神经网络端到端验证码识别

2018-09-21刘达荣张远平汤茂斌李福芳

计算机技术与发展 2018年9期
关键词:渐进式字符准确率

刘达荣,张远平,汤茂斌,李福芳

(广州大学 计算机科学与教育软件学院,广东 广州 510006)

1 概 述

验证码[1]作为区分人类和机器的测试工具,在图灵测试上占有一席之地。如铁道部在高铁票购买过程中,进行验证码识别以防止黄牛党抢票;论坛注册时,提供的验证码测试防止脚本自动注册。目前,比较常用的验证码都会包含一些扭曲变形的字符进行测试,测试者必须能看懂并输入正确的字符串才能通过。对于人类来说,扭曲变形的字符并不难识别,但对于机器就相当困难,一个好的验证码可以有80%的概率被人类识别[2],但对于机器只有0.01%的概率被识别。一个典型的验证码样例[3]如图1所示。

图1 谷歌提供的验证码样例

传统的光学字符识别[4]的方法是:首先定位字符的位置,然后进行分割[5]和识别。Mori等[6-7]提出先分割,后使用字典来解决验证码识别问题。然而,如图1所示,因为这种验证码的字符发生重叠或者变形,已经不能用垂直线分割。目前,相关工作者已经开始利用人工智能[8]研究自动化方法去解决验证码识别问题,如Goodfellow等[9]使用深度卷积神经网络(CNN)成功解决了该问题。但是训练一个深度卷积神经网络需要非常大的数据集[10],如ImageNet[11]数据集需要大量的图片数据:训练数据集126万张图像,验证集5万张,测试集10万张。对于验证码识别,具有人工标签的训练数据并不多,而且与自然图片中的对象不同,验证码的变化空间非常大。

由于变形验证码的特征与手写字符类似,因此文中借鉴LeCun等[12]提出的卷积神经网络架构进行识别。CNN被设计成层级结构,常应用于目标检测和分类,由于带有卷积层,对图像处理具有特别优势。利用卷积对图像特有的局部感受野进行特征提取,并进行权值共享,从而大幅减少参数;利用多卷积核学习多种特征,在通过卷积获得了特征之后,利用池化对不同位置的特征进行聚合统计[13]。目前,基于CNN产生的模型基本能解决大部分视觉问题,可见其强大功能。

训练一个深度神经网络需要较大的数据集和耗费较长的训练时间,对此,文中提出两种新方法:使用“best-vs-second-best”统计方法对验证码进行回收,以减少训练数据量;模仿人类的学习模式—渐进式学习,由易到难进行学习来减少训练时间,提出基于渐进式学习的卷积神经网络,对验证码进行端到端的识别。

实验流程如图2(a)所示。首先,利用一万张没有扭曲变形的验证码图片作为训练数据,基于手写识别MNIST优化后的网络进行预训练,训练完毕后再对十万张验证码图片进行预测,在输出结果时利用“best-vs-second-best”统计方法,把不确定度较大的图片放回下一次训练中;接着,当正确率上升到比较高的时候(90%以上),把原来的验证码图片替换成扭曲变形较大的图片,重复以上过程,从而缩短学习时间并获取较高的准确率。

(a)训练流程和数据流向

2 学习模型

传统的神经网络激活函数以Sigmoid函数和Tanh函数为主[14]。从数学上来看,非线性的Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上有很好的效果。从神经科学上来看,中央区酷似神经元的兴奋态,两侧区酷似神经元的抑制态,因而在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区。而在深层网络中,为了加快训练网络和减少梯度,利用了ReLu(rectified linear units)激活函数[15]。

基于手写识别MNIST的三层网络结构,文中对其进行改造,在池化层加入ReLu激活函数来提高收敛速度,以及加入DropOut技术[16-17]来防止网络过拟合,如图2(b)。DropOut技术是在训练网络时用的一种技巧,在训练开始时,随机选择一半隐层单元,保持输入和输出层不变进行权值更新,在第二次迭代中,再次随机选择一半隐层单元,以此类推直到训练结束。运用DropOut的训练过程,相当于训练了很多个只有半数隐层单元的神经网络,每一个这样的半数网络,都可以给出一个分类结果,这些结果有的是正确的,有的是错误的。随着训练的进行,大部分半数网络都可以给出正确的分类结果,那么,少数的错误分类结果就不会对最终结果造成较大影响。

2.1 训练数据的生成

由于没有手动打标签的验证码数据集,文中采用自己编写的PHP脚本自动生成验证码,并保证没有重复的验证码图片。使用Cool PHP CAPTHCAH框架生成验证码,其中包含了一串固定长度(6位)的扭曲字符,类似于谷歌的reCAPTCHA[4],生成的验证码图片大小为50×180。调整该框架生成灰度图,没有加入阴影和横线作为背景,部分验证码数据集见图3。

图3 验证码

2.2 卷积层网络结构参数和特征可视化

如图2(b)所示,图片以像素形式转换成矩阵输入网络。在卷积层1中,对数据层以窗口大小5×5、步长为2进行特征提取,把原图片50×180压缩编码以25×90的矩阵向量输出到下一层,直到最后的分类输出层。在卷积层1、2、3的输出中,第一个输出图学习到了验证码的边缘,第二个输出图学习到了验证码的局部特征,第三个输出图学习到了验证码的全局特征。

基于Caffe框架[18],硬件采用GTX960 GPU进行训练,基础学习率(base_lr)初始值设置为0.01,动量为0.9,权值衰减为0.000 5,学习率策略采用多项式,权重(power)为0.75,最大迭代次数(max_iter)为20 000,并使用GPU进行加速训练,迭代次数(iter)为两千次。由于选取学习率策略为多项式模式(Poly),故在训练过程中的有效学习率为base_lr*(1-iter/max_iter)^(power),训练两万张图片。

对超参数进行设置和建模,以及对每一层的输入与输出进行特征可视化,如图4所示。

图4 网络结构

2.3 输出层

对于输出层,为预测每个验证码图片的字符概率,采用SoftmaxWithLoss多分类函数:

(1)

即对于隐层的输出v,第i个输出单元yi的概率为P(yi|v),ω为隐层与输出层的权重值。在输出层,由于不能直接输出字符,采用如下映射函数:

Θ(yi)=

(2)

其中,yi为输出层第i(i=0,1,…,5)个单元,对应从数字0到字母z的其中一个,其余如此类推。如第一个输出单元y0,输出最大概率对应的横坐标为37,代表输出字符a;第二个输出单元y1,输出最大概率对应的横坐标为112,代表输出字符n,如此类推,如图5所示。

以上文的验证码图片“anzwtg”为例,图中为六位字符经过识别后每一位对应的最大概率,即x轴的第0号到61号为第一个字符的分布区间,第62到123为第二个字符的分部区间,依此类推。

图5 提取输出层的概率分布图

2.4 利用不确定度回收训练图片

文中采用“best-vs-second-best”来统计已经分类正确但具有较大不确定性的图片,重新放回下一次迭代训练,以此减少训练样本大小,公式如下:

(3)

其中,d为迭代次数;P(yi)为每个字符的概率大小。分母是每次迭代的字符最大概率,分子是每次迭代的字符次大概率,即选取总不确定度η值最大的图片,重新放入下一次迭代训练,以此来减少训练图片规模。

3 实验结果与分析

文中提出渐进式学习,其准确率和学习过程如图6所示。其中,实线为直接采用困难验证码图片训练的效果,虚线为先进行简单图片预训练,当准确率达到98%时,替换成困难验证码图片进行训练的效果。

图6 迭代次数与准确率

从图6可以明显看出,采用渐进式学习在同一训练时间内准确率更高,达到86%。本次实验中,训练的总时间约为48 h,若继续增加训练时间,准确率还可以更高。与传统方法相比较,在单张验证码识别时间上,基于SVM识别需要0.76 s[19],在本测试中需要0.073 s,识别效率约为传统方法的10倍。

4 结束语

结合传统神经网络的结构进行优化,采用模仿人类学习过程的渐进式学习模式,提出一种无分割、端到端验证码识别算法。该算法充分利用卷积神经网络的自学习特性,简化传统验证码识别中字符分割等人工干预手段,使得网络具有抗旋转的优良特性,并利用概率统计方法减少训练样本,最终使得神经网络具有收敛速度快、检测效果好的特性。在后续工作中,将在背景加入更多干扰来进行测试,以期提高网络的鲁棒性。

猜你喜欢

渐进式字符准确率
企业职工基本养老保险全国统筹:“渐进式”改革的困境与对策
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
论高级用字阶段汉字系统选择字符的几个原则
基本收入的理论构想与渐进式实现路径
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画