基于cnn和rnn的银行卡***定位与端到端识别方法

文档序号:1505621 发布日期:2020-02-07 浏览:11次 >En<

阅读说明:本技术 基于cnn和rnn的银行卡***定位与端到端识别方法 (Bank card number positioning and end-to-end identification method based on CNN and RNN ) 是由 倪建军 江聚勇 朱金秀 陈鹏 于 2019-09-29 设计创作,主要内容包括:本发明公开了一种基于CNN和RNN的银行卡卡号定位与端到端识别方法,用于解决现有技术面对银行卡复杂背景花纹、多样印刷和凹凸字体、多种字体颜色和复杂拍摄场景下存在的卡号识别准确度较低的技术问题。实现步骤为:步骤1:制作银行卡图片数据集;步骤2:对银行卡图片数据集进行数据增强;步骤3:定位获取银行卡图片中的卡号区域图片;步骤4:对银行卡号区域图进行端到端的字符识别。本发明能够在各种复杂情况下,有效的对银行卡图片进行卡号定位和卡号端到端识别,可运用于证件号码识别、车牌识别、记分牌识别、票据单号识别等数字识别的场合。(The invention discloses a CNN and RNN-based bank card number positioning and end-to-end identification method, which is used for solving the technical problem of lower card number identification accuracy in the prior art in the presence of complex background patterns, various printing and concave-convex fonts, various font colors and complex shooting scenes of bank cards. The method comprises the following implementation steps: step 1: making a bank card picture data set; step 2: carrying out data enhancement on the bank card picture data set; and step 3: positioning and obtaining a card number area picture in a bank card picture; and 4, step 4: and performing end-to-end character recognition on the bank card number area map. The invention can effectively position the card number of the bank card and identify the card number end to end under various complex conditions, and can be applied to the occasions of digital identification such as certificate number identification, license plate identification, scoreboard identification, bill single number identification and the like.)

基于CNN和RNN的银行卡***定位与端到端识别方法

技术领域

本发明涉及一种基于CNN和RNN的银行卡***定位与端到端识别方法,属于深度学习与计算机视觉技术领域。

背景技术

由于移动互联网的迅速发展,移动支付成为最主流的支付方式之一,人们会在各种场景涉及到银行卡的绑定以进行资金交易。例如:支付宝、微信支付,均需提前绑定银行卡,通过扫一扫功能,扫描银行卡,自动识别***,进行后续的验证操作;银行进行业务前,都需要提供银行卡,扫描银行卡,进行***识别操作等。银行卡自动检测与识别技术的实现能使得这些支付平台的用户通过移动设备自带的摄像头进行拍照自动识别银行卡,与用户手工输入银行***相比,银行***智能检测与识别不仅可以提高工作效率、减少人工成本,同时也可以提升用户体验。

当下,银行卡的版式越来越追求新颖化、个性化、时尚化,所表现出来的是各种银行卡复杂的背景花纹,各种印刷和凹凸字体,各种字体颜色,伴随而来的便是复杂自然场景下银行***识别精度低的结果。

中国专利号:CN109034145A,公开了一种基于OpenCV的银行***识别方法。该数字图像处理方法,考虑到光照强弱对识别精度的影响,通过对不同光照采用不同的二值化算法,进行图像的预处理;然后通过膨胀腐蚀后轮廓提取的方法,获取***区域;再将***区域利用列投影法进行字符分割;最后利用模板匹配算法进行字符识别。

中国专利号:CN109242047A,公开了一种基于K-means++聚类和残差网络分类的银行卡***检测与识别方法。该识别方法,利用K-means++聚类算法进行每一个银行***数字的定位,然后将截取出的一个个银行***输入到残差网络中进行***分类识别。

上述专利所提出的方法,包含大量人工设定的一组固定的参数阈值,来进行银行***的定位和识别。也恰恰因为自然场景的复杂性,依靠人工设定的一组固定参数阈值,不能应对所有的复杂情形。也正因如此,模型抗干扰性和鲁棒性不强,且自动提取图像特征的能力不高,依然容易受到银行卡复杂背景花纹、银行***不同字体、拍摄银行卡的角度、位置和所处复杂场景的干扰,致使银行***识别精度较低。

此外,在某些应用场景中,还需要能识别出银行***之间的空格,而上述的专利所提出的方法,整体思想都是采用将有效的银行***数字进行分割提取的方式,从而均不能做到识别银行***之间的空格。

发明内容

本发明的目的在于克服上述现有技术存在的不足,提出了一种基于CNN和 RNN的银行卡***定位与端到端识别方法,用于解决现有技术中存在的***识别准确率较低和不能识别银行***之间空格的技术问题。

为实现上述目的,本发明采取的技术方案如下:

一种基于CNN和RNN的银行卡***定位与端到端识别方法,包括如下步骤:

(1)、制作银行卡图片数据集;

(2)、对银行卡图片数据集进行数据增强;

(3)、定位获取银行卡图片中的***区域图片;

(4)、对银行***区域图进行端到端的字符识别。

上述步骤(1)的具体步骤如下:

(1a)采集银行卡图片数据集,通过人工放大图片观察,准确的将银行***作为图片的文件名,***之间的空格用某个英文字母区分;

(1b)将得到的带有***标签的银行卡图片数据集,利用LabelImg开源定位标签工具制作银行卡图片数据集的定位标签。

上述步骤(2)的具体步骤如下:

(2a)利用OpenCV的flip函数对银行卡图片进行随机翻转处理,模拟拍摄图片时位置的不同,得到水平翻转或垂直翻转或水平和垂直同时翻转的不同银行卡图片;

(2b)通过随机选取图片的水平和宽度一定范围的像素点,进行银行卡图片的随机裁剪处理,模拟拍摄图片时位置的不同,得到裁剪尺度不同的银行卡图片;

(2c)利用OpenCV的getRotationMatrix2D函数和warpAffine函数对银行卡图片进行随机旋转处理,模拟拍摄图片时角度的不同,得到旋转角度不同的银行卡图片;

(2d)采用OpenCV的LUT函数对银行卡图片进行Gamma明暗度变换,模拟拍摄图片时光照强度的不同,得到明暗度不同的银行卡图片;

(2e)通过随机将图片中的某一些像素点值变为0和255,进行银行卡图片的随机椒盐噪声处理,模拟拍摄图片时产生的噪点,得到噪点数不同的银行卡图片;

(2f)通过随机给图片添加不同大小的高斯噪声,模拟周围复杂环境以及拍摄设备自身所带来的噪声,得到高斯噪声大小不同的银行卡图片;

(2g)利用OpenCV的GaussianBlur函数对银行卡图片进行随机高斯模糊处理,模拟周围复杂场景以及拍摄设备自身所带来的的噪声,得到高斯模糊度不同的银行卡图片;

(2h)采用OpenCV的cvtColor函数对银行卡图片进行不同程度的颜色抖动,模拟银行卡图片背景花纹及周围场景颜色的多样性和复杂性,得到不同颜色空间下的银行卡图片;

(2I)利用OpenCV的resize函数对银行卡图片的大小进行归一化处理,得到规定大小的银行卡图片。

上述步骤(3)的具体步骤如下:

(3a)利用CNN(卷积神经网络)自动提取银行卡图片的特征信息,得到特征图;

(3b)利用滑动窗口在步骤(3a)得到的特征图中进一步提取特征,利用得到的特征来预测该位置K个Anchor对应的类别信息,从而界定出目标待选区域;

(3c)将步骤(3b)得到的特征图输入到一个Bidirectional RNN(双向RNN) 中,得到具有字符序列特征的特征图;

(3d)将步骤(3c)得到的特征图进一步输入到一维CNN中提取特征,以得到更加高层的语义特征图;

(3e)将步骤(3d)得到的高层语义特征图,输入到FC(全连接层)进行分类和回归预测,得到k个选择框的高度和中心的y轴坐标;k个选择框的类别信息,说明其是否为字符;k个选择框的水平偏移量;

(3f)利用文本构造算法,将得到的k个选择框合并成一个整体的文本序列框,从而得到银行***区域定位框;其中损失函数Loss的计算方式,如公式(1) 所示:

Figure RE-GDA0002289299550000041

其中

Figure RE-GDA0002289299550000042

的计算方式,如公式(2)所示:

Figure RE-GDA0002289299550000043

公式(1)中带*的都是ground truth,每一个Anchor都是一个训练样本,i是在mini-batch中的Anchor的索引,si是Anchor是字符的预测概率,

Figure RE-GDA0002289299550000044

是ground truth={0,1};j是y坐标回归中有效Anchor的索引,有效Anchor是正

Figure RE-GDA0002289299550000045

Figure RE-GDA0002289299550000046

或者和ground truthtext proposal>0.5的IOU,vj

Figure RE-GDA0002289299550000047

是第j个Anchor的预测和真实的y坐标;k是实际文本行边界框的左侧或右侧水平距离内的一组Anchor, ok是第k个Anchor的x的预测和实际偏移量;

Figure RE-GDA0002289299550000049

是使用Softmax损失区分文本和非文本的分类损失;

Figure RE-GDA00022892995500000410

Figure RE-GDA00022892995500000411

是回归损失,使用smoothL1函数来计算,λ1和λ2是损失权重,用来平衡不同的任务;Ns,Nv和No是标准化参数,表示

Figure RE-GDA00022892995500000412

Figure RE-GDA00022892995500000413

分别使用的Anchor总数。

上述步骤(4)的具体步骤如下:

(4a)将步骤(3f)得到的银行卡***区域图,利用OpenCV的cvtColor函数对彩色银行卡***图片进行灰度化处理,得到灰度图,在将图片输入CNN自动提取银行卡***图片的特征信息,得到特征图;

(4b)将步骤(4a)得到的特征图输入到一个Bidirectional RNN中,得到具有字符序列特征的特征图;

(4c)利用CTC翻译层将步骤(4b)得到的字符序列特征图映射到最终的 Label序列。

本发明所达到的有益效果:

1、本发明在对银行卡图片进行数据增强中,利用OpenCV各种图像处理函数,对银行卡图片进行了随机翻转、随机裁剪、随机旋转、Gamma明暗度变换、随机椒盐噪声、随机高斯噪声、随机高斯模糊、色彩抖动等一系列的数据增强方式,有效的解决了现有技术中由于银行卡数据集难以收集、银行卡类别繁多和银行卡拍摄场景复杂等问题所带来的训练的模型泛化性和鲁棒性不强,致使***识别的精度较低的不足。

2、本发明使用的CNN、双向RNN、全连接层的组合,能自动提取图片中有效的定位特征信息,可以在各种复杂背景花纹干扰、各种印刷字体、各种拍摄场景、各种拍摄角度和位置情况下都能准确的定位出银行***的区域位置。

3、本发明采用端到端的识别模型,避免了现有技术要先做单个字符分割,然后再识别的复杂流程所容易出现的字符分割不完整、无法分割出字符间的空格和复杂背景花纹干扰字符识别率的缺陷。

附图说明

图1是本发明的实现流程图;

图2是本发明的银行卡***区域定位流程图;

图3是本发明的银行卡***端到端识别流程图。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

实施例:

参照图1,一种基于CNN和RNN的银行卡***定位与端到端识别方法,包括以下步骤:

步骤1:制作银行卡图片数据集

(1a)利用网络爬虫技术和摄像头拍摄采集银行卡图片数据集,对***不清楚、磨损较大和多张银行卡在一张图片中等不符合要求的图片进行剔除。然后再通过人工放大图片观察,准确的将银行***作为图片的文件名,***之间的空格用英文字母“g”区分,例如:3562g5900g1**0g1893。

(1b)将得到的带有***标签的银行卡图片数据集,利用LabelImg开源定位标签工具制作银行卡图片数据集的定位标签,得到***所在区域矩形框的左下角和右上角的坐标,生成XML格式文件,进一步通过程序将XML格式文件转化为 TXT文件,利用矩形框的四个顶点之间的坐标关系,得到矩形框四个顶点的坐标,并写入TXT文件中。

步骤2:对银行卡图片数据集进行数据增强

为了从根源上消除银行卡检测与识别模型受银行卡复杂背景花纹、银行***不同字体、拍摄银行卡的角度、位置和所处复杂场景的干扰问题,通过对银行卡图片数据集进行数据增强产生各种复杂情况下的银行卡图片。具体增强方式如下,其中随机数产生的方式和范围,以及阈值等参数的设定仅仅是为了更好的说明具体实施例的一种:

(2a)当随机产生的(0,1)之间的数值小于0.5时,利用OpenCV的flip函数对银行卡图片进行随机翻转处理,模拟拍摄图片时位置的不同,当flip函数 flipCode参数为1时,进行水平翻转,参数为0时进行垂直翻转,参数为-1时进行水平和垂直同时翻转,从而得到翻转情况不同的银行卡图片。

(2b)当随机产生的(0,1)之间的数值小于0.8时,通过随机选取图片的水平和宽度一定范围的像素点,进行银行卡图片的随机裁剪处理,模拟拍摄图片时位置的不同,得到裁剪尺度不同的银行卡图片。

(2c)当随机产生的(0,1)之间的数值小于0.9时,利用OpenCV的getRotationMatrix2D函数和warpAffine函数对银行卡图片进行随机旋转处理,随机产生的角度在[0,360)区间内,模拟拍摄图片时角度的不同,得到旋转角度不同的银行卡图片。

(2d)当随机产生的(0,1)之间的数值小于0.9时,采用OpenCV的LUT函数对银行卡图片进行Gamma明暗度变换,模拟拍摄图片时光照强度的不同,得到明暗度不同的银行卡图片。

