梁淑芬,胡帥花,秦傳波,鄧志強(qiáng)
(五邑大學(xué) 信息工程學(xué)院,廣東 江門(mén) 529020)
基于深度學(xué)習(xí)的數(shù)字識(shí)別模塊在安卓系統(tǒng)的實(shí)現(xiàn)
梁淑芬,胡帥花,秦傳波,鄧志強(qiáng)
(五邑大學(xué) 信息工程學(xué)院,廣東 江門(mén) 529020)
針對(duì)手寫(xiě)數(shù)字、印刷體數(shù)字和身份證號(hào)碼識(shí)別問(wèn)題,研究了深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)算法,并在安卓系統(tǒng)上開(kāi)發(fā)了數(shù)字識(shí)別應(yīng)用模塊,實(shí)現(xiàn)了數(shù)字圖像的采集、裁剪和定位等預(yù)處理,并運(yùn)用卷積神經(jīng)網(wǎng)絡(luò)的LeNet網(wǎng)絡(luò)模型進(jìn)行數(shù)字識(shí)別. 實(shí)驗(yàn)結(jié)果表明,本文實(shí)現(xiàn)的數(shù)字識(shí)別程序使用簡(jiǎn)便,對(duì)手寫(xiě)數(shù)字、印刷體數(shù)字和身份證號(hào)碼識(shí)別率分別為94.77%、98.32%和99.78%,識(shí)別率較高,具有很好的推廣前景.
深度學(xué)習(xí);卷積神經(jīng)網(wǎng)絡(luò);數(shù)字識(shí)別
數(shù)字序列號(hào)是代表物品信息的重要特征之一,如銀行卡號(hào)、金融票據(jù)號(hào)碼、車牌號(hào)碼、身份證號(hào)碼等[1-2]. 目前應(yīng)用于數(shù)字識(shí)別的算法主要有:鄰近算法[6]、SVM算法[7]、神經(jīng)網(wǎng)絡(luò)法等[3-5]. 鄰近算法的識(shí)別率相對(duì)較低,分類時(shí)間長(zhǎng). SVM算法是針對(duì)兩類的分類問(wèn)題,要實(shí)現(xiàn)如手寫(xiě)數(shù)字識(shí)別這樣的多類識(shí)別就需要構(gòu)造合適的多級(jí)結(jié)構(gòu)的分類器,樣本的存儲(chǔ)和計(jì)算需要耗費(fèi)大量的機(jī)器內(nèi)存和運(yùn)算時(shí)間,對(duì)大規(guī)模訓(xùn)練樣本難以實(shí)施. 神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的學(xué)習(xí)性和自適應(yīng)性,具有其他傳統(tǒng)方法不具有的并行處理能力、容錯(cuò)能力、自學(xué)習(xí)功能和對(duì)圖像識(shí)別中特征自動(dòng)提取的能力.
LeCun等人[3]提出的卷積神經(jīng)網(wǎng)絡(luò)采用多層二維卷積模型,模擬人的視覺(jué)神經(jīng)皮質(zhì)的分層特性與功能,更符合仿生學(xué)特性,除神經(jīng)網(wǎng)絡(luò)的一般特性外,還通過(guò)感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)的個(gè)數(shù),直接使用圖像作為網(wǎng)絡(luò)的輸入,避免了傳統(tǒng)識(shí)別算法中復(fù)雜的特征提取和數(shù)據(jù)重建過(guò)程. 卷積神經(jīng)網(wǎng)絡(luò)中的LeNet網(wǎng)絡(luò)模型采用Softmax多分類器進(jìn)行分類,對(duì)手寫(xiě)數(shù)字識(shí)別這樣的多類識(shí)別具有很好的分類效果,速度較快. 因此,本文基于深度學(xué)習(xí)的LeNet網(wǎng)絡(luò)模型設(shè)計(jì)了一款應(yīng)用于安卓手機(jī)的數(shù)字識(shí)別App,并分別對(duì)手寫(xiě)數(shù)字、印刷體數(shù)字和身份證號(hào)碼進(jìn)行識(shí)別測(cè)試.
數(shù)字識(shí)別系統(tǒng)整體設(shè)計(jì)采用通用MVC(Model-View-Controller)框架,即視圖層、控制層和模型層. 如圖1所示,視圖層由3個(gè)layout界面組成:圖像采集、圖像處理和結(jié)果應(yīng)用交互. 控制層由圖像基本處理、字符切割、CNN、結(jié)果處理等算法邏輯組成,以響應(yīng)用戶的功能操作. 模型層使用了Android支持的SQLite數(shù)據(jù)庫(kù),用于保存用戶的配置信息和初始化程序的運(yùn)行參數(shù).
圖1 數(shù)字識(shí)別系統(tǒng)的邏輯架構(gòu)
數(shù)字識(shí)別算法流程如圖2所示,其包含圖像采集、圖像預(yù)處理、數(shù)字識(shí)別等幾個(gè)部分. 訓(xùn)練樣本采用mnist手寫(xiě)體數(shù)據(jù)庫(kù)、自建樣本庫(kù).
2.1 數(shù)字字符圖像預(yù)處理
對(duì)采集到的圖像進(jìn)行預(yù)處理,如圖2所示,主要包括降噪、二值化、形態(tài)學(xué)處理、定位切割數(shù)字字符(對(duì)含多行多個(gè)數(shù)字字符的圖像進(jìn)行行切割,得到多個(gè)單行的數(shù)字字符圖像,記錄其坐標(biāo),再對(duì)單行數(shù)字字符圖像中的多個(gè)數(shù)字字符進(jìn)行列切割,最后得到單個(gè)數(shù)字字符圖像)和歸一化等一系列常用圖像預(yù)處理方法.
圖2 數(shù)字識(shí)別算法流程
2.2 數(shù)字識(shí)別算法
數(shù)字識(shí)別系統(tǒng)的核心是采用深度學(xué)習(xí)算法卷積神經(jīng)網(wǎng)絡(luò)(CNN)[3]進(jìn)行數(shù)字識(shí)別. CNN中的LeNet架構(gòu)與LeCun在1998年提出的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)類似[3],兩者之間的區(qū)別是將LeNet-5中的Sigmoid激活函數(shù)換成Relu激活函數(shù). 本文設(shè)計(jì)的數(shù)字識(shí)別App采用Caffe中的LeNet網(wǎng)絡(luò)模型,其網(wǎng)絡(luò)模型結(jié)構(gòu)如圖3所示. LeNet網(wǎng)絡(luò)模型包含兩個(gè)卷積層、兩個(gè)降采樣層、兩個(gè)全連接層和一個(gè)激活層,卷積層主要對(duì)上層數(shù)據(jù)進(jìn)行特征提取抽象,降采樣層則是對(duì)數(shù)據(jù)進(jìn)行降維.
Dataset是輸入層,輸入batch_size張歸一化為28×28大小的數(shù)字圖像,共有batch_size×1×28×28個(gè)數(shù)據(jù).
Conv1是卷積層,包含20個(gè)卷積特征圖,通過(guò)5×5大小的卷積核對(duì)輸入圖像進(jìn)行卷積提取圖像的內(nèi)在特征,步長(zhǎng)為1,卷積后輸出20個(gè)大小為(28-5+1)×(28-5+1)的特征圖,共有batch_size×20×24×24個(gè)數(shù)據(jù). Pool1是降采樣層,降采樣的核為2×2,步長(zhǎng)為2,通過(guò)降采樣將特征圖的寬和高的尺寸降采樣到上一層的一半大小,輸出20個(gè)大小為12×12的特征圖,共有batch_size×20×12×12個(gè)數(shù)據(jù).
Conv2依然是卷積層,包含50個(gè)卷積特征圖,卷積核的大小為5×5,步長(zhǎng)為1,通過(guò)卷積之后,輸出50個(gè)大小為(12-5+1)×(12-5+1)的特征圖,共有batch_size×50×8×8個(gè)數(shù)據(jù). Pool2是降采樣層,方法同Pool1,通過(guò)降采樣輸出50個(gè)大小為4×4的特征圖,共有batch_size×50×4×4個(gè)數(shù)據(jù).
圖3 LeNet網(wǎng)絡(luò)結(jié)構(gòu)圖
LeNet中本層的輸入即為上一層的輸出. 如從Pool1層到Conv2層整個(gè)過(guò)程可以表示為:
其中0≤m<M,M=20是Pool1層的特征圖個(gè)數(shù);0≤n<50,N=50是Conv2層的特征圖個(gè)數(shù);0≤x<X,0≤y<Y ,X=Y=12表示Pool1層每個(gè)特征圖數(shù)據(jù)的行和列;0≤p<P,0≤q<Q ,P=Q=5表示Conv2層卷積核的行和列;yL-1(m; x+p, y+q)為Pool1層的輸出,w(m, n; p, q)是對(duì)應(yīng)的權(quán)值參數(shù).
IP1為全連接層,含有500個(gè)特征圖,大小為1×1,共有batch_size×500×1×1個(gè)數(shù)據(jù). Rule1是激活層,對(duì)IP1輸出的數(shù)據(jù)進(jìn)行Rule函數(shù)變換,Rule能夠最大程度的保留數(shù)據(jù)特征,其數(shù)學(xué)表達(dá)式為r=max(0,x),大于0的保留,其他全部置為0,自行引入稀疏性,提高了數(shù)據(jù)處理的效率,加快收斂速度. IP2也為全連接層,含有10個(gè)特征圖,大小為1×1,共有batch_size×10×1×1個(gè)數(shù)據(jù).
SofemaxLoss層采用Softmax回歸模型對(duì)輸入的數(shù)據(jù)進(jìn)行分類和歸一化,并計(jì)算給出的每個(gè)樣本對(duì)應(yīng)的損失函數(shù)值. 本層有兩個(gè)輸入,分別為IP2的輸出和標(biāo)簽值label. Softmax公式為:
其中,n對(duì)應(yīng)于分類種類,此處網(wǎng)絡(luò)是要對(duì)0-9這10個(gè)數(shù)字進(jìn)行識(shí)別,故n=10,如果某個(gè)zj大于其他z,這個(gè)映射的分量就逼近于1,其他分量逼近于0,并對(duì)所有輸入數(shù)據(jù)進(jìn)行歸一化.
計(jì)算損失:
其中,k為該樣本的label.
基于該數(shù)字識(shí)別算法在安卓系統(tǒng)上設(shè)計(jì)一款數(shù)字識(shí)別App. 該程序通過(guò)java編程實(shí)現(xiàn),將java源代碼生成一個(gè)jar包,創(chuàng)建一個(gè)安卓項(xiàng)目,在此項(xiàng)目中導(dǎo)入該jar包,通過(guò)調(diào)用jar包中的方法實(shí)現(xiàn)數(shù)字識(shí)別系統(tǒng)中圖像預(yù)處理和數(shù)字識(shí)別等功能. 運(yùn)行此項(xiàng)目生成一個(gè).apk文件,這個(gè).apk文件就是一個(gè)數(shù)字識(shí)別App,把.apk文件下載到安卓手機(jī)并安裝就能運(yùn)行此App并實(shí)現(xiàn)數(shù)字識(shí)別功能.
圖4 App運(yùn)行示意圖
3.1 App的運(yùn)行流程
App的運(yùn)行流程如圖4所示,程序整體設(shè)計(jì)分為3個(gè)模塊:圖像采集及顯示、圖像處理及識(shí)別、結(jié)果顯示及應(yīng)用.
3.2 App的功能
數(shù)字識(shí)別App實(shí)現(xiàn)了以下3種主要功能:
1)數(shù)字識(shí)別是App的主要功能. 可通過(guò)攝像頭采集圖像或從本地打開(kāi)的圖像選擇指定的圖像區(qū)域進(jìn)行識(shí)別,能實(shí)現(xiàn)印刷或手寫(xiě)的不粘連的多行數(shù)字識(shí)別.
2)App具有簡(jiǎn)單的圖像處理功能,如圖像裁剪、翻轉(zhuǎn)、調(diào)整亮度與透明度、轉(zhuǎn)灰度圖以及形態(tài)處理等. 識(shí)別到的數(shù)字串可編輯或修改,可調(diào)整數(shù)字字符的大小、顏色、間隔等.
3)識(shí)別結(jié)果可保存及分享. 識(shí)別結(jié)果確定無(wú)誤后可直接轉(zhuǎn)成電話號(hào)碼進(jìn)行呼叫、發(fā)短信、或保存聯(lián)系方式. 另外提供保存本地、復(fù)制粘貼和分享到第三方應(yīng)用(如QQ、微信等)等功能.
3.3 App界面設(shè)計(jì)及識(shí)別過(guò)程
App界面設(shè)計(jì)及識(shí)別過(guò)程如圖5所示.
圖5 App界面設(shè)計(jì)及識(shí)別過(guò)程
對(duì)于App測(cè)試和訓(xùn)練所用到的數(shù)據(jù),是利用Caffe庫(kù)快速完成LeNet網(wǎng)絡(luò)模型訓(xùn)練,LeNet訓(xùn)練所用到的訓(xùn)練樣本和測(cè)試樣本如表1所示. 除了mnist庫(kù)70 000張手寫(xiě)數(shù)字圖像外,自行采集約5 000張樣本用于訓(xùn)練. 采集的圖像使用了多種不同的采集設(shè)備對(duì)印刷和手寫(xiě)數(shù)字進(jìn)行采集,并模擬不同光照下采集得到,使得樣本更接近于手機(jī)的實(shí)際應(yīng)用,同時(shí)識(shí)別難度也相應(yīng)增大.
表1 訓(xùn)練樣本與測(cè)試樣本
4.1 LeNet-5和LeNet在mnist庫(kù)的測(cè)試
在mnist手寫(xiě)標(biāo)準(zhǔn)庫(kù)上,分別使用LeNet-5和LeNet進(jìn)行測(cè)試,識(shí)別率如表2所示,LeNet-5和LeNet識(shí)別率分別為99.20%、99.27%,LeNet識(shí)別效果略優(yōu)于LeNet-5. LeNet可同時(shí)識(shí)別多張圖像,識(shí)別效率略高,更適用于實(shí)時(shí)識(shí)別.
表2 LeNet-5和LeNet在mnist中測(cè)試樣本識(shí)別率
4.2 手寫(xiě)數(shù)字的測(cè)試結(jié)果及分析
采集了300張手寫(xiě)數(shù)字圖像進(jìn)行測(cè)試. 這300張圖像來(lái)自于30人的筆跡,共3000個(gè)數(shù)字. 測(cè)試結(jié)果如表3所示,由于手寫(xiě)數(shù)字風(fēng)格眾多,人為隨意性較大、無(wú)規(guī)律可循,因而識(shí)別比較困難,手寫(xiě)數(shù)字識(shí)別率相對(duì)較低,僅94.77%.
4.3 印刷體數(shù)字的測(cè)試結(jié)果及分析
采集了700張印刷體數(shù)字圖像進(jìn)行測(cè)試. 這700張圖像由11位數(shù)字的電話號(hào)碼圖像、19位數(shù)字的銀行卡號(hào)圖像、20位數(shù)字的藥品電子監(jiān)管碼圖像等其他印刷體數(shù)字圖像組成. 其識(shí)別率為98.32%,雖然印刷體數(shù)字字體較多,但與手寫(xiě)數(shù)字因人而異的字體風(fēng)格相比識(shí)別比較簡(jiǎn)單,識(shí)別率也較高.
4.4 身份證號(hào)碼的測(cè)試結(jié)果及分析
采集了100張身份證號(hào)碼圖像進(jìn)行識(shí)別,由表3可知,身份證號(hào)碼的識(shí)別率最高. 身份證號(hào)碼圖像上的字體單一,字體間隔一致,即使在多變的圖像采集環(huán)境下,識(shí)別率也能高達(dá)99.78%. 其中10張身份證號(hào)碼圖像和識(shí)別結(jié)果如圖6所示.
表3 采集的測(cè)試樣本識(shí)別率
圖6 部分身份證號(hào)碼識(shí)別圖像及結(jié)果
本文采用卷積神經(jīng)網(wǎng)絡(luò)中的LeNet網(wǎng)絡(luò)模型建立的數(shù)字識(shí)別模塊具備較高數(shù)字識(shí)別的能力,不僅能識(shí)別印刷體數(shù)字及身份證號(hào)碼,同時(shí)還能識(shí)別手寫(xiě)數(shù)字,其識(shí)別率均超過(guò)94%. 在實(shí)名注冊(cè)時(shí)輸入身份證號(hào)碼、交易時(shí)輸入銀行卡號(hào)、對(duì)藥品進(jìn)行真?zhèn)螜z驗(yàn)時(shí)輸入其電子監(jiān)管碼等場(chǎng)景中,都可以采用本文開(kāi)發(fā)的App進(jìn)行數(shù)字識(shí)別,同時(shí)該App還初步實(shí)現(xiàn)了識(shí)別手寫(xiě)數(shù)字的功能,準(zhǔn)確率高,識(shí)別速度快,具有一定的應(yīng)用價(jià)值. 下一步將對(duì)手寫(xiě)數(shù)字識(shí)別的性能進(jìn)行提高,可以增加更多不同手寫(xiě)字體的訓(xùn)練樣本,改進(jìn)單個(gè)字符圖像切割的方法等.
[1] 程習(xí)武,李旭偉,張德江,等. 基于像素匹配的Android平臺(tái)身份證號(hào)碼實(shí)時(shí)識(shí)別[J]. 現(xiàn)代計(jì)算機(jī),2016(4): 75-80.
[2] 范春梅. 車牌識(shí)別算法的研究與實(shí)現(xiàn)[D]. 江門(mén):五邑大學(xué),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] 任美麗,孟亮. 基于原型生成技術(shù)的手寫(xiě)體數(shù)字識(shí)別[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2015, 36(8): 2211-2216.
[7] 李瓊,陳利,王維虎. 基于SVM的手寫(xiě)體數(shù)字快速識(shí)別方法研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2014, 24(2): 205-208.
[責(zé)任編輯:韋韜]
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
廣東省特色創(chuàng)新類(教育科研類)資助項(xiàng)目(2015GXJK151);廣東省教育廳特色創(chuàng)新類資助項(xiàng)目(2015KTSCX148);廣東省江門(mén)市資助項(xiàng)目(江科[2014]145號(hào)).
梁淑芬(1975—),女,廣東江門(mén)人,副教授,碩士生導(dǎo)師,主要研究方向?yàn)樾盘?hào)與信息處理.