印刷体数字图像识别技术实现

2021-09-26 08:19广州番禺职业技术学院戴锦霞
电子世界 2021年16期
关键词:印刷体图像识别卷积

广州番禺职业技术学院 戴锦霞 杨 鹏 刘 攀

数字识别在计算机视觉与图像识别领域得到了广泛的应用,深度学习算法是目前流行的图像识别算法。基于Caffe的印刷体数字识别方法能准确识别印刷体数字。通过详细介绍此方法的具体实验过程及注意事项,供后续基于深度学习的字符识别等相关领域实现提供参考。

图像识别是计算机视觉领域的一项基础研究。随着互联网的快速发展,图像识别技术在各个领域中发挥着日益重要的作用。数字识别是一种典型的图像识别,在身份证号码、发票、体检单等识别领域均利用其进行数字信息精准提取,提高工作效率。

目前主流的深度学习方法其特征提取不需要人工参与,速度快,准确率高。卷积神经网络是深度学习的算法之一,而Caffe是一个计算卷积神经网络相关算法的深度学习框架,该框架清晰、可读性高、快速,因此利用Caffe进行印刷体数字识别是目前提高数字识别准确率的一种行之有效的办法。其实现过程主要包括数据预处理、Caffe网络定义并训练、识别测试这三大步骤。

1 深度学习框架Caffe

Caffe是目前深度学习比较主流且优秀的一个开源卷积神经网络算法框架。它采用纯C++语言与CUDA实现,同时支持Python、命令行与MATLAB接口。可在CPU和GPU处理器之间实现流畅切换,易扩展,在图像分类、字符识别、语音识别等多个领域得到广泛的应用。

2 数据预处理

实验测试的样本集是选用印刷体数字0—9,每个数字的训练样本数量分别为240、测试样本为40,图像尺寸大小统一为64×64(图1所示)。

图1 印刷体数字图像

把测试图像、训练图像进行简单的预处理,然后保存到数据库中。因为实际任务中训练数据的数量可能非常大,从图像文件中读取数据并进行初始化的效率是非常低的,所以很有必要把数据预先保存在数据库中,来加快训练的速度。

(1)生成train.txt、val.txt文件

利用MATLAB软件或采用 bat 命令快速对训练数据集图片进行图片序号编码,并将训练图像数据的路径、名称、标签一起写入train.txt文件中(图2所示)。利用同样的方式将测试图像数据的路径、名称、标签一起写入val.txt文件中 。

图2 train.txt文件生成

(2)生成trainldb文件、valldb数据库文件

然后将训练的参数和路径写入bat 文件,调用convert_imageset.exe 生成对应的 leveldb 格式数据。执行bat 文件,生成trainldb文件。同样的处理得到valldb文件。

(3)生成训练、测试两个均值文件

计算训练、测试图像数据的均值,编写bat文件调用compute_image_mean.exe,生成两个均值文件train_mean.binaryproto与val_mean.binaryproto。

3 定义caffe网络并训练

当前电脑已安装配置好的caffe前提下,找到caffe自带的例子,即对mnist手写体数字训练使用的卷积神经网络,打开examples/mnist文件夹下的两个文件lenet_solver.prototxt、lenet_train_test.prototxt进行参数修改(图3、图4所示)。

图3 lenet_train_test.prototxt参数修改

图4 lenet_solver.prototxt参数修改

编写bat文件,调用caffe.exe执行训练。经过一段时间的训练,命令行产生了大量日志,训练过程也完成,生成了caffe模型如图5所示。

图5 caffe模型

4 印刷体数字识别测试

利用windows自带的画板绘制64*64的印刷体数字图像(图6所示)。编写python测试代码,调用生成的Caffe模型,对印刷体数字进行识别测试。识别结果如图7所示,能准确识别出正确数字结果。

图6 待测试的数字图像

图7 识别结果

测试过程中如果出现“no module name _caffe”问题,解决方法:

在环境变量中添加路径E:caffe caffe-masterBuildx64Releasepycaffe。

如果出现“import caffe no module named google.protobuf.internal”问题,解决方法:

(1)下载protobuf(地址:https:// github. com/google/protobuf/releases/tag/v3.0.0),下载两个版本,一个protoc-3.0.0-win32.zip,一个源码。

(2)将protoc-3.0.0-win32inprotoc.exe拷贝进入源代码文件夹下src中,进入源代码文件夹下Python文件夹,进入cmd环境执行python setup.py build。

(3)将protobuf-3.0.0python路径下的文件google拷贝到自己原先安装的Python路径Libsite-packages下,这样再次运行就不会报错了。

针对传统印刷体数字识别准确率低、速度慢等问题,提出基于Caffe的印刷体数字识别方法。详细介绍了其相关实验过程、实验结果及注意事项。为后续基于深度学习的字符识别提供解决思路。

猜你喜欢
印刷体图像识别卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
西夏文楷书和草书手写体探微
浅谈小学英语字母手写体与印刷体的教学
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
从滤波器理解卷积
图像识别在物联网上的应用
图像识别在水质检测中的应用
基于傅里叶域卷积表示的目标跟踪算法
高考的时候,把字写得像印刷体有用吗