梁淑芬,胡帅花,秦传波,邓志强
(五邑大学 信息工程学院,广东 江门 529020)
基于深度学习的数字识别模块在安卓系统的实现
梁淑芬,胡帅花,秦传波,邓志强
(五邑大学 信息工程学院,广东 江门 529020)
针对手写数字、印刷体数字和身份证号码识别问题,研究了深度学习卷积神经网络算法,并在安卓系统上开发了数字识别应用模块,实现了数字图像的采集、裁剪和定位等预处理,并运用卷积神经网络的LeNet网络模型进行数字识别. 实验结果表明,本文实现的数字识别程序使用简便,对手写数字、印刷体数字和身份证号码识别率分别为94.77%、98.32%和99.78%,识别率较高,具有很好的推广前景.
深度学习;卷积神经网络;数字识别
数字序列号是代表物品信息的重要特征之一,如银行卡号、金融票据号码、车牌号码、身份证号码等[1-2]. 目前应用于数字识别的算法主要有:邻近算法[6]、SVM算法[7]、神经网络法等[3-5]. 邻近算法的识别率相对较低,分类时间长. SVM算法是针对两类的分类问题,要实现如手写数字识别这样的多类识别就需要构造合适的多级结构的分类器,样本的存储和计算需要耗费大量的机器内存和运算时间,对大规模训练样本难以实施. 神经网络具有很强的学习性和自适应性,具有其他传统方法不具有的并行处理能力、容错能力、自学习功能和对图像识别中特征自动提取的能力.
LeCun等人[3]提出的卷积神经网络采用多层二维卷积模型,模拟人的视觉神经皮质的分层特性与功能,更符合仿生学特性,除神经网络的一般特性外,还通过感受野和权值共享减少了神经网络需要训练的参数的个数,直接使用图像作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程. 卷积神经网络中的LeNet网络模型采用Softmax多分类器进行分类,对手写数字识别这样的多类识别具有很好的分类效果,速度较快. 因此,本文基于深度学习的LeNet网络模型设计了一款应用于安卓手机的数字识别App,并分别对手写数字、印刷体数字和身份证号码进行识别测试.
数字识别系统整体设计采用通用MVC(Model-View-Controller)框架,即视图层、控制层和模型层. 如图1所示,视图层由3个layout界面组成:图像采集、图像处理和结果应用交互. 控制层由图像基本处理、字符切割、CNN、结果处理等算法逻辑组成,以响应用户的功能操作. 模型层使用了Android支持的SQLite数据库,用于保存用户的配置信息和初始化程序的运行参数.
图1 数字识别系统的逻辑架构
数字识别算法流程如图2所示,其包含图像采集、图像预处理、数字识别等几个部分. 训练样本采用mnist手写体数据库、自建样本库.
2.1 数字字符图像预处理
对采集到的图像进行预处理,如图2所示,主要包括降噪、二值化、形态学处理、定位切割数字字符(对含多行多个数字字符的图像进行行切割,得到多个单行的数字字符图像,记录其坐标,再对单行数字字符图像中的多个数字字符进行列切割,最后得到单个数字字符图像)和归一化等一系列常用图像预处理方法.
图2 数字识别算法流程
2.2 数字识别算法
数字识别系统的核心是采用深度学习算法卷积神经网络(CNN)[3]进行数字识别. CNN中的LeNet架构与LeCun在1998年提出的LeNet-5卷积神经网络架构类似[3],两者之间的区别是将LeNet-5中的Sigmoid激活函数换成Relu激活函数. 本文设计的数字识别App采用Caffe中的LeNet网络模型,其网络模型结构如图3所示. LeNet网络模型包含两个卷积层、两个降采样层、两个全连接层和一个激活层,卷积层主要对上层数据进行特征提取抽象,降采样层则是对数据进行降维.
Dataset是输入层,输入batch_size张归一化为28×28大小的数字图像,共有batch_size×1×28×28个数据.
Conv1是卷积层,包含20个卷积特征图,通过5×5大小的卷积核对输入图像进行卷积提取图像的内在特征,步长为1,卷积后输出20个大小为(28-5+1)×(28-5+1)的特征图,共有batch_size×20×24×24个数据. Pool1是降采样层,降采样的核为2×2,步长为2,通过降采样将特征图的宽和高的尺寸降采样到上一层的一半大小,输出20个大小为12×12的特征图,共有batch_size×20×12×12个数据.
Conv2依然是卷积层,包含50个卷积特征图,卷积核的大小为5×5,步长为1,通过卷积之后,输出50个大小为(12-5+1)×(12-5+1)的特征图,共有batch_size×50×8×8个数据. Pool2是降采样层,方法同Pool1,通过降采样输出50个大小为4×4的特征图,共有batch_size×50×4×4个数据.
图3 LeNet网络结构图
LeNet中本层的输入即为上一层的输出. 如从Pool1层到Conv2层整个过程可以表示为:
其中0≤m<M,M=20是Pool1层的特征图个数;0≤n<50,N=50是Conv2层的特征图个数;0≤x<X,0≤y<Y ,X=Y=12表示Pool1层每个特征图数据的行和列;0≤p<P,0≤q<Q ,P=Q=5表示Conv2层卷积核的行和列;yL-1(m; x+p, y+q)为Pool1层的输出,w(m, n; p, q)是对应的权值参数.
IP1为全连接层,含有500个特征图,大小为1×1,共有batch_size×500×1×1个数据. Rule1是激活层,对IP1输出的数据进行Rule函数变换,Rule能够最大程度的保留数据特征,其数学表达式为r=max(0,x),大于0的保留,其他全部置为0,自行引入稀疏性,提高了数据处理的效率,加快收敛速度. IP2也为全连接层,含有10个特征图,大小为1×1,共有batch_size×10×1×1个数据.
SofemaxLoss层采用Softmax回归模型对输入的数据进行分类和归一化,并计算给出的每个样本对应的损失函数值. 本层有两个输入,分别为IP2的输出和标签值label. Softmax公式为:
其中,n对应于分类种类,此处网络是要对0-9这10个数字进行识别,故n=10,如果某个zj大于其他z,这个映射的分量就逼近于1,其他分量逼近于0,并对所有输入数据进行归一化.
计算损失:
其中,k为该样本的label.
基于该数字识别算法在安卓系统上设计一款数字识别App. 该程序通过java编程实现,将java源代码生成一个jar包,创建一个安卓项目,在此项目中导入该jar包,通过调用jar包中的方法实现数字识别系统中图像预处理和数字识别等功能. 运行此项目生成一个.apk文件,这个.apk文件就是一个数字识别App,把.apk文件下载到安卓手机并安装就能运行此App并实现数字识别功能.
图4 App运行示意图
3.1 App的运行流程
App的运行流程如图4所示,程序整体设计分为3个模块:图像采集及显示、图像处理及识别、结果显示及应用.
3.2 App的功能
数字识别App实现了以下3种主要功能:
1)数字识别是App的主要功能. 可通过摄像头采集图像或从本地打开的图像选择指定的图像区域进行识别,能实现印刷或手写的不粘连的多行数字识别.
2)App具有简单的图像处理功能,如图像裁剪、翻转、调整亮度与透明度、转灰度图以及形态处理等. 识别到的数字串可编辑或修改,可调整数字字符的大小、颜色、间隔等.
3)识别结果可保存及分享. 识别结果确定无误后可直接转成电话号码进行呼叫、发短信、或保存联系方式. 另外提供保存本地、复制粘贴和分享到第三方应用(如QQ、微信等)等功能.
3.3 App界面设计及识别过程
App界面设计及识别过程如图5所示.
图5 App界面设计及识别过程
对于App测试和训练所用到的数据,是利用Caffe库快速完成LeNet网络模型训练,LeNet训练所用到的训练样本和测试样本如表1所示. 除了mnist库70 000张手写数字图像外,自行采集约5 000张样本用于训练. 采集的图像使用了多种不同的采集设备对印刷和手写数字进行采集,并模拟不同光照下采集得到,使得样本更接近于手机的实际应用,同时识别难度也相应增大.
表1 训练样本与测试样本
4.1 LeNet-5和LeNet在mnist库的测试
在mnist手写标准库上,分别使用LeNet-5和LeNet进行测试,识别率如表2所示,LeNet-5和LeNet识别率分别为99.20%、99.27%,LeNet识别效果略优于LeNet-5. LeNet可同时识别多张图像,识别效率略高,更适用于实时识别.
表2 LeNet-5和LeNet在mnist中测试样本识别率
4.2 手写数字的测试结果及分析
采集了300张手写数字图像进行测试. 这300张图像来自于30人的笔迹,共3000个数字. 测试结果如表3所示,由于手写数字风格众多,人为随意性较大、无规律可循,因而识别比较困难,手写数字识别率相对较低,仅94.77%.
4.3 印刷体数字的测试结果及分析
采集了700张印刷体数字图像进行测试. 这700张图像由11位数字的电话号码图像、19位数字的银行卡号图像、20位数字的药品电子监管码图像等其他印刷体数字图像组成. 其识别率为98.32%,虽然印刷体数字字体较多,但与手写数字因人而异的字体风格相比识别比较简单,识别率也较高.
4.4 身份证号码的测试结果及分析
采集了100张身份证号码图像进行识别,由表3可知,身份证号码的识别率最高. 身份证号码图像上的字体单一,字体间隔一致,即使在多变的图像采集环境下,识别率也能高达99.78%. 其中10张身份证号码图像和识别结果如图6所示.
表3 采集的测试样本识别率
图6 部分身份证号码识别图像及结果
本文采用卷积神经网络中的LeNet网络模型建立的数字识别模块具备较高数字识别的能力,不仅能识别印刷体数字及身份证号码,同时还能识别手写数字,其识别率均超过94%. 在实名注册时输入身份证号码、交易时输入银行卡号、对药品进行真伪检验时输入其电子监管码等场景中,都可以采用本文开发的App进行数字识别,同时该App还初步实现了识别手写数字的功能,准确率高,识别速度快,具有一定的应用价值. 下一步将对手写数字识别的性能进行提高,可以增加更多不同手写字体的训练样本,改进单个字符图像切割的方法等.
[1] 程习武,李旭伟,张德江,等. 基于像素匹配的Android平台身份证号码实时识别[J]. 现代计算机,2016(4): 75-80.
[2] 范春梅. 车牌识别算法的研究与实现[D]. 江门:五邑大学,2013.
[3] LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition [J]. Proc of the IEEE, 1998, 86(11): 2278-2324.
[4] LIU Caihua, LIU Jie, YU Fang, et al. Handwritten character recognition with sequential convolutional neural network [C]//International Conference on Machine Learning and Cybernetics, July 14-17, 2013, [s.l.]: IEEE, c2013: 291-296.
[5] CIRESAN D C, MEIER U, GAMBARDELLA L M, et al. Convolutional neural network committees for handwritten character classification [C]//International Conference on Document Analysis and Recognition. IEEE Computer Society, September 18-21,2011, Beijing: IEEE, c2011: 1135-1139.
[6] 任美丽,孟亮. 基于原型生成技术的手写体数字识别[J]. 计算机工程与设计,2015, 36(8): 2211-2216.
[7] 李琼,陈利,王维虎. 基于SVM的手写体数字快速识别方法研究[J]. 计算机技术与发展,2014, 24(2): 205-208.
[责任编辑:韦韬]
Realization of a Digital Recognition Program Based on Deep Learning in the Android System
LIANG Shu-fen, HU Shuai-hua, QIN Chuan-bo, DENG Zhi-qiang
(School of Information Engineering, Wuyi University, Jiangmen 529020, China)
In order to solve the problem of identifying handwriting, print numbers and ID numbers, the deep learning convolutional neural network (CNN) algorithm is studied, and an App of digits recognition system is developed on the Android smart phone platform to achieve preprocessing such preprocessing as digital image acquisition, cutting and positioning. Also the LeNet network model of the convolution neural network is used to conduct numeral recognition. The experimental results show that this App digital recognition system is convenient to use and achieves 94.77%, 98.32%, and 99.78% accuracy for handwriting numbers, print numbers, and ID numbers respectively.
deep learning; convolutional neural network; digits recognition
TP391.4
A
1006-7302(2017)01-0040-06
2016-11-01
广东省特色创新类(教育科研类)资助项目(2015GXJK151);广东省教育厅特色创新类资助项目(2015KTSCX148);广东省江门市资助项目(江科[2014]145号).
梁淑芬(1975—),女,广东江门人,副教授,硕士生导师,主要研究方向为信号与信息处理.