郁 巖
(江蘇安全技術職業學院 機械工程學院,江蘇 徐州 221000)
傳統的光學字符識別(OCR)在數據場景單一的背景中雖有較好的識別率,但是面對復雜、多干擾的自然場景時,OCR識別效果不佳。SVM、Boosting等算法需要人工定義特征信息,由特征提取器從圖像中提取相關特征,再由分類器對這些特征進行分類。而深度學習只需輸入原始圖像模型就能夠自主學習圖像特征,然后輸出分類結果[1]。
隨著移動支付技術的更新,傳統卷積神經網絡LeNet_5進行動態字符識別時仍存在問題:現有網絡深度不足,影響字符識別精度。多數研究人員認為深度神經網絡的深度到了盡頭,這是由于超深層網絡在進行反向傳播時,靠近輸入層的梯度會出現消失或爆炸的現象[2],但2014年由Christian Szegedy提出的GoogleNet網絡可以有效緩解該問題[3]。據此,本文提出了一種加寬網絡以創建超大型網絡的方法,此類方法不僅能夠獲得足夠復雜的網絡,還能避免不斷加深網絡造成的梯度消失問題。
通過收集物流和支付等環節的字符數據,分析整理得到不同字跡及位置字符信息數據,并基于數字圖像預處理方法對數據進行濾波去噪、信息分割等操作,構建字符分析數據樣[4]。
MNIST是訓練數據集包含60 000個樣本和測試集包含10 000個樣本的手寫數字數據集[5],該數據集基于重新混合NIST(National Institute of Standards and Technology, NIST)的特殊數據集(Special Database)SD-3和SD-1創建。其中SD-3來自人口普查局的工作人員筆跡,SD-1來自大學生筆跡,其樣本結構見表1所列。訓練集和測試集分別由250個不同的人編寫,由此確保訓練集和測試集的編寫者相互獨立不相交,避免非樣本差異外的干擾因素,數據集均經過歸一化預處理。

表1 MNIST數據集
圖1為MNIST測試集的部分樣例,可以看出,不同人員書寫的字體形狀差異較為明顯,而且相比印刷字體,手寫字體較容易變形、歪扭,例如圖中第3排8列的數字和4排4列的數字4等,這極大考驗了模型識別字體的能力。

圖1 MNIST數據集手寫體數字樣例
在神經網絡中,輸入值經過權重層后進行非線性變換。由于現實中的復雜問題均為非線性,若神經網絡無非線性函數機制,無論堆疊了多少層網絡,它仍然等效于一個單層的神經網絡,即它仍是單個線性變換。因此,只有引入非線性變換才能解決問題[6]。理想中的激活函數是階躍函數,所以神經網絡發展初期經常使用Sigmoid函數作為激活函數,Sigmoid函數能夠將輸入值變換為0到1范圍內的數值,其表達式如下:

Sigmoid函數如圖2所示。

圖2 Sigmoid函數
研究人員通過研究發現,Sigmoid函數會出現梯度消失、收斂緩慢等問題[7]。因此,本文利用ReLU激活函數替代Sigmoid函數。ReLU函數具有運算簡單、計算復雜度低等特點,其表達式如下:

ReLU函數如圖3所示。

圖3 ReLU函數
由公式和函數圖可以看出,ReLU函數中,輸入為負,則映射為0,若輸入為正,則取其本身的值。正是由于這種簡單機制,使得其計算速度極快。
LeNet結構由LeCun等人于1994年提出,經過多次迭代,于1998年完成了最終變體[8],并命名為LeNet_5。該網絡設計之初,主要用于手寫數字的識別,網絡結構如圖4所示。

圖4 LeNet_5網絡結構
由于LeNet_5表征學習能力弱,特別在移動工況下模型識別數字的錯誤率高。因此本節將在LeNet_5模型基礎結構上設計出新的模型,改進內容主要包括模型收斂速度和模型識別性能2方面。
模型收斂速度。在新設計的模型中,將LeNet_5模型的Sigmoid激活函數替換成ReLU激活函數。模型權重參數初始化中使用Xavier進行初始化,然后引入批量歸一化[9]。當模型開始訓練時,會對輸入數據進行標準化處理,前幾層網絡的輸出一般不會出現劇烈變化,而隨著模型的逐層訓練及前一層參數的更新調整,將導致后一層被累計放大,最終使后層的數據分布發生變化,降低網絡的訓練速度。批量歸一化能夠將每層數據歸一化到相同的分布,加快收斂速度[10],避免出現網絡不穩定等問題。
模型識別性能,增加模型深度。現有網絡模型中具有先進性能的網絡均為深層網絡,通過堆疊卷積核加深模型深度,使模型在視覺任務上獲得更好的性能。其次,用2個小的卷積核替換1個大的卷積核,以減少參數數量。同時,此舉也能夠加深網絡深度,增強模型的復雜度。
改進模型命名為Model_A。Model_A的改進之處是用ReLU激活函數替換原LeNet_5模型的Sigmoid激活函數,并在LeNet_5模型基礎上增加模型的“復雜度”及深度。在原LeNet_5的基礎上增加一層卷積層,將所有卷積設為3×3,將C1,C3,C4層的卷積核數分別設為 6,12,24,其網絡結構如圖5所示。

圖5 Model_B網絡結構
(1)將采集的數據經過圖像預處理后,保留感興趣區域,并將圖像轉換為二維矩陣數據樣本(x,y),設置圖像訓練周期,進行樣本預處理、權重初始化操作;
(2)構建卷積數據迭代器訓練網絡;
(3)計算損失誤差、反向傳播,并反饋更新權值參數后再次迭代計算;
(4)保存網絡權重函數;
(5)網絡訓練結束。
圖6所示為網絡訓練流程。

圖6 訓練流程
實驗使用LeNet_5網絡和Model_A網絡分別在MNIST數據集上訓練, 其中LeNet_5網絡的初始學習率設為1,初始學習率會在網絡訓練的過程中,每30個周期衰減一次,學習率衰減(Learning Rate Decay)系數為0.1。Model_A的初始學習率設為0.01,學習率為每30個周期衰減一次,學習率衰減系數為0.1。通過實驗觀察2個網絡分別在MNIST測試集上的準確率和網絡收斂速度。
從圖7可以看出,Model_A網 絡的訓練過程分為2個階段,LeNet_5網絡訓練過程分為3個階段。在網絡訓練開始時,Model_A的損失函數為0.339 1,LeNet_5的損失函數為2.328 9。隨著網絡訓練的進行,Model_A網絡在第10周期時損失函數下降至0.020 0后趨于平緩,LeNet_5網絡則經過30個周期損失函數下降至0.027 6之后趨于平緩。由此看出,Model_A網絡能在極短的周期內收斂,而LeNet_5網絡需要耗費數個周期才能收斂,因此ReLU函數在加快網絡訓練和收斂速度上優于Sigmoid函數,在模型訓練初期就能使網絡提早進入合適的優化方向。

圖7 Model_A及LeNet_5損失函數
圖8為Model_A和LeNet_5在測試集上的分類準確率,圖中實線為LeNet_5的分類準確率,虛線為Model_A的分 類準確率。觀察圖8發現,Model_A在訓練初期就學習出合適的優化方向,使網絡能快速收斂。網絡訓練第一個周期結束時,在測試集上有97.23%的準確率。隨著網絡的訓練,在第24個周期時達到99.02%的準確率,而最終在訓練100個周期結束后在測試集上分類準確率為99.26%,錯誤率為0.74%。LeNet_5網絡在訓練前10個周期處于初始化階段,期間網絡在測試集上的準確率僅約為17%,而從第10個周期開始,網絡的準確率先急劇上升,到達96%左右之后開始平緩上升,最后網絡訓練100個周期結束時,在測試集上的分類準確率為98.20%,分類錯誤率為0.80%。

圖8 Model_A和LeNet_5分類準確率
本文研究了深層網絡在數字字符識別上的應用,以LeNet_5網絡為基準網絡,對其進行改進,并對改進得到的新網絡繼續優化完善,得到新的網絡變體。通過分析發現,在保持LeNet_5基礎網絡結構不變的情況下,ReLU函數相比Sigmoid函數具有加快網絡收斂特性,可以使用較小的學習率來訓練網絡等優勢。隨著網絡的加深,將 網絡每層輸出的數據歸一化到相同的分布會使網絡更穩定、更易訓練。