基于深度学习框架的银行卡识别系统的设计

known 发布于 2025-08-25 阅读(438)

摘" 要:为了减少手工输入银行卡号的错误,提高工作效率,文章基于深度学习技术和图像处理方法设计一个银行卡号自动识别系统。系统首先通过图像处理方法对银行卡图片进行预处理,定位卡号行位置,并采用主流TensorFlow深度学习框架构建深度卷积神经网络模型进行银行卡字符的提取和识别,最后利用PyQt5进行GUI界面搭建,实现银行卡号的输出可视化。文章通过在识别模型中加入Dropout技术提高模型的鲁棒性和泛化能力,实验表明,所设计的系统能够有效地识别银行卡号。

关键词:深度学习;银行卡识别系统;字符识别;PyQt5

中图分类号:TP391" " 文献标识码:A" 文章编号:2096-4706(2024)09-0083-04

Design of Bank Card Recognition System Based on Deep Learning Framework

YAN Linying

(Xian Peihua University, Xian" 710125, China)

Abstract: To reduce errors in manually inputting bank card number and raise working efficiency, this paper designs a bank card number automatic recognition system based on Deep Learning technology and image processing methods. The system firstly preprocesses the bank card image by using image processing methods, locates the position of the card number line, and uses the mainstream Deep Learning framework of TensorFlow to construct a deep Convolutional Neural Networks model for extracting and recognizing bank card characters. Finally, it uses PyQt5 to build a GUI interface to achieve visual output of the bank card number. This paper improves the robustness and generalization ability of the recognition model by incorporating Dropout technology. The experiment shows that the designed system can effectively recognize bank card number.

Keywords: Deep Learning; bank card recognition system; character recognition; PyQt5

0" 引" 言

随着人工智能及移动互联网的发展,移动支付已成为人们生活中不可或缺的一部分。移动支付首先需要绑定银行卡,传统的方式都是手工输入19位银行卡号,然而这种方式存在输错、漏输的现象,导致无法正确支付。为了确保移动支付的准确性,提高效率,文章设计并开发了一款银行卡号自动识别系统,系统的重点在于银行卡的定位及图片中字符的识别[1]。文章基于Lenet-5卷积神经网络模型[2]构建一个多层神经网络模型,为了降低卡号识别模型的复杂度,提高模型识别的准确率,文章通过调用TensorFlow的Keras接口,简化模型的搭建过程,并调用Keras提供的交叉熵损失函数和Adam优化器,优化模型的损失。最后在模型中加入平坦层及Dropout正则化[3],降低模型过拟合现象,进而提高模型的鲁棒性和泛化能力。通过多次调整模型参数及迭代次数,最终模型的准确率可以达到97.6%。

1" TensorFlow及PyQt5平台介绍

1.1" TensorFlow平台

TensorFlow [4]是由谷歌研发的一款用于高性能计算的开源软件库。其基于数据流图的形式表述计算,被广泛应用于语音识别、图像处理、自然语言理解等领域。与TensorFlow 1.x版本不同,TensorFlow 2.0采用Eager模式搭建原型,不需要建立Session就可直接运行模型。在搭建模型上TensorFlow 2.0更加方便快捷。TensorFlow 2.0更推荐使用tf.keras、tf.data等高级接口,简化模型的搭建和训练。

1.2" PyQt5工具

图形化用户界面(GUI)是当前流行的计算机桌面应用程序,PyQt是用于创建GUI应用程序的跨平台工具。PyQt是Qt框架的Python语言实现,由Riverbank Computing开发,是最强大的GUI库之一[5]。PyQt提供了一个设计良好的窗口控件集合,每一个PyQt控件都对应一个Qt控件,因此PyQt的API接口与Qt的API接口很接近,但PyQt不再使用QMake系统和Q_OBJECT宏。

2" 银行卡识别系统设计

银行卡识别系统基于TensorFlow框架,改进了经典卷积神经网络模型Lenet-5 [6],采用PyCharm作为开发平台,结合PyQt5等工具开发完成。系统实现了银行卡号的自动识别,主要功能是对拍摄的银行卡照片进行预处理,然后对卡号行定位进行数字提取,调用识别模型进行字符的识别,最后在界面中输出正确的银行卡号。

系统功能模块如图1所示,主要功能包括数据预处理、卡号定位、图像识别及界面可视化,具体内容有:

1)数据预处理:将图片裁剪并转换为灰度图,数据类型转换为float32。最后打包成npz格式,送入模型训练。