(2e)当随机产生的(0,1)之间的数值小于0.5时,通过随机将图片中的某一些像素点值变为0和255,进行银行卡图片的随机椒盐噪声处理,模拟了拍摄图片时产生的噪点,得到噪点数不同的银行卡图片。

(2f)当随机产生的(0,1)之间的数值小于0.4时,通过随机给图片添加不同大小的高斯噪声,模拟周围复杂环境以及拍摄设备自身所带来的的噪声,得到高斯噪声大小不同的银行卡图片。

(2g)当随机产生的(0,1)之间的数值小于0.4时,利用OpenCV的 GaussianBlur函数对银行卡图片进行随机高斯模糊处理,模拟周围复杂场景以及拍摄设备自身所带来的的噪声,得到高斯模糊度不同的银行卡图片。

(2h)当随机产生的(0,1)之间的数值小于0.8时,采用OpenCV的cvtColor 函数对银行卡图片进行不同程度的颜色抖动,模拟银行卡图片背景花纹及周围场景颜色的多样性和复杂性,得到不同颜色空间下的银行卡图片。

(2I)利用OpenCV的resize函数对银行卡图片大小进行归一化处理,设定函数的参数Width=320,Height=320,从而得到320×320相同大小的银行卡图片。

步骤3:定位获取银行卡图片中的***区域图片

(3a)将大小归一化的图片输入6层卷积核大小不同的卷积层进行提取银行卡图片的特征信息,得到W1×H1×C1大小的特征图;

(3b)利用5×5大小的滑动窗口在(3a)得到的特征图中进一步提取特征,利用得到的特征来预测该位置K个Anchor对应的类别信息,其中Anchor的定义为卷积网络生成特征图之后,用这些特征图进行5×5的卷积,当5×5的卷积核滑动到特征图的某一个位置时,以当前滑动窗口中心为中心映射到原图的一个区域,以原图上的的这个区域为中心去画框,这个框就称为anchor,从而界定出目标待选区域;

(3c)将(3b)得到的W1×5×5×C1的特征图输入到一个Bidirectional RNN(双向RNN)中,得到具有字符序列特征的W1×D1特征图;

(3d)将(3c)得到的特征图进一步输入到2层一维CNN(卷积神经网络) 中提取特征,以得到更加高层的W1'×D1'语义特征图;

(3e)将(3d)得到的高层语义特征图,输入到N维FC(全连接层)进行分类和回归预测,得到k个选择框的高度和中心的y轴坐标;k个选择框的类别信息(是字符或不是字符),说明其是否为字符;k个选择框的水平偏移量;

(3f)利用文本构造算法,将得到的k个选择框合并成一个整体的文本序列框,从而得到银行***区域定位框;其中损失函数Loss的计算方式,如公式(1) 所示:

其中

Figure RE-GDA0002289299550000072

的计算方式,如公式(2)所示:

Figure RE-GDA0002289299550000073

公式(1)中带*的都是ground truth,每一个Anchor都是一个训练样本,i是在mini-batch中的Anchor的索引,si是Anchor是字符的预测概率,

Figure RE-GDA0002289299550000074

是ground truth={0,1};j是y坐标回归中有效Anchor的索引,有效Anchor是正

Figure RE-GDA0002289299550000075

=1)或者和ground truthtext proposal>0.5的IOU,vj

Figure RE-GDA0002289299550000081

是第j个Anchor的预测和真实的y坐标;k是实际文本行边界框的左侧或右侧水平距离内的一组Anchor, ok

Figure RE-GDA0002289299550000082

是第k个Anchor的x的预测和实际偏移量;

Figure RE-GDA0002289299550000083

是使用Softmax损失区分文本和非文本的分类损失;

Figure RE-GDA0002289299550000084

Figure RE-GDA0002289299550000085

是回归损失,使用smooth L1函数来计算,λ1和λ2是损失权重,用来平衡不同的任务;Ns,Nv和No是标准化参数,表示

Figure RE-GDA0002289299550000086

Figure RE-GDA0002289299550000087

分别使用的Anchor总数。

步骤4:对银行***区域图进行端到端的字符识别

(4a)将(3f)得到的银行卡***区域图,利用OpenCV的cvtColor函数对彩色银行卡***图片进行灰度化处理,得到灰度图像如图2所示,将W2×H2输入到 6层CNN(卷积神经网络)自动提取银行卡***图片的特征信息,得到W2'×H2' 特征图;

(4b)将(4a)得到的特征图输入到一个Bidirectional RNN(双向RNN)中,得到具有字符序列特征的特征图;

(4c)利用CTC翻译层将(4b)得到的字符序列特征图映射到最终的Label 序列,银行卡***端到端识别流程如图3所示。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于深度学习的船名字符区域检测方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!