CN115422518A - 基于无数据知识蒸馏的文本验证码识别方法 - Google Patents

基于无数据知识蒸馏的文本验证码识别方法 Download PDF

Info

Publication number
CN115422518A
CN115422518A CN202211003447.5A CN202211003447A CN115422518A CN 115422518 A CN115422518 A CN 115422518A CN 202211003447 A CN202211003447 A CN 202211003447A CN 115422518 A CN115422518 A CN 115422518A
Authority
CN
China
Prior art keywords
verification code
model
generator
training
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211003447.5A
Other languages
English (en)
Inventor
李青茹
于瑞涛
王方伟
王长广
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hebei Normal University
Original Assignee
Hebei Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hebei Normal University filed Critical Hebei Normal University
Priority to CN202211003447.5A priority Critical patent/CN115422518A/zh
Publication of CN115422518A publication Critical patent/CN115422518A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/36User authentication by graphic or iconic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Medical Informatics (AREA)
  • Computer Security & Cryptography (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Image Analysis (AREA)

Abstract

本发明涉及一种基于无数据知识蒸馏的文本验证码识别方法,采用如下步骤:构建验证码数据集;图像预处理;构建教师模型并使用预处理后的程序验证码训练;构建一个生成器,将训练好的教师模型作为鉴别器,生成器与鉴别器对抗生成训练样本,使生成器生成的伪验证码教师模型无法判别;生成器生成的伪验证码作为训练集与教师模型的蒸馏损失来共同训练学生模型;将真实验证码预处理之后放入训练好的学生模型识别;本发明解决了真实验证码难以大量获取以及打标签所耗费成本过于巨大的问题;降低了采集大量真实数据的困难,而且性能也能保持在很高的水平。

Description

基于无数据知识蒸馏的文本验证码识别方法
技术领域
本发明涉及一种基于无数据知识蒸馏的文本验证码识别方法,属于机器学习和网络安全技术领域。
背景技术
验证码(Completely Automated Public Turing test to tell Computers andHumans Apart,CAPTCHA)是设计用于区分计算机与人类用户的安全机制,它被广泛应用于网银登录、账号注册、密码找回等验证环节,以防止网站受到恶意程序的自动攻击。
现有验证码机制可以划分为三类:文本验证码、图像验证码和语音验证码,其中文本验证码以其方便快捷的特点被大多数主流网站使用,是当下使用最广泛的验证码机制,目前对于它的识别研究已经成为了一个比较热门的领域。文本验证码由多个随机产生的字符组生成。现阶段虽然有很多文本验证码替代方案,但许多网站和应用程序仍然使用其作为安全和身份验证的主要手段。
目前,为了增加计算机程序对文本类验证码自动识别的难度,设计时普遍将复杂干扰信息、字符扭曲、粘连和旋转、不同类型字体等安全性特征随机组合使用,由于组合了多种安全特征,传统的验证码识别方法对此类验证码的识别率非常低。因此在验证码识别领域引入了深度学习卷积神经网络,虽然取得了不错的效果,但如果想要获得更高的识别率,就需要增加卷积神经网络的层数,层数的增多使得卷积神经网络的规模太过于巨大,构建网络也就更加困难,识别起来速度也会很慢,使得识别过程变得复杂;同时由于卷积神经网络需要反向传播的算法,这并不是一个深度学习中的高效算法,因为它对数据量的需求很大,然而当前各大网站的验证码图片收集起来比较困难,即使可以收集下来,为验证码图片打标签也是一件耗时耗力的工作。
发明内容
本发明要解决的技术问题是提供一种获取验证码方便、加快文本验证码识别的速率的基于无数据知识蒸馏的文本验证码识别方法。
本发明采用如下技术方案:
本发明基于无数据知识蒸馏的文本验证码识别方法,包括如下步骤:
步骤1、构建验证码数据集;
1.1)利用python的captcha库生成程序验证码图片作为训练集;
1.2)从网站获取真实验证码打好标签作为测试集;
步骤2、图像预处理,将步骤1.1得到的程序验证码图片去除会造成识别干扰的信息;
2.1)程序验证码图片统一尺寸,灰度化处理;
2.2)利用条件生成对抗网络的方法对验证码图片去除背景干扰信息并拉伸字符间距;
2.3)将步骤2.2处理好的验证码图片分割为单个字符;
步骤3、构建教师模型并使用预处理后的程序验证码训练;
步骤4、构建一个生成器,将训练好的教师模型作为鉴别器,生成器与鉴别器对抗生成训练样本,使生成器生成的伪验证码教师模型无法判别;
步骤5、初始化一个学生模型,使用步骤4中生成器生成的伪验证码作为训练集,与教师模型的蒸馏损失来共同训练学生模型;
步骤6、将步骤1.2中得到的真实验证码预处理之后放入训练好的学生模型识别。
本发明步骤4的生成器由三个损失函数构成;具体为
①one-hot loss:在图像分类任务中,对于真实的数据,卷积神经网络最后的输出层的输出接近一个one-hot向量,其中,在分类正确类别上的输出接近1,其它类别的输出接近0;因此,如果生成器生成的图片接近真实数据,那么它在教师网络上的输出应该同样接近于一个one-hot向量;采用如下公式:
Figure BDA0003807228520000021
公式中:Hcross表示交叉熵损失函数,用于衡量教师模型的输出与预测标签的差异;n表示最终输出图片的数量;
将生成器与教师模型分别表示为G和NT,给定一组随机向量{z1,z2,…,zn},将这些向量生成的图像输入到教师模型NT中,得到教师模型NT的输出
Figure BDA0003807228520000031
预测标签{t1,t2,…,tn}是
Figure BDA00038072285200000310
中的最大值;其中,如果生成器G生成的图像与教师模型的训练数据具有相同的分布,则它们也应该具有与训练数据类似的输出;
②激活损失函数:除了深度神经网络预测的类标签外,卷积层提取的中间特征也是输入图像的重要表示,卷积滤波器提取的特征也包含有价值的输入图像信息;由于教师模型中的过滤器已被训练以提取训练数据中的固有模式,如果输入图像是真实的,而不是一些随机向量,则特征映射往往会收到更高的激活值;则采用activation Loss来约束生成数据,采用如下公式:
Figure BDA0003807228520000032
其中‖·‖1是传统的l1范数,
Figure BDA0003807228520000033
表示教师模型提取的特征,它对应于全连接层之前的输出;
③生成图像信息熵损失函数:为简化深度神经网络的训练过程,每个类别中的训练示例数通常是平衡的,采用信息熵损失来衡量生成图像的类别平衡,当loss最小时,生成器生成的每个类别的图片的概率大致相等;给定概率向量p=(p1,p2,…,pk),测量p的混淆程度的信息熵计算为
Figure BDA0003807228520000034
Hinfo(p)的值表示p拥有的信息量,当所有变量都等于
Figure BDA0003807228520000035
时,信息量将取最大值;给定一组输出向量
Figure BDA0003807228520000036
其中
Figure BDA0003807228520000037
每类生成图像的频率分布为
Figure BDA0003807228520000038
则生成图像的信息熵损失定义为:
Figure BDA0003807228520000039
当损失取最小值时,向量
Figure BDA0003807228520000041
中的每个元素都将等于
Figure BDA0003807228520000042
即生成器G可以以大致相同的概率生成每个类别的图像;则最小化生成图像的信息熵可以得到一组平衡的合成图像;
综上,适用于生成器的总体损失函数为:
LTotal=Loh+αLa+βLie (4)
通过设置上述三个损失函数训练生成器,使其生成教师模型,判断不出真假的伪验证码。
本发明步骤5具体为:
S1:将步骤4中生成的伪验证码作为学生模型的训练集,用教师模型在引入温度参数T后产生的softmax输出作为软标签,学生模型在与教师模型相同温度T条件下的softmax输出和教师模型中得到的软标签的交叉熵作为Loss函数的第一部分Lsoft,具体公式如下:
Figure BDA0003807228520000043
公式中
Figure BDA0003807228520000044
指教师模型在温度T的条件下softmax输出在第i类上的值,
Figure BDA0003807228520000045
指学生模型在温度T的条件下softmax输出在第i类上的值;
S2:学生模型在引入温度参数T的条件下的softmax输出和ground truth的交叉熵损失函数就是Loss函数的第二部分Lhard,其公式如下:
Figure BDA0003807228520000046
公式中,3i指在第i类上的ground truth值,3i∈{0,1},正标签取1,负标签取0。
本发明知识蒸馏采用软硬标签加权结合的交叉熵损失函数来训练学生模型,引入参数α之后,总体加权函数形式如下:
Loss=α*Lsoft+(1-α)*Lhard (7)。
本发明步骤2.2中,构建两个生成对抗网络,其中用于去除背景干扰信息的网络定义为RBNet,用于拉伸字符间距的网络定义为CSNet,这两个网络都使用程序验证码作为样本进行训练;训练RBNet时,其约束条件为含有干扰信息的验证码,监督标签为无干扰信息的验证码,生成器在约束条件的约束下生成无干扰信息的验证码,CSNet则是以字符粘连的验证码作为约束条件,以不含粘连字符的验证码作为监督标签,通过生成式模型来生成字符间距较大的验证码,由于CSNet对字符间距的有效拉伸,可以消除字符粘连。
本发明积极效果如下:本发明通过构建生成器生成大量伪验证码,代替真实验证码训练学生模型,也解决了真实验证码难以大量获取以及打标签所耗费成本过于巨大的问题;知识蒸馏方法的使用本身就可以大大加快文本验证码识别的速率,无数据知识蒸馏更是可以做到不使用真实验证码,这样不仅降低了采集大量真实数据的困难,而且性能也能保持在很高的水平。
本发明教师模型学习到的知识去指导学生模型训练,使得学生模型具有与教师模型相当的性能,使参数数量大幅降低,从而实现模型压缩与加速。
附图说明
图1是本发明的方法流程图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,基于无数据知识蒸馏的文本验证码识别方法包括如下步骤:
步骤1、构建验证码数据集:
1.1)利用python的captcha库生成程序验证码作为训练集;
1.2)利用爬虫技术从各网站爬取一些真实验证码打好标签作为测试集,本发明爬取了新浪,知网和360等网站的验证码;
步骤2、图像预处理,将步骤1.1得到的程序验证码图片去除可能会造成识别干扰的信息;
2.1)统一尺寸,灰度化处理;
统一尺寸可以通过等比例扩大或缩小至长边达到预设值后,对短边两侧同时使用白色填充的方法进行扩大或缩小;灰度化,采用如下公式:
Gray=R*0.299+G*0.587+B*0.114
将某一像素点三个分量值中的加权值当作灰度图中的像素值,人眼对绿色和蓝色的敏感度最高,因此,B的值是最小的,G的值是最大的;固定的长宽作为超参数方便后续的网络对其训练,然后再进行灰度化处理,减少颜色对网络的影响,提高网络的鲁棒性;
2.2)利用条件生成对抗网络的方法对验证码图片去除背景干扰信息并拉伸字符间距,条件生成对抗网络(CGAN)的具体实现过程如下:
传统的生成式对抗网络(GAN)根据随机噪声z来生成图片的方式太自由,缺乏用户控制能力,通过在生成式模型和判别式模型中加入约束条件来解决该问题,即条件生成对抗网络(CGAN),其训练时是在生成器G和判别器D中分别加入约束条件y,G(z|y)是指生成式模型在约束条件的约束下生成的数据,和约束条件同时输入判别式模型之后输出条件概率为D(G(z|y)),真实数据x和约束条件y同时输入判别式模型后输出条件概率为D(x|y),
CGAN的训练过程和GAN的训练过程相同,依次固定生成式模型来优化判别式模型,固定判别式模型来优化生成式模型,其优化问题可视为一个带条件概率的最小最大值问题,其整体目标函数可描述为:
Figure BDA0003807228520000061
公式中:G表示为生成式模型,D表示为判别式模型,x表示为输出图像(真实图像),y表示为约束条件,z表示随机噪声,E(·)表示计算期望值,Rdta表示分布函数。真实图像x和约束条件y同时输入判别式模型D后输出条件概率为D(x|y),G(z|y)是指生成式模型在约束条件y的约束下生成的数据,和约束条件同时输入判别式模型之后输出条件概率为D(G(z|y));
优化过程中当判别式模型的输入为真实数据x和约束条件y时,判别式模型需使得条件概率D(x|y)趋近于1,当判别式模型的输入为生成数据G(z|y)和约束条件y时,判别式模型需使得条件概率D(G(z|y))趋近于0,此时生成式模型则需要使得条件概率D(G(z|y))趋近于1,来提高生成效果。
本发明采用条件生成对抗网络的方法对验证码图片去除背景干扰信息并拉伸字符间距,其中去除背景干扰信息网络定义为RBNet,拉伸字符间距网络定义为CSNet,这两个网络都使用程序验证码作为样本进行训练;训练RBNet时,其约束条件为含有干扰信息的验证码,监督标签为无干扰信息的验证码,生成式模型在约束条件的约束下生成无干扰信息的验证码,CSNet则是以字符粘连的验证码作为约束条件,以不含粘连字符的验证码作为监督标签,通过生成式模型来生成字符间距较大的验证码,由于CSNet对字符间距的有效拉伸,基本可以消除字符粘连的问题。
2.3)将步骤2.2中处理好的验证码图片进行分割,分割为单个字符;
对处理后的图像进行二值化处理,即将图像由灰度模式转化至黑白模式,选择二值化的阈值为200;在二值化处理后的图片中提取单个字符,利用OpenCV中的最小外接矩形函数来提取,对提取后的字符图片要有一定要求,如图片的大小要超过100,否则可能会得到其他不想要的图片;
步骤3、构建教师模型并使用预处理后的程序验证码训练;
教师模型的选择,主要考虑的参数为模型对于验证码的识别准确率,与其他传统卷积神经网络模型相比,ResNet-34网络模型的分类效果最佳,因而本发明教师模型采用ResNet-34网络模型;
本发明教师模型所用的训练数据来自python的captcha库生成的程序验证码预处理之后的单个字符图片,为了提高机器学习的效率,需要构建队列模式来减少机器读取数据的等待时间;TensorFlow提供了tfrecord格式文件,结合队列模式能够方便数据的读取操作;将处理好的验证码图片转换成tfrecord格式文件;将每1000张图片制作成一个tfrecord文件,图片的像素矩阵和图片的标签都做成了二进制的数据流,存入tfrecord文件中;采用线程来管理队列,每20步输出一次loss值,每100步输出一次准确率,每20000步保存一次模型,batchsize设为2,按照整个流程训练了14万步停止;
步骤4、构建生成器并训练;
在生成对抗网络中,鉴别器D可以从样本中学习表示的层次结构,这有助于鉴别器D在图像分类等其他任务中的泛化。由于深度神经网络已经在大规模数据集上进行了良好的训练,因此它也可以从图像中提取语义特征,而不是像一般的生成对抗网络那样训练一个新的鉴别器。本发明将给定的训练好的深度神经网络视为一个固定的鉴别器,直接构建并优化一个生成器G,而无需同时训练鉴别器D,即在训练生成器G期间,鉴别器D的参数是固定的,此外,由于鉴别器的输出是一个概率,指示输入图像是真是假,然而,一般的深度神经网络作为鉴别器,其输出是将图像分类为不同的类别,而不是指示图像的真实性,一般生成对抗网络中的损失函数不适用于此网络中生成器的训练。
因此,本发明将预训练好的教师模型作为鉴别器,引入三个新的损失函数来构造一个生成器,使其与鉴别器对抗生成训练样本,下面是训练生成器的三个损失函数:
①one-hot loss:在图像分类任务中,对于真实的数据,网络的输出往往接近一个one-hot向量,其中,在分类正确类别上的输出接近1,其它类别的输出接近0。因此,如果生成器生成的图片接近真实数据,那么它在教师网络上的输出应该同样接近于一个one-hot向量;采用如下公式:
Figure BDA0003807228520000081
公式中:Hcross表示交叉熵损失函数,用于衡量教师模型的输出与预测标签的差异;n表示最终输出图片的数量;
将生成器与教师模型分别表示为G和NT,给定一组随机向量{z1,z2,…,zn},将这些向量生成的图像输入到教师模型HT中,得到教师模型NT的输出
Figure BDA0003807228520000082
预测标签ti={t1,t2,…,tn}是
Figure BDA0003807228520000083
中的最大值;其中,如果生成器G生成的图像与教师模型的训练数据具有相同的分布,则它们也应该具有与训练数据类似的输出;
②激活损失函数:除了深度神经网络预测的类标签外,卷积层提取的中间特征也是输入图像的重要表示。卷积滤波器提取的特征也包含有价值的输入图像信息。由于教师模型中的过滤器已被训练以提取训练数据中的固有模式,如果输入图像是真实的,而不是一些随机向量,则特征映射往往会收到更高的激活值。因此可以采用activation Loss来约束生成数据:
Figure BDA0003807228520000091
其中‖·‖1是传统的l1范数,将教师模型提取的特征表示为
Figure BDA00038072285200000910
它对应于全连接层之前的输出;
③生成图像信息熵损失函数:为了简化深度神经网络的训练过程,每个类别中的训练示例数通常是平衡的,本发明使用信息熵损失来衡量生成图像的类别平衡,当loss最小时,生成器生成的每个类别的图片的概率大致相等;给定概率向量p=(p1,p2,…,pk),测量p的混淆程度的信息熵计算为
Figure BDA0003807228520000092
Hinfo(p)的值表示p拥有的信息量,当所有变量都等于
Figure BDA0003807228520000093
时,信息量将取最大值;给定一组输出向量
Figure BDA0003807228520000094
其中
Figure BDA0003807228520000095
每类生成图像的频率分布为
Figure BDA0003807228520000096
因此,生成图像的信息熵损失定义为
Figure BDA0003807228520000097
当损失取最小值时,向量
Figure BDA0003807228520000098
中的每个元素都将等于
Figure BDA0003807228520000099
即生成器G可以以大致相同的概率生成每个类别的图像;因此,最小化生成图像的信息熵可以得到一组平衡的合成图像;
因此,适用于生成器的总体损失函数为:
LTotal=Loh+αLa+βLie (4)
通过设置上述三个损失函数训练生成器,使其生成教师模型(鉴别器)判断不出真假的伪验证码;
步骤5、初始化一个学生模型,本发明使用了ResNet-18网络模型,使用步骤4中生成器生成的伪验证码作为训练集,加上教师模型的蒸馏损失来共同训练学生模型具体操作如下:
S1:将步骤4中生成的伪验证码作为学生模型的训练集,用教师模型在引入温度参数T后的softmax输出作为软标签,学生模型在与教师模型相同温度T条件下的softmax输出和教师模型中得到的软标签的交叉熵作为Loss函数的第一部分Lsoft,具体形式如下:
Figure BDA0003807228520000101
其中
Figure BDA0003807228520000102
指教师模型在温度T的条件下softmax输出在第i类上的值。
Figure BDA0003807228520000103
指学生模型在温度T的条件下softmax输出在第i类上的值。
S2:学生模型在不引入温度参数T的条件下的softmax输出和ground truth的交叉熵损失函数就是Loss函数的第二部分Lhard,公式如下:
Figure BDA0003807228520000104
其中,ci指在第i类上的ground truth值,ci∈{0,1},正标签取1,负标签取0;
综上,教师模型与学生模型蒸馏损失函数包括两部分:
①Lsoft:学生模型软化后的softmax输出值(T取2)与教师模型生成的软标签之间的损失(KL散度);
②Lhard:学生模型不引入温度参数T的softmax输出值与真实标签的之间的损失(交叉熵);
使用软标签是为了更好的让模型学习数据的分布,知识蒸馏的方式不是传统的多个模型求均值,而是采用软硬标签加权结合的交叉熵损失函数来训练小型模型;总体加权函数形式如下:
Loss=α*Lsoft+(1-α)*Lhard (7)
本发明所述教师模型的蒸馏损失:对于一般的分类问题如图片分类,输入一张图片后,经过神经网络各种非线性变换,在网络最后的softmax层之前,会得到这张图片属于各个类别的大小数值zi,某个类别的zi数值越大,则模型认为输入图片属于这个类别的可能性就越大,logits就是汇总了网络内部各种信息之后,得出的属于各个类别的汇总分值zi,但是logits不是概率值,因此神经网络使用softmax层来实现logits向probabilities的转换;原始的softmax函数:
Figure BDA0003807228520000111
但是直接使用softmax层的输出值作为软标签,这又会带来一个问题:当softmax输出的概率分布熵相对较小时,负标签的值都很接近0,对损失函数的贡献非常小,小到可以忽略不计;因此“温度”这个变量就派上了用场;下述公式是加了温度这个变量之后的softmax函数:
Figure BDA0003807228520000112
其中qi是每个类别输出的概率,zi是每个类别输出的logits,T就是温度。当温度T=1时,这就是标准的softmax公式。T越高,softmax的output probability distribution越趋于平滑,其分布的熵越大,负标签携带的信息会被相对地放大,模型训练将更加关注负标签;
步骤6、将步骤1.2中得到的真实验证码预处理之后放入训练好的学生模型识别;将步骤1爬取到的验证码先进行图像预处理,处理完之后放入训练好的学生模型中进行预测分类即可。
如下为采用本发明方法的具体实施例:
步骤1、构建验证码数据集:
1.1)利用python的captcha库生成程序验证码作为训练集,部分训练集如下:
Figure BDA0003807228520000121
1.2)从知网网站上爬取了500张真实验证码打好标签作为测试集,部分测试集如下:
Figure BDA0003807228520000122
步骤2、图像预处理,将步骤1.1得到的程序验证码图片去除可能会造成识别干扰的信息;
2.1)统一尺寸,灰度化处理;
统一尺寸可以通过等比例扩大或缩小至长边达到预设值后,对短边两侧同时使用白色填充的方法进行扩大或缩小,灰度化;
2.2)利用条件生成对抗网络的方法对验证码图片去除背景干扰信息并拉伸字符间距:
CGAN的训练过程和GAN的训练过程相同,依次固定生成式模型来优化判别式模型,固定判别式模型来优化生成式模型,其优化问题可视为一个带条件概率的最小最大值问题,其整体目标函数采用如下公式所示:
Figure BDA0003807228520000123
本实施例采用条件生成对抗网络的方法对验证码图片去除背景干扰信息并拉伸字符间距,其中去除背景干扰信息网络定义为RBNet,拉伸字符间距网络定义为CSNet,这两个网络都使用程序验证码作为样本进行训练;
2.2.1)训练RBNet时,其约束条件为含有干扰信息的验证码,监督标签为无干扰信息的验证码,生成式模型在约束条件的约束下生成无干扰信息的验证码;
2.2.2)CSNet则是以字符粘连的验证码作为约束条件,以不含粘连字符的验证码作为监督标签,通过生成式模型来生成字符间距较大的验证码;
2.3)对处理后的图像进行二值化处理,即将图像由灰度模式转化至黑白模式,选择二值化的阈值为200;在二值化处理后的图片中提取单个字符,利用OpenCV中的最小外接矩形函数来提取,对提取后的字符图片要有一定要求,如图片的大小要超过100,否则可能会得到其他不想要的图片;
步骤3、构建教师模型并使用预处理后的程序验证码训练;
本实施例教师模型采用ResNet-34网络模型;教师模型所用的训练数据来自python的captcha库生成的程序验证码预处理之后的单个字符图片,为了提高机器学习的效率,需要构建队列模式来减少机器读取数据的等待时间;TensorFlow提供了tfrecord格式文件,结合队列模式能够方便数据的读取操作;将处理好的验证码图片转换成tfrecord格式文件;将每1000张图片制作成一个tfrecord文件,图片的像素矩阵和图片的标签都做成了二进制的数据流,存入tfrecord文件中;采用线程来管理队列,每20步输出一次loss值,每100步输出一次准确率,每20000步保存一次模型,batchsize设为2,按照整个流程训练了14万步停止;
步骤4、构建生成器并训练;
本实施例将预训练好的教师模型作为鉴别器,引入三个新的损失函数来构造一个生成器,使其与鉴别器对抗生成训练样本,下面是训练生成器的三个损失函数:
①one-hot loss:在图像分类任务中,对于真实的数据,网络的输出往往接近一个one-hot向量,其中,在分类正确类别上的输出接近1,其它类别的输出接近0;因此,如果生成器生成的图片接近真实数据,那么它在教师网络上的输出应该同样接近于一个one-hot向量;采用如下公式:
Figure BDA0003807228520000131
公式中:Hcross表示交叉熵损失函数,用于衡量教师模型的输出与预测标签的差异;n表示最终输出图片的数量;
将生成器与教师模型分别表示为G和NT,给定一组随机向量{z1,z2,…,zn},将这些向量生成的图像输入到教师模型NT中,得到教师模型NT的输出
Figure BDA0003807228520000141
预测标签
Figure BDA0003807228520000142
Figure BDA0003807228520000143
中的最大值;其中,如果生成器G生成的图像与教师模型的训练数据具有相同的分布,则它们也应该具有与训练数据类似的输出;
②激活损失函数:除了深度神经网络预测的类标签外,卷积层提取的中间特征也是输入图像的重要表示。卷积滤波器提取的特征也包含有价值的输入图像信息;由于教师模型中的过滤器已被训练以提取训练数据中的固有模式,如果输入图像是真实的,而不是一些随机向量,则特征映射往往会收到更高的激活值;因此可以采用activation Loss来约束生成数据:
Figure BDA0003807228520000144
其中‖·‖1是传统的l1范数,将教师模型提取的特征表示为
Figure BDA00038072285200001411
它对应于全连接层之前的输出。
③生成图像信息熵损失函数:为了简化深度神经网络的训练过程,每个类别中的训练示例数通常是平衡的,本实施例使用信息熵损失来衡量生成图像的类别平衡,当loss最小时,生成器生成的每个类别的图片的概率大致相等;给定概率向量p=(p1,p2,…,pk),测量p的混淆程度的信息熵计算为
Figure BDA0003807228520000145
Hinfo(p)的值表示p拥有的信息量,当所有变量都等于
Figure BDA0003807228520000146
时,信息量将取最大值。给定一组输出向量
Figure BDA0003807228520000147
其中
Figure BDA0003807228520000148
每类生成图像的频率分布为
Figure BDA0003807228520000149
因此,生成图像的信息熵损失定义为
Figure BDA00038072285200001410
当损失取最小值时,向量
Figure BDA0003807228520000151
中的每个元素都将等于
Figure BDA0003807228520000152
即生成器G可以以大致相同的概率生成每个类别的图像。因此,最小化生成图像的信息熵可以得到一组平衡的合成图像。
因此,适用于生成器的总体损失函数为:
LTotal=Loh+αLa+βLie (4)
通过设置上述三个损失函数训练生成器,使其生成教师模型(鉴别器)判断不出真假的伪验证码。
步骤5、初始化一个学生模型,本实施例使用了ResNet-18网络模型,使用步骤4中生成器生成的伪验证码作为训练集,加上教师模型的蒸馏损失来共同训练学生模型具体操作如下:
S1:将步骤4中生成的伪验证码作为学生模型的训练集,用教师模型在引入温度参数T后的softmax输出作为软标签,学生模型在与教师模型相同温度T条件下的softmax输出和教师模型中得到的软标签的交叉熵作为Loss函数的第一部分Lsoft,具体形式如下:
Figure BDA0003807228520000153
其中
Figure BDA0003807228520000154
指教师模型在温度T的条件下softmax输出在第i类上的值,
Figure BDA0003807228520000155
指学生模型在温度T的条件下softmax输出在第i类上的值;
S2:学生模型在不引入温度参数T的条件下的softmax输出和ground truth的交叉熵损失函数就是Loss函数的第二部分Lhard,公式如下:
Figure BDA0003807228520000156
其中,ci指在第i类上的ground truth值,ci∈{0,1},正标签取1,负标签取0;
综上,教师模型与学生模型蒸馏损失函数包括两部分:
①Lsoft:学生模型软化后的softmax输出值(T=2)与教师模型生成的软标签之间的损失(KL散度);
②Lhard:学生模型不引入温度参数T(T=1)的softmax输出值与真实标签的之间的损失(交叉熵);
总体加权函数形式如下:
Loss=0.1*Lhard+0.9*Lsoft
步骤6、将步骤1.2中得到的知网验证码先进行图像预处理,再放入训练好的学生模型ResNet-18中识别即可。
本发明利用知识蒸馏实现模型压缩,一方面压缩了模型,另一方面增强了模型的泛化能力,同时构建生成器生成的大量伪验证码,代替了真实验证码来训练学生模型,解决了真实验证码难以大量获取以及打标签所耗费成本大的问题。
本发明使用教师模型预测的软标签来辅助硬标签训练学生模型的方式之所以有效,是因为softmax层的输出,除了正例之外,负标签也带有教师模型归纳推理的大量信息,比如某些负标签对应的概率远远大于其他负标签,则代表教师模型在推理时认为该样本与该负标签有一定的相似性;而在传统的训练过程中,所有负标签都被统一对待;也就是说,知识蒸馏的训练方式使得每个样本给学生模型带来的信息量大于传统的训练方式。

Claims (5)

1.一种基于无数据知识蒸馏的文本验证码识别方法,其特征在于采用如下步骤:
步骤1、构建验证码数据集;
1.1)利用python的captcha库生成程序验证码图片作为训练集;
1.2)从网站获取真实验证码打好标签作为测试集;
步骤2、图像预处理,将步骤1.1得到的程序验证码图片去除会造成识别干扰的信息;
2.1)程序验证码图片统一尺寸,灰度化处理;
2.2)利用条件生成对抗网络的方法对验证码图片去除背景干扰信息并拉伸字符间距;
2.3)将步骤2.2处理好的验证码图片分割为单个字符;
步骤3、构建教师模型并使用预处理后的程序验证码训练;
步骤4、构建一个生成器,将训练好的教师模型作为鉴别器,生成器与鉴别器对抗生成训练样本,使生成器生成的伪验证码教师模型无法判别;
步骤5、初始化一个学生模型,使用步骤4中生成器生成的伪验证码作为训练集,与教师模型的蒸馏损失来共同训练学生模型;
步骤6、将步骤1.2中得到的真实验证码预处理之后放入训练好的学生模型识别。
2.根据权利要求1所述的基于无数据知识蒸馏的文本验证码识别方法,其特征在于步骤4的生成器由三个损失函数构成;具体为
①one-hot loss:在图像分类任务中,对于真实的数据,卷积神经网络最后的输出层的输出接近一个one-hot向量,其中,在分类正确类别上的输出接近1,其它类别的输出接近0;因此,如果生成器生成的图片接近真实数据,那么它在教师网络上的输出应该同样接近于一个one-hot向量;采用如下公式:
Figure FDA0003807228510000011
公式中:Hcross表示交叉熵损失函数,用于衡量教师模型的输出与预测标签的差异;n表示最终输出图片的数量;
将生成器与教师模型分别表示为G和NT,给定一组随机向量{z1,z2,…,zn},将这些向量生成的图像输入到教师模型NT中,得到教师模型NT的输出
Figure FDA0003807228510000021
预测标签ti={t1,t2,…,tn}是
Figure FDA0003807228510000022
中的最大值;其中,如果生成器G生成的图像与教师模型的训练数据具有相同的分布,则它们也应该具有与训练数据类似的输出;
②激活损失函数:除了深度神经网络预测的类标签外,卷积层提取的中间特征也是输入图像的重要表示,卷积滤波器提取的特征也包含有价值的输入图像信息;由于教师模型中的过滤器已被训练以提取训练数据中的固有模式,如果输入图像是真实的,而不是一些随机向量,则特征映射往往会收到更高的激活值;则采用activation Loss来约束生成数据,采用如下公式:
Figure FDA0003807228510000023
其中‖·‖1是传统的l1范数,
Figure FDA0003807228510000024
表示教师模型提取的特征,它对应于全连接层之前的输出;
③生成图像信息熵损失函数:为简化深度神经网络的训练过程,每个类别中的训练示例数通常是平衡的,采用信息熵损失来衡量生成图像的类别平衡,当loss最小时,生成器生成的每个类别的图片的概率大致相等;给定概率向量p=(p1,p2,…,pk),测量p的混淆程度的信息熵计算为
Figure FDA0003807228510000025
Hinfo(p)的值表示p拥有的信息量,当所有变量都等于
Figure FDA0003807228510000026
时,信息量将取最大值;给定一组输出向量
Figure FDA0003807228510000027
其中
Figure FDA0003807228510000028
每类生成图像的频率分布为
Figure FDA0003807228510000029
则生成图像的信息熵损失定义为:
Figure FDA00038072285100000210
当损失取最小值时,向量
Figure FDA0003807228510000031
中的每个元素都将等于
Figure FDA0003807228510000032
即生成器G可以以大致相同的概率生成每个类别的图像;则最小化生成图像的信息熵可以得到一组平衡的合成图像;
综上,适用于生成器的总体损失函数为:
LTotal=Loh+αLa+βLie (4)
通过设置上述三个损失函数,赋予不同的权重,one-hot损失函数权重为1,激活损失函数权重为α,信息熵损失函数权重为β,以此来训练生成器,使其生成教师模型判断不出真假的伪验证码。
3.根据权利要求1所述的基于无数据知识蒸馏的文本验证码识别方法,其特征在于步骤5具体为:
S1:将步骤4中生成的伪验证码作为学生模型的训练集,用教师模型在引入温度参数T后产生的softmax输出作为软标签,学生模型在与教师模型相同温度T条件下的softmax输出和教师模型中得到的软标签的交叉熵作为Loss函数的第一部分Lsoft,具体公式如下:
Figure FDA0003807228510000033
公式中
Figure FDA0003807228510000034
指教师模型在温度T的条件下softmax输出在第i类上的值,
Figure FDA0003807228510000035
指学生模型在温度T的条件下softmax输出在第i类上的值;
S2:学生模型在引入温度参数T的条件下的softmax输出和ground truth的交叉熵损失函数就是Loss函数的第二部分Lhard,其公式如下:
Figure FDA0003807228510000036
公式中,ci指在第i类上的ground truth值,ci∈{0,1},正标签取1,负标签取0。
4.根据权利要求3所述的基于无数据知识蒸馏的文本验证码识别方法,其特征在于知识蒸馏采用软硬标签加权结合的交叉熵损失函数来训练学生模型,引入参数α之后,总体加权函数形式如下:
Loss=α*Lsoft+(1-α)*Lhard (7)。
5.根据权利要求1所述的基于无数据知识蒸馏的文本验证码识别方法,其特征在于步骤2.2中,构建两个生成对抗网络,其中用于去除背景干扰信息的网络定义为RBNet,用于拉伸字符间距的网络定义为CSNet,这两个网络都使用程序验证码作为样本进行训练;训练RBNet时,其约束条件为含有干扰信息的验证码,监督标签为无干扰信息的验证码,生成器在约束条件的约束下生成无干扰信息的验证码,CSNet则是以字符粘连的验证码作为约束条件,以不含粘连字符的验证码作为监督标签,通过生成式模型来生成字符间距较大的验证码,由于CSNet对字符间距的有效拉伸,可以消除字符粘连。
CN202211003447.5A 2022-08-19 2022-08-19 基于无数据知识蒸馏的文本验证码识别方法 Pending CN115422518A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211003447.5A CN115422518A (zh) 2022-08-19 2022-08-19 基于无数据知识蒸馏的文本验证码识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211003447.5A CN115422518A (zh) 2022-08-19 2022-08-19 基于无数据知识蒸馏的文本验证码识别方法