2)卡号定位:对输入图片的卡号位置进行定位。首先检测出模板图像中的数据轮廓,将轮廓按照X方向的坐标大小进行排序,匹配对应的数字,并把轮廓定义为统一大小。

3)图像识别:将输入的银行卡图片提取出卡号部分,对卡号部分计算外接矩形,然后将每一个数字分割为一部分,最后对每个数字轮廓与模板进行对比,选择概率最高的作为模型所预测的数字。

4)界面可视化:利用PyQt5进行界面搭建,最后实现卡号输出可视化。

2.1" 开发环境

银行卡识别系统的环境配置如表1所示。

2.2" 识别模型

文章对传统Lenet-5神经网络模型进行改进,使用tf.keras [7]提供的分类损失函数,并采用ReLU激活函数[8],在每次卷积之后对图像进行正则化处理,减少模型的过拟合。识别模型总共有7层,分别为两次卷积、两次池化和两层全连接,最后输出图像的类别,模型结构如图2所示。

图2" 识别模型结构图

输入层:图像经过预处理后的大小为64×64的灰度图。

卷积层1:卷积核大小为5×5,步长为1,经过一场卷积之后图像大小为32×32。

池化层1:采用最大池化Max-Pooling [9],提取特征图中响应最强烈的部分进入下一层,能够摒弃网络中大量的冗余信息,更多保留些图像的纹理信息。

再经过一次卷积和池化,图像大小为8×8。接着添加两层全连接层,采用ReLU激活函数,该层具有128个神经元。

输出层:输出层有10个神经元,对应0~9数字,采用Softmax激活函数[10]对结果进行分类,使用交叉熵损失函数计算出输出层的概率,得到最终的分类结果。

2.3" 模型训练

2.3.1" 数据预处理

本系统中用于识别模型的数据集来源于数据集bank,bank数据集中有3 283张银行卡图片,其中训练集为2 161张图片,测试集和验证集分别为633张和489张图片。在数据送入模型之前,利用图像处理技术将数据集图像进行了预处理。

数据预处理部分主要包括以下几个步骤:

1)从输入目录中读取图像文件名列表。

2)循环处理每张图片,包括从中随机选取4~7张图片进行拼接、调整大小和灰度化等处理。

3)将处理后的图像数据和对应的标签保存到内存中,当保存的数据量达到一定大小时,将其保存到硬盘上。

4)将保存在硬盘上的数据文件划分为训练集、测试集和验证集,将其对应的文件名写入到训练集、测试集和验证集的列表文件中。

整个数据预处理的过程旨在生成大量的样本数据,用于训练模型。这样做的好处是可以使模型更加健壮,提高识别的准确性。

2.3.2" 字符识别

利用TensorFlow框架的高级接口Keras构建银行卡识别模型步骤如下:

1)构建模型。在TensorFlow平台上通过Keras接口建立一个Sequential模型[11],然后往模型中添加网络层,卷积层激活函数采用ReLU,能够有效减少模型参数,每一次卷积之后加入Dropout层,防止模型过拟合。构建模型核心代码如下:

2)迭代模型。模型采用categorical_crossentropy交叉熵损失函数和Adam优化器来训练模。此优化器能够自适应地调整每个参数的学习率,有助于模型更快地收敛。

