本说明书一个或多个实施例涉及机器学习领域和数据安全领域,尤其涉及利用机器学习和数据安全的验证码识别方法和装置。
背景技术:
验证码于2003年首次提出,旨在区分人与自动化计算机程序。验证码是一种很难用计算机求解的测试,但对于人类来说却很容易。随着internet的发展,验证码已在web应用程序中广泛使用,以保护安全性,防止数据被盗和密码破解。尽管已经提出了许多替代基于文本的验证码的方法,但是基于文本的验证码仍然是许多网站的首选身份验证机制。因此,对验证码方案的成功攻击将对网站造成严重破坏。
验证码图像通常由三部分组成,前景层,字符层和背景层。前景层和背景层主要包含一些干扰项,例如遮挡线,噪点和噪点背景。字符层包含有用的信息,这些信息还添加了额外的安全性功能,例如字体,大小,颜色,旋转,变形和重叠。验证码的安全功能对于阻止自动攻击至关重要。
在过去的十年中,已提出了多种不同的破解验证码的方法,其中许多方法需要手动调整过滤和分段以实现字符识别。但是,这些方法不再适用,因为文本验证码借鉴了以前的失败经验,并引入了更复杂的安全功能。并且一些基于深度学习的方法在字符识别的准确性上取得了显着的进步,但是需要收集大量样本并手动标记它们,这需要大量的人工成本。此外,针对特定验证码方案而训练的识别器鲁棒性很差,很难直接应用到其他验证码方案。
因此,希望能有改进的方案,得到更好的验证码识别器,能够对验证码进行准确识别。这样的验证码识别器可以用于对验证码进行安全性测试,增强安全性。
技术实现要素:
本说明书一个或多个实施例描述了一种计算机执行的验证码识别器的训练方法和装置,其中结合非监督学习和表示学习,大大降低训练样本的标注成本,得到的验证码识别器可以自动去除验证码的嘈杂背景并识别基于文本的验证码。
根据第一方面,提供一种训练验证码识别器的方法,所述验证码识别器包括特征提取器和分类器,所述方法包括:
获取无标签的第一样本集,其中包括多个第一样本,每个第一样本对应一个验证码图像;
对于各个第一样本,将对应的验证码图像划分为多个图块;
利用所述特征提取器分别提取各个图块的特征,得到各个图块的编码向量;
从所述多个图块中选取连续的图块序列,利用回归网络,基于所述图块序列中前面若干图块的编码向量,确定隐含向量,基于所述隐含向量确定所述图块序列中后续图块的预测向量;
基于所述后续图块的编码向量和预测向量,确定第一预测损失;
根据各个第一样本对应的第一预测损失,训练所述特征提取器和所述回归网络;
基于训练好的特征提取器,训练所述分类器。
在一个实施例中,通过以下步骤训练分类器:获取有标签的第二样本集,其中包括多个第二样本,每个第二样本对应一个验证码图像,且具有标注的真实字符;对于各个第二样本,将对应的验证码图像输入训练好的特征提取器,得到第二样本的特征向量;将所述特征向量输入所述分类器,预测其中的字符;基于预测的字符和所述真实字符,确定第二预测损失;根据第二预测损失,更新所述分类器。
在一个实施例中,获取无标签的第一样本集,包括:获取真实的验证码图像作为正面示例;基于所述正面示例的验证码图像进行破坏字符完整性的合成处理,将合成的验证码图像作为负面示例。
进一步的,在一个例子中,基于正面示例的验证码图像进行破坏字符完整性的合成处理,包括以下中的至少一种:
将所述正面示例的验证码图像上、下部分按照不同的间距进行合成;
将所述正面示例的验证码图像上、下部分按照不同的旋转方向进行合成;
拼接不同的正面示例的验证码图像的上、下部分。
在一个实施例中,所述正面示例的数目少于所述负面示例。
根据一种实施方式,所述将所述验证码图像划分为多个图块,包括:将所述验证码图像划分为预定大小的图块,每个所述图块与其相邻图块存在预定比例的重叠。
根据一种实施方式,从所述多个图块中选取连续的图块序列包括:从所述多个图块构成的图块阵列中选取同一列的图块,将该列的图块按照从上到下的顺序,或者从下到上的顺序排成所述图块序列。
在一个实施例中,所述特征提取器通过卷积神经网络cnn实现。
在一个实施方式中,9所述回归网络为基于时序的神经网络,所述基于所述图块序列中前面若干图块的编码向量,确定隐含向量包括:将所述前面若干图块分别对应的若干编码向量依次输入所述基于时序的神经网络,所述基于时序的神经网络依次迭代处理所述若干编码向量,将处理所述若干编码向量中最后一个编码向量后得到的状态向量,作为所述隐含向量。
根据第二方面,提供一种训练验证码图像分解器的方法,所述验证码分解器用于去除包含干扰图像的验证码图像中的干扰图像,并包括,背景图像提取网络、字符图像提取网络和权重掩码生成网络,训练方法包括:
获取无标签的第三样本集,其中包括多个第三样本,每个第三样本对应一个包含干扰图像的验证码图像;
对于各个第三样本,去除对应验证码图像中高频、不规则噪声,得到消噪图像;
将所述消噪图像分别输入背景图像提取网络、字符图像提取网络和权重掩码生成网络,分别从中得到背景图像、字符图像和权重掩码图像;其中,所述权重掩码图像的像素点数据代表背景图像、字符图像中相应像素点在重构时的比重;
根据背景图像、字符图像和权重掩码图像生成重构图像;
根据所述消噪图像、重构图像和权重掩码图像,确定第三预测损失;
根据第三预测损失,更新背景图像提取网络、字符图像提取网络和权重掩码生成网络。
在一个实施例中,所述确定第三预测损失具体包括:根据所述消噪图像和重构图像之间的相似度,确定重构相似度损失;根据权重掩码图像中各个像素点的比重值与预定的比重阈值的差值之和,确定背景图像与字符图像之间的独立性损失;根据权重掩码图像中各个像素点的比重值之和,确定字符图像的稀疏度损失值;根据所述重构相似度损失、所述独立性损失和所述稀疏度损失,确定所述第三预测损失。
进一步的,在一个实施例中,基于预先为所述重构相似度损失、所述独立性损失和所述稀疏度损失分配的权重,对其加权求和,得到所述第三预测损失。
在一个实施例中,使用高斯滤波器去除第三样本中噪声构成的前景图像,得到所述消噪图像。
根据一个实施例,所述背景图像提取网络、所述字符图像提取网络和所述权重掩码生成网络均基于深度图像先验网络。
根据第三方面,提供了一种训练验证码识别器的装置,所述验证码识别器包括特征提取器和分类器,所述装置包括:
第一样本获取单元,配置为获取无标签的第一样本集,其中包括多个第一样本,每个第一样本对应一个验证码图像;
图块划分单元,配置为对于各个第一样本,将对应的验证码图像划分为多个图块;
特征提取单元,配置为利用所述特征提取器分别提取各个图块的特征,得到各个图块的编码向量;
预测单元,配置为从所述多个图块中选取连续的图块序列,利用回归网络,基于所述图块序列中前面若干图块的编码向量,确定隐含向量,基于所述隐含向量确定所述图块序列中后续图块的预测向量;
第一损失确定单元,配置为基于所述后续图块的编码向量和预测向量,确定第一预测损失;
第一训练单元,配置为根据各个第一样本对应的第一预测损失,训练所述特征提取器和所述回归网络;
第二训练单元,配置为基于训练好的特征提取器,训练所述分类器。
根据第四方面,提供了一种训练验证码图像分解器的装置,所述验证码图像分解器用于去除包含干扰图像的验证码图像中的干扰图像,并包括,背景图像提取网络、字符图像提取网络和权重掩码生成网络,所述装置包括:
第三样本获取单元,配置为获取无标签的第三样本集,其中包括多个第三样本,每个第三样本对应一个包含干扰图像的验证码图像;
消噪单元,配置为对于各个第三样本,去除对应验证码图像中高频、不规则噪声,得到消噪图像;
分解单元,配置为将所述消噪图像分别输入背景图像提取网络、字符图像提取网络和权重掩码生成网络,分别从中得到背景图像、字符图像和权重掩码图像;其中,所述权重掩码图像的像素点数据代表背景图像、字符图像中相应像素点在重构时的比重;
重构单元,配置为根据背景图像、字符图像和权重掩码图像生成重构图像;
第三损失确定单元,配置为根据所述消噪图像、重构图像和权重掩码图像,确定第三预测损失;
第三训练单元,配置为根据第三预测损失,更新背景图像提取网络、字符图像提取网络和权重掩码生成网络。
根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面、第二方面的方法。
根据第六方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面、第二方面的方法。
根据本发明实施例提供的方法和装置,通过自监督学习和表示学习,训练得到高性能的验证码识别器,大大减少了标记样本的数量,提升了识别性能。
附图说明
为了更清楚说明本发明实施例的技术方案,下面将对实施例描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书披露的一个实施例的验证码识别器的示意图;
图2示出一个实施例的训练验证码识别器的方法流程图;
图3示出在一个实施例中第一样本集包含的正面示例和负面示例的示意图;
图4示出一个实施例的训练分类器的方法流程图;
图5示出一个实施例的训练分解器的方法流程图;
图6示出在一个实施例中分解器的验证码图像处理示意图;
图7示出根据一个具体实施例的自监督预测过程;
图8示出根据一个实施例的验证码识别器的训练装置的示意性框图;
图9示出根据一个实施例的验证码图像分解器的训练装置的示意性框图。
具体实施方式
下面将结合附图,对本发明书提供的方案进行描述。
如前所述,基于文本的验证码仍然是许多网站的首选身份验证机制,已经提出的基于深度学习的方法在字符识别的准确性上取得了显着的进步,但是需要收集大量样本并手动标记它们,需要大量的人工成本,并且,针对特定验证码方案训练的识别器鲁棒性很差,很难直接应用到其他验证码方案。
考虑到上述问题,在本说明书中的实施例中,提出一种验证码识别器,该识别器通过对大量无标签样本的基于自监督的特征提取训练和少量有标签样本的分类训练,提升验证码的识别效果,以及减少训练中人工标签的成本。
图1为本说明书披露的一个实施例的验证码识别器的示意图。
如图1所示,验证码识别器包括特征提取器11、分类器12。特征提取器11用于从验证码图像中提取其字符图像特征。在本说明书的实施例中,采用自监督的方式训练特征提取器11。在自监督训练过程中,借助于回归网络14进行训练。
具体的,在训练过程中,首先将输入的无标签的验证码图像依序划分为多个图块,然后用特征提取器11分别提取各个图块的特征,得到各个图块的编码向量。
然后,利用回归网络14根据连续的图块序列中前面一部分图块的编码向量,对后面若干图块的编码向量进行预测,并根据该后面若干图块的预测向量和编码向量,确定自监督训练的预测损失;从而可以根据该训练损失,训练特征提取器。
分类器12,用于根据特征提取器11中提取的验证码图像的特征向量,进行分类操作,预测其中的字符。在分类器12训练过程中,可根据已训练的特征提取器11中提取的验证码图像的特征向量,和带标签(标注了真实字符)的验证码图像样本进行训练。
可选的,验证码识别器还可以包括分解器13,用于去除验证码图像中的干扰图像。分解器13接收带有干扰图像的验证码图像,输出去除干扰图像的验证码图像到特征提取器。
由上述可以看到,图1所示的验证码识别器至少具有以下特点。首先,通过上述自监督方式,该验证码识别器的特征提取器在训练中使用的样本为无标签的验证码图像,而无需对验证码图像样本进行标注,节省了大量的人力成本。然后,结合少量的有标签样本,对分类器进行训练,从而在整个训练中大大减少了对标签验证码图像的依赖,同时也获得了对验证码识别的高精确度。
图2示出一个实施例的训练验证码识别器的方法流程图。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。如图2所示,验证码识别器的训练过程至少包括以下步骤。
在步骤21,获取无标签的第一样本集,其中包括多个第一样本,每个第一样本对应一个验证码图像。
对于验证码识别任务而言,其输入为验证码图像,而输出为该验证码图像表示的验证码字符。在训练验证码识别器的过程中,带标签的样本就是作为输入的验证码图像表示的验证码字符是预先确定。相应的,无标签样本就是作为输入的验证码图像表示的验证码字符是预先不知的。本实施例中,步骤21中获得的验证码图像为无标签的。
一般而言,有标签的验证码图像需要人工介入打标签,所以容易理解,无标签的验证码图像较之有标签的验证码图像更容易大量获得。
然后,在步骤22,对于各个第一样本,将对应的验证码图像划分为多个图块。
在一个实施例中,将验证码图像分割为固定大小,例如64*64像素大小的网格,每个网格对应一个图块,图块构成图块阵列,图块之间无交叠。在另一实施例中,将验证码图像分割为一定大小的图块形成图块阵列,且使得相邻图块之间存在预定比例的交叠。
更具体的,在一个例子中,可以重新调整验证码图像的大小,使之长宽相等,然后将其划分为方形网格构成的方阵。例如,可以将验证码图像划分为7×7个具有64×64像素的图块,每个图块和其邻近的图块有32个像素的重叠区域。
接着,在步骤23,利用特征提取器分别提取各个图块的特征,得到各个图块的编码向量。
在一个实施例中,特征提取器通过卷积神经网络cnn实现。更具体的,在一个例子中,使用去掉了全连接层的resnet-101网络作为特征提取器的网络实现。
相应的,对于每个图块,特征提取器可以用卷积核对其进行卷积处理,得到二维编码的特征图(featuremap),然后对二维编码进行空间性平均池化处理,得到一维的编码向量。
在步骤24,从所述多个图块中选取连续的图块序列,利用回归网络,基于所述图块序列中前面若干图块的编码向量,确定隐含向量,基于所述隐含向量确定所述图块序列中后续图块的预测向量。
首先,从前述分割的图块中选取连续的图块序列。在一个实施例中,在上一步骤划分形成的图块阵列中,选取同一行的图块形成图块序列。然而,考虑到验证码图像中字符整体上仍然是纵向的,在一个更为优选的实施例中,选取图块阵列中同一列的图块形成图块序列。例如,选取第j列的图块p1j,p2j,p3j…pnj作为图块序列。
更具体的,在一个例子中,将同一列的图块按照从上到下的顺序,形成正向图块序列。或者,将同一列的图块按照从下到上的顺序,形成反向图块序列。
在将验证码图像划分为7*7的图块阵列的情况下,图块序列中包含7个图块。
然后,使用回归网络,根据图块序列中前面若干个(第一数目n1个)图块的编码向量,确定一个隐含向量,然后基于该隐含向量确定图块序列中后续若干个(第二数目n2个)图块的预测向量。为了提高预测准确性,优选的,第一数目n1大于第二数目n2。
例如,在图块序列包含7个图块的情况下,可以根据前面4个图块的编码向量,预测后面3个图块的编码向量。
具体的,使用回归网络进行上述预测。在一个实施例中,回归网络为基于时序的神经网络,例如rnn,lstm,gru_rnn。此时,可以将图块序列中前面第一数目个图块p1j,p2j,…pij分别对应的第一数目个编码向量z1j,z2j,…zij依次输入该基于时序的网络,于是,该网络依次处理该第一数目个编码向量,将处理完最后一个编码向量时的状态向量cij,作为表征该第一数目个图块的隐含向量。
在另一实施例中,回归网络也可以采用其他网络形式,对上述前面第一数目个图块分别对应的第一数目个编码向量进行融合,将融合结果作为表征该第一数目个图块的隐含向量。
然后,回归网络可以基于上述隐含向量cij,确定后续图块的预测向量,即预测后续图块的编码向量。
在一个实施例中,利用线性预测矩阵wk来确定预测向量,可表示为公式(1):
其中,k表示预测步长,公式(1)表示基于前第i个图块得到的隐含向量cij预测后续第i k个图块的编码向量。
当选取的图块序列为正向图块序列时,预测为从上向下的正方向预测;当选取的图块序列为反向图块序列时,预测为从下向上的反方向预测。
图7示出根据一个具体实施例的自监督预测过程。可以看到,在图7的例子中,在对输入验证码图像进行图块分割后,选取了中间的一列作为图块序列,每个图块序列包含7个图块。并且,分别形成了正向图块序列和反向图块序列。对于每个图块序列,通过特征提取器提取其编码向量。回归网络基于图块序列中前面4个图块的编码向量,确定出隐含向量cij,然后基于该隐含向量,按照公式(1)施加不同的预测矩阵(k=1,2,3),得到针对后面3个图块的预测向量。
接着,在步骤25,基于后续图块的实际提取的编码向量和预测向量,确定第一预测损失。
可以理解,第一预测损失可以根据已有的不同衡量损失的进行计算,在一个具体的实施例中,使用对比损失计算方式,确定预测损失。例如,可以使用infonce损失来衡量预测的质量-即编码向量和预测向量的差别,确定第一预测损失,该损失的计算公式为:
其中,i、j表示图块的位置,k表示预测长度,
接着,在步骤26,根据各个第一样本对应的第一预测损失,训练特征提取器和回归网络。
根据第一预测损失来评估特征提取器的特征提取质量,然后根据特征提取质量更新特征提取器和回归网络的神经网络诸参数。
在利用大量的无标签样本实现对特征提取器的训练之后,就可以利用特征提取器,进行验证码图像的特征提取。由于特征提取器只需要无标签样本来进行训练。因此大大降低了整个该验证码识别器训练中对于有标签训练样本的依赖。同时,使用自监督的提取方法进行训练中特征提取的该验证码识别器的验证码识别能力超过了现有的采用监督式的特征提取方法进行验证识别的方法。
进一步的,训练特征提取器可以使用如下的方法获取样本集。
在训练使用的第一样本集中混合正面示例和负面示例,正面示例是有效的验证码图像,即具有完整的字符信息的验证码图像。负面示例为无效的验证码图像,它们的上部和下部区域的可以具有相似的语义信息,但是从整体上来讲,其完整的字符信息已被破坏。通过正向示例使得特征提取器学习有效验证码的特征,将负面示例用作否定示例,提高特征提取器的区分能力。
在不同的实施例中,可以使用不同的方法获得正面示例和负面示例,图3为在实施例中第一样本集包含的正面示例和负面示例的示意图,如图3所示,在一个例子中,无论噪声背景,字体颜色等如何,使用清晰可见的字符图像作为正面示例,以便特征提取器提取有效的特征。正面示例可以来自于真实的验证码图像,也可以是合成器生成的包含完整而清晰字符信息的验证码图像。在另一个例子中,通过将正面示例的字符图像进行破坏字符完整性的合成处理,得到负面示例。例如,通过将正面示例的字符图像上、下部份中调整为具有不同间距,生成负面示例。在又一个例子中,通过将正面示例的字符图像上、下部份进行不用方向的旋转,生成负面示例。在另一个例子中,通过将不同的真实验证码图像的进行拼接,生成负面示例。
在一个具体的实施例中,可以调节正面示例和负面示例中识别难度大的困难示例和识别难度小的容易示例的比例,同时保持正面示例和负面示例比例为一个固定值,如在一个例子中,正面示例和负面示例的数量比例为1:3。
在训练好特征提取器之后,可以不再使用回归网络,而是基于该训练好的特征提取器训练分类器。图4为一个实施例的训练分类器的方法流程图。在训练好的特征提取器基础上,如图4所示,分类器的训练过程至少包括以下步骤。
在步骤41,获取有标签的第二样本集,每个第二样本对应一个验证码图像,且具有标注的真实字符。
如前所述,对于验证码识别而言,带标签的样本就是作为输入的验证码图像表示的验证码字符是预先标注好的。
然后,在步骤42,将第二样本输入训练好的特征提取器,得到第二样本的特征向量。
在一个具体的实施方式中,在特征提取器根据无标签样本进行训练并达到训练质量之后,就可以对验证码图像进行编码和特征提取处理,得到验证码图像的特征向量。其中,编码和特征提取处理和图2中步骤22相同,这里不再赘述。并且,可以理解,此时可以不再使用回归网络,而是将特征提取结果直接传递到分类器。
于是接着,在步骤43,将特征向量输入分类器,预测其中的字符。
具体的,分类器根据输入的特征向量,进行分类处理,确定特征向量中的预测字符。容易理解,在进行分类处理中分类器需要适应各种验证码中的不同字符长度(最大字符长度为n)的分类任务(每个字符的类别为m)。因此,在一个具体的实施例中,分类器的输出层由n个神经元组成,每个神经元都进行m 1个字符类别的分类任务。在一个例子中,分类器使用由三个卷积层和两个完整连接层组成的网络结构。
下一步,在步骤44,基于预测的字符和真实字符,确定第二预测损失;
在步骤45,根据第二预测损失,更新所述分类器。
在利用少量有标签样本实现对分类器的训练之后,训练好的特征提取器和训练好的分类器就构成了验证码识别器。于是就可以利用该识别器,进行识别验证码图像的任务。由于验证码识别器只需要少量有标签样本来进行训练,因此从整体上,大大降低了该验证码识别器训练中对于有标签训练样本的依赖,同时训练好的该验证码识别器的验证码识别能力超过了现有的采用监督式学习方法的验证识别方法。
如图1所示,在一个实施例中,验证码识别器还包含一个分解器,用于从验证码图像中提取字符层图像,从而在验证码图像中包含较多干扰的情况下,去除其中的干扰,便于后续的分类识别。下面描述该分解器的训练方法。
图5示出一个实施例的训练分解器的方法流程图。该分解器用于去除包含干扰图像的验证码图像中的干扰图像。
具体的,该分解器通过学习验证码图像的内部统计信息来分离各层,而无需依赖监督信息,即无需依赖有标签的样本来进行该分解器的训练。应当注意,即使对于没有干扰图像的验证码图像,该分解器也不会破坏其有价值的字符信息(字符层)。因此,分解器是减少本说明书实施例提供的验证码识别器识别难度的一种选择。对于没有干扰图像的验证码图像方案,可以直接使用以上提供的验证码识别器而不使用分解器会非常有效。对于具有干扰图像的验证码,使用分解器可以有效地降低识别难度。
分解器包括,背景图像提取网络、字符图像提取网络和权重掩码生成网络,如图5所示,分解器的训练方法包括:
在步骤51,获取无标签的第三样本集,每个第三样本对应一个包含干扰图像的验证码图像。
实践中,验证码图像常常包含干扰图像,即在验证码图像中除了有具有价值的字符图像信息,还有一些无价值的图像信息,这些无价值的信息被设计出来用于干扰对验证码的识别。在这种情况下,一个包含干扰图像验证码图像可以被视为由三部分组成,即前景层、字符层和背景层。其中,字符层包含真实验证码字符的图像,前景层则包含高频和不规则噪声,而背景层则包含真实验证码字符图像之外的、具有自相似纹理的图像。
在一个具体的实施方式中,将包含干扰图像的验证码图像(第三样本)输入分解器。
接着,在步骤52,去除第三样本中高频、不规则噪音,得到消噪图像。
在一个实施例中,使用高斯滤波器对第三样本进行滤波处理,去除第三样本图像中高频、不规则的噪音,即去除验证码图像中的前景层图像。另注:本步骤之后的第三样本如不做特殊说明均为去掉前景层的消噪图像。
然后,在步骤53,将上述消噪图像分别输入背景图像提取网络、字符图像提取网络和权重掩码生成网络,分别从中得到背景图像、字符图像和权重掩码图像,其中,所述权重掩码图像的像素点数据t(x)代表背景图像、字符图像中相应像素点x在重构时的比重t。
对于去除了前景层的验证码图像,由于背景纹理的多样性,现有技术中尚无去除它的好方法。但是在研究过程中,发明人发现背景层图像具有很强的内部自相似性,与字符层的相似性很弱。基于此属性,发明人设计基于无监督学习的分解器,以通过学习单个验证码图像的内部统计信息来删除背景层并保留有用的信息。
具体的,通过设计独立的背景图像提取网络、字符图像提取网络,分别根据验证码图像得到背景图像、字符图像,以及独立的权重掩码生成网络来生成权重掩码图像,该图像用于确定在学习过程中根据背景图像和字符图像重构的验证码图像中背景图像、字符图像的比重。图6示出在一个实施例中分解器的验证码图像处理示意图。如图6所示,在一个实施例中,将去除前景层后的第三样本,分别输入背景图像提取网络、字符图像提取网络和权重掩码生成网络,分别得到背景图像、字符图像和权重掩码图像。
在另一个具体的实施方式中,背景图像提取网络、字符图像提取网络和权重掩码生成网络均基于深度图像先验(dip)网络。
接着,在步骤54,根据背景图像、字符图像和权重掩码图像生成重构图像;其中,权重掩码图像的像素点数据代表重构图像中该像素点中背景图像、字符图像的比重。
在一个具体的实施方式中,重构图像的方法可表示为数据公式:
其中,xc为字符图像提取网络根据第三样本捕获的字符层的像素数据,xb为背景图像提取网络根据第三样本捕获的背景层的像素数据,t为权重掩码生成网络根据第三样本生成的重构比重,i^为重构图像,使用比重t合并背景层xb和字符层xc以形成重建图像i^。
接着,在步骤55,根据验证码图像、重构图像和权重掩码图像,确定第三预测损失。
在一个实施例中,第三预测损失通过以下方式确定:根据验证码图像和重构图像之间的相似度,确定重构相似度损失lrec;根据权重掩码图像中各个像素点的比重值t(x)与预定的比重阈值t的差值之和,确定背景图像与字符图像之间的独立性损失lexc;根据权重掩码图像中各个像素点的比重值之和,确定字符图像的稀疏度损失值lreg;然后根据所述重构相似度损失、所述独立性损失和所述稀疏度损失,确定所述第三预测损失。
根据一种具体的实施方式,第三预测损失通过如下的公式确定:
loss=lrec lexc lreg(4)
在一个例子中,重构相似度损失lrec可根据均方差方法计算。
在一个例子中,在确定独立性损失lexc时,比重阈值t取0.5,以使得背景图像和字符图像之间尽量互相独立。此时,独立性损失可以写为:
lexc=σx|t(x)-0.5|(5)
在一个例子中,稀疏度损失通过以下公式(6)确定,以使得字符图像在整个图像中尽量稀疏,如此更好地拟合验证码图像中字符分布的特点。
lreg=∑x|t(x)|(6)
进一步的,根据另一种具体的实施方式,还可以对独立性损失lexc,稀疏度损失值lreg进行加权处理,以调整两者在预测损失中的比重,使用该实施方式的损失函数可以表示为如下的公式
loss=lrec λ1lexc λ2lreg(7)
其中,λ1和λ2为权重。
当然,在一种实施方式中,也可以为以上三个损失分量分别赋予权重,进行加权求和。
在步骤56,根据第三预测损失,更新背景图像提取网络、字符图像提取网络和权重掩码生成网络。
根据第三预测损失来评估分解器去除干扰图像的质量,然后根据对于该质量的标准,更新分解器的神经网络诸参数。
在利用大量无标签样本实现对分解器的训练之后,就可以利用该分解器,对有干扰图像的验证码图像进行去除干扰图像操作。在使用该分解器时,将待处理验证码图像输入该分解器,从其中的字符图像提取网络获取其输出的字符图像,该字符图像即为去除了前景层和背景层的无干扰字符图,可以用于后续的识别处理。
如前所述,分解器也无需依赖有标签的样本来进行训练,且即使对于没有干扰图像的验证码图像,该分解器也不会破坏其字符层。因此,使用分解器可以有效地降低验证码识别的难度,以及降低训练样本的获取难度。
根据另一方面的实施例,提供了一种训练验证码识别器的装置,该装置可以部署在任何具有计算、处理能力的设备、平台或设备集群中。图8示出根据一个实施例的验证码识别器的训练装置的示意性框图。如图8所示,该训练装置800包括:
第一样本获取单元81,配置为获取无标签的第一样本集,其中包括多个第一样本,每个第一样本对应一个验证码图像;
图块划分单元82,配置为对于各个第一样本,将对应的验证码图像划分为多个图块;
特征提取单元83,配置为利用所述特征提取器分别提取各个图块的特征,得到各个图块的编码向量;
预测单元84,配置为从所述多个图块中选取连续的图块序列,利用回归网络,基于所述图块序列中前面若干图块的编码向量,确定隐含向量,基于所述隐含向量确定所述图块序列中后续图块的预测向量;
第一损失确定单元85,配置为基于所述后续图块的编码向量和预测向量,确定第一预测损失;
第一训练单元86,配置为根据各个第一样本对应的第一预测损失,训练所述特征提取器和所述回归网络;
第二训练单元87,配置为基于训练好的特征提取器,训练所述分类器。
在一个实施例中,所述第二训练单元87进一步包括(未示出):
第二样本获取模块,配置为获取有标签的第二样本集,其中包括多个第二样本,每个第二样本对应一个验证码图像,且具有标注的真实字符;
特征提取模块,配置为对于各个第二样本,将对应的验证码图像输入训练好的特征提取器,得到第二样本的特征向量;
预测模块,配置为将所述特征向量输入所述分类器,预测其中的字符;
第二损失确定模块,配置为基于预测的字符和所述真实字符,确定第二预测损失;
更新模块,配置为根据第二预测损失,更新所述分类器。
在一个实施例中,第一样本获取单元81进一步配置为:获取真实的验证码图像作为正面示例;基于所述正面示例的验证码图像进行破坏字符完整性的合成处理,将合成的验证码图像作为负面示例。
进一步的,在不同实施例中,所述合成处理,包括以下中的至少一种:将所述正面示例的验证码图像上、下部分按照不同的间距进行合成;将所述正面示例的验证码图像上、下部分按照不同的旋转方向进行合成;拼接不同的正面示例的验证码图像的上、下部分。
在一个实施例中,所述正面示例的数目少于所述负面示例。
根据一种实施方式,图块划分单元82具体配置为:将所述验证码图像划分为预定大小的图块,每个所述图块与其相邻图块存在预定比例的重叠。
在一个实施例中,所述特征提取器通过卷积神经网络cnn实现。
根据一种实施方式,预测单元84通过以下方式从所述多个图块中选取连续的图块序列:从所述多个图块构成的图块阵列中选取同一列的图块,将该列的图块按照从上到下的顺序,或者从下到上的顺序排成所述图块序列。
根据一个实施例,所述回归网络为基于时序的神经网络,所述基于所述图块序列中前面若干图块的编码向量,确定隐含向量包括:将所述前面若干图块分别对应的若干编码向量依次输入所述基于时序的神经网络,所述基于时序的神经网络依次迭代处理所述若干编码向量,将处理所述若干编码向量中最后一个编码向量后得到的状态向量,作为所述隐含向量。
根据又一方面的实施例,提供了一种训练验证码图像分解器的装置,该装置可以部署在任何具有计算、处理能力的设备、平台或设备集群中,并且所述验证码图像分解器用于去除包含干扰图像的验证码图像中的干扰图像,并包括,背景图像提取网络、字符图像提取网络和权重掩码生成网络。图9示出根据一个实施例的验证码图像分解器的训练装置的示意性框图。如图9所示,该训练装置900包括:
第三样本获取单元91,配置为获取无标签的第三样本集,其中包括多个第三样本,每个第三样本对应一个包含干扰图像的验证码图像;
消噪单元92,配置为对于各个第三样本,去除对应验证码图像中高频、不规则噪声,得到消噪图像;
分解单元93,配置为将所述消噪图像分别输入背景图像提取网络、字符图像提取网络和权重掩码生成网络,分别从中得到背景图像、字符图像和权重掩码图像;其中,所述权重掩码图像的像素点数据代表背景图像、字符图像中相应像素点在重构时的比重;
重构单元94,配置为根据背景图像、字符图像和权重掩码图像生成重构图像;
第三损失确定单元95,配置为根据所述消噪图像、重构图像和权重掩码图像,确定第三预测损失;
第三训练单元96,配置为根据第三预测损失,更新背景图像提取网络、字符图像提取网络和权重掩码生成网络。
在一个具体实施例中,第三损失确定单元95具体配置为:根据所述消噪图像和重构图像之间的相似度,确定重构相似度损失;根据权重掩码图像中各个像素点的比重值与预定的比重阈值的差值之和,确定背景图像与字符图像之间的独立性损失;根据权重掩码图像中各个像素点的比重值之和,确定字符图像的稀疏度损失值;根据所述重构相似度损失、所述独立性损失和所述稀疏度损失,确定所述第三预测损失。
进一步的,第三损失确定单元95可以根据预先为所述重构相似度损失、所述独立性损失和所述稀疏度损失分配的权重,对其加权求和,得到所述第三预测损失。
在一个实施例中,所述消噪单元92配置为,使用高斯滤波器去除第三样本中噪声构成的前景图像。
根据一个实施例,其中,所述背景图像提取网络、所述字符图像提取网络和所述权重掩码生成网络均基于深度图像先验网络。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2、图4、图5所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2、图4、图5所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
1.一种训练验证码识别器的方法,所述验证码识别器包括特征提取器和分类器,所述方法包括:
获取无标签的第一样本集,其中包括多个第一样本,每个第一样本对应一个验证码图像;
对于各个第一样本,将对应的验证码图像划分为多个图块;
利用所述特征提取器分别提取各个图块的特征,得到各个图块的编码向量;
从所述多个图块中选取连续的图块序列,利用回归网络,基于所述图块序列中前面若干图块的编码向量,确定隐含向量,基于所述隐含向量确定所述图块序列中后续图块的预测向量;
基于所述后续图块的编码向量和预测向量,确定第一预测损失;
根据各个第一样本对应的第一预测损失,训练所述特征提取器和所述回归网络;
基于训练好的特征提取器,训练所述分类器。
2.根据权利要求1所述的方法,其中,所述基于训练好的特征提取器,训练分类器,包括:
获取有标签的第二样本集,其中包括多个第二样本,每个第二样本对应一个验证码图像,且具有标注的真实字符;
对于各个第二样本,将对应的验证码图像输入训练好的特征提取器,得到第二样本的特征向量;
将所述特征向量输入所述分类器,预测其中的字符;
基于预测的字符和所述真实字符,确定第二预测损失;
根据第二预测损失,更新所述分类器。
3.根据权利要求1所述的方法,其中,获取无标签的第一样本集,包括:
获取真实的验证码图像作为正面示例;
基于所述正面示例的验证码图像进行破坏字符完整性的合成处理,将合成的验证码图像作为负面示例。
4.根据权利要求3所述的方法,其中,基于正面示例的验证码图像进行破坏字符完整性的合成处理,包括以下中的至少一种:
将所述正面示例的验证码图像上、下部分按照不同的间距进行合成;
将所述正面示例的验证码图像上、下部分按照不同的旋转方向进行合成;
拼接不同的正面示例的验证码图像的上、下部分。
5.根据权利要求3所述的方法,其中,所述正面示例的数目少于所述负面示例。
6.根据权利要求1所述的方法,其中,所述将所述验证码图像划分为多个图块,包括:
将所述验证码图像划分为预定大小的图块,每个所述图块与其相邻图块存在预定比例的重叠。
7.根据权利要求1所述的方法,其中,所述特征提取器通过卷积神经网络cnn实现。
8.根据权利要求1所述的方法,其中,从所述多个图块中选取连续的图块序列包括:
从所述多个图块构成的图块阵列中选取同一列的图块,将该列的图块按照从上到下的顺序,或者从下到上的顺序排成所述图块序列。
9.根据权利要求1所述的方法,其中,所述回归网络为基于时序的神经网络,所述基于所述图块序列中前面若干图块的编码向量,确定隐含向量包括:
将所述前面若干图块分别对应的若干编码向量依次输入所述基于时序的神经网络,所述基于时序的神经网络依次迭代处理所述若干编码向量,将处理所述若干编码向量中最后一个编码向量后得到的状态向量,作为所述隐含向量。
10.根据权利要求1所述的方法,其中所述验证码识别器还包括分解器,所述分解器包括背景图像提取网络、字符图像提取网络和权重掩码生成网络;所述方法还包括通过以下方式训练所述分解器:
获取无标签的第三样本集,其中包括多个第三样本,每个第三样本对应一个包含干扰图像的验证码图像;
对于各个第三样本,去除对应验证码图像中高频、不规则噪声,得到消噪图像;
将所述消噪图像分别输入背景图像提取网络、字符图像提取网络和权重掩码生成网络,分别从中得到背景图像、字符图像和权重掩码图像;其中,所述权重掩码图像的像素点数据代表背景图像、字符图像中相应像素点在重构时的比重;
根据背景图像、字符图像和权重掩码图像生成重构图像;
根据所述消噪图像、重构图像和权重掩码图像,确定第三预测损失;
根据第三预测损失,更新背景图像提取网络、字符图像提取网络和权重掩码生成网络。
11.一种训练验证码图像分解器的方法,所述验证码图像分解器用于去除包含干扰图像的验证码图像中的干扰图像,并包括,背景图像提取网络、字符图像提取网络和权重掩码生成网络,所述方法包括:
获取无标签的第三样本集,其中包括多个第三样本,每个第三样本对应一个包含干扰图像的验证码图像;
对于各个第三样本,去除对应验证码图像中高频、不规则噪声,得到消噪图像;
将所述消噪图像分别输入背景图像提取网络、字符图像提取网络和权重掩码生成网络,分别从中得到背景图像、字符图像和权重掩码图像;其中,所述权重掩码图像的像素点数据代表背景图像、字符图像中相应像素点在重构时的比重;
根据背景图像、字符图像和权重掩码图像生成重构图像;
根据所述消噪图像、重构图像和权重掩码图像,确定第三预测损失;
根据第三预测损失,更新背景图像提取网络、字符图像提取网络和权重掩码生成网络。
12.根据权利要求11所述的方法,其中,所述确定第三预测损失,包括:
根据所述消噪图像和重构图像之间的相似度,确定重构相似度损失;
根据权重掩码图像中各个像素点的比重值与预定的比重阈值的差值之和,确定背景图像与字符图像之间的独立性损失;
根据权重掩码图像中各个像素点的比重值之和,确定字符图像的稀疏度损失值;
根据所述重构相似度损失、所述独立性损失和所述稀疏度损失,确定所述第三预测损失。
13.根据权利要求12所述的方法,其中,根据所述重构相似度损失、所述独立性损失和所述稀疏度损失,确定所述第三预测损失,包括,基于预先为所述重构相似度损失、所述独立性损失和所述稀疏度损失分配的权重,对其加权求和。
14.根据权利要求11所述的方法,其中,所述得到消噪图像包括,使用高斯滤波器去除第三样本中噪声构成的前景图像。
15.根据权利要求11所述的方法,其中,所述背景图像提取网络、所述字符图像提取网络和所述权重掩码生成网络均基于深度图像先验网络。
16.一种训练验证码识别器的装置,所述验证码识别器包括特征提取器和分类器,所述装置包括:
第一样本获取单元,配置为获取无标签的第一样本集,其中包括多个第一样本,每个第一样本对应一个验证码图像;
图块划分单元,配置为对于各个第一样本,将对应的验证码图像划分为多个图块;
特征提取单元,配置为利用所述特征提取器分别提取各个图块的特征,得到各个图块的编码向量;
预测单元,配置为从所述多个图块中选取连续的图块序列,利用回归网络,基于所述图块序列中前面若干图块的编码向量,确定隐含向量,基于所述隐含向量确定所述图块序列中后续图块的预测向量;
第一损失确定单元,配置为基于所述后续图块的编码向量和预测向量,确定第一预测损失;
第一训练单元,配置为根据各个第一样本对应的第一预测损失,训练所述特征提取器和所述回归网络;
第二训练单元,配置为基于训练好的特征提取器,训练所述分类器。
17.根据权利要求16所述的装置,其中,所述第二训练单元包括:
第二样本获取模块,配置为获取有标签的第二样本集,其中包括多个第二样本,每个第二样本对应一个验证码图像,且具有标注的真实字符;
特征提取模块,配置为对于各个第二样本,将对应的验证码图像输入训练好的特征提取器,得到第二样本的特征向量;
预测模块,配置为将所述特征向量输入所述分类器,预测其中的字符;
第二损失确定模块,配置为基于预测的字符和所述真实字符,确定第二预测损失;
更新模块,配置为根据第二预测损失,更新所述分类器。
18.一种训练验证码图像分解器的装置,所述验证码图像分解器用于去除包含干扰图像的验证码图像中的干扰图像,并包括,背景图像提取网络、字符图像提取网络和权重掩码生成网络,所述装置包括:
第三样本获取单元,配置为获取无标签的第三样本集,其中包括多个第三样本,每个第三样本对应一个包含干扰图像的验证码图像;
消噪单元,配置为对于各个第三样本,去除对应验证码图像中高频、不规则噪声,得到消噪图像;
分解单元,配置为将所述消噪图像分别输入背景图像提取网络、字符图像提取网络和权重掩码生成网络,分别从中得到背景图像、字符图像和权重掩码图像;其中,所述权重掩码图像的像素点数据代表背景图像、字符图像中相应像素点在重构时的比重;
重构单元,配置为根据背景图像、字符图像和权重掩码图像生成重构图像;
第三损失确定单元,配置为根据所述消噪图像、重构图像和权重掩码图像,确定第三预测损失;
第三训练单元,配置为根据第三预测损失,更新背景图像提取网络、字符图像提取网络和权重掩码生成网络。
19.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-15中任一项的所述的方法。
20.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-15中任一项所述的方法。
技术总结