图片验证码识别方法及装置、电子设备和计算机可读介质与流程

文档序号:22086636发布日期:2020-09-01 20:08阅读:121来源:国知局
图片验证码识别方法及装置、电子设备和计算机可读介质与流程

本发明涉及机器学习技术领域,特别涉及一种基于卷积神经网络模型的图片验证码识别方法及装置、电子设备和计算机可读介质。



背景技术:

目前,图片验证码在网站注册、登陆等情况下得到广泛应用,使用时,图片验证码中通常显示有若干字符(如4个,包括数字、字母等),通过验证用户输入的字符与图片验证码中显示的字符是否一致,来决定用户是否具有注册、登陆网站等权限。现阶段,传统的验证码识别方案有:

(1)人工识别,利用人力识别出图片验证码中的字符,这种方案的缺点是费时费力,人力成本大;

(2)采用传统的图片识别技术,对图片验证码进行图像处理、通过计算字符相似度等手段识别字符,这种方案的缺点是成功率低,耗时长。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中采用人工识别图片验证码而导致费时费力、人力成本大,且采用传统的图片识别技术识别图片验证码而导致成功率低、耗时长的缺陷,提供一种图片验证码识别方法及装置、电子设备和计算机可读介质。

本发明是通过下述技术方案来解决上述技术问题:

一种图片验证码识别方法,包括以下步骤:

获取原始图片,所述原始图片为原始的验证码图片,所述验证码图片包含若干字符;

对所述原始图片进行预处理;

获取所述原始图片中单个字符对应的图片,标记成样本;

构建卷积神经网络模型;

采用所述样本训练所述卷积神经网络模型,以使得所述卷积神经网络模型输出对所述样本的预测值且输出所述预测值的准确率大于准确率阈值;

采用训练后的卷积神经网络模型识别图片验证码。

可选地,对所述原始图片进行预处理的步骤包括:

将所述原始图片转化为灰度图片;

对所述灰度图片二值化,以区分所述灰度图片中的有效信息和无效信息;

将二值化后的灰度图片分割成单个字符对应的图片。

可选地,将二值化后的灰度图片分割成单个字符对应的图片的步骤包括:

腐蚀:将所述灰度图片中的有效信息用255填充;

垂直投影统计每列有效像素个数;

遍历图片宽度,根据每列像素个数动态设定阈值,获取水平位置分割点;

分割字符;

判断分割后的字符宽度是否大于字符宽度阈值,若是,则继续分割,直至分割后的字符宽度小于或等于所述字符宽度阈值,所述字符宽度阈值等于字符平均宽度加上随机值,所述字符平均宽度等于所述原始图片的宽度除以所包含的字符总数。

可选地,所述卷积神经网络模型包括3个卷积层、4个激活函数、3个池化层、4个权值衰减层和2个全连接层中的任意一种或多种。

可选地,采用训练后的卷积神经网络模型识别图片验证码的步骤包括:

获取输入图片;

对所述输入图片进行预处理;

获取所述输入图片中单个字符的图片并输入至训练后的卷积神经网络模型;

通过卷积神经网络模型获取参数矩阵;

经过卷积神经网络模型输出预测值。

一种图片验证码识别装置,包括:

图片获取模块,被配置为获取原始图片,所述原始图片为原始的验证码图片,所述验证码图片包含若干字符;

预处理模块,被配置为对所述原始图片进行预处理;

字符图片获取模块,被配置为获取所述原始图片中单个字符对应的图片,标记成样本;

模型构建模块,被配置为构建卷积神经网络模型;

模型训练模块,被配置为采用所述样本训练所述卷积神经网络模型,以使得所述卷积神经网络模型输出对所述样本的预测值且输出所述预测值的准确率大于准确率阈值;

图片识别模块,被配置为采用训练后的卷积神经网络模型识别图片验证码。

可选地,所述预处理模块被配置为:

将所述原始图片转化为灰度图片;

对所述灰度图片二值化,以区分所述灰度图片中的有效信息和无效信息;

将二值化后的灰度图片分割成单个字符对应的图片。

可选地,所述预处理模块还被配置为:

腐蚀:将所述灰度图片中的有效信息用255填充;

垂直投影统计每列有效像素个数;

遍历图片宽度,根据每列像素个数动态设定阈值,获取水平位置分割点;

分割字符;

判断分割后的字符宽度是否大于字符宽度阈值,若是,则继续分割,直至分割后的字符宽度小于或等于所述字符宽度阈值,所述字符宽度阈值等于字符平均宽度加上随机值,所述字符平均宽度等于所述原始图片的宽度除以所包含的字符总数。

可选地,所述卷积神经网络模型包括3个卷积层、4个激活函数、3个池化层、4个权值衰减层和2个全连接层中的任意一种或多种。

可选地,所述图片识别模块被配置为:

获取输入图片;

对所述输入图片进行预处理;

获取所述输入图片中单个字符的图片并输入至训练后的卷积神经网络模型;

通过卷积神经网络模型获取参数矩阵;

经过卷积神经网络模型输出预测值。

一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现如上述的图片验证码识别方法的步骤。

一种计算机可读介质,其上存储有计算机指令,所述计算机指令在由处理器执行时实现如上述的图片验证码识别方法的步骤。

在符合本领域常识的基础上,所述各优选条件,可任意组合,即得本发明各较佳实施例。

本发明的积极进步效果在于:

本发明提供的图片验证码识别方法及装置、电子设备和计算机可读介质,通过有效的卷积神经网络模型来自动识别并预测图片验证码,从而极大地提升了图片字的识别准确率和识别效率,而且极大地降低了成本和响应时间。

附图说明

在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的所述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。

图1为根据本发明的一实施例的图片验证码识别方法的流程示意图。

图2为根据本发明的一实施例的图片验证码识别方法中图片预处理步骤的流程示意图。

图3为根据本发明的一实施例的图片验证码识别方法中训练模型步骤的流程示意图。

图4为根据本发明的一实施例的图片验证码识别方法中识别图片步骤的流程示意图。

图5a为根据本发明的一实施例的灰度化后的图片示意图。

图5b为根据本发明的一实施例的二值化后的图片示意图。

图5c为根据本发明的一实施例的腐蚀后的图片示意图。

图5d为根据本发明的一实施例的分割后的图片示意图。

图6为根据本发明的一实施例的图片验证码识别装置的结构示意图。

图7为根据本发明另一实施例的实现图片验证码识别方法的电子设备的结构示意图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

为了克服目前存在的上述缺陷,本实施例提供一种图片验证码识别方法,所述识别方法包括以下步骤:获取原始图片,所述原始图片为原始的验证码图片,所述验证码图片包含若干字符;对所述原始图片进行预处理;获取所述原始图片中单个字符对应的图片,标记成样本;构建卷积神经网络模型;采用所述样本训练所述卷积神经网络模型,以使得所述卷积神经网络模型输出对所述样本的预测值且输出所述预测值的准确率大于准确率阈值;采用训练后的卷积神经网络模型识别图片验证码。

在本实施例中,所述图片验证码识别方法通过有效的卷积神经网络模型来自动识别并预测图片验证码,从而极大地提升了图片字的识别准确率和识别效率,而且极大地降低了成本和响应时间。

具体地,作为一实施例,如图1所示,本实施例提供的图片验证码识别方法主要包括以下步骤:

步骤101、获取原始图片。

在本步骤中,获取用于训练模型的原始图片,所述原始图片为原始的验证码图片,所述验证码图片包含若干字符。

在本实施例中,并不具体限定所述原始图片及其包含的字符类型和数量,均可根据实际需求进行相应的选择及调整。

步骤102、对原始图片进行预处理。

具体地,在本步骤中,参考图2所示,图片预处理的步骤具体包括以下步骤:

参考图5a所示,将所述原始图片转化为灰度图片,即将彩色图片转化为灰度图片;

参考图5b所示,对所述灰度图片二值化,以区分所述灰度图片中的有效信息和无效信息,其中,将有效信息(像素用255表示)和背景等无效信息(像素用0表示)区分开来,像素区分的阈值是根据验证码图片的特点自行设定;

将二值化后的灰度图片分割成单个字符对应的图片。

作为另一实施例,优选地,将二值化后的灰度图片分割成单个字符对应的图片的步骤具体包括以下步骤:

腐蚀:将所述灰度图片中的有效信息用255填充(填充效果参考图5c所示);

垂直投影统计每列有效像素个数;

遍历图片宽度,根据每列像素个数动态设定阈值,获取水平位置分割点;

分割字符;

判断分割后的字符宽度是否大于字符宽度阈值,若是,则继续分割,直至分割后的字符宽度小于或等于所述字符宽度阈值,所述字符宽度阈值等于字符平均宽度加上随机值,所述字符平均宽度等于所述原始图片的宽度除以所包含的字符总数。

具体地,在本实施例中,在分割后对分割结果进行判断,以原始图片宽度除以所有字符,得到每个字符的平均大小,然后将每个字符平均值随机增加10~15个像素作为字符宽度阈值,如果分割后字符宽度大于此阈值,则需要进一步分割,直至分割后宽度小于设定阈值,分割位置参考图5d所示。

以下示出图片处理的部分计算机代码,以辅助说明本实施例的图片处理步骤,但本领域技术人员应当清楚,以下代码仅为一种实例,只要能够实现上述相应的功能及步骤,可根据实际需求进行相应的选择及调整。

defvertical_projection_segment(img,captcha_text):

步骤103、获取单个字符的样本图片。

在本步骤中,对所述原始图片进行预处理之后,获取所述原始图片中单个字符对应的图片,标记成样本。

在本实施例中,选取样本数据保持均匀,大小统一,归一化处理。

步骤104、构建模型。

在本步骤中,构建出卷积神经网络模型。

在本实施例中,所述卷积神经网络模型包括3个卷积层、4个激活函数、3个池化层、4个权值衰减层和2个全连接层中的任意一种或多种。

优选地,在本实施例中,所述卷积神经网络模型包括3个卷积convelution层、4个激活函数relu、3个池化pool层、4个权值衰减dropout层和2个全连接fullconnection层。

步骤105、训练模型。

在本步骤中,采用所述样本训练所述卷积神经网络模型,以使得所述卷积神经网络模型输出对所述样本的预测值且输出所述预测值的准确率大于准确率阈值。

具体地,参考图3所示,采用步骤103中生成的样本训练步骤104中构建出的卷积神经网络模型,交叉熵损失不断减少,参数矩阵不断更新,测试准确率达到设定阈值时,保存此时的训练模型。

其中,卷积的目的是提取图片纹理特征,这里的卷积核是3*3,使用了3层卷积,因为对于单字符黑白图片,其有效信息量比较小。卷积后的数据矩阵是满足线性分布的,通过激活函数,可以将线性分布转化为非线性分布,能更逼近真实场景。池化的目的是减小激活函数后矩阵的大小,提取主要特征。全连接的作用是分类器角色,将特征映射到样本标记空间,本质是矩阵变换。损失是衡量真实值与预测值差别,这里采用的是交叉熵损失函数,通过损失函数计算梯度,从而更新参数矩阵。

以下示出训练模型的部分计算机代码,以辅助说明本实施例的训练模型步骤,但本领域技术人员应当清楚,以下代码仅为一种实例,只要能够实现上述相应的功能及步骤,可根据实际需求进行相应的选择及调整。

#定义cnn

步骤106、采用训练后的模型识别图片验证码。

在本步骤中,采用步骤105中生成的训练好的卷积神经网络模型预测图片验证码。

具体地,参考图4所示,识别图片步骤具体包括以下步骤:

获取输入图片;

对所述输入图片进行预处理;

获取所述输入图片中单个字符的图片并输入至训练后的卷积神经网络模型;

通过卷积神经网络模型获取参数矩阵;

经过卷积神经网络模型输出预测值。

以下示出识别图片的部分计算机代码,以辅助说明本实施例的识别图片步骤,但本领域技术人员应当清楚,以下代码仅为一种实例,只要能够实现上述相应的功能及步骤,可根据实际需求进行相应的选择及调整。

本实施例提供的图片验证码识别方法,利用卷积神经网络模型来识别图片字符,从图片获取和处理到图片字符识别,全程自动化,相比于人工识别,极大地降低了人力成本,相比于传统的图片识别技术,卷积神经网络模型可以有效地提升图片识别的准确率,经过验证,传统的图片识别技术准确率在10%~20%,而采用本实施例的图片验证码识别方法的准确率在80%~90%。

具体地,作为一实施例,如图6所示,本实施例还提供一种图片验证码识别装置,所述图片验证码识别装置利用如上述的图片验证码识别方法,所述图片验证码识别装置主要包括图片获取模块21、预处理模块22、字符图片获取模块23、模型构建模块24、模型训练模块25及图片识别模块26。

图片获取模块21被配置为获取用于训练模型的原始图片,所述原始图片为原始的验证码图片,所述验证码图片包含若干字符。

在本实施例中,并不具体限定所述原始图片及其包含的字符类型和数量,均可根据实际需求进行相应的选择及调整。

预处理模块22被配置为对原始图片进行预处理。

具体地,预处理模块22被配置为:

将所述原始图片转化为灰度图片,即将彩色图片转化为灰度图片;

对所述灰度图片二值化,以区分所述灰度图片中的有效信息和无效信息,其中,将有效信息(像素用255表示)和背景等无效信息(像素用0表示)区分开来,像素区分的阈值是根据验证码图片的特点自行设定;

将二值化后的灰度图片分割成单个字符对应的图片。

作为另一实施例,优选地,预处理模块22还被配置为:

腐蚀:将所述灰度图片中的有效信息用255填充;

垂直投影统计每列有效像素个数;

遍历图片宽度,根据每列像素个数动态设定阈值,获取水平位置分割点;

分割字符;

判断分割后的字符宽度是否大于字符宽度阈值,若是,则继续分割,直至分割后的字符宽度小于或等于所述字符宽度阈值,所述字符宽度阈值等于字符平均宽度加上随机值,所述字符平均宽度等于所述原始图片的宽度除以所包含的字符总数。

字符图片获取模块23被配置为获取所述原始图片中单个字符对应的图片,标记成样本。

模型构建模块24被配置为构建出卷积神经网络模型。

在本实施例中,所述卷积神经网络模型包括3个卷积层、4个激活函数、3个池化层、4个权值衰减层和2个全连接层中的任意一种或多种。

优选地,在本实施例中,所述卷积神经网络模型包括3个卷积convelution层、4个激活函数relu、3个池化pool层、4个权值衰减dropout层和2个全连接fullconnection层。

模型训练模块25被配置为采用所述样本训练所述卷积神经网络模型,以使得所述卷积神经网络模型输出对所述样本的预测值且输出所述预测值的准确率大于准确率阈值。

图像识别模块26被配置为采用训练后的模型识别图片验证码。

具体地,图像识别模块26被配置为:

获取输入图片;

对所述输入图片进行预处理;

获取所述输入图片中单个字符的图片并输入至训练后的卷积神经网络模型;

通过卷积神经网络模型获取参数矩阵;

经过卷积神经网络模型输出预测值。

本实施例提供的图片验证码识别装置,利用卷积神经网络模型来识别图片字符,从图片获取和处理到图片字符识别,全程自动化,相比于人工识别,极大地降低了人力成本,相比于传统的图片识别技术,卷积神经网络模型可以有效地提升图片识别的准确率,经过验证,传统的图片识别技术准确率在10%~20%,而采用本实施例的图片验证码识别装置的准确率在80%~90%。

图7为根据本发明另一实施例提供的一种电子设备的结构示意图。电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如上实施例中的图片验证码识别方法。图7显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图7所示,电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。

总线33包括数据总线、地址总线和控制总线。

存储器32可以包括易失性存储器,例如随机存取存储器(ram)321和/或高速缓存存储器322,还可以进一步包括只读存储器(rom)323。

存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明如上实施例中的图片验证码识别方法。

电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图7所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现如上实施例中的图片验证码识别方法中的步骤。

其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。

在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行实现如上实施例中的图片验证码识别方法中的步骤。

其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1