掌桥专利:专业的专利平台
掌桥专利
首页

一种银行卡识别方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 13:29:16


一种银行卡识别方法、装置、计算机设备及存储介质

技术领域

本申请涉及人工智能中的图像处理技术领域,尤其涉及一种应用于移动终端的银行卡识别方法、装置、计算机设备及存储介质。

背景技术

随着互联网金融的发展,在线金融业务(譬如支付,理财等)获得越来越广泛的应用需求。对于个人消费者而言,在线金融业务交易时的安全性与便捷性直接影响着其用户体验。银行卡号搭配密码的方式,因为具有较高的安全性,成为一种被普遍接受的在线交易方式。但是银行卡号往往较为冗长,其所在的银行卡背景常常较为复杂,手工输入银行卡号需要用户反复辨认多次校正,因此通过机器学习自动从银行卡图像中识别出银行卡号,成为一种提升该在线交易方式便捷性的有效手段,逐步受到关注。

现有一种银行卡识别方法,即通过定位银行卡卡号行,并在该卡号行中定位出各个字符,最后根据OCR技术识别各个字符,从而实现对银行卡的识别目的。

然而,在移动终端的前端部署方案中,申请人发现采用传统的银行卡识别方法进行银行卡识别时,由于存在模型过大、移动终端的硬件条件等因素,极大限制该银行卡识别功能在移动终端的兼容性,由此可见,传统的银行卡识别方法存在无法应用在移动终端的前端部署方案中的问题。

发明内容

本申请实施例的目的在于提出一种应用于移动终端的银行卡识别方法、装置、计算机设备及存储介质,以解决传统的银行卡识别方法存在无法应用在移动终端的前端部署方案中的问题。

为了解决上述技术问题,本申请实施例提供一种应用于移动终端的银行卡识别方法,采用了如下所述的技术方案:

接收用户终端发送的前端部署请求,所述前端部署请求至少携带有待部署模型标识;

读取本地数据库,在所述本地数据库中获取与所述待部署模型标识相对应的待部署CRNN模型;

将所述待部署CRNN模型转换为TFLite模型;

将所述TFLite模型移植至所述移动终端的银行卡识别APP中,以供所述银行卡识别APP调用;

当接收到银行卡识别请求时,启动所述银行卡识别APP并调用所述TFLite模型;

获取与待识别的银行卡所对应的待识别银行卡图像;

调用所述TFLite模型对所述待识别银行卡图像进行字符识别操作,得到与所述待识别的银行卡相对应的目标银行卡号。

为了解决上述技术问题,本申请实施例还提供一种应用于移动终端的银行卡识别装置,采用了如下所述的技术方案:

请求获取模块,用于接收用户终端发送的前端部署请求,所述前端部署请求至少携带有待部署模型标识;

待部署模型获取模块,用于读取本地数据库,在所述本地数据库中获取与所述待部署模型标识相对应的待部署CRNN模型;

模型转换模块,用于将所述待部署CRNN模型转换为TFLite模型;

模型移植模块,用于将所述TFLite模型移植至所述移动终端的银行卡识别APP中,以供所述银行卡识别APP调用;

模型启动模块,用于当接收到银行卡识别请求时,启动所述银行卡识别APP并调用所述TFLite模型;

图像获取模块,用于获取与待识别的银行卡所对应的待识别银行卡图像;

字符识别模块,用于调用所述TFLite模型对所述待识别银行卡图像进行字符识别操作,得到与所述待识别的银行卡相对应的目标银行卡号。

为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:

包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上所述的应用于移动终端的银行卡识别方法的步骤。

为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:

所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上所述的应用于移动终端的银行卡识别方法的步骤。

与现有技术相比,本申请实施例主要有以下有益效果:

本申请提供了一种应用于移动终端的银行卡识别方法,包括:接收用户终端发送的前端部署请求,所述前端部署请求至少携带有待部署模型标识;读取本地数据库,在所述本地数据库中获取与所述待部署模型标识相对应的待部署CRNN模型;将所述待部署CRNN模型转换为TFLite模型;将所述TFLite模型移植至所述移动终端的银行卡识别APP中,以供所述银行卡识别APP调用;当接收到银行卡识别请求时,启动所述银行卡识别APP并调用所述TFLite模型;获取与待识别的银行卡所对应的待识别银行卡图像;调用所述TFLite模型对所述待识别银行卡图像进行字符识别操作,得到与所述待识别的银行卡相对应的目标银行卡号。本申请通过将待部署的CRNN模型转换为TFLite模型,并将TFLite模型移植至移动终端的ap中,当需要进行银行卡识别时,即可通过移动终端直接调用该TFLite模型进行图像识别,从而能很好的将银行卡识别功能应用于对模型大小有限制的移动终端前端部署方案中。

附图说明

为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例一提供的应用于移动终端的银行卡识别方法的实现流程图;

图2是图1中步骤S103的一种具体实施方式的流程图;

图3是图2中步骤S202的一种具体实施方式的流程图;

图4是是本申请实施例一提供的Ghost模块的一种具体实施方式的结构示意图;

图5是图2中步骤S202的另一种具体实施方式的流程图;

图6是本申请实施例一提供的优化精简模型获取方法的实现流程图;

图7是图6中步骤S503的一种具体实施方式的流程图;

图8是本申请实施例一提供的应用于移动终端的银行卡识别装置的结构示意图;

图9是图8中待部署模型获取模块120的一种具体实施方式的结构示意图;

图10是根据本申请的计算机设备的一个实施例的结构示意图。

具体实施方式

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。

如图1所示,示出了本申请实施例一提供的应用于移动终端的银行卡识别方法的实现流程图,为了便于说明,仅示出与本申请相关的部分。

上述的应用于移动终端的银行卡识别方法,包括以下步骤:

步骤S101、步骤S102、步骤S103、步骤S104、步骤S105、步骤S106以及步骤S107。

步骤S101:接收用户终端发送的前端部署请求,前端部署请求至少携带有待部署模型标识。

在本申请实施例中,用户终端指的是用于执行本申请提供的预防证件滥用的图像处理方法的终端设备,该当前终端可以是诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端,应当理解,此处对用户终端的举例仅为方便理解,不用于限定本申请。

在本申请实施例中,待部署模型标识主要用于唯一标识需要部署到该移动终端的模型对象,该待部署模型标识可以是基于模型名称命名,作为示例,例如:视觉识别模型、语音识别模型等等;该待部署模型标识可以是基于名称简称进行命名,作为示例,例如:sjsbmx、yysbmx等等;该待部署模型标识还可以是序号进行命名,作为示例,例如:001、002等等,应当理解,此处对待部署模型标识的举例仅为方便理解,不用于限定本申请。

步骤S102:读取本地数据库,在本地数据库中获取与待部署模型标识相对应的待部署CRNN模型。

在本申请实施例中,本地数据库是指驻留于运行客户应用程序的机器的数据库。本地数据库提供最快的响应时间。因为在客户(应用程序)和服务器之间没有网络转输。该本地数据库预先存储有各式各样的训练好的待部署CRNN模型,以解决在计算机银行卡识别等领域存在的问题。

在本申请实施例中,待部署CRNN模型指的是已经训练好的CRNN模型,该CRNN模型的主要功能是实现对银行卡等图像进行字符识别操作,得到该银行卡等图像中的字符内容。

步骤S103:将待部署CRNN模型转换为TFLite模型。

在本申请实施例中,tflite文件由Tensorflow提供的TOCO工具生成的轻量级模型,存储格式是flatbuffer,它是google开源的一种二进制序列化格式,该移动终端够解析该tflite模型,实现移动终端的检测识别。

在本申请实施例中,tflite模型指的是将待部署的CRNN模型转换之后的、能够部署在移动终端上的模型,其中,将待部署CRNN模型转换为TFLite模型的实现过程可以是先在PC端的Tensorflow上进行模型训练,将训练好的模型进行freeze、toco操作,其中,freeze操作主要是将Tensorflow模型持久化中生成的文件进行合并,得到一个变量值和运算图模型相结合的文件,是将变量值固定在图中的操作,最终得到该TFLite模型。

步骤S104:将TFLite模型移植至移动终端的银行卡识别APP中,以供银行卡识别APP调用。

在本申请实施例中,将tflite模型移植至移动终端的实现方式可以是依据TensorflowLite技术,TensorflowLite技术指的是针对移动设备和嵌入式设备的轻量化解决方案,占用空间小,低延迟,TensorflowLite在android8.1以上的设备上可以通过ANNA启用硬件加速,它支持浮点运算和量化模型,并针对移动平台进行优化,可以用来创建和运行自定义模型,开发者也可以在模型中添加自定义操作;目标识别模型经过TensorflowLite转换器转化为tflite模型,tflite模型移植到移动终端的APP中。

在本申请实施例中,将模型移植至移动终端的实现方式可以是1)安装官方GitHub进行Android软件搭建Tensorflow Lite;2)使用Float模式进行模型转换,生成.tflite文件和对应的labels.txt文件;3)将该.tflite文件和labels.txt文件放入Android工程的assets文件中;4)运行即可。

步骤S105:当接收到银行卡识别请求时,启动银行卡识别APP并调用TFLite模型。

在本申请实施例中,在实现了前端部署方案之后,即可实现银行卡识别功能。

步骤S106:获取与待识别的银行卡所对应的待识别银行卡图像。

在本申请实施例中,获取待识别银行卡图像可以是通过摄像设备对待识别的银行卡进行拍照以获取该待识别银行卡图像;该待识别银行卡图像还可以是通过用户终端发送已经拍摄好的图像以获取该待识别银行卡图像,应当理解,此处对获取待识别银行卡图像的举例仅为方便理解,不用于限定本申请。

步骤S107:调用TFLite模型对待识别银行卡图像进行字符识别操作,得到与待识别的银行卡相对应的目标银行卡号。

