APP下载

基于CNN与GRU单元的验证码识别

2021-10-18邓震

无线互联科技 2021年16期

摘 要:互联网时代,验证码是互联网安全的重要保证。文章应用图像处理与深度学习方法,通过灰度化、OTSU阈值分割法、腐蚀与膨胀充分提取图像特征。结合卷积神经网络(CNN)、GRU单元,构建神经网络模型。实现对验证码中大小写英文字母和阿拉伯数字的精确识别,验证码平均识别准确率达到93%左右,具有一定的实际意义。

关键词:OTSU阈值分割;腐蚀与膨胀;CNN;GRU

0 引言

在互联网时代,网络安全是人们日益关注的话题。而验证码,就是保护人民网络安全中的重要一环。验证码是一种区别当前用户是人或是计算机的测试方法,广泛应用于互联网中,常见于交通系统的票务购买,可以有效防止计算机程序的自动购买,破坏公平。

验证码通常由英文字母与阿拉伯数字组成,并且为了防止被机器自动识别,验证码图片往往像素較小,伴随大量噪点与噪声线,同时字符存在一定程度的扭曲与粘连,识别难度较大。

本文主要研究由26个大写字母、26个小写字母与10个阿拉伯数字组成的4位验证码,采用结合CNN与GRU的神经网络架构,对验证码进行识别。

1 相关研究工作

近年来,随着网络信息科技的高度发展,越来越多的学者在验证码识别领域上进行广泛的探索与研究。文献[1-5]均应用卷积神经网络,通过调整学习率和网络层数对图像验证码进行识别。文献[6]采取字符分割算法,通过预处理把粘连的验证码字符切分为独立的字符,再利用卷积神经网络进行识别。文献[7]提出了一种对抗学习方法,有效解决了分割过程中因信息丢失而无法识别的问题。文献[8-9]应用传统的机器学习方法,应用SVM与Adaboost进行验证码识别。文献[10]提出应用CTC+LSTM模型,能在数据不充足的情况下获得高识别精度。

2 验证码获取及预处理

2.1 验证码图片获取

本文实验数据来源于https://www.kaggle.com/c/technologytest/overview,实验数据共有20 000张4位数字与大小写字母混合的验证码图片。图片包含一定的噪点、干扰线以及扭曲。

图片为原始大小,RGB格式。本文使用18 000张作为训练集,2 000张作为测试集。训练集与测试集无交集。

训练集label中的英文字符区分大小写。如识别结果为“5EeF”则识别正确;如识别结果为“5eeF”则识别错误,即共有62个类。

2.2 数据预处理

2.2.1 图片灰度化

在验证码图像识别中,RGB提供信息很少,因此对图像作灰度化处理,将三维的RGB通道降至一维,有利于加快后续神经网络的训练。

灰度化公式:

?

2.2.2 OTSU阈值分割

在数字图像处理中,二值化具有重要作用。在黑白图像中,图像的重要轮廓与结构大大凸显,同时减少运算量。

本文采取OTSU算法,以确定阈值。其核心思想是寻找一个阈值,把图像的所有像素点分为两类。一类像素值小于等于阈值称为背景区域;另一类像素值大于阈值称为前景区域。当这两类的类间方差最大时为最合适。

2.2.3 特征增强

在原始的验证码图片中,存在一定的扭曲、变形,使数字或字母的形状特征存在丢失。因此,本文为了使模型更好地识别出验证码,增强字符的特征,对验证码的字符进行了加深加粗。

2.2.4 腐蚀与膨胀

在验证码中,存在着贯穿字符的噪声线,对识别造成极大的干扰。例如“I”加上噪声线,会识别为“T”。因此,本文采取形态学中的侵蚀与膨胀算法,去除噪声线。

在形态学中,腐蚀与膨胀是最基本的两种操作,它们通常在二进制图像中使用,与轮廓检测相类似。

腐蚀通过将像素添加到图像中对象的感知边界,扩张放大图像的明亮白色区域。侵蚀则沿着物体边界移除像素并缩小物体。

3 模型构建

3.1 输入层

在经过特征增强和腐蚀与膨胀处理后,会对字符的一些特征信息造成丢失。

因此,本文对原始图像只作灰度化处理作为特征图1。对原始图像经过特征增强、腐蚀与膨胀作为特征图2。把两张特征图堆叠作为模型输入,保留原始图像信息与提取的特征信息。

3.2 卷积神经网络

卷积神经网络是一类包含卷积计算并且具有深度结构的前馈神经网络,本质是一个多层感知机。卷积神经网络由卷积层、激活层、池化层3种结构组成。卷积层采用局部连接与权值共享的方式,减少了权值数量,使得网络易于优化;同时降低模型复杂度,减少过拟合风险。