Publications (1)

Publication Number Publication Date
CN115422518A true CN115422518A (zh) 2022-12-02

Family

ID=84199304

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211003447.5A Pending CN115422518A (zh) 2022-08-19 2022-08-19 基于无数据知识蒸馏的文本验证码识别方法

Country Status (1)

Country Link
CN (1) CN115422518A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116030257A (zh) * 2023-02-27 2023-04-28 速度时空信息科技股份有限公司 一种基于NesT模型的语义分割方法
CN116664576A (zh) * 2023-07-31 2023-08-29 厦门微图软件科技有限公司 一种电池外壳焊道的异常检测方法、装置以及设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116030257A (zh) * 2023-02-27 2023-04-28 速度时空信息科技股份有限公司 一种基于NesT模型的语义分割方法
CN116030257B (zh) * 2023-02-27 2023-08-15 速度科技股份有限公司 一种基于NesT模型的语义分割方法
CN116664576A (zh) * 2023-07-31 2023-08-29 厦门微图软件科技有限公司 一种电池外壳焊道的异常检测方法、装置以及设备
CN116664576B (zh) * 2023-07-31 2023-11-03 厦门微图软件科技有限公司 一种电池外壳焊道的异常检测方法、装置以及设备

Similar Documents

Publication Publication Date Title
CN109949317B (zh) 基于逐步对抗学习的半监督图像实例分割方法
CN112446423B (zh) 一种基于迁移学习的快速混合高阶注意力域对抗网络的方法
CN115422518A (zh) 基于无数据知识蒸馏的文本验证码识别方法
CN111985239A (zh) 实体识别方法、装置、电子设备及存储介质
CN110991549A (zh) 一种针对图像数据的对抗样本生成方法及系统
CN111241291A (zh) 利用对抗生成网络生成对抗样本的方法及装置
CN110175248B (zh) 一种基于深度学习和哈希编码的人脸图像检索方法和装置
CN112257441B (zh) 一种基于反事实生成的命名实体识别增强方法
CN111651762A (zh) 一种基于卷积神经网络的pe恶意软件检测方法
CN113836866B (zh) 文本编码方法、装置、计算机可读介质及电子设备
CN116311483B (zh) 基于局部面部区域重构和记忆对比学习的微表情识别方法
CN113806494A (zh) 一种基于预训练语言模型的命名实体识别方法
CN114863091A (zh) 一种基于伪标签的目标检测训练方法
CN115270752A (zh) 一种基于多层次对比学习的模板句评估方法
CN116796251A (zh) 一种基于图文多模态的不良网站分类方法、系统及设备
Gross et al. A handwriting recognition system for the classroom
CN113904844A (zh) 基于跨模态教师-学生网络的智能合约漏洞检测方法
Wang et al. Interpret neural networks by extracting critical subnetworks
CN116663539A (zh) 基于RoBERTa和指针网络的中文实体与关系联合抽取方法及系统
CN116595537A (zh) 一种基于多模态特征的生成式智能合约的漏洞检测方法
CN116737897A (zh) 一种基于多模态的智慧楼宇知识抽取模型和方法
CN113297385B (zh) 基于改进GraphRNN的多标签文本分类系统及分类方法
CN116232699A (zh) 细粒度网络入侵检测模型的训练方法和网络入侵检测方法
CN115309894A (zh) 一种基于对抗训练和tf-idf的文本情感分类方法及装置
Liu et al. Ml-stealer: Stealing prediction functionality of machine learning models with mere black-box access

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination