李大華,王宇,高強,于曉
(天津理工大學電氣電子工程學院,復雜系統控制理論與應用重點實驗室,天津300384)
隨著國家“科技強檢”戰略的實行,分類卷宗材料這種繁雜的工作無疑成為檢務人員的負擔,于是利用計算機識別文件表面的數字編號來對材料進行分類能提高檢務人員的工作效率,同時也能減少由于人工可能導致的失誤。由于傳統的識別算法在支票、報表、卷宗材料等文件的識別中,識別精度和準確率都有所影響,提出一種基于改進LeNet-5網絡的手寫文字識別網絡,通過對LeNet-5網絡各層數據處理之前做一個歸一化處理,來提高網絡的訓練速度,提升網絡的學習率。從MNIST手寫數字數據集中隨機選取3000個訓練樣本,500個驗證樣本進行訓練,實驗證明,改進LeNet-5網絡不僅能實現了對手寫數字0-9的準確識別,并且相比于傳統的LeNet-5網絡,在訓練數據較少的情況下,識別率也有提升。
手寫數字;神經網絡;LeNet-5;MNIST
隨著國家“科技強檢”戰略的實行,智慧檢務平臺的構建成為實施該戰略的重要步驟。在構建智慧檢務平臺的過程中,需要將紙面材料上傳到計算機進行保存,然后利用計算機的快速計算能力來對已有的卷宗材料進行相應的處理。在計算機保存材料的過程中,需要對材料進行分類整理,但由于有些材料保存時間太長以及經常查閱等原因,會出現材料誤放、順序錯亂等問題,導致后期利用計算機進行類似案件分析會不方便。在保存的卷宗材料上面,通常會通過數字來進行編號排序,利用計算機對編號進行識別,不僅可以節省大量時間,還能減少由于人工失誤導致的分類錯誤等問題。因此對數字編號的準確識別,能夠在構建智慧檢務平臺的過程中起到非常重要的作用。
關于數字識別的問題,國內外學者進行了深入的研究。一般來說,廣泛用于數字識別的算法有Bagging算法[1]、AdaBoost算法[2-3]、支持向量機等[4-5]。2005年趙萬鵬等人[6]提出了一種新的基于集成學習算法Ada?Boost的手寫體數字識別系統,被應用在OCR識別軟件中。2009年Vikas K.Garg等人[7]提出了一種利用FS-SVM尋找近似α-MFC的算法,提高了識別速度,降低了過擬合的風險。2011年劉作軍[8]以BP網絡做基本分類器,用Bagging產生多個基本分類器,用簡單多數投票法進行集成,實現了手寫體數字的分類識別。2019年葉曉波等人[9]通過改進AdaBoost-BP二分類算法,實現用于多分類的AdaBoost-BP算法,提高了神經網絡對手寫數字的識別率。
經過實踐證明,傳統的識別算法在實踐過程中能夠做到比較好的效果,但在支票、報表、卷宗材料等文件的識別中,識別的準確率與精度都會有一定程度的影響。卷積神經網絡(Convolutional Neural Networks,CNN)是一種常見的深度學習的架構,是受到生物自然視覺的認知機制啟發而來,是一種特殊的多層前饋神經網絡。由于CNN網絡能夠快速穩定地提取圖片中的特征,所以被常用于圖像識別領域。常用的CNN網絡 有LeNet-5[10]、AlexNet[11]、VGGNet(Visual Geometry Group)[12]等。LeNet-5網絡常用于手寫數字的識別,但LeNet-5網絡在數據樣本較少時,會出現無法充分獲取圖像特征的問題,本文通過對LeNet-5進行改進解決樣本較少時,識別率較低的問題。
圖1中三幅圖像是不同卷宗上截圖的三幅編號圖片,圖1(a)是打印體,打印體數字在筆畫、大小以及與其他數字的辨識度上都十分的規范,識別相對容易;圖1(b)是手寫體數字,字體大小較為規范,但辨識度不高,容易與其他數字混淆;圖1(c)是手寫體數字,字體大小,辨識度都不太好。

圖1 編號圖片
由于本文選用的是LeNet-5網絡模型,訓練集使用的MNIST手寫數字集,所以需要對數字圖像進行一定程度的處理。首先對編號中每個數字進行分割,然后對其進行灰度化處理,并調整圖片大小為28×28。處理完成的圖片用于神經網絡輸入,如圖2所示。

圖2 標準化后數字圖片
LeNet-5是Yann LeCun在1998年設計的用于手寫數字識別的卷積神經網絡,是早期卷積神經網絡中最具有代表性的實驗。LeNet-5一共有7層(不包括輸入層),其中有2個卷積層、2個池化層,3個全連接層,結構如圖3所示。

圖3 傳統的LeNet-5網絡結構
LeNet-5輸入的是32×32的矩陣圖片,C1層是由6個特征圖構成的卷積層,特征圖中的每個神經元與輸入中5×5的領域相連,特征圖的大小為28×28。卷積層計算公式為:

其中l代表層數,k代表卷積核,Mj代表第j個特征圖,b代表偏置,f代表激活函數。S2是一個池化層,利用圖像局部相關的原理,對圖像抽樣,輸出6個14×14的特征圖,特征圖中每個神經元與C1中對應特征圖的2×2領域相連接。池化層計算公式為:

其中down為池化函數,β和b為特征圖中的參數。C3是一個卷積層,其中含有16種不同的大小為5×5的卷積核,它通過5×5的卷積核去卷積S2,得到的特征圖只有10×10個神經元。S4是一個池化層,由16個5×5大小的特征圖構成,特征圖種每個單元與C3中相應特征圖的2×2領域相連接。C5層是一個卷積層,含有120個5×5的卷積核,每個單元與S4層的全部16個單元的5×5的領域相連,由于S4層特征圖的大小也為5×5,故輸出120個特征圖的大小為1×1。F6層有84個神經元,與C5層全相連接。最后輸出層含有10個神經元,由歐氏徑向基函數(Euclidean Radial Basis Function)單元組成,每個神經元對應一個數字類。
隨著神經網絡訓練過程中,激活輸入值會逐漸發生偏移和變動,整體分布逐漸往非線性函數的取值區間的上下限兩端靠近,導致反向傳播時低層神經網絡的梯度消失,使得神經網絡收斂越來越慢,BN層作用就是將訓練中每層神經元的輸入值轉換為均值為0方差為1的標準正態分布,讓反向傳播時低層神經網絡的梯度變大,提高網絡學習的速度和效率。
BN層和激活函數層、卷積層、全連接層、池化層一樣,都屬于網絡的一層。由于神經網絡除了輸出層以外,其他層因為底層網絡在訓練時更新了參數,會導致后層網絡數據分布的變化。BN層的作用就是通過規范化所有層的輸入,從而可以固定每層輸入信號的均值與方差,來保證后層網絡數據的穩定性
由于每層網絡內操作的不同,隨著網絡層數的增加,會導致出現過擬合問題。為了防止過擬合,解決樣本較少導致網絡學習效率較低的問題,本文在神經網絡各層數據處理之前做一個歸一化處理,也就是在每一層網絡前加上歸一化層(BN層),防止出現每一層訓練后的數據分布都不同,造成網絡模型更加復雜的問題,從而能提高網絡的訓練速度,提升網絡的學習率,同時也防止了梯度彌散的問題,改進網絡的結果如圖4所示。

圖4 改進LeNet-5網絡結構
改進LeNet-5網絡的訓練算法相比于傳統的LeNet-5網絡沒有進行太大的改變,利用的是反向傳播算法(Back Propagation,BP),一共分為兩個階段,每個階段由兩步構成。第一階段是向前的傳播階段,第一步是從樣本集中隨機選取一個樣本,并將選取的樣本輸入至網絡,第二步是計算網絡的實際輸出。在該階段中,信息從輸入層經過網絡逐級的變換,最后從輸出層輸出。這是網絡在正常運行的訓練過程。在該過程中,網絡實際上起到的是計算的作用,輸入與網絡每層的權值矩陣相點乘,最后得到輸出的結果。第二階段是向后傳播階段,第一步是計算實際輸出值與相應的理想輸出值的差,第二步是通過極小化誤差的方法進行反向傳播從而來調整權矩陣。
反向傳播算法的的輸入包括:總層數L以及每個隱藏層與輸出層的神經元的個數,激活函數,損失函數,迭代步長α,最大迭代次數MAX與停止迭代的閾值ε,輸入的m個訓練樣本為((x1,y1),(x2,y2),…,(xm,ym)),初始化參數為W,b。從第二層到第L層,前向傳播算法計算公式為(l為當前網絡層數):


然后通過損失函數計算輸出層的梯度,進行反向傳播算法計算,反向傳播是從L-1層到第二層網絡,公式為:

通過梯度下降算法更新權重W和b的值,α為學習率,其中α∈(0,1]。

當所有W,b的變化值都小于停止迭代的閾值ε時,跳出迭代循環。此時輸出各層的W和b。
為了驗證改進的LeNet-5網絡模型的訓練效果,本文利用MATLAB軟件進行了實驗研究,從MNIST手寫數字數據集中隨機選取了3000個訓練樣本,500個驗證樣本,并將得到訓練過程和訓練結果與傳統的LeNet-5網絡進行對比,如圖5所示。

圖5 改進LeNet-5網絡訓練過程
圖5中,實線為訓練效果,虛線為驗證效果,由圖可以看出,改進LeNet-5網絡相比傳統LeNet-5網絡,在驗證準確率方面有所提高,同時也降低了驗證集的損失值。在此基礎上通過10次實驗來對兩種模型進行評估,實驗樣本都是取自文書材料編號。記錄每次實驗兩種模型的正確率,最后計算出平均正確率,測試結果如表1所示。

表1 正確率
通過表1可以看出,改進LeNet-5網絡通過給每層網絡前加入BN層的方法,能夠更好的提取數字圖像的特征,防止網絡的過擬合。因此改進LeNet-5網絡對于取自文書材料的樣本集的識別率比傳統的LeNet-5網絡識別率更高,表現出了更好的識別效果。
隨著圖像技術的飛速發展與神經網絡的不斷進步,利用這些技術來為人類工作提高效率是也是一項非常重要的工作。智慧檢務平臺的構建是國家實施“科技強檢”戰略的重要保障,由于傳統算法對于卷宗材料表面編號識別效果并不理想,于是通過給每層網絡前加入BN層的方法來對神經網絡中的LeNet-5網絡進行改進,來對卷宗材料的編號進行識別。實驗結果表明,該算法擁有更強的準確性。