3.2.1 卷积层

卷积层的作用是进行特征提取。通过一个矩阵(大小通常为3×3,5×5,7×7),和图像进行点乘。这个矩阵称为卷积核,点乘的过程称为卷积。其特点为采用局部连接与权值共享的方式,减少了权值数量,使得网络易于优化;同时降低模型复杂度,减少过拟合风险。

但是图像在卷积后会逐渐变小,虽然提取了特征信息,但是会丢失图像角落信息。因此,本文在卷积过程中,在卷积层中进行same padding,填充像素,使得输出结果与卷积前一致,避免图像边缘信息丢失。

3.2.2 池化层

池化层,又称为下采样层,主要目标是降低特征图的特征空间。对卷积层提取的特征图进行下采样,在减少数据量的同时可以保留有用信息。

本文采取最大池化操作,可以减少卷积层参数误差造成估计均值的偏移,保留更多的纹理信息。

3.2.3 激活函数

激活函数给神经网络引入了非线性因素,使得神经网络可以任意逼近非线性函数,从而应用到众多非线性模型中。本文采取RELU激活函数,可以有效克服神经网络训练过程中梯度消失的问题,加快训练速度。

3.3 GRU单元

GRU[11]单元是LSTM的一个变体,在LSTM中有3个门函数:输入门、输出门和遗忘门来控制输入值、输出值和记忆值。在GRU单元中则只有两个门:更新门和遗忘门。

GRU单元构建更为简单,适用于搭建较大的网络。同时,GRU单元只有两个门控。它的计算效率更高,有利于构筑较大的模型。

3.4 网络搭建

本文设计了一个17层卷积神经网络提取特征,并连接2层GRU单元。网络各层参数如表1所示。

4 实验验证

在网络训练过程中,参数的选取如表2所示。

在测试集中与其他网络结构对比如表3所示。

5 结语

本文针对常见的英文字母、数字混合的4位二维码,通过OTSU阈值分割与基于形态学的腐蚀与膨胀等预处理,并搭建神经网络融合CNN与GRU的特点进行识别,取得了不错的识别率,对于验证码识别相关领域的研究具有一定参考价值。但是本文也存在不足之处,神经网络训练过程中计算资源消耗大,训练时间长,如何令网络轻量化是接下来的改进方向。

无线互联科技·实验研究

[参考文献]

[1]罗焱.基于Tensorflow的验证码识别算法实现[J].信息与电脑(理论版),2020(20):29-30.

[2]张国荣,刘炳君,付成丽.基于Python和CNN的数字验证码识别[J].太原师范学院学报(自然科学版),2020(3):62-65.

[3]石邵虎,胡学先,李志博,等.基于深度学习的图像验证码识别研究[J].信息工程大学学报,2020(3):325-333.

[4]李世成,东野长磊.基于卷积神经网络的验证码识别[J].软件,2020(4):173-177.

[5]李成建,李富成,刘建芳.基于卷积神经网络的数字验证码识别研究[J].电子设计工程,2019(17):107-111.

[6]陈振昂,黄星期,秦中元.基于图像处理和卷积神经网络的文本验证码识别方案[J].网络空间安全,2020(8):75-80.

[7]曹廷荣,陆玲,龚燕红,等.基于对抗网络的验证码识别方法[J].计算机工程与应用,2020(8):199-204.

[8]安梦生.基于SVM的字符验证码识别研究[J].淮阴师范学院学报(自然科学版),2018(4):316-319.

[9]虞水磊,田新宇,王金燕.基于多元统计分析和机器学习的验证码识别[J].山东理工大学学报(自然科学版),2019(1):60-64.

[10]杜薇,周武能.基于CTC模型的无分割文本验证码识别[J].计算机与现代化,2018(9):48-51.

[11]CHO K,MERRIENBOER B V,GULCEHRE C,et al.Learning phrase representations using RNN Encoder-Decoder for statistical machine translation[J].Computer Science,2014(6):1724-1734.

(编辑 何 琳)

Captcha identification based on CNN and GRU unit

Deng Zhen

(South China Normal University, Guangzhou 510000, China)

Abstract:In the Internet era, captcha is an important guarantee of Internet security. In this paper, image processing and deep learning methods are applied to fully extract image features through graying, OTSU threshold segmentation, corrosion and expansion. The neural network model is constructed by combining convolution neural network(CNN)and GRU unit. The captitals, lower-case letters and Arabic numerals are recognized accurately. The average recognition accuracy of the captcha is about 93%, which has a certain practical significance.

Key words:OTSU threshold segmentation; corrosion and expansion; CNN; GRU

作者简介:邓震(2000— ),男,广东广州人,本科生;研究方向:深度學习在恒星光谱识别中的应用,自然语言处理文本多分类。