在本申请实施例中,提供了一种应用于移动终端的银行卡识别方法,包括:接收用户终端发送的前端部署请求,前端部署请求至少携带有待部署模型标识;读取本地数据库,在本地数据库中获取与待部署模型标识相对应的待部署CRNN模型;将待部署CRNN模型转换为TFLite模型;将TFLite模型移植至移动终端的银行卡识别APP中,以供银行卡识别APP调用;当接收到银行卡识别请求时,启动银行卡识别APP并调用TFLite模型;获取与待识别的银行卡所对应的待识别银行卡图像;调用TFLite模型对待识别银行卡图像进行字符识别操作,得到与待识别的银行卡相对应的目标银行卡号。本申请通过将待部署的CRNN模型转换为TFLite模型,并将TFLite模型移植至移动终端的ap中,当需要进行银行卡识别时,即可通过移动终端直接调用该TFLite模型进行图像识别,从而能很好的将银行卡识别功能应用于对模型大小有限制的移动终端前端部署方案中。

继续参阅图2,示出了图1中步骤S103的一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。

在本实施例的一些可选的实现方式中,上述步骤S102具体包括:步骤S201以及步骤S202,上述步骤S103具体包括:步骤S203。

步骤S201:构建与待部署CRNN模型结构类似的初始精简模型。

在本申请实施例中,构建出来的初始精简模型可以是保留了与该待部署CRNN模型相类似的模型结构,不同之处在transformer层的数量;另外,构建出来的初始精简模型还可以是骨干网为ghostnet的轻量级CRNN网络结构。

步骤S202:根据待部署CRNN模型对初始精简模型进行知识蒸馏操作,得到目标精简模型。

在本申请实施例中,知识蒸馏是一种模型压缩方法,是一种基于“教师-学生网络思想”的训练方法,具体的,将已经训练好的模型包含的知识(“Knowledge”),蒸馏(“Distill”)提取到另一个模型里面去的实现过程。

在本申请实施例中,该初始精简模型可以是与该待部署CRNN模型相类似的模型结构,该该初始精简模型也可以是骨干网为ghostnet的轻量级CRNN网络结构,当该初始精简模型为与该待部署CRNN模型相类似的模型结构时,则该知识蒸馏操作具体包括蒸馏上述transformer层以及参数初始化;当该初始精简模型是骨干网为ghostnet的轻量级CRNN网络结构时,则根据待部署CRNN模型和初始精简模型的softmax输出结果进行mse(均方差)计算,从而把mse-loss当做知识蒸馏的loss,同时,初始精简模型的softmax输出会和输入x的真实标签做ctc计算,ctc-loss即为初始精简模型自身训练的loss。最后,初始精简模型的总loss为mse-loss和ctc-loss的线性加权和。

步骤S203:将目标精简模型转换为TFLite模型。

在本申请实施例中,目标精简模型是相较于待部署CRNN模型更小,但识别准确率仍保持较高识别精度的模型。

在本申请实施例中,通过构建比待部署CRNN模型更小目标精简模型,并基于知识蒸馏操作对该目标精简模型进行知识蒸馏,使得本申请能很好的适用于对模型大小有限制的移动终端前端部署方案中,同时,由于简单的网络结构模型存在识别准确率较低的问题,本申请通过知识蒸馏方法对目标精简模型进行模型压缩,能够有效的提高该目标精简模型的识别精度,从而有效解决传统的银行卡识别方法应用在移动终端的前端部署方案中存在准确率较低的问题。

继续参阅图3,示出了图2中步骤S202的一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。

在本实施例的一些可选的实现方式中,初始精简模型为基于ghostnet的轻量级CRNN网络结构,上述步骤S202具体包括:步骤S301、步骤S203、步骤S304以及步骤S305。

步骤S301:在本地数据库中获取标注有已标注数据的蒸馏训练数据。

在本申请实施例中,Ghostnet是华为诺亚方舟实验室在CVPR202提出的,其论文名字是:GhostNet:More Features from Cheap Operations,简单来说,Ghostnet就是通过更简单的运算提取特征,使得过大的神经网络模型更加轻量化。

在本申请实施例中,参阅图4,示出了Ghost模块的一种具体实施方式的结构示意图,先用含一半卷积核的正常卷积提取特征图,再将这个特征图放入到线性运算中得到新的特征图,最终合并这两部分。线性运算指的是3x3或5x5的深度级卷积过程。

在本申请实施例中,待部署CRNN模型teacher model采用的是以res101为骨干网的CRNN网络,该res101层的构成为:

第1层–conv1卷积层+bn+relu+Maxpool;

第2~10层(33)–layer1;

第11~22层(43)–layer2;

第23~91层(233)–layer3;

第92~100层(33)–layer4;

第101层:avgpool层+fc层。

在本申请实施例中,训练精简模型采用的是有标签数据,采用百万级的真实银行卡数据对该CRNN网络进行训练,待训练收敛后,选取识别准确率最优的一个模型进行保存,以便后续在student model训练时进行使用。

步骤S302:在将蒸馏训练数据分别输入至待部署CRNN模型以及初始精简模型,得到待部署输出数据以及精简输出数据。

在本申请实施例中,对于输入x,会同时经过teacher和student网络进行计算,分别得到teacher网络的输出值(即上述待部署输出数据)和student网络的输出值(即上述精简输出数据)。

步骤S303:计算待部署输出数据以及精简输出数据的均方差,得到蒸馏损失。

在本申请实施例中,Teacher model的softmax输出结果和student model的softmax输出结果进行mse(均方差)计算,从而把mse-loss当做知识蒸馏的loss。

步骤S304:根据CTC算法计算精简输出数据以及已标注数据的CTC损失。

在本申请实施例中,student model的softmax输出会和输入x的真实标签做ctc计算,ctc-loss即为student model自身训练的loss。

步骤S305:根据蒸馏损失以及CTC损失的线性加权和对初始精简模型进行训练,得到目标精简模型。

在本申请实施例中,student的总loss为mse-loss和ctc-loss的线性加权和。

在本申请实施例中,一般的CRNN模型训练,优化的损失函数即为ctc-loss;而知识蒸馏后,引入了teacher model和student model之间softmax结果的mse-loss,也就是让student在训练过程中有teacher模型的结果作为指导,从而更好地调整网络参数,增强学习能力。最终,经过实验验证,知识蒸馏后的模型从原先的90%准确率提升至96%左右,能有明显的精度提升效果。

继续参阅图5,示出了图2中步骤S202的另一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。

在本实施例的一些可选的实现方式中,初始精简模型的模型结构与部署CRNN模型相类似,上述步骤S202具体包括:步骤S501、步骤S502以及步骤S503。

步骤S501:根据预设蒸馏系数对初始精简模型的transformer层进行分组操作,得到分组transformer层。

在本申请实施例中,分组操作指的是transformer层数按照蒸馏系数进行分组,作为示例,例如:transformer层数为12,蒸馏系数为3,分组操作则将12个transformer层划分成4组。

步骤S502:根据伯努利分布分别在分组transformer层中进行提取操作,得到待替换transformer层。

在本申请实施例中,伯努利分布指的是对于随机变量X有,参数为p(0

步骤S503:将待替换transformer层分别替换至默认精简模型,得到目标精简模型。

在本申请实施例中,基于层替换的蒸馏方式,保留了与待部署CRNN模型相同的模型结构,差异是层数的不同,使得代码改动量较小,而且大模型与小模型的预测代码是一致的,可以复用原代码,由于蒸馏时,小模型的部分层基于伯努利采样,随机初始化成训练好的大模型映射层的权重,使模型收敛更快,减少训练轮数。

继续参阅图6,示出了本申请实施例一提供的优化精简模型获取方法的实现流程图,为了便于说明,仅示出与本申请相关的部分。

在本实施例的一些可选的实现方式中,上述步骤S503之后,还包括:步骤S601、步骤S602、步骤S603以及步骤S604,上述步骤S103具体包括:步骤S605。

步骤S601:在本地数据库中获取优化训练数据。

在本申请实施例中,优化训练数据主要用于优化目标精简模型的参数,该优化训练数据分别输入至训练好的待部署CRNN模型和目标精简模型,在保证输入数据一致的前提下,可获知待部署CRNN模型和目标精简模型各个transformer层输出的差异。

步骤S602:将优化训练数据分别输入至训练好的待部署CRNN模型以及目标精简模型中,分别得到待部署transformer层输出数据以及目标transformer层输出数据。

步骤S603:基于搬土距离计算待部署transformer层输出数据以及目标transformer层输出数据的蒸馏损失数据。

在本申请实施例中,搬土距离(EMD)是在一个区域D上两个概率分布之间的距离的度量。可分别获取待部署transformer层和目标transformer层分别输出的attention(注意力)矩阵数据,并计算二者attention(注意力)矩阵数据的注意力EMD距离;再获取待部署transformer层和目标transformer层分别输出的FFN(全连接前馈神经网络)隐层矩阵数据,并计算二者FFN隐层矩阵数据的FFN隐层EMD距离,以得到该蒸馏损失数据。

步骤S604:根据蒸馏损失数据对目标精简模型进行参数优化操作,得到优化精简模型。

在本申请实施例中,在获知蒸馏损失数据(即待部署transformer层输出数据以及目标transformer层输出数据的距离度量)后,对目标精简模型的中的参数进行优化,直至蒸馏损失数据小于预设值,或者训练的次数满足预设次数,从而获得该优化精简模型。

步骤S605:将优化精简模型转换为TFLite模型。

在本申请实施例中,由于目标精简模型的transformer层是基于伯努利分布概率进行选取的,从而导致该目标精简模型的参数存在一定的误差,由于待部署CRNN模型中的transformer层对模型的贡献最大,包含的信息最丰富,精简模型在该层的学习能力也最为重要,因此通过采用“搬土距离EMD”计算待部署CRNN模型transformer层的输出以及目标精简模型transformer层的输出之间的损失数据,并基于该损失数据对该目标精简模型的参数进行优化,以提高该目标精简模型的的准确率,能够保证目标模型学习到更多的原始模型的知识。

继续参阅图7,示出了图6中步骤S503的一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。

在本实施例的一些可选的实现方式中,在步骤S503中,具体包括:步骤S701、步骤S702、步骤S703、步骤S704以及步骤S705。

步骤S701:获取待部署transformer层输出的待部署注意力矩阵以及目标transformer层输出的目标注意力矩阵。

步骤S702:根据待部署注意力矩阵以及目标注意力矩阵计算注意力EMD距离。

在本申请实施例中,注意力EMD距离表示为:

其中,Lattn表示注意力EMD距离;AT表示待部署注意力矩阵;A

步骤S703:获取待部署transformer层输出的待部署FFN隐层矩阵以及目标transformer层输出的目标FFN隐层矩阵。

步骤S704:根据待部署FFN隐层矩阵以及目标FFN隐层矩阵计算FFN隐层EMD距离。

在本申请实施例中,FFN隐层EMD距离表示为:

其中,L

步骤S705:基于注意力EMD距离以及FFN隐层EMD距离获得蒸馏损失数据。

在本申请实施例中,transformer层是模型中的重要组成部分,通过自注意力机制可以捕获长距离依赖关系,一个标准的transformer主要包括两部分:多头注意力机制(Multi-Head Attention,MHA)和全连接前馈神经网络(FFN)。EMD是使用线性规划计算两个分布之间最优距离的方法,可以使知识的蒸馏更加合理。

作为本申请的一种优化实施例,注意力EMD距离表示为:

其中,L

作为本申请的一种优化实施例,FFN隐层EMD距离表示为:

其中,L

综上,本申请提供了一种应用于移动终端的银行卡识别方法,包括:接收用户终端发送的前端部署请求,前端部署请求至少携带有待部署模型标识;读取本地数据库,在本地数据库中获取与待部署模型标识相对应的待部署CRNN模型;将待部署CRNN模型转换为TFLite模型;将TFLite模型移植至移动终端的银行卡识别APP中,以供银行卡识别APP调用:当接收到银行卡识别请求时,启动银行卡识别APP并调用TFLite模型;获取与待识别的银行卡所对应的待识别银行卡图像;调用TFLite模型对待识别银行卡图像进行字符识别操作,得到与待识别的银行卡相对应的目标银行卡号。本申请通过将待部署的CRNN模型转换为TFLite模型,并将TFLite模型移植至移动终端的ap中,当需要进行银行卡识别时,即可通过移动终端直接调用该TFLite模型进行图像识别,从而能很好的将银行卡识别功能应用于对模型大小有限制的移动终端前端部署方案中。同时,通过构建比待部署CRNN模型更小目标精简模型,并基于知识蒸馏操作对该目标精简模型进行知识蒸馏,使得本申请能很好的适用于对模型大小有限制的移动终端前端部署方案中,同时,由于简单的网络结构模型存在识别准确率较低的问题,本申请通过知识蒸馏方法对目标精简模型进行模型压缩,能够有效的提高该目标精简模型的识别精度,从而有效解决传统的银行卡识别方法应用在移动终端的前端部署方案中存在准确率较低的问题;让student在训练过程中有teacher模型的结果作为指导,从而更好地调整网络参数,增强学习能力。最终,经过实验验证,知识蒸馏后的模型从原先的90%准确率提升至96%左右,能有明显的精度提升效果;基于层替换的蒸馏方式,保留了与待部署CRNN模型相同的模型结构,差异是层数的不同,使得代码改动量较小,而且大模型与小模型的预测代码是一致的,可以复用原代码,由于蒸馏时,小模型的部分层基于伯努利采样,随机初始化成训练好的大模型映射层的权重,使模型收敛更快,减少训练轮数。

需要强调的是,为进一步保证上述目标银行卡号信息的私密和安全性,上述目标银行卡号信息还可以存储于一区块链的节点中。

本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

实施例二

进一步参考图8,作为对上述图1所示方法的实现,本申请提供了一种应用于移动终端的银行卡识别装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图8所示,本实施例的应用于移动终端的银行卡识别装置100包括:请求获取模块110、待部署模型获取模块120、模型转换模块130、模型移植模块140、模型启动模块150、图像获取模块160以及字符识别模块170。其中:

请求获取模块110,用于接收用户终端发送的前端部署请求,前端部署请求至少携带有待部署模型标识;

待部署模型获取模块120,用于读取本地数据库,在本地数据库中获取与待部署模型标识相对应的待部署CRNN模型;

模型转换模块130,用于将待部署CRNN模型转换为TFLite模型;

模型移植模块140,用于将TFLite模型移植至移动终端的银行卡识别APP中,以供银行卡识别APP调用;

模型启动模块150,用于当接收到银行卡识别请求时,启动银行卡识别APP并调用TFLite模型;

图像获取模块160,用于获取与待识别的银行卡所对应的待识别银行卡图像;

字符识别模块170,用于调用TFLite模型对待识别银行卡图像进行字符识别操作,得到与待识别的银行卡相对应的目标银行卡号。

在本申请实施例中,用户终端指的是用于执行本申请提供的预防证件滥用的图像处理方法的终端设备,该当前终端可以是诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端,应当理解,此处对用户终端的举例仅为方便理解,不用于限定本申请。

在本申请实施例中,待部署模型标识主要用于唯一标识需要部署到该移动终端的模型对象,该待部署模型标识可以是基于模型名称命名,作为示例,例如:视觉识别模型、语音识别模型等等;该待部署模型标识可以是基于名称简称进行命名,作为示例,例如:sjsbmx、yysbmx等等;该待部署模型标识还可以是序号进行命名,作为示例,例如:001、002等等,应当理解,此处对待部署模型标识的举例仅为方便理解,不用于限定本申请。

在本申请实施例中,本地数据库是指驻留于运行客户应用程序的机器的数据库。本地数据库提供最快的响应时间。因为在客户(应用程序)和服务器之间没有网络转输。该本地数据库预先存储有各式各样的训练好的待部署CRNN模型,以解决在计算机银行卡识别等领域存在的问题。

在本申请实施例中,待部署CRNN模型指的是已经训练好的CRNN模型,该CRNN模型的主要功能是实现对银行卡等图像进行字符识别操作,得到该银行卡等图像中的字符内容。

在本申请实施例中,tflite文件由Tensorflow提供的TOCO工具生成的轻量级模型,存储格式是flatbuffer,它是google开源的一种二进制序列化格式,该移动终端够解析该tflite模型,实现移动终端的检测识别。

在本申请实施例中,tflite模型指的是将待部署的CRNN模型转换之后的、能够部署在移动终端上的模型,其中,将待部署CRNN模型转换为TFLite模型的实现过程可以是先在PC端的Tensorflow上进行模型训练,将训练好的模型进行freeze、toco操作,其中,freeze操作主要是将Tensorflow模型持久化中生成的文件进行合并,得到一个变量值和运算图模型相结合的文件,是将变量值固定在图中的操作,最终得到该TFLite模型。

在本申请实施例中,将tflite模型移植至移动终端的实现方式可以是依据TensorflowLite技术,TensorflowLite技术指的是针对移动设备和嵌入式设备的轻量化解决方案,占用空间小,低延迟,TensorflowLite在android8.1以上的设备上可以通过ANNA启用硬件加速,它支持浮点运算和量化模型,并针对移动平台进行优化,可以用来创建和运行自定义模型,开发者也可以在模型中添加自定义操作;目标识别模型经过TensorflowLite转换器转化为tflite模型,tflite模型移植到移动终端的APP中。

在本申请实施例中,将模型移植至移动终端的实现方式可以是1)安装官方GitHub进行Android软件搭建TensorflowLite;2)使用Float模式进行模型转换,生成.tflite文件和对应的labels.txt文件;3)将该.tflite文件和labels.txt文件放入Android工程的assets文件中;4)运行即可。

在本申请实施例中,在实现了前端部署方案之后,即可实现银行卡识别功能。

在本申请实施例中,获取待识别银行卡图像可以是通过摄像设备对待识别的银行卡进行拍照以获取该待识别银行卡图像;该待识别银行卡图像还可以是通过用户终端发送已经拍摄好的图像以获取该待识别银行卡图像,应当理解,此处对获取待识别银行卡图像的举例仅为方便理解,不用于限定本申请。

在本申请实施例中,提供了一种应用于移动终端的银行卡识别装置100,包括:请求获取模块110,用于接收用户终端发送的前端部署请求,前端部署请求至少携带有待部署模型标识;待部署模型获取模块120,用于读取本地数据库,在本地数据库中获取与待部署模型标识相对应的待部署CRNN模型;模型转换模块130,用于将待部署CRNN模型转换为TFLite模型;模型移植模块140,用于将TFLite模型移植至移动终端的银行卡识别APP中,以供银行卡识别APP调用;模型启动模块150,用于当接收到银行卡识别请求时,启动银行卡识别APP并调用TFLite模型;图像获取模块160,用于获取与待识别的银行卡所对应的待识别银行卡图像;字符识别模块170,用于调用TFLite模型对待识别银行卡图像进行字符识别操作,得到与待识别的银行卡相对应的目标银行卡号。本申请通过将待部署的CRNN模型转换为TFLite模型,并将TFLite模型移植至移动终端的ap中,当需要进行银行卡识别时,即可通过移动终端直接调用该TFLite模型进行图像识别,从而能很好的将银行卡识别功能应用于对模型大小有限制的移动终端前端部署方案中。

继续参阅图9,示出了图8中待部署模型获取模块120的一种具体实施方式的结构示意图,为了便于说明,仅示出与本申请相关的部分。

在本实施例的一些可选的实现方式中,待部署模型获取模块120包括:模型构建子模块121以及知识蒸馏子模块122,模型转换模块130包括:第一模型转换子模块131,其中:

模型构建子模块121,用于构建与待部署CRNN模型结构类似的初始精简模型;

知识蒸馏子模块122,用于根据待部署CRNN模型对初始精简模型进行知识蒸馏操作,得到目标精简模型;

第一模型转换子模块131,用于将目标精简模型转换为TFLite模型。

在本申请实施例中,构建出来的初始精简模型可以是保留了与该待部署CRNN模型相类似的模型结构,不同之处在transformer层的数量;另外,构建出来的初始精简模型还可以是骨干网为ghostnet的轻量级CRNN网络结构。

在本申请实施例中,知识蒸馏是一种模型压缩方法,是一种基于“教师-学生网络思想”的训练方法,具体的,将已经训练好的模型包含的知识(“Knowledge”),蒸馏(“Distill”)提取到另一个模型里面去的实现过程。

