王梅 李東旭



摘 ?要: 為了解決手寫數字識別困難和準確率問題,提出基于改進VGG?16和樸素貝葉斯的手寫數字識別,主要通過歸一化和雙線性插值對圖像進行預處理,然后通過改進的VGG?16網絡框架對圖像進行特征提取和特征融合,通過LDA方法進行數據降維,最后通過樸素貝葉斯分類器進行分類。在MNIST數據集中進行實驗,獲得了99.36%的準確率。實驗結果驗證了卷積神經網絡與樸素貝葉斯結合后可以有效地提高識別準確率。
關鍵詞: 手寫數字識別; VGG?16網絡; 樸素貝葉斯分類器; 圖像預處理; 特征提取; 數據降維
中圖分類號: TN919?34; TP391.41 ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2020)12?0176?06
Abstract: The handwritten digit recognition based on naive Bayes and improved VGG?16 is proposed to improve the difficult recognition and low accuracy in handwritten digital recognition. The images preprocessing are performed by means of the normalization and bilinear interpolation, and then the improved VGG?16 network framework is used to extract and fuse the features of the preprocessed images; the data dimension reduction is carried out by means of the LDA method, and then the data classification is conducted by means of the naive Bayesian classifier. The experiments were conducted in MNIST, yielding an accuracy of 99.36%. The experimental results prove that the convolution neural network combined with naive Bayes can effectively improve the recognition accuracy.
Keywords: Handwritten numeral recognition; VGG?16 network; naive Bayes classifier; images preprocessing; feature extraction; data dimension reduction
0 ?引 ?言
數字識別一直是計算機視覺與深度學習領域研究的熱點問題。在財務處理、金融管理、車牌識別、郵政編碼識別和無人駕駛等領域應用廣泛。然而對于手寫數字,人工的手寫數字筆體不一,導致圖像本身的復雜性和不確定性,使識別更加困難。例如,日常生活中郵政編碼識別時,微小的錯誤可能導致巨大損失。
傳統的方法都存在特征提取不充分導致準確率不高的問題,如模板匹配法、統計決策法、句法結構法、模糊判別法、邏輯推理法和神經網絡法等[1?5]。因此,解決手寫數字圖像識別的關鍵在于特征提取,其直接影響最后分類器的識別準確率。部分學者為了對特征進行高效的提取來提高準確率,提出的文獻[6]基于旋轉投影統計特征的手寫數字識別方法通過抽取數字的輪廓和骨架來提取幾何特征,文獻[7]中基于貝葉斯網絡的手寫數字識別的研究與應用以及文獻[8]中基于主成分分析法及貝葉斯分類器的手寫數字識別,雖然在原有的基礎上提高了準確率,但是未考慮特征是否提取充分,準確率依舊不足的問題。
近年來,針對這一問題,文獻[9]提出一種基于卷積神經網絡的聯機手寫漢字識別系統,文獻[10]提出的基于卷積神經網絡的藏文手寫數字識別,都是通過卷積神經網絡對圖像進行充分的提取特征,但是存在提取特征不充分,并未把握淺層特征和深層特征之間的關系。在此基礎上,部分學者研究采取特征融合型卷積神經網絡[11],還有部分學者則是采用傳統的機器學習算法與之結合的方法,如基于KNN的卷積神經網絡[12],還有學者則是基于深度卷積自編碼神經網絡的手寫數字識別研究也取得不錯的成果[13]。
在此啟發下,本文提出樸素貝葉斯[14?16]和卷積特征相結合的方法,在VGG?16網絡框架下加上一個分支來融合淺層特征和深層特征,并在此基礎上為了使網絡能夠加快學習的速度,將采用交叉熵代價函數[17],針對網絡可能出現的過擬合問題,采用dropout[18]的方法來減少過擬合。為保持數據之間原有的特征聯系,采用LDA[19]進行數據降維。最后通過樸素貝葉斯分類器做分類,在MNIST數據集上進行實驗。驗證結果表明,該方法解決了傳統方法的特征提取困難和提取特征不充分等問題,并提高了準確率。
1 ?相關工作
1.1 ?改進VGG?16網絡
在傳統VGG?16的網絡上加上一個分支,利用這個分支網絡實現淺層特征與深層特征的融合,更好地體現出它們之間的聯系,進而有效地提高了識別準確率。
1.1.1 ?卷積層
2 ?算法設計
2.1 ?算法框架
本文提出基于改進VGG?16和樸素貝葉斯的手寫數字識別的主要思想是通過雙線性插值和歸一化先對圖像進行預處理,然后經改進的VGG?16網絡框架對圖像進行特征提取和特征融合,再采用LDA方法進行數據降維,最后利用樸素貝葉斯分類器進行預測分類。算法框架如圖1所示。
由圖1可知,算法主要包括兩個階段:訓練階段和測試階段。訓練階段:利用訓練數據集對改進的VGG?16網絡進行訓練,然后用訓練好的網絡對數據集中的樣本進行特征提取,把提取后的特征圖轉換成特征向量輸入到LDA中進行數據降維,然后把降維后的向量輸入樸素貝葉斯分類器中做最后的分類。測試階段:用測試數據集中帶識別的樣本數據進行改進VGG?16網絡的特征提取和LDA數據降維,送入樸素貝葉斯分類器得到樣本的預測類別。
2.2 ?圖像預處理
圖像預處理包括兩個階段:第一階段,把MNIST數據集的圖像做歸一化處理;第二階段,把歸一化后的圖像采用雙線性插值增強的方法對圖像進行放大處理。
2.2.1 ?歸一化
本文采用的是MNIST手寫數據集作為實驗數據。為了避免卷積時數據值過大,因此在訓練階段之前對數據集中的圖像進行歸一化處理,由于MNIST數據集中的手寫數字圖像其灰度值都在0~255之間,因此將圖像的原始像素都除以255,把所有像素歸一化到[0,1]之間。
2.2.2 ?雙線性插值
因VGG?16網絡需要把原有的28×28放大到224×224作為輸入,則需要通過雙線性插值的方法進行放大處理。
設原圖像大小是m·n,目標圖像大小是a·b。那么兩幅圖像的邊長比分別就是[ma]和[nb]。目標圖像的第(i,j)個像素點(i行j列)可以通過邊長比對應回源圖像。其對應坐標為([i·ma],[j·nb])。顯然,這個對應坐標一般來說不是整數,而不是整數的坐標是不能在圖像上使用的。因此就需要尋找對應坐標上最近的4個像素點,進而求得該點的值。假設未知函數f在點P=(x,y)的值,已知函數f在Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1)以及Q22=(x2,y2)四個點的值。R1位于Q12和Q22之間,R2位于Q11和Q21之間,首先對x方向進行線性插值,得到:
2.3 ?網絡結構
基于改進VGG?16和樸素貝葉斯的手寫數字識別的網絡結構主要有輸入層、卷積層、池化層、特征融合分支、LDA數據降維、樸素貝葉斯分類器和輸出層。本文提出用歸一化和雙線性插值法對圖像進行預處理,然后通過改進的VGG?16網絡對圖像進行特征提取和特征融合,再通過LDA進行數據降維處理,最后采用樸素貝葉斯分類器分類,網絡的結構如圖2所示。
圖2所示,網絡主要參數設置如下:
1) 輸入層為歸一化和插值后的224×224圖像;
2) 第一卷積層分別用兩組64個3×3的卷積核和64個1×1卷積核對輸入層的圖像進行卷積操作,由于用到補零操作,所以得到64個224×224的圖像;
3) 第一池化層通過兩組2×2的區域對激活的特征圖執行最大值池化,得到64個112×112的特征圖;
4) 第二卷積層通過兩組128個3×3和128個1×1的卷積核對第一池化層中的特征圖進行卷積操作,同樣是補零的操作,所以得到128個112×112的圖像;
5) 第二池化層通過2×2的區域在對激活的特征圖執行最大值池化,得到128個56×56的特征圖;
6) 第三卷積層通過三次256個3×3和256個1×1的卷積核對輸入層的圖像進行卷積操作,由于用到補零操作,所以得到256個56×56的圖像;
7) 第三池化層通過2×2的區域對激活的特征圖執行最大值池化,得到256個28×28的特征圖;
8) 第四卷積層通過三次512個3×3和512個1×1的卷積核對輸入層的圖像進行卷積操作,由于用到補零操作,所以得到512個28×28的圖像;
9) 第四池化層通過2×2的區域對激活的特征圖執行最大值池化,得到512個14×14的特征圖;
10) 第五卷積層通過三次512個3×3和512個1×1的卷積核對輸入層的圖像進行卷積操作,由于用到補零操作,所以得到512個14×14的圖像;
11) 第五池化層通過2×2的區域對激活的特征圖執行平均池化,得到512個7×7的特征圖,整合成特征向量;
12) 在每次池化前保留上一層的特征,確保淺層特征和深層特征的融合進而提高識別準確率;
13) 最后對均值池化進行融合淺層特征和深層特征;
14) 在把特征向量放入LDA中進行數據降維;
15) 將整合后的特征向量作為樸素貝葉斯分類器的輸入進行分類判斷;
16) 為了避免過擬合現象采用dropout來保證;
17) 損失函數為交叉熵函數。
3 ?實驗結果
本節首先介紹MNIST數據集,介紹所使用程序運行工具,再對實驗結果進行展示分析。
3.1 ?數據集
本文采用的是MNIST數據集,MNIST數據集包括60 000行的訓練集和10 000行的測試數據集。MNIST數據集中部分圖像如圖3所示。
3.2 ?卷積特征可視化
通過導入訓練好的網絡參數對樣本數據集進行圖像的特征提取,本文為了更好地展示出提取的特征,對部分特征進行可視化處理,如圖4所示。
圖4展示了通過雙線性插值放大后的圖像224×224通過第一卷積層64個3×3的卷積核和64個1×1卷積核對圖像進行特征提取;然后進行相似操作,生成特征向量放入LDA中進行數據降維;最后放入樸素貝葉斯分類器中進行判別分類。
3.3 ?LDA降維
通過改進VGG?16網絡提取出的特征向量是25 088維數據,為降低特征維數,本文采用可以保留上下文本關系的LDA降維方法進行數據降維。為了研究特征維數貢獻率與準確率之間的聯系,采用列舉的方式,如圖5所示。
令[β]為特征維數貢獻率,由圖5可知,當[β]的取值逐漸變大準確率隨著上升,當[β]=95%時,準確率達到最大值,但當[β]繼續增加時準確率反而下降,這時卷積提取的部分有用信息被LDA刪除。因此,本次實驗中選取當[β]=95%時,特征維數為25 088降維到15 386維,降維的效果最佳且準確率達到最高。
3.4 ?對比實驗
本文采用VGG?16網絡做對比實驗,在MNIST數據集上的損失函數曲線如圖6所示,識別曲線如圖7所示,識別結果如圖8所示。
從圖6~圖8中可以看出,在整個過程中誤差一直在減小,最終不變化,整個網絡達到收斂狀態,訓練集結果達到97.52%,在全部數據集上達到97.89%,達到預期目標。
3.5 ?實驗結果與分析
實驗環境是Windows 7系統,采用Python語言,神經網絡的框架采用Tensorflow。實驗中先采用改進的VGG?16網絡對圖像進行特征提取和特征融合,然后采用LDA方法進行數據降維,再利用樸素貝葉斯分類器進行預測分類,計算分類識別率。經過60 000步訓練,損失結果基本趨于穩定,用訓練好的網絡再對數據集進行測試,結果如圖9所示。
由圖9可知,本文提出的算法在MNSIT數據集中獲得了99.36%的成功率。為進一步驗證此算法的有效性和優越性,將此方法與傳統的手寫識別算法在全部的樣本上進行對比實驗,實驗結果如表1所示。
表1的實驗結果表明,本文提出的基于改進VGG?16和樸素貝葉斯的手寫數字識別,在MNIST數據集的分類效果好于傳統的分類方法。本文方法相對于文獻[11]方法提高3.68%,相對于文獻[2]方法提高1.46%,相對于文獻[5]提高5.1%,相對于卷積神經網絡提高1.47%,相對于文獻[13]提高0.03%。這一結果表明,卷積神經網絡與樸素貝葉斯分類器相結合可進一步提高手寫數字識別的準確率。
4 ?結 ?語
當下手寫數字識別仍是研究的熱點。為了充分利用圖像的淺層特征、深層特征和解決識別準確率不足等問題,本文提出基于改進VGG?16和樸素貝葉斯的手寫數字識別,利用改進VGG?16網絡,做特征提取和特征融合,進行LDA的數據降維,通過樸素貝葉斯分類器做分類。通過對MNIST手寫數據集的實驗結果可以驗證,本文提出的算法不僅可以有效地解決淺層特征和深層特征之間聯系的問題,且有效地提高準確率,為手寫數字識別算法提供一種新的思路。
參考文獻
[1] QIAO J, WANG G, LI W, et al. An adaptive deep Q?learning strategy for handwritten digit recognition [J]. Neural networks, 2018(12): 107?109.
[2] 宋曉茹,吳雪,高嵩,等.基于深度神經網絡的手寫數字識別模擬研究[J].科學技術與工程,2019,19(5):193?196.
[3] ARNALDO P C. Handwritten digit recognition [J]. Practical artificial intelligence, 2018(2): 461?478.
[4] 陳巖,李洋洋,余樂,等.基于卷積神經網絡的手寫體數字識別系統[J].微電子學與計算機,2018,35(2):71?74.
[5] 張翼成,陳欣,楊紅軍,等.基于組合特征的BP神經網絡數字識別方法[J].計算機系統應用,2013,22(3):113?116.
[6] 莊偉,雷小鋒,宋豐泰,等.基于旋轉投影統計特征的手寫數字識別方法[J].計算機科學,2011,38(11):278?281.
[7] 周佳敏.基于貝葉斯網絡的手寫數字識別的研究與應用[J].科技視界,2013(8):27.
[8] 尹東霞.基于主成分分析法及貝葉斯分類器的手寫數字識別[J].大眾科技,2015,17(9):39?41.
[9] 劉欣.基于卷積神經網絡的聯機手寫漢字識別系統[D].哈爾濱:哈爾濱工業大學,2015.
[10] 夏吾吉,色差甲,扎西吉,等.基于卷積神經網絡的藏文手寫數字識別[J].現代電子技術,2019,42(5):79?82.
[11] 劉文斌,張樂.基于KNN的卷積神經網絡改進算法[J].信息與電腦(理論版),2019(2):48?49.
[12] JIANG L, ZHANG L, LI C, et al. A correlation?based feature weighting filter for naive Bayes [J]. IEEE transactions on knowledge and data engineering, 2019, 31(2): 201?213.
[13] 曾文獻,孟慶林,郭兆坤.基于深度卷積自編碼神經網絡的手寫數字識別研究[J].計算機應用研究,2020,37(4):1?4.
[14] LIU P, ZHAO H H, TENG J Y, et al. Parallel naive Bayes algorithm for large?scale Chinese text classification based on spark [J]. Journal of Central South University, 2019, 26(1): 1?12.
[15] 邱寧佳,高鵬,王鵬,等.基于改進信息增益的ACO?WNB分類算法研究[J].計算機仿真,2019,36(1):295?299.
[16] 孫玫,張森,聶培堯,等.基于樸素貝葉斯的網絡查詢日志session劃分方法研究[J].南京大學學報(自然科學),2018,54(6):1132?1140.
[17] 趙舵,唐啟超,余志斌.一種采用改進交叉熵的多目標優化問題求解方法[J].西安交通大學學報,2019,53(3):66?74.
[18] GUO Y, LIU Y, OERLEMANS A, et al. Deep learning for visual understanding: a review [J]. Neurocomputing, 2016, 187: 27?48.
[19] MAHDI G V, ZAHRA S A, MOJTABA T, et al. ?Differentiation of cumin seeds using a metal?oxide based gas sensor array in tandem with chemometric tools [J]. Talanta, 2018(4): 176.
[20] 閆河,王鵬,董鶯艷,等.改進的卷積神經網絡圖片分類識別方法[J].計算機應用與軟件,2018,35(12):193?198.