文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.182249
中文引用格式: 黃睿,,陸許明,,鄔依林. 基于TensorFlow深度學習手寫體數(shù)字識別及應(yīng)用[J].電子技術(shù)應(yīng)用,2018,44(10):6-10.
英文引用格式: Huang Rui,,Lu Xuming,,Wu Yilin. Handwriting digital recognition and application based on TensorFlow deep learning[J]. Application of Electronic Technique,2018,,44(10):6-10.
0 引言
隨著科技的發(fā)展,,人工智能識別技術(shù)已廣泛應(yīng)用于各個領(lǐng)域,,同時也推動著計算機的應(yīng)用朝著智能化發(fā)展。一方面,,以深度學習,、神經(jīng)網(wǎng)絡(luò)為代表的人工智能模型獲國內(nèi)外學者的廣泛關(guān)注;另一方面,,人工智能與機器學習的系統(tǒng)開源,,構(gòu)建了開放的技術(shù)平臺,促進人工智能研究的開發(fā),。本文基于TensorFlow深度學習框架,,構(gòu)建Softmax、CNN模型,,并完成手寫體數(shù)字的識別,。
LECUN Y等提出了一種LeNet-5的多層神經(jīng)網(wǎng)絡(luò)用于識別0~9的手寫體數(shù)字,該研究模型通過反向傳播(Back Propagation,,BP)算法進行學習,,建立起CNN應(yīng)用的最早模型[1-2]。隨著人工智能圖像識別的出現(xiàn),,CNN成為研究熱點,近年來主要運用于圖像分類[3],、目標檢測[4],、目標跟蹤[5]、文本識別[6]等方面,,其中AlexNet[7],、GoogleNet[8]和ResNet[9]等算法取得了較大的成功。
本文基于Google第二代人工智能開源平臺TensorFlow,結(jié)合深度學習框架,,對Softmax回歸算法和CNN模型進行對比驗證,,最后對訓練的模型基于Android平臺下進行應(yīng)用。
1 TensorFlow簡介
2015年11月9日,,Google發(fā)布并開源第二代人工智能學習系統(tǒng)TensorFlow[10],。Tensor表示張量(由N維數(shù)組成),F(xiàn)low(流)表示基于數(shù)據(jù)流圖的計算,,TensorFlow表示為將張量從流圖的一端流動到另一端的計算,。TensorFlow支持短期記憶網(wǎng)絡(luò)(Long Short Term Memory Networks,LSTMN),、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)等深度神經(jīng)網(wǎng)絡(luò)模型。TensorFlow的基本架構(gòu)如圖1所示,。
由圖1可知,,TensorFlow的基本架構(gòu)可分為前端和后端。前端:基于支持多語言的編程環(huán)境,,通過調(diào)用系統(tǒng)API來訪問后端的編程模型,。后端:提供運行環(huán)境,由分布式運行環(huán)境,、內(nèi)核,、網(wǎng)絡(luò)層和設(shè)備層組成。
2 Softmax回歸
Softmax回歸算法能將二分類的Logistic回歸問題擴展至多分類,。假設(shè)回歸模型的樣本由K個類組成,,共有m個,則訓練集可由式(1)表示:
式中,,x(i)∈R(n+1),,y(i)∈{1,2,,…,,K},n+1為特征向量x的維度,。對于給定的輸入值x,,輸出的K個估計概率由式(2)表示:
對參數(shù)θ1,θ2,,…,,θk進行梯度下降,得到Softmax回歸模型,,在TensorFlow中的實現(xiàn)如圖2所示,。
對圖2進行矩陣表達,,可得式(5):
將測試集數(shù)據(jù)代入式(5),并計算所屬類別的概率,,則概率最大的類別即為預(yù)測結(jié)果,。
3 CNN
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種前饋神經(jīng)網(wǎng)絡(luò),通常包含數(shù)據(jù)輸入層,、卷積計算層,、ReLU激勵層、池化層,、全連接層等,,是由卷積運算來代替?zhèn)鹘y(tǒng)矩陣乘法運算的神經(jīng)網(wǎng)絡(luò)。CNN常用于圖像的數(shù)據(jù)處理,,常用的LenNet-5神經(jīng)網(wǎng)絡(luò)模型圖如圖3所示,。
該模型由2個卷積層、2個抽樣層(池化層),、3個全連接層組成,。
3.1 卷積層
卷積層是通過一個可調(diào)參數(shù)的卷積核與上一層特征圖進行滑動卷積運算,再加上一個偏置量得到一個凈輸出,,然后調(diào)用激活函數(shù)得出卷積結(jié)果,,通過對全圖的滑動卷積運算輸出新的特征圖,如式(6)~式(7)所示:
3.2 抽樣層
抽樣層是將輸入的特征圖用n×n窗口劃分成多個不重疊的區(qū)域,,然后對每個區(qū)域計算出最大值或者均值,,使圖像縮小了n倍,最后加上偏置量通過激活函數(shù)得到抽樣數(shù)據(jù),。其中,,最大值法、均值法及輸出函數(shù)如式(8)~式(10)所示:
3.3 全連接輸出層
全連接層則是通過提取的特征參數(shù)對原始圖片進行分類,。常用的分類方法如式(11)所示:
4 實驗分析
本文基于TensorFlow深度學習框架,,數(shù)據(jù)源使用MNIST數(shù)據(jù)集,分別采用Softmax回歸算法和CNN深度學習進行模型訓練,,然后將訓練的模型進行對比驗證,,并在Android平臺上進行應(yīng)用。
4.1 MNIST數(shù)據(jù)集
MNIST數(shù)據(jù)集包含60 000行的訓練數(shù)據(jù)集(train-images-idx3)和10 000行的測試數(shù)據(jù)集(test-images-idx3),。每個樣本都有唯一對應(yīng)的標簽(label),,用于描述樣本的數(shù)字,每張圖片包含28×28個像素點,,如圖4所示,。
由圖4可知,每一幅樣本圖片由28×28個像素點組成,,可由一個長度為784的向量表示。MNIST的訓練數(shù)據(jù)集可轉(zhuǎn)換成[60 000,784]的張量,,其中,,第一個維度數(shù)據(jù)用于表示索引圖片,第二個維度數(shù)據(jù)用于表示每張圖片的像素點,。而樣本對應(yīng)的標簽(label)是介于0到9的數(shù)字,,可由獨熱編碼(one-hot Encoding)進行表示。一個獨熱編碼除了某一位數(shù)字是1以外,,其余維度數(shù)字都是0,,如標簽0表示為[1,0,,0,,0,0,,0,,0,0,,0,,0],所以,,樣本標簽為[60 000,,10]的張量。
4.2 Softmax模型實現(xiàn)
根據(jù)式(5),,可以將Softmax模型分解為矩陣基本運算和Softmax調(diào)用,,該模型實現(xiàn)方式如下:(1)使用符號變量創(chuàng)建可交互的操作單元;(2)創(chuàng)建權(quán)重值和偏量,;(3)根據(jù)式(5),,實現(xiàn)Softmax回歸。
4.3 CNN模型實現(xiàn)
結(jié)合LenNet-5神經(jīng)網(wǎng)絡(luò)模型,,基于TensorFlow深度學習模型實現(xiàn)方式如下:
(1)初始化權(quán)重和偏置,;
(2)創(chuàng)建卷積和池化模板;
(3)進行兩次的卷積,、池化,;
(4)進行全連接輸出;
(5)Softmax回歸,。
4.4 評估指標
采用常用的成本函數(shù)“交叉熵”(cross-entropy),,如式(12)所示:
4.5 模型檢驗
預(yù)測結(jié)果檢驗方法如下:
(1)將訓練后的模型進行保存;
(2)輸入測試樣本進行標簽預(yù)測,;
(3)調(diào)用tf.argmax函數(shù)獲取預(yù)測的標簽值,;
(4)與實際標簽值進行匹配,,最后計算識別率。
根據(jù)上述步驟,,分別采用Softmax模型和卷積神經(jīng)網(wǎng)絡(luò)對手寫數(shù)字0~9的識別數(shù)量,、識別率分別如圖5、表1所示,。
根據(jù)表1的模型預(yù)測結(jié)果可知,,Softmax模型對數(shù)字1的識別率為97.9%,識別率最高,。對數(shù)字3和數(shù)字8的識別率相對較小,,分別是84.9%、87.7%,。Softmax模型對手寫體數(shù)字0~9的整體識別率達91.57%,。
結(jié)合圖5和表1可知,基于CNN模型的整體識別率高于Softmax模型,,其中對數(shù)字3的識別率提高了14.7%,,對數(shù)字1的識別率只提高了1.7%?;谏疃葘W習CNN模型對手寫體數(shù)字0~9的整體識別率高達99.17%,,比Softmax模型整體提高了7.6%。
4.6 模型應(yīng)用
通過模型的對比驗證可知,,基于深度學習CNN的識別率優(yōu)于Softmax模型?,F(xiàn)將訓練好的模型移植到Android平臺,進行跨平臺應(yīng)用,,實現(xiàn)方式如下,。
(1)UI設(shè)計
用1個Bitmap控件顯示用戶手寫觸屏的軌跡,并將2個Button控件分別用于數(shù)字識別和清屏,。
(2)TensorFlow引用
首先編譯需要調(diào)用的TensorFlow的jar包和so文件,。其次將訓練好的模型(.pb)導入到Android工程。
(3)接口實現(xiàn)
①接口定義及初始化:
inferenceInterface.initializeTensorFlow(getAssets(), MODEL_FILE);
②接口的調(diào)用:
inferenceInterface.fillNodeFloat(INPUT_NODE, new int[]{1, HEIGHT, WIDTH, CHANNEL}, inputs);
③獲取預(yù)測結(jié)果
inferenceInterface.readNodeFloat(OUTPUT_NODE, outputs);
通過上述步驟即可完成基于Android平臺環(huán)境的搭建及應(yīng)用,,首先利用Android的觸屏功能捕獲并記錄手寫軌跡,,手寫完成后單擊識別按鈕,系統(tǒng)將調(diào)用模型進行識別,,并將識別結(jié)果輸出到用戶界面,。識別完成后,單擊清除按鈕,,循環(huán)上述操作步驟可進行手寫數(shù)字的再次識別,,部分手寫數(shù)字的識別效果如圖6所示。
由圖6可知,,在Android平臺上完成了基于TensorFlow深度學習手寫數(shù)字的識別,,并且采用CNN的訓練模型有較好的識別效果,,實現(xiàn)了TensorFlow訓練模型跨平臺的應(yīng)用。
5 結(jié)論
本文基于TensorFlow深度學習框架,,采用Softmax回歸和CNN等算法進行手寫體數(shù)字訓練,,并將模型移植到Android平臺,,進行跨平臺應(yīng)用,。實驗數(shù)據(jù)表明,基于Softmax回歸模型的識別率為91.57%,,基于CNN模型的識別率高達99.17%,。表明基于深度學習的手寫體數(shù)字識別在人工智能識別方面具有一定的參考意義。
參考文獻
[1] HUBEL D H,,WIESEL T N.Receptive fields and functional architecture of monkey striate cortex[J].Journal of Physiology,,1968,195(1):215-243.
[2] LECUN Y,,BOTTOU L,,BENGIO Y,et al.Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,,1998,,86(11):2278-2324.
[3] ZEILER M D,F(xiàn)ERGUS R.Visualizing and understanding convolutional networks[J].arXiv:1311.2901[cs.CV].
[4] 賀康建,,周冬明,,聶仁燦,等.基于局部控制核的彩色圖像目標檢測方法[J].電子技術(shù)應(yīng)用,,2016,,42(12):89-92.
[5] LI H,LI Y,,PORIKLI F.DeepTrack:learning discriminative feature representations online for robust visual tracking[J].IEEE Transactions on Image Processing,,2015,25(4):1834-1848.
[6] GOODFELLOW I J,,BULATOV Y,,IBARZ J,et al.Multi-digit number recognition from street view imagery using deep convolutional neural networks[J].arXiv:1312.6082[cs.CV].
[7] KRIZHEVSKY A,,SUTSKEVER I,,HINTON G E.ImageNet classifycation with deep convolutional neural networks[C].International Conference on Neural Information Processing Systems.Curran Associates Inc.,2012:1097-1105.
[8] SZEGEDY C,,LIU W,,JIA Y,et al.Going deeper with convoluteons[C].IEEE Conference on Computer Vision and Pattern Recognition.IEEE,,2015:1-9.
[9] HE K,,ZHANG X,,REN S,et al.Deep residual learning for image recognition[J].arXiv:1512.03385[cs.CV].
[10] ABADI M,,AGARWAL A,,BARHAM P,et al.TensorFlow:large-scale machine learning on heterogeneous distributed systems[J].arXiv:1603.04467[cs.DC].
作者信息:
黃 睿,,陸許明,,鄔依林
(廣東第二師范學院 計算機科學系,廣東 廣州510303)