在本申请实施例中,该初始精简模型可以是与该待部署CRNN模型相类似的模型结构,该该初始精简模型也可以是骨干网为ghostnet的轻量级CRNN网络结构,当该初始精简模型为与该待部署CRNN模型相类似的模型结构时,则该知识蒸馏操作具体包括蒸馏上述transformer层以及参数初始化;当该初始精简模型是骨干网为ghostnet的轻量级CRNN网络结构时,则根据待部署CRNN模型和初始精简模型的softmax输出结果进行mse(均方差)计算,从而把mse-loss当做知识蒸馏的loss,同时,初始精简模型的softmax输出会和输入x的真实标签做ctc计算,ctc-loss即为初始精简模型自身训练的loss。最后,初始精简模型的总loss为mse-loss和ctc-loss的线性加权和。

在本申请实施例中,目标精简模型是相较于待部署CRNN模型更小,但识别准确率仍保持较高识别精度的模型。

在本申请实施例中,通过构建比待部署CRNN模型更小目标精简模型,并基于知识蒸馏操作对该目标精简模型进行知识蒸馏,使得本申请能很好的适用于对模型大小有限制的移动终端前端部署方案中,同时,同时,由于简单的网络结构模型存在识别准确率较低的问题,本申请通过知识蒸馏方法对目标精简模型进行模型压缩,能够有效的提高该目标精简模型的识别精度,从而有效解决传统的银行卡识别方法应用在移动终端的前端部署方案中存在准确率较低的问题。

在本实施例的一些可选的实现方式中,初始精简模型为基于ghostnet的轻量级CRNN网络结构,上述知识蒸馏子模块122包括:训练数据获取子模块、数据输入子模块、均方差计算子模块、CTC损失计算子模块以及模型训练子模块。其中:

训练数据获取子模块,用于在本地数据库中获取标注有已标注数据的蒸馏训练数据;

数据输入子模块,用于在将蒸馏训练数据分别输入至待部署CRNN模型以及初始精简模型,得到待部署输出数据以及精简输出数据;

均方差计算子模块,用于计算待部署输出数据以及精简输出数据的均方差,得到蒸馏损失;

CTC损失计算子模块,用于根据CTC算法计算精简输出数据以及已标注数据的CTC损失;

模型训练子模块,用于根据蒸馏损失以及CTC损失的线性加权和对初始精简模型进行训练,得到目标精简模型。

在本申请实施例中,一般的CRNN模型训练,优化的损失函数即为ctc-loss;而知识蒸馏后,引入了teacher model和student model之间softmax结果的mse-loss,也就是让student在训练过程中有teacher模型的结果作为指导,从而更好地调整网络参数,增强学习能力。最终,经过实验验证,知识蒸馏后的模型从原先的90%准确率提升至96%左右,能有明显的精度提升效果。

在本实施例的一些可选的实现方式中,初始精简模型的模型结构与部署CRNN模型相类似,上述知识蒸馏子模块122包括:分组子模块、提取子模块以及替换子模块。其中:

分组子模块,用于根据预设蒸馏系数对初始精简模型的transformer层进行分组操作,得到分组transformer层;

提取子模块,用于根据伯努利分布分别在分组transformer层中进行提取操作,得到待替换transformer层;

替换子模块,用于将待替换transformer层分别替换至默认精简模型,得到目标精简模型。

在本申请实施例中,基于层替换的蒸馏方式,保留了与待部署CRNN模型相同的模型结构,差异是层数的不同,使得代码改动量较小,而且大模型与小模型的预测代码是一致的,可以复用原代码,由于蒸馏时,小模型的部分层基于伯努利采样,随机初始化成训练好的大模型映射层的权重,使模型收敛更快,减少训练轮数。

在本实施例的一些可选的实现方式中,上述知识蒸馏子模块122还包括:优化数据获取子模块、优化数据输入子模块、蒸馏损失计算子模块以及参数优化子模块;上述模型转换模块包括:第二模型转换子模块。其中:

优化数据获取子模块,用于在本地数据库中获取优化训练数据;

优化数据输入子模块,用于将优化训练数据分别输入至训练好的待部署CRNN模型以及目标精简模型中,分别得到待部署transformer层输出数据以及目标transformer层输出数据;

蒸馏损失计算子模块,用于基于搬土距离计算待部署transformer层输出数据以及目标transformer层输出数据的蒸馏损失数据;

参数优化子模块,用于根据蒸馏损失数据对目标精简模型进行参数优化操作,得到优化精简模型;

第二模型转换子模块,用于将优化精简模型转换为TFLite模型。

在本申请实施例中,由于目标精简模型的transformer层是基于伯努利分布概率进行选取的,从而导致该目标精简模型的参数存在一定的误差,由于待部署CRNN模型中的transformer层对模型的贡献最大,包含的信息最丰富,精简模型在该层的学习能力也最为重要,因此通过采用“搬土距离EMD”计算待部署CRNN模型transformer层的输出以及目标精简模型transformer层的输出之间的损失数据,并基于该损失数据对该目标精简模型的参数进行优化,以提高该目标精简模型的的准确率,能够保证目标模型学习到更多的原始模型的知识。

在本实施例的一些可选的实现方式中,上述蒸馏损失计算子模块包括:注意力矩阵获取单元、注意力EMD距离计算单元、FFN隐层矩阵获取单元、隐层EMD距离计算单元以及蒸馏损失计算单元。其中:

注意力矩阵获取单元,用于获取待部署transformer层输出的待部署注意力矩阵以及目标transformer层输出的目标注意力矩阵;

注意力EMD距离计算单元,用于根据待部署注意力矩阵以及目标注意力矩阵计算注意力EMD距离;

FFN隐层矩阵获取单元,用于获取待部署transformer层输出的待部署FFN隐层矩阵以及目标transformer层输出的目标FFN隐层矩阵;

隐层EMD距离计算单元,用于根据待部署FFN隐层矩阵以及目标FFN隐层矩阵计算FFN隐层EMD距离;

蒸馏损失计算单元,用于基于注意力EMD距离以及FFN隐层EMD距离获得蒸馏损失数据。

在本申请实施例中,transformer层是模型中的重要组成部分,通过自注意力机制可以捕获长距离依赖关系,一个标准的transformer主要包括两部分:多头注意力机制(Multi-Head Attention,MHA)和全连接前馈神经网络(FFN)。EMD是使用线性规划计算两个分布之间最优距离的方法,可以使知识的蒸馏更加合理。

综上,本实施例二提供了提供了一种应用于移动终端的银行卡识别装置100,包括:请求获取模块110,用于接收用户终端发送的前端部署请求,前端部署请求至少携带有待部署模型标识;待部署模型获取模块120,用于读取本地数据库,在本地数据库中获取与待部署模型标识相对应的待部署CRNN模型;模型转换模块130,用于将待部署CRNN模型转换为TFLite模型;模型移植模块140,用于将TFLite模型移植至移动终端的银行卡识别APP中,以供银行卡识别APP调用;模型启动模块150,用于当接收到银行卡识别请求时,启动银行卡识别APP并调用TFLite模型;图像获取模块160,用于获取与待识别的银行卡所对应的待识别银行卡图像;字符识别模块170,用于调用TFLite模型对待识别银行卡图像进行字符识别操作,得到与待识别的银行卡相对应的目标银行卡号。本申请通过将待部署的CRNN模型转换为TFLite模型,并将TFLite模型移植至移动终端的ap中,当需要进行银行卡识别时,即可通过移动终端直接调用该TFLite模型进行图像识别,从而能很好的将银行卡识别功能应用于对模型大小有限制的移动终端前端部署方案中。同时,通过构建比待部署CRNN模型更小目标精简模型,并基于知识蒸馏操作对该目标精简模型进行知识蒸馏,使得本申请能很好的适用于对模型大小有限制的移动终端前端部署方案中,同时,由于简单的网络结构模型存在识别准确率较低的问题,本申请通过知识蒸馏方法对目标精简模型进行模型压缩,能够有效的提高该目标精简模型的识别精度,从而有效解决传统的银行卡识别方法应用在移动终端的前端部署方案中存在准确率较低的问题;让student在训练过程中有teacher模型的结果作为指导,从而更好地调整网络参数,增强学习能力。最终,经过实验验证,知识蒸馏后的模型从原先的90%准确率提升至96%左右,能有明显的精度提升效果;基于层替换的蒸馏方式,保留了与待部署CRNN模型相同的模型结构,差异是层数的不同,使得代码改动量较小,而且大模型与小模型的预测代码是一致的,可以复用原代码,由于蒸馏时,小模型的部分层基于伯努利采样,随机初始化成训练好的大模型映射层的权重,使模型收敛更快,减少训练轮数。

为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图10,图10为本实施例计算机设备基本结构框图。

所述计算机设备200包括通过系统总线相互通信连接存储器210、处理器220、网络接口230。需要指出的是,图中仅示出了具有组件210-230的计算机设备200,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。

所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。

所述存储器210至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器210可以是所述计算机设备200的内部存储单元,例如该计算机设备200的硬盘或内存。在另一些实施例中,所述存储器210也可以是所述计算机设备200的外部存储设备,例如该计算机设备200上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器210还可以既包括所述计算机设备200的内部存储单元也包括其外部存储设备。本实施例中,所述存储器210通常用于存储安装于所述计算机设备200的操作系统和各类应用软件,例如应用于移动终端的银行卡识别方法的计算机可读指令等。此外,所述存储器210还可以用于暂时地存储已经输出或者将要输出的各类数据。

所述处理器220在一些实施例中可以是中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器220通常用于控制所述计算机设备200的总体操作。本实施例中,所述处理器220用于运行所述存储器210中存储的计算机可读指令或者处理数据,例如运行所述应用于移动终端的银行卡识别方法的计算机可读指令。

所述网络接口230可包括无线网络接口或有线网络接口,该网络接口230通常用于在所述计算机设备200与其他电子设备之间建立通信连接。

本申请提供的计算机设备200,通过将待部署的CRNN模型转换为TFLite模型,从而能很好的将银行卡识别功能应用于对模型大小有限制的移动终端前端部署方案中。

本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的应用于移动终端的银行卡识别方法的步骤。

本申请提供的计算机可读存储介质,通过将待部署的CRNN模型转换为TFLite模型,从而能很好的将银行卡识别功能应用于对模型大小有限制的移动终端前端部署方案中。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。

显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

相关技术
  • 一种银行卡识别方法、装置、计算机设备及存储介质
  • 银行卡卡号识别方法、装置、计算机设备和存储介质
技术分类

06120113692533