基于改进yolo9000算法的验证码识别方法及系统
技术领域
1.本发明涉及验证码识别技术领域,具体地说是基于改进yolo9000算法的验证码识别方法及系统。
背景技术:
2.验证码识别是光学字符识别领域中的热点问题,研究持续了已有半个世纪的历史。因为带有汉字的验证码类别数较大(参考gb2312-80的标准常用汉字有6763个类别)汉字之间相似度较大,目前验证码识别的准确率仍较小。验证码识别中,出现的字符相对词库较为固定,范围相对窄,相对广义汉字识别要简单,圈定汉字类别少。
3.由于验证码跨域英文字符、数字及汉语字符,不同字体结构繁多,存在大量相似字符。本技术提案涉及的脱机的验证码识别针对静止的二维图像中的带有汉字的验证码进行识别,通过验证码图片特征提取文字,故而识别更为复杂困难,准确度难以提高。
4.目前脱机识别验证码的方案主要有两种:第一种是基于传统机器学习的方法进行的研究,主要应用支持向量机(svm)、线性判别模型(lda)与修正二次判别函数(mqdf)等的多特征验证码识别技术,在提取网格特征的基础上再增加对验证码多种主要特征的提取。这类方法在建模前需要对建模数据进行数据预处理和复杂的特征工程建设,由于提取特征复杂,包括汉字质心、笔画特征处理,难以全面的提取出准确的特征。另一种是基于深度学习进行验证码汉字的识别,卷积神经网络建立的模型有多种,目前主流应用的模型有 vggnet、resnet等构建较深、构成复杂的神经网络进行验证码的识别,这类做法存在调优参数多、网络收敛缓慢、存储模型空间较大等问题。
5.基于上述分析,如何快速且准确的实现验证码识别,是需要解决的技术问题。
技术实现要素:
6.本发明的技术任务是针对以上不足,提供基于改进yolo9000算法的验证码识别方法及系统,来解决如何快速且准确的实现验证码识别的技术问题。
7.第一方面,本发明的基于改进yolo9000算法的验证码识别方法,包括如下步骤:
8.采集验证码图片构建训练样本,所述验证码图片中的验证码由汉字、英文和数字组成;
9.对于训练样本,对验证码中汉字进行标注,并对验证码图片进行图像变换处理,得到预处理后训练样本;
10.对于yolo9000模型,通过减少瓶颈结构的卷积的构造,对卷积层进行改进,并使用交叉熵损失函数加平均差相似度函数作为损失函数,得到改进后yolo9000模型,所述改进后yolo9000模型保留有预训练和多分类功能,基于所述改进后yolo9000模型构建验证码识别模型,并记为yolo 模型;
11.基于dbn模型构建验证码识别模型,并记为dbn模型;
12.基于所述预处理后训练样本分别对所述yolo模型和dbn模型进行训练,得到训练
后yolo模型和训练后dbn模型;
13.对于待识别的验证码图片,对验证码中汉字进行标注,并对验证码图片进行图像变换处理,得到预处理后验证码图片;
14.通过训练后yolo模型对所述预处理后验证码图片进行识别分类,得到第一分类结果,并通过所述训练后dbn模型对所述预处理后验证码识别图片进行识别分类的,得到第二分类结果,通过采用线性可信度累积的方式对所述第一分类结果和第二分类结果进行融合,得到最终分类结果。
15.作为优选,对验证码图片进行图像变换处理,包括对验证码图片进行旋转变换、平移变换、阴影处理以及图片增强处理。
16.作为优选,对于训练样本以及待识别的验证码图片,进行数据清洗,去除无效和不完整的汉字、英文以及数字。
17.作为优选,通过减少瓶颈结构的卷积的构造,对卷积层进行改进,删除两层1
×
1卷积,将检测头从九个卷积层减少到六个,在每个最大池化层后接入dropout层,以防止过拟合,所述改进后yolo9000模型具有十五个卷积层。
18.作为优选,所述dbn模型包括受限玻尔兹曼机rbm和顶层的反向传播网络bp组成,rbm层共有三层,分别为可视层、隐藏层和全连接层,可视层用于输入数据,隐藏层用于进行特征检测,可视层与隐藏层之间通过全连接,通过rbm层进行无监督的机器学习训练,将下层rbm作为上一层的输出,通过bp神经网络对输出结果进行训练,并将实际输出与预期输出的误差逐层反向传播,调增网络的权重,最终得到适用验证码识别的三层 dbn模型。
19.作为优选,通过下式定义pi为验证码识别模型对第i个字的识别能力,ci表示第i种字符被识别正确的此申诉,ni代表第i种字符在样本集中出现的总次数, n为字符种类总数;
[0020][0021]
第一验证码识别模型对n种字符的识别能力向量表示如下:
[0022][0023]
其中表示yolo模型对第n钟字符的识别能力;
[0024]
第二验证码识别模型对n种字符的识别能力向量表示如下:
[0025][0026]
其中表示yolo模型对第n钟字符的识别能力。
[0027]
作为优选,通过采用线性可信度累积的方式对所述第一分类结果和第二分类结果进行融合,包括如下步骤:
[0028]
通过训练后yolo模型对待识别验证码图片进行分类识别,得到的得分 x
yolo
表示为:
[0029][0030]
将yolo模型的识别得分与yolo模型的能力向量进行点乘的结果作为模型最
后的识别得分o
yolo
表示为:
[0031][0032]
通过训练后dbn模型对待识别验证码图片进行分类识别,得到的得分x
dbn
表示为:
[0033][0034]
将dbn模型的识别分数与dbn模型的能力向量p
dbn
进行点乘的结果作为模型最后的识别得分o
dbn
表示为:
[0035][0036]
将训练后yolo模型得分的分量从大到小排序,选取最的大两个分量并记录,
[0037]
将dbn模型得分的分量从大到小排序,选取最的大两个分量并记录,
[0038]
融合yolo模型和dbn模型得到的结果,输出最后分类识别结果class,采用线性可信度累积(lca),引入α,β作为加权因子,融合yolo模型和dbn 模型的识别得分,其中α,β的相加和等于1,通过调节α,β的值权衡两个模型之间的比重,识别得分的计算公式如下,
[0039]
o=αx
yolo
βx
dbn
=(o1o2,
…
,on)
[0040]
最后得到o中概率最大的分量,记为class并输出:
[0041]
class=argmax(o1o2,
…
,on) 。
[0042]
第二方面,本发明的基于改进yolo9000算法的验证码识别系统,通过如第一方面任一项所述的基于改进yolo9000算法的验证码识别方法进行验证码识别,所述系统包括:
[0043]
数据采集模块,所述数据采集模块用于采集验证码图片构建训练样本,所述验证码图片中的验证码由汉字、英文和数字组成;
[0044]
数据预处理模块,所述数据预处理模块用于对验证码中汉字进行标注,对验证码图片进行数据清洗,去除无效和不完整的汉字、英文以及数字,并对验证码图片进行图像变换处理,得到预处理后训练样本;
[0045]
yolo模型构建模块,所述yolo模型构建模块模块用于对于yolo9000 模型,通过减少瓶颈结构的卷积的构造,对卷积层进行改进,并使用交叉熵损失函数加平均差相似度函数作为损失函数,得到改进后yolo9000模型,所述改进后yolo9000模型保留有预训练和多分类功能,基于所述改进后 yolo9000模型构建验证码识别模型,并记为yolo模型;并用于基于所述预处理后训练样本对所述yolo模型进行训练,得到训练后yolo模型;
[0046]
dbn模型构建模块,所述dbn模型构建模块用于基于dbn模型构建验证码识别模型,并记为dbn模型;并用于基于所述预处理后训练样本对所述dbn 模型进行训练,得到训练后dbn模型;
[0047]
识别预处理模块,所述识别模块用于调用数据预处理模块,对于待识别的验证码图片,通过数据预处理模块对验证码中汉字进行标注,并对验证码图片进行图像变换处理,得到预处理后验证码图片;
[0048]
识别分类模块,所述识别分类模块用于通过训练后yolo模型对所述预处理后验证码图片进行识别分类,得到第一分类结果,并通过所述训练后dbn 模型对所述预处理后验
证码识别图片进行识别分类的,得到第二分类结果,通过采用线性可信度累积的方式对所述第一分类结果和第二分类结果进行融合,得到最终分类结果。
[0049]
作为优选,所述yolo模型构建模块用于通过减少瓶颈结构的卷积的构造,对卷积层进行改进,删除两层1
×
1卷积,将检测头从九个卷积层减少到六个,在每个最大池化层后接入dropout层,以防止过拟合,所述改进后yolo9000 模型具有十五个卷积层;
[0050]
所述dbn模型包括受限玻尔兹曼机rbm和顶层的反向传播网络bp组成, rbm层共有三层,分别为可视层、隐藏层和全连接层,可视层用于输入数据,隐藏层用于进行特征检测,可视层与隐藏层之间通过全连接,通过rbm层进行无监督的机器学习训练,将下层rbm作为上一层的输出,通过bp神经网络对输出结果进行训练,并将实际输出与预期输出的误差逐层反向传播,调增网络的权重,最终得到适用验证码识别的三层dbn模型。
[0051]
作为优选,所述识别分类模块通过下式定义pi为验证码识别模型对第i个字的识别能力,ci表示第i种字符被识别正确的此申诉,ni代表第i种字符在样本集中出现的总次数,n为字符种类总数;
[0052][0053]
第一验证码识别模型对n种字符的识别能力向量表示如下:
[0054][0055]
其中表示yolo模型对第n钟字符的识别能力;
[0056]
第二验证码识别模型对n种字符的识别能力向量表示如下:
[0057][0058]
其中表示yolo模型对第n钟字符的识别能力;
[0059]
所述识别分类模块用于通过采用线性可信度累积的方式对所述第一分类结果和第二分类结果进行融合,包括如下步骤:
[0060]
通过训练后yolo模型对待识别验证码图片进行分类识别,得到的得分 x
yolo
表示为:
[0061][0062]
将yolo模型的识别得分与yolo模型的能力向量p
yolo
进行点乘的结果作为模型最后的识别得分o
yolo
表示为:
[0063][0064]
通过训练后dbn模型对待识别验证码图片进行分类识别,得到的得分x
dbn
表示为:
[0065][0066]
将dbn模型的识别分数与dbn模型的能力向量p
dbn
进行点乘的结果作为模型最后的识别得分o
dbn
表示为:
[0067][0068]
将训练后yolo模型得分的分量从大到小排序,选取最的大两个分量并记录,
[0069]
将dbn模型得分的分量从大到小排序,选取最的大两个分量并记录,
[0070]
融合yolo模型和dbn模型得到的结果,输出最后分类识别结果class,采用线性可信度累积(lca),引入α,β作为加权因子,融合yolo模型和dbn 模型的识别得分,其中α,β的相加和等于1,通过调节α,β的值权衡两个模型之间的比重,识别得分的计算公式如下,
[0071]
o=αx
yolo
βx
dbn
=(o1o2,
…
,on)
[0072]
最后得到o中概率最大的分量,记为class并输出:
[0073]
class=argmax(o1o2,
…
,on)
[0074]
本发明的基于改进yolo9000算法的验证码识别方法及系统具有以下优点:
[0075]
1、对比现有、验证码识别使用传统的机器学习模型的做法,改进的 yolo-9000通过改进损失函数,重构主干网络的做法融合dbn模型,使得模型在保证识别时长的情况下,提升了识别率;
[0076]
2、对比深度学习模型,融合模型通过调节加权因子,使得识别率强于单一模型,且融合了传统机器学习算法,使得模型泛化性能比单一的深度学习模型好防止过拟合。由于对yolo-9000主干网络的卷积层修改,使得运算识别速度强于一般深度学习模型。
附图说明
[0077]
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0078]
下面结合附图对本发明进一步说明。
[0079]
图1为实施例1基于改进yolo9000算法的验证码识别方法的流程框图;
[0080]
图2为实施例1基于改进yolo9000算法的验证码识别方法中改进的 yolo-9000的结构示意图;
[0081]
图3为实施例1基于改进yolo9000算法的验证码识别方法中dbn模型的结构示意图;
[0082]
图4为实施例1基于改进yolo9000算法的验证码识别方法中改进的 yolo-9000和dbn的融合模型结构示意图。
具体实施方式
[0083]
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
[0084]
本发明实施例提供基于改进yolo9000算法的验证码识别方法及系统,用于解决如何快速且准确的实现验证码识别的技术问题。
[0085]
实施例1:
[0086]
本发明基于改进yolo9000算法的验证码识别方法,包括如下步骤:
[0087]
s100、采集验证码图片构建训练样本,验证码图片中的验证码由汉字、英文和数字组成;
[0088]
s200、对于训练样本,对验证码中汉字进行标注,并对验证码图片进行图像变换处理,得到预处理后训练样本;
[0089]
s300、对于yolo9000模型,通过减少瓶颈结构的卷积的构造,对卷积层进行改进,并使用交叉熵损失函数加平均差相似度函数作为损失函数,得到改进后yolo9000模型,改进后yolo9000模型保留有预训练和多分类功能,基于改进后yolo9000模型构建验证码识别模型,并记为yolo 模型;
[0090]
s400、基于dbn模型构建验证码识别模型,并记为dbn模型;
[0091]
s500、基于预处理后训练样本分别对yolo模型和dbn模型进行训练,得到训练后yolo模型和训练后dbn模型;
[0092]
s600、对于待识别的验证码图片,对验证码中汉字进行标注,并对验证码图片进行图像变换处理,得到预处理后验证码图片;
[0093]
s700、通过训练后yolo模型对预处理后验证码图片进行识别分类,得到第一分类结果,并通过训练后dbn模型对所述预处理后验证码识别图片进行识别分类的,得到第二分类结果,通过采用线性可信度累积的方式对第一分类结果和第二分类结果进行融合,得到最终分类结果。
[0094]
本实施例中采集带有汉字、英文和数字的验证码,并将采集的验证码图片汇集为数据集作为训练样本集。
[0095]
步骤s200对数据加工与图像增强过程。针对验证码汉字进行单独标注,并将采集的图片进行图像增强处理,由于验证码某些验证码字符出现频率多,用词要对数据集进行数据扩增,防止拟合模型时发生过拟合。对验证码图片进行图像变换处理,包括对验证码图片进行旋转变换、平移变换、阴影处理以及图片增强处理等。同时,进行数据清洗,去除无效和不完整的汉字、英文以及数字。
[0096]
yolo-9000是指可以对9000类物体进行识别。在常见的验证码中,每一个字符均可以认为是一个物体,而验证码识别中的常用的汉字约为 500-1000个,因此改进的yolo-9000模型可以将分类减少到1000类。本技术提案中的卷积神经网络具有15层卷积层,以yolov2为基础,结合 googlenet的构建思想。改进的yolo9000保留了通过预训练和进行多分类的能力,通过步骤s100的数据采集与步骤s200的数据标注,利用带标注的分类数据集量比较大的特点进行预训练。改进卷积层,通过减少瓶颈结构的卷积的构造,删除了两层1
×
1卷积,原本的检测头从9个卷积层减少到6 个,使得体量更加轻便适合验证码汉字识别的需求。在损失函数的选择上,本技术提案对以往的yolo模型改造,使用交叉熵损失函数加平均差相似度函数作为损失函数,这种做法可以增加类间变异,减少类内变异,从而获得更好的分类性能。
[0097]
改进的yolo模型使用了最大熵正则化项加平均方差相似度函数作为损失函数,这种做法可以增加类间变异,减少类内变异,从而获得更好的分类性能。将两种损失函数结合使用,比单纯基于交叉熵作为损失函数的特征分类效果要好得多。
[0098]
一般来说,验证码识别中预测的类内方差同样很大,即熵很大,我们希望将输出的
熵进行正则化,使模型更加一般化,减轻过拟合,表达式如下, pi为模型对第i个字的识别能力,h(p)为模型输出的熵,
[0099][0100]
熵是一个热向量时达到最小值,在p时均匀分布时达到最大值。前者是通过普通的交叉熵损失自动实现的,而后者则有望促进正则化。因此,我们将负熵作为最大熵正则化项,它直接作用于一般的交叉熵损失函数上,如下所示,回归的损失函数表示为l
reg
,是由负熵即熵的相反数λl
mer
,与l
ce
累加组成
[0101]
l
mer
=-h(p)
[0102]
l
reg
=l
ce
λl
mer
[0103]
其中λ是决定mer影响的超参数。从直观上看,mer降低了交叉熵损失造成的极端置信值。考虑正则化损失对输出分数的导数,它与模型直接相关,对概率分布的导数为,此时由于模型概率的分布只与l
mer
有关,那么导数就变成了:
[0104][0105]
求导后根据链式法则可得,其中梯度并不总是正的或负的,所以在更多分布的分数下,概率不会下降到0或增加到1。至此就完成了损失函数的构建。
[0106]
以yolov2为基础,结合googlenet的构建思想建设改进的yolo-9000 模型。改进的yolo9000保留了通过预训练和进行多分类的能力,通过步骤1的数据采集与步骤2的数据标注,利用带标注的分类数据集量比较大的特点进行预训练。改进模型共又15层卷积层,通过减少瓶颈结构的卷积的构造,删除了两层1
×
1卷积及瓶颈卷积,原本的检测头从9个卷积层减少到6个,同时在每个最大池化层后接入dropout层,以防止过拟合,使得体量更加轻便适合验证码识别的需求。
[0107]
dbn是一个具有层次特征的概率生成模型,通过训练神经元之间的权重。本技术提案中的dbn模型是由一系列的受限玻尔兹曼机(rbm)和顶层的反向传播网络(bp)组成。rbm层共有三层,由可视层输入数据,隐藏层做特征检测,两层之间全连接。通过rbm层进行无监督的机器学习训练,将下层rbm作为上一层的输出。再对输出结果使用bp神经网络进行训练,将实际输出与预期输出的误差逐层反向传播,调增网络的权重,最终得到适用验证码识别的三层dbn模型。在有标签样本的训练模型阶段,细分类会调整bp网络的权值,将实际输出与预期数据的误差逐层反向传播。通过rbm层进行无监督的机器学习训练,将下层rbm作为上一层的输出。再对输出结果使用bp神经网络进行训练,将实际输出与预期输出的误差逐层反向传播,调增网络的权重,最终得到dbn模型。
[0108]
上述两个模型yolo模型和dbn模型都可以验证码识别,并应用各自的网络进行特征提取。由于yolo和dbn模型建模本质有区别,其提取特征的手段各有优势,融合的yolo和dbn的融合模型,在效果上会超过单一模型的识别能力。yolo-dbn整体过程分为训练过程和应用过程两部分。即分别单独进行训练,与应用进行融合的过程。应用过程采用线性可信度
累计,引入加权因子α和β,通过调节加权因子得到最终分类结果。
[0109]
本实施例中在对验证码进行识别时,通过改进的yolo9000与dbn模型构成的融合模型进行识别,所示首先单独训练yolo模型和dbn模型,并得到训练好的识别模型;然后在样本集上统计两个模型对不同字符的识别能力,通过下式定义pi为模型对第i个字的识别能力;ci表示第i种字符被识别正确的此申诉,ni代表第i种字符在样本集中出现的总次数。n为字符种类总数。
[0110][0111]
yolo对n种字符的识别能力向量表示如下,其中表示yolo模型对第n钟字符的识别能力:
[0112][0113]
同样的dbn模型对n种字符的识别能力向量表示如下,其中表示 yolo模型对第n钟字符的识别能力:
[0114][0115]
其中涉及的融合模型算法的主要步骤如下:
[0116]
1)将字符图片经过yolo模型计算得到分类的得分为x
yolo
:
[0117][0118]
将yolo模型的识别分数与模型的能力向量p
yolo
进行点乘的结果作为模型最后的识别得分o
yolo
:
[0119][0120]
2)将字符图片经过dbn模型计算得到分类的得分为x
dbn
[0121][0122]
将dbn模型的识别分数与模型的能力向量p
dbn
进行点乘的结果作为模型最后的识别得分o
dbn
:
[0123][0124]
3)将yolo模型得分的分量从大到小排序,选取最的大两个分量并记录,
[0125]
4)将dbn模型得分的分量从大到小排序,选取最的大两个分量并记录,
[0126]
5)融合yolo和dbn两模型的结果,输出最后分类识别结果class,采用线性可信度累积(lca),引入α,β作为加权因子,融合两模型的识别得分,其中α,β的相加和等于1,通过调节α,β的值权衡两个模型之间的比重,识别得分的计算公式如下,
[0127]
o=αx
yolo
βx
dbn
=(o1o2,
…
,on)
[0128]
最后得到o中概率最大的分量,记为class并输出:
[0129]
class=argmax(o1o2,
…
,on)
[0130]
本实施例的验证码识别,在yolo模型中,应用最大熵正则化来正则化训练过程应给予保护,最大熵正则化在交叉熵损失中添加一个负熵项,使用最大熵正则化与平均方差相似度函数联合作为损失函数这种做法可以增加类间变异,减少类内变异,从而获得更好的分类性能;同时,yolo模型中,卷积神经网络具有15层卷积层,通过改进卷积层,减少瓶颈结构的卷积的构造减轻了网络的量级,删除了两层1
×
1卷积,原本的检测头从9个卷积层减少到6个,每个最大池层之后都应用dropout层以防止过拟合;通过增加加权因子调整每个模型结果占比,最后给出样本的最大概率分类class。融合机器学习的做法提高了模型的泛化能力,融合模型的方案也进一步解决了识别效率低的问题与重量级网络泛化难的问题。
[0131]
实施例2:
[0132]
本发明基于改进yolo9000算法的验证码识别系统,包括数据采集模块、数据预处理模块、yolo模型构建模块、dbn模型构建模块、识别预处理模块、识别分类模块,数据采集模块用于采集验证码图片构建训练样本,所述验证码图片中的验证码由汉字、英文和数字组成;数据预处理模块用于对验证码中汉字进行标注,对验证码图片进行数据清洗,去除无效和不完整的汉字、英文以及数字,并对验证码图片进行图像变换处理,得到预处理后训练样本;yolo模型构建模块模块用于对于yolo9000模型,通过减少瓶颈结构的卷积的构造,对卷积层进行改进,并使用交叉熵损失函数加平均差相似度函数作为损失函数,得到改进后yolo9000模型,所述改进后 yolo9000模型保留有预训练和多分类功能,基于所述改进后yolo9000 模型构建验证码识别模型,并记为yolo模型;并用于基于所述预处理后训练样本对所述yolo模型进行训练,得到训练后yolo模型;dbn模型构建模块用于基于dbn模型构建验证码识别模型,并记为dbn模型;并用于基于所述预处理后训练样本对所述dbn模型进行训练,得到训练后 dbn模型;识别模块用于调用数据预处理模块,对于待识别的验证码图片,通过数据预处理模块对验证码中汉字进行标注,并对验证码图片进行图像变换处理,得到预处理后验证码图片;识别分类模块用于通过训练后yolo 模型对所述预处理后验证码图片进行识别分类,得到第一分类结果,并通过所述训练后dbn模型对所述预处理后验证码识别图片进行识别分类的,得到第二分类结果,通过采用线性可信度累积的方式对所述第一分类结果和第二分类结果进行融合,得到最终分类结果。
[0133]
本实施例系统中,yolo模型构建模块用于通过减少瓶颈结构的卷积的构造,对卷积层进行改进,删除两层1
×
1卷积,将检测头从9个卷积层减少到6个,在每个最大池化层后接入dropout层,以防止过拟合,所述改进后yolo9000模型具有十五个卷积层。
[0134]
一般来说,验证码识别中预测的类内方差同样很大,即熵很大,我们希望将输出的熵进行正则化,使模型更加一般化,减轻过拟合,表达式如下, pi为模型对第i个字的识别能力,h(p)为模型输出的熵,
[0135][0136]
熵是一个热向量时达到最小值,在p时均匀分布时达到最大值。前者是通过普通的交叉熵损失自动实现的,而后者则有望促进正则化。因此,我们将负熵作为最大熵正则化项,它直接作用于一般的交叉熵损失函数上,如下所示,回归的损失函数表示为l
reg
,是由负
熵即熵的相反数λl
mer
,与l
ce
累加组成
[0137]
l
mer
=-h(p)
[0138]
l
reg
=l
ce
λl
mer
[0139]
其中λ是决定mer影响的超参数。从直观上看,mer降低了交叉熵损失造成的极端置信值。考虑正则化损失对输出分数的导数,它与模型直接相关,对概率分布的导数为,此时由于模型概率的分布只与l
mer
有关,那么导数就变成了:
[0140][0141]
求导后根据链式法则可得,其中梯度并不总是正的或负的,所以在更多分布的分数下,概率不会下降到0或增加到1。至此就完成了损失函数的构建。
[0142]
dbn模型包括受限玻尔兹曼机rbm和顶层的反向传播网络bp组成, rbm层共有三层,分别为可视层、隐藏层和全连接层,可视层用于输入数据,隐藏层用于进行特征检测,可视层与隐藏层之间通过全连接,通过rbm 层进行无监督的机器学习训练,将下层rbm作为上一层的输出,通过bp 神经网络对输出结果进行训练,并将实际输出与预期输出的误差逐层反向传播,调增网络的权重,最终得到适用验证码识别的三层dbn模型。
[0143]
识别分类模块通过下式定义pi为验证码识别模型对第i个字的识别能力,ci表示第i种字符被识别正确的此申诉,ni代表第i种字符在样本集中出现的总次数, n为字符种类总数;
[0144][0145]
第一验证码识别模型对n种字符的识别能力向量表示如下:
[0146][0147]
其中表示yolo模型对第n钟字符的识别能力;
[0148]
第二验证码识别模型对n种字符的识别能力向量表示如下:
[0149][0150]
其中表示yolo模型对第n钟字符的识别能力;
[0151]
所述识别分类模块用于通过采用线性可信度累积的方式对所述第一分类结果和第二分类结果进行融合,包括如下步骤:
[0152]
通过训练后yolo模型对待识别验证码图片进行分类识别,得到的得分 x
yolo
表示为:
[0153][0154]
将yolo模型的识别得分与yolo模型的能力向量p
yolo
进行点乘的结果作为模型最后的识别得分o
yolo
表示为:
[0155][0156]
通过训练后dbn模型对待识别验证码图片进行分类识别,得到的得分x
dbn
表示为:
[0157][0158]
将dbn模型的识别分数与dbn模型的能力向量p
dbn
进行点乘的结果作为模型最后的识别得分o
dbn
表示为:
[0159][0160]
将训练后yolo模型得分的分量从大到小排序,选取最的大两个分量并记录,
[0161]
将dbn模型得分的分量从大到小排序,选取最的大两个分量并记录,
[0162]
融合yolo模型和dbn模型得到的结果,输出最后分类识别结果class,采用线性可信度累积(lca),引入α,β作为加权因子,融合yolo模型和dbn 模型的识别得分,其中α,β的相加和等于1,通过调节α,β的值权衡两个模型之间的比重,识别得分的计算公式如下,
[0163]
o=αx
yolo
βx
dbn
=(o1o2,
…
,on)
[0164]
最后得到o中概率最大的分量,记为class并输出:
[0165]
class=argmax(o1o2,
…
,on) 。
[0166]
本实施例的系统可执行实施例1公开的基于改进yolo9000算法的验证码识别方法及系统。
[0167]
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
转载请注明原文地址:https://tc.8miu.com/read-2589.html