推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python和CNN的验证码识别

更新时间:2019-12-21 09:36:12 大小:1M 上传用户:songhuahua查看TA发布的资源 标签:pythoncnn 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

针对目前互联网上关于页面自动登录环节出现的难点,由于部分登录界面有验证码的存在,自动登录的时长被增加,并且有的验证码难以识别,这就提出了基于Python和卷积神经网络(CNN)相结合的验证码识别。首先本文对三千多张验证码的样本集进行图片预处理,分别有灰度化处理、二值化处理和去噪点处理三步操作。然后利用三个池化层和一个全连接层的结构设计卷积神经网络,随后训练样本集,并对随机的十个样本进行预测。


部分文件列表

文件名 大小
基于Python和CNN的验证码识别.pdf 1M

部分页面预览

(完整内容请下载后查看)
22卷第6  
20196  
Vol.22 No.6  
Jun. 2019  
软件工程  
SOFTWARE ENGINEERING  
文章编号:  
2096-1472(2019)-06-01-04  
DOI:10.19644/j.cnki.issn2096-1472.2019.06.001  
基于PythonCNN的验证码识别  
晋大鹏,张天心,刘  涛  
(上海理工大学,上海 200093)  
   要:针对目前互联网上关于页面自动登录环节出现的难点,由于部分登录界面有验证码的存在,自动登录的  
时长被增加,并且有的验证码难以识别,这就提出了基于Python和卷积神经网络(CNN)相结合的验证码识别。首先本  
文对三千多张验证码的样本集进行图片预处理,分别有灰度化处理、二值化处理和去噪点处理三步操作。然后利用三个  
池化层和一个全连接层的结构设计卷积神经网络,随后训练样本集,并对随机的十个样本进行预测。  
关键词:验证码;Python;二值化;卷积神经网络  
中图分类号:  
文献标识码:  
A
TP315  
Verification Code Recognition Based on Python and CNN  
JIN Dapeng,ZHANG Tianxin,LIU Tao  
( University of Shanghai for Science and Technology,Shanghai 200093,China)  
Abstract:The paper focuses on the current difficulties in the automatic login of pages on the Internet.Due to the  
existence of verifications code in some login interfaces,the duration of automatic login is increased,and some verification  
codes are difficult to identify.Accordingly,based on Python and Convolutional Neural Network (CNN),a combined  
identification of verification codes is proposed in this study.Firstly,this paper preprocesses the sample set of more than 3,000  
verification codes,including the three processing steps of graying,binarization and denoising.The Convolutional Neural  
Networ is then designed using three pooled layers and a fully connected layer structure,followed by training the sample set  
and predicting ten random samples.  
Keywords:verification code;Python;binarization;Convolutional Neural Network  
至脑电波分析。  
1 引言(Introduction)  
伴随着互联网行业的兴起,人们的生活工作也越来越便  
利,很多需要大量工作量、计算量的工作渐渐被计算机所取  
代,在减轻人类压力的同时,也给了研究人员继续研究机器  
学习的动力。  
2 图片预处理(Image preprocessing)  
2.1 灰度化  
一般来说,我们获取到的图片都是彩色的图像,它的  
类型主要有RGB和CMYK两种,其中RGB彩色图像是由红  
色、绿色和蓝色组成;CMYK则是由青C、品M、黄Y和黑  
组成。识别图片中最重要的信息是梯度,梯度就代表着边  
缘,这是图片最本质的部分,而计算梯度就需要进行灰度化  
处理。灰度化就是将彩色的,含有很多噪点的图像转化为灰  
度图像的过程,也叫作灰度化处理[1]。在一般RGB模型中,  
如果R=G=B=某个定值时,其彩色就表示一个等于特定值的  
颜色,那个定值叫灰度值。因此,灰度化处理之后的图像中  
任意单个像素仅需要一个字节用来存取灰度值,0—255就是  
其中灰度值的取值范围。R、G、B三个分量决定了彩色图像  
验证码本身是用来区分服务对象是人还是计算机脚本  
的一种公共全自动程序,当前大多数浏览器都具有记住账号  
密码的功能,然而为了防止频繁的自动登录,减轻服务器端  
的压力,并在一定程度上防止机器人、外挂等非法程序的攻  
击,验证码就被研发了出来。  
卷积神经网络(CNN)是受对猫视觉皮层电生理研究启发  
所提出的,Yann  Lecun最早将CNN用于手写数字识别这一  
方向。时至今日,CNN在多个方向都有应用,例如,语音识  
别、人脸识别、通用物体识别、运动分析、自然语言处理甚  
                                                   软件工程                                                 
   
2019 6  
2
中的每个像素的颜色,每个分量又有255个值可以取,因此这  
(3)计算平均灰度值。利用以下公式计算平均灰度值,其  
N1(j)N2(j)代表当进行到第j次迭代时,C1C2两个区域内的  
样一个像素点可以有255*255*255=16581375的颜色的变化范  
围。与之对应的是,灰度图像的一个像素点仅有255种变化范  
围,因此在进行图像处理时,一般会先将各种格式的图像转  
变为灰度图像,以便之后对图像的计算量减轻[2]。灰度图像的  
描述和彩色图像一样仍然反映了整幅图像的整体和局部色度  
和亮度等级的分布和特征。对于灰度化的方式有分量法、最  
大值法、平均值法和加权平均值法等,以平均值法为例,求  
出R、G、B这三个分量的在彩色图像中的亮度,并根据三个  
分量的亮度求简单的平均值,将计算出来的值输出进而得到  
所需要的灰度图。其实现的表达式如下:Gray(ij)=(r(ij)+  
g(ij)+b(ij))/3。  
像素点数目,f(xy)代表图像中点(xy)处的灰度值。       
(4)计算门限值。利用以下公式计算,公式中变量意义同  
上。  
(5)重复迭代。另其中的j=j+1,重复迭代步骤(1)—(3),  
知道其中的T(j+1)和(j)的差值小于其中的规定值。  
2.2 二值化处理  
任意图像的像素一般在二维空间中都会对应一个特定存  
在的位置,并且包含一个或者多个与该像素相关的采样值组  
成数值。通过对图片进行了灰度化处理后,还需要再把获取  
的灰度图像进行再处理,也就是二值化操作[3]。对于二值化,  
其目的是在不改变图片主题内容和轮廓的基础上使图片变得  
简单,并使需要操作的数据量减小,这样便于图像的再处  
理。对灰度图像进行二值化再处理一般最常用的方法是阈值  
[4],就是利用图片中目标和背景的差异,从而将图像分别定  
义为两个不相同的级别,选定一个恰当的阈值,从而确定某  
个像素到底是目标还是背景,进而获得二值化处理之后的图  
像。  
2.3 求连通域面积去噪点处理  
当图片经过了灰度化和二值化后,原始图片数据上一般  
只存在噪点和干扰线了,这时候就需要进行降噪处理。一般  
来说,遇到较大的早点,会先去求它的面积,因为字符像素  
(pixel)大部分时相互连通的,因此求出每个相互连通的黑色  
点的个数,如果个数超过一定值,那么证明这一片像素集很  
可能是字符的部分。反之,若一个连通域内像素集个数很  
少,那么基本就可以确定这一片像素集是噪点,应当去除。  
对于求连通域的面积,有很多API可以用,其主体思路就是  
先求出连通域的外部轮廓,随后用指定的形状进行拟合,  
求出那个连通域的面积。但这种方法的误差较大,在这里  
我使用了泛水填充法[5],API为floodFill(MatꢀcvPoint(ij)ꢀ  
cvScalar(color))ꢁ其中Mat为图片的矩阵对象,cvPoint(ij)  
为图片中位置为(ij)的一个点,cvScalar为颜色对象,该函  
数意义是将与坐标为cvPoint(ij)连通的所有点的颜色都改为  
cvScalar(color),这个过程就像往一张纸上滴一滴水,水泛染  
的样子,因此叫做泛水填充法。其具体步骤如下:  
二值化处理的基本过程:  
(1)首先对初始的图像进行中低通滤波操作,也就是对图  
像的预处理,从而起到降低或者去除噪声的作用。  
(2)用算法确定最佳阈值T  
(3)每当像素的灰度值大于或等于该阈值的都设置成255,  
小于这个阈值的全部设置成0。这样处理后的图像就只有黑  
白两种颜色,进而就将灰度范围分割成了目标和背景两个大  
类,最终就实现了对图像的二值化操作。  
(1)计算时,每扫描到一个灰度值为0的黑点时,就将与该  
点连通的所有点灰度值改为1,因此该连通域的点都不会再做  
二次计算了。下一个灰度值为0的点,其所有连通点改为2,  
这样一次迭代,直到扫描完所有点。  
其中,公式为:  
其中,最佳阈值的选取,一般有五种方法:(1)双峰法;(2)P  
参数法;(3)最大类间房差法(Otsu、大津法);(4)最大熵阈值  
法;(5)迭代法(最佳阈值法)。  
(2)再次扫描所有点,统计各个灰度值所对应的个数,各  
个灰度值的点的个数对应该连通域的大小,并且由于不同连  
通域的灰度值不同,因此每个点仅不重复的计算一次。这样  
就统计到了每个连通域的大小,再根据预设的阈值,判断该  
连通域的大小是否低于阈值,如果低于,则判定其为噪点,  
该算法适合检查较大的噪点。  
在这里本文选取迭代法。迭代法是利用类似于数学归纳  
法的无限逼近的思想实现的,可以总结为五个步骤:  
(1)初始化。选取一个最初的阈值T(j),一般来说我们选择  
整体图像的平均灰度值用作初始阈值。其中j为迭代的次数,  
开始是j的值为0。  
基于以上处理之后的图片,可以在保留原始图片信息的  
前提下,将数据预处理,使样本集体积缩小,便于后面的卷  
积神经网络的训练和预测。  
(j)  
(2)分割。以初始阈值T(j)为分割函数,分割图像得到C1  
C2(j)两个大区域。  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载