时间:2024-05-04
梁艳辉 李明玮 龙俊安 骆特拉
关键词 深度学习 验证码识别 网络安全
1概述
深度学习作为当今最流行的科学研究趋势之一,为计算机视觉和机器学习带来了革命性的进步,非常适用于字符型验证码的识别[1] 。传统的图像处理和机器学习算法对使用者的要求较高,且由于图片的变化类型较多,处理方法不能通用,甚至会花费很长的时间。与传统的人工特征设计相比,使用卷积神经网络,只需要進行简单的图像预处理,就可以实现大部分静态字符型验证码的识别,不仅识别率较高、通用性强,而且最大程度降低了验证码识别的难度。本项目利用TensorFlow2.x 来构建一个卷积神经网络模型,用于更快速、更精确地识别字符型验证码。
2技术及理论基础
2.1Captcha
该项目使用由Python 所提供的Captcha 库中的方法来生成验证码数据集以及训练集。由该库所生成的验证码图片字符包含26 个英文字母(区分大小写)和10 个数字,并随机取出4 个经过扭曲后的字符进行排列组合。同时,在这些图片中加入了噪点和干扰线,图片的颜色随机生成(图1)。
2.2基于TensorFlow2.x 的卷积神经网络
该项目基于Tensorflow2 的框架来进行神经网络的搭建。与Tensorflow1 相比,Tensorflow2 的变化可谓是翻天覆地。TensorFlow2.0 在1.x 的基础上进行了重新设计,针对提高使用者的开发效率,对API 做了精简,删除了冗余的API 并使之更加一致。不过,这也导致了Tensorflow2.x 与Tensorflow1.x 的兼容性较差。而该项目采用Tensorflow2 正是因为Tensorflow2 更加简洁、灵活,同时操作更加简便,很多在Tensorflow1 中需要手动调试的代码在Tensorflow2 中通过调用API即可实现。
2.3卷积神经网络
与传统神经网络相比, 卷积神经网络(Convolutional Neural Network, CNN)从二维升级到了三维,但仍旧是一种多层的神经网络。CNN 被广泛应用于计算机视觉领域,是目前图像领域中最好的特征提取方法,大大提高了数据分类的精度。
3技术实现及模型分析
该项目的实现过程大致分为数据集和训练集的获取、数据集和训练集的预处理、卷积神经网络的搭建以及网页识别平台的搭建。
3.1数据集的获取
上文提到本项目使用Python 所提供的Captcha库来获取数据集,利用Captcha 库能够对验证图片的大小、颜色、内容进行调整,并且能够在图片上添加干扰线和噪点,以获得质量更高的验证码图片[2] 。
3.2数据预处理
验证码图片不能直接作为模型的输入数据来使用,因为大量的干扰线和彩色较多的图片会严重降低模型学习的效率。所以我们需要对验证码图片进行一系列的预处理操作。
图像预处理流程为:RGB→灰度图→规范化数据。首先,将图像进行灰度化处理,此时需要利用Y′=0.299R(Red)+0.587G(Green)+0.114B(Blue)公式来对灰度图进行转换;其次,经过灰度化处理之后,同时需要将灰度图数据进行规范化;最后,使用独热编码(One?Hot Code)来处理数据中的每一个字符。One?Hot Code 编码的优点是可以解决类别型数据的离散值问题。
3.3卷积神经网络模型搭建以及训练
卷积神经网络的结构主要可以分为特征提取和全连接。在特征提取中,需要进行卷积、池化以及激活函数(该项目采用ReLU 函数),它们分别对应网络模型中的conv 层、Pool 层和ReLU activation fuction层。
本项目的网络模型包含三层卷积层、Dropout 层、softmax 层与全连接层。将4 个全连接层分为10 类,分别对应4 个字符,并将它们拼接在一起,以输出结果。
在每层卷积层后,选用ReLU 函数作为激活函数,ReLU 函数能起到缓解过拟合矛盾的效果。ReLU 函数会使一部分神经元的输出为0,以此使网络具有稀疏性特征,并且减少了参数的相互依存关系。完成模型搭建后,利用该模型读取处理好的验证码数据并完成训练,然后保存完成训练的模型。
4识别结果分析
对结果进行分析可发现,识别率达到99%以上,这离不开足够的数据集和最佳损失函数的支持。在选择损失函数时,我们引入了四种不同的损失函数进行对比测试,结果显示模型的识别准确率较高(图2)。
从结果可以看出,Binary CE 的效果最佳,识别率最高,所以本项目选择binary_crossentropy 作为LOSS函数。
5验证码对维护网络安全的思考
通过上述分析结果可以看出,在深度学习识别较为成熟的时代,传统且简单的验证码已经不能完全防范“机器人的恶意攻击”。因此,我们需要对新时代的验证码安全提出新的防护方案。下文将介绍几种提升验证码安全性的解决方案。
5.1更复杂的验证码
对于主流的深度学习模型而言,系统并不能将严重扭曲且复杂的图片做到点对点的精确识别,即当字母处于扭曲状态时,系统并不能做到充分的“理解”。软件尚不能够轻易识别图片,对正常人而言识别难度也较高,反复输入错误致使用户对此类验证码的使用十分反感。因此,此方案虽然能够提升验证码的安全性,但并不是最有效的解决方案。
5.2新式验证码
5.2.1图像验证码
此类验证码通过用户匹配九宫格内出现的物品与要求的提示词来进行身份验证, 它由Google 发明并进行推广。该类型验证码是当前国外网站使用频率较高的验证码系统之一,其成功率较高,深受用户喜爱。在深度学习流行的时代,数据集作为一种稀缺资源,各深度学习公司对其十分看重。Google 巧妙地将验证码识别和数据集收集相结合,通过高准确率的判断为图片生成标签,从而进一步提升了深度学习的研发能力。然而,部分图片与复杂模糊的验证码情况类似,并不能让人准确地进行识别,同时容错率较低,少点或者点错图片则一直不能通过验证,这是后续需要优化之处。
5.2.2点击式验证码
此类验证码通过用户点击按钮自动进行智能验证。其常见于调研问卷网站,如问卷星、问卷网等。其作用是防止用户对所发放的试卷进行恶意操作。在网站压力较小时,仅需点击该类型验证码便可以通过智能验证;在网站压力较大时,则需要用户滑动滑块才可以完成验证。当超过同IP 连入阈值时,会出现验证失败的情况,需要用户重新点击或者更换IP才能够完成验证[3] 。
6总结
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!