呂 紅
(徐州工業(yè)職業(yè)技術(shù)學(xué)院信息與電氣工程學(xué)院,江蘇徐州221000)
自2006年隨著單隱層神經(jīng)網(wǎng)絡(luò)到深度神經(jīng)網(wǎng)絡(luò)模型的發(fā)展,世界人工智能迎來了新一輪的研究熱潮。人工智能化的應(yīng)用已在逐步改變?nèi)藗兊娜粘I睢T诨ヂ?lián)網(wǎng)大數(shù)據(jù)異?;钴S的時(shí)代,人們需要進(jìn)行很多關(guān)于數(shù)據(jù)類的工作,比如數(shù)據(jù)統(tǒng)計(jì)、發(fā)票稅單、銀行支票、快遞分揀、電腦閱卷等,如何利用設(shè)備自動(dòng)化、智能化,高效地識別數(shù)字和字符,提高工作效率則已成為當(dāng)前亟待解決的研究問題。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)作為一類包含卷積計(jì)算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)[1],其經(jīng)典模型LeNet-5在識別手寫數(shù)字方面表現(xiàn)優(yōu)異。手寫數(shù)字分為2種:實(shí)時(shí)手寫數(shù)字和脫機(jī)手寫數(shù)字(即數(shù)字圖片)。本文研究的是脫機(jī)手寫數(shù)字的識別,考慮到阿拉伯?dāng)?shù)字本身字形信息量小、不同的人寫法千差萬別,再加上輸入的只是一張圖片,沒有上下文的聯(lián)系,因此對其進(jìn)行快速、精確的識別將具有更高的挑戰(zhàn)性。
經(jīng)典的LeNet-5網(wǎng)絡(luò)模型,是最早的應(yīng)用于手寫數(shù)字識別的卷積神經(jīng)網(wǎng)絡(luò)[2],有著最廣泛的用途和區(qū)別于其它網(wǎng)絡(luò)的獨(dú)特優(yōu)勢。該模型包括1個(gè)輸入層、2個(gè)卷積層、2個(gè)池化層(子采樣)和全連接以及輸出層,模型結(jié)構(gòu)如圖1所示。
在本文數(shù)字圖像識別中用到的卷積是二維卷積核與二維圖像做卷積操作[3],就是卷積核滑動(dòng)到二維圖像上所有位置,并在每個(gè)位置上與對應(yīng)的像素點(diǎn)做內(nèi)積。一般包括Full卷積、Same卷積和Valid卷積三種。其核心是可以減少不必要的權(quán)值連接,引入稀疏或局部連接帶來的權(quán)值共享策略大大地減少參數(shù)量,從而可以避免過擬合現(xiàn)象的發(fā)生;此外,由于卷積操作具有平移不變性,使得學(xué)到的特征具有拓?fù)鋵?yīng)性、魯棒性的特征。本文的LeNet-5中采用的是Valid卷積。對應(yīng)數(shù)學(xué)公式可表示為:
圖1 LeNet-5模型Fig.1 LeNet-5 model
其中,y是輸出矩陣,是(n-m+1)? (n-m+1)的,同時(shí)也是輸入n?n矩陣x與卷積核m?m矩陣w做valid卷積的結(jié)果,且n>m。每一個(gè)元素y(t) 等于x(t+i-1) 和w(i) 相乘(1≤i≤m),然后相加的和。由圖2可以更直觀地看到Valid卷積的操作過程。
圖2 Valid卷積操作Fig.2 Valid convolution operation
池化操作[4]利用數(shù)字圖像各局部相關(guān)性,在保留有用信息前提下,大幅度減少下一層的輸入維度,有效控制過擬合風(fēng)險(xiǎn)。池化操作有多種形式,例如最大池化、平均池化、范數(shù)池化和對數(shù)概率池化等,常用的池化方式為最大池化和平均池化,本項(xiàng)目設(shè)計(jì)中使用的是平均池化。平均池化是不用重疊的2?2矩形框?qū)⑤斎刖仃嚪殖刹煌膮^(qū)域,對每個(gè)矩形框的數(shù)取平均值作為輸出矩陣的一個(gè)元素。平均池化的特點(diǎn)和優(yōu)勢在于提取均值進(jìn)行數(shù)據(jù)壓縮。圖3即演示了8?8的圖像特征矩陣通過2?2池化層后得到4?4矩陣。
圖3 池化操作Fig.3 Pooling operation
該識別系統(tǒng)首先通過LeNet-5模型訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),然后通過已經(jīng)訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提?。?],最后判斷特征值輸出識別的結(jié)果。手寫數(shù)字圖片識別系統(tǒng)的總體設(shè)計(jì)框架如圖4所示。
圖4 系統(tǒng)框架Fig.4 System framework
在系統(tǒng)里需要處理生成訓(xùn)練樣本和要識別的手寫數(shù)字圖片,這都需要對圖片進(jìn)行灰度化、二值化、反色、去噪、分割和大小歸一化預(yù)處理[6],這里的圖片可以是一個(gè)數(shù)字,也可以是多個(gè)數(shù)字。
首先,打開需要識別的手寫體數(shù)字圖片,獲得對應(yīng)的二進(jìn)制圖片數(shù)據(jù),并將圖像灰度化和二值化,如圖5所示。
圖5 原圖、灰度圖和二值化圖Fig.5 Original、grayscale and binary images
其次,對圖像進(jìn)行反色和去噪處理,如圖6所示。反色是為了識別圖像方便,而去噪則是去掉圖片中較大的噪聲,從而提高識別的正確率。
圖6 反色和去噪Fig.6 Anti-color and de-noising
圖像中如果包含多個(gè)手寫數(shù)字,那么就需要對圖像進(jìn)行分割,把每個(gè)數(shù)字獨(dú)立地分割出來。這里采用先從上而下、再從下而上掃描圖片,找到第一個(gè)白色像素點(diǎn),這樣就可以確定手寫數(shù)字的高度范圍;然后在這個(gè)范圍內(nèi)從左向右逐列掃描,遇到第一個(gè)白色的像素點(diǎn)時(shí)認(rèn)為是一個(gè)字符分割的起始位置,直至遇到某一列中沒有白色像素點(diǎn),則認(rèn)為是這個(gè)字符的分割結(jié)束位置,在此過程中要保存下起始和結(jié)束的位置。如此反復(fù),直至掃描至圖像的最右端。同理,按照逐行掃描的方法獲得每個(gè)數(shù)字的高度范圍。圖7中,則用紅色矩形框顯示查找到的每個(gè)數(shù)字的精確位置。
圖7 分割Fig.7 Division
最后,將得到的數(shù)字進(jìn)行大小歸一化處理,也就是將數(shù)字圖像統(tǒng)一處理成28×28的大小,這樣可以提高識別率,大小歸一化之后的圖像效果如圖8所示。
圖8 大小歸一化Fig.8 Size normalization
在識別的設(shè)計(jì)過程中,對卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練采用了3種方式:采用MNIST數(shù)據(jù)集[7](共10類,訓(xùn)練集60 000個(gè)、測試集10 000個(gè))訓(xùn)練;采用MNIST數(shù)據(jù)集預(yù)訓(xùn)練,并利用自己創(chuàng)建的數(shù)據(jù)集(共10類,訓(xùn)練集100個(gè),測試集100個(gè))來對已經(jīng)訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行調(diào)整;采用自己創(chuàng)建的數(shù)據(jù)集訓(xùn)練。訓(xùn)練次數(shù)和識別率見表1。
表1 不同訓(xùn)練集的識別結(jié)果Tab.1 Recognition results of different training sets %
從表1中可以看出在實(shí)際應(yīng)用中,使用MNIST訓(xùn)練集訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)在實(shí)際識別中出現(xiàn)了過擬合,而添加自己創(chuàng)建的訓(xùn)練集調(diào)整訓(xùn)練出來的卷積神經(jīng)網(wǎng)絡(luò)可以得到更佳識別效果,但是效果也并未臻至理想,所以這里采用自己的數(shù)據(jù)集獨(dú)立來完成卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,訓(xùn)練在1 200次時(shí)就可以達(dá)到比較穩(wěn)定的97%的識別效果。
本文通過圖像去噪預(yù)處理,有效地濾除圖片的噪聲信息,然后通過大小歸一化,調(diào)整圖片信息與MNIST數(shù)據(jù)集類似。最后使用自己的數(shù)據(jù)集通過LeNet-5模型訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),對輸入的手寫體圖片進(jìn)行特征提取,取得了較好的識別效果。日后在實(shí)際應(yīng)用中如何統(tǒng)一手寫體圖片的采集標(biāo)準(zhǔn)和擴(kuò)展數(shù)據(jù)集數(shù)量,這將是深度卷積神經(jīng)網(wǎng)絡(luò)后期需要解決的問題。