3)评估和测试模型。通过模型在训练过程中的损失和准确率,评估模型的效果,如果效果良好就可以应用模型进行识别。

2.3.3" 训练结果分析

在本系统中,使用TensorFlow框架的高级接口Keras建立模型,模型参数设置如表2所示。

模型经过25次迭代之后,损失一直在减小,准确率达到97.6%,加入Dropout层的模型在训练集和测试集的表现良好,并没有出现过拟合的现象,模型在训练过程中的损失率和准确率如图3和图4所示。

从图中可以看出,随着模型训练次数的增加,通过采用Adam优化器对模型进行优化,损失逐渐减小,并且测试集和训练集的损失相差不大,准确率也随着模型的训练逐步提高,尤其在训练到十几轮时模型在测试集和验证集的准确率几乎一样,整个过程中,模型并没有出现过拟合现象。

3" 识别效果

在银行卡号识别系统的界面上传需要识别的图像,点击图片预处理按钮,通过调整图像的尺寸大小、转换为灰度图以及降低图像背景的干扰,将图像处理为符合模型输入层的要求。将处理好的图片进行卡号行定位,定位对的位置最终用红色框显示出来。在界面上点击开始识别按钮,将处理好的图片送入识别模型,运用训练好的模型对图像字符进行识别,最终将识别的结果显示在界面上,系统效果图如图5所示,识别结果无误。

4" 结" 论

针对传统手工输入银行卡号准确率较低的问题,文章设计了一款基于深度学习平台的银行卡号识别系统。系统实现了数据预处理、卡号定位、图像识别及界面可视化等功能。通过在TensorFlow平台上构建多层神经网络模型,调用Keras接口实现模型的搭建和训练,降低模型的复杂度和提高模型的收敛速度,并在传统Lenet-5模型中加入Dropout层防止模型的过拟合,提高模型的泛化能力,最终模型的准确率达到了97.6%,系统识别效果较好。

参考文献:

[1] 张敬勋,张俊虎,赵宇波,等.基于字符分割和LeNet-5网络的字符验证码识别 [J].计算机测量与控制,2023,31(7):271-277.

[2] 张秀玲,魏其珺,周凯旋,等.基于改进LeNet-5网络的车牌字符识别 [J].沈阳大学学报:自然科学版,2020,32(4):312-317.

[3] 满凤环,陈秀宏,何佳佳.改进的Dropout正则化卷积神经网络 [J].传感器与微系统,2018,37(4):44-47.

[4] 潘文婵,黄海平.基于人工智能TensorFlow平台的建设与研究 [J].实验室科学,2023,26(4):44-47.

[5] 卢玲,漆为民.基于PyQt5的求解线性方程组软件的设计与实现 [J].江汉大学学报:自然科学版,2023,51(1):18-27.

[6] 郭庆梅,于恒力,王中训,等.基于卷积神经网络的图像分类模型综述 [J].电子技术应用,2023,46(9):31-38.

[7] 王洪申,李昌德.基于LeNet-5的试卷手写分数无分割识别方法 [J].计算机仿真,2023,40(2):459-465.

[8] 郭小燕,陈鹏,张明,等.基于改进PCA_CNN的银行卡号识别模型 [J].软件导刊,2023,22(4):162-167.

[9] 唐鉴波,李维军,赵波,等.基于卷积神经网络的手写数字识别方法研究 [J].电子设计工程,2022,30(21):189-193.

[10] 高宇鹏,胡众义.基于Keras手写数字识别模型的改进 [J].计算技术与自动化,2021,40(2):164-169.

[11] 董庆伟.基于Keras深度学习算法在结构化数据分类中的应用研究 [J].佳木斯大学学报:自然科学版,2022,40(4):47-49+54.

作者简介:闫琳英(1990—),女,汉族,陕西渭南人,助教,硕士研究生,研究方向:深度学习、大数据分析与挖掘。

标签:  模型 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor