王梅 李東旭
摘 ?要: 為了解決手寫數(shù)字識別困難和準(zhǔn)確率問題,提出基于改進(jìn)VGG?16和樸素貝葉斯的手寫數(shù)字識別,主要通過歸一化和雙線性插值對圖像進(jìn)行預(yù)處理,然后通過改進(jìn)的VGG?16網(wǎng)絡(luò)框架對圖像進(jìn)行特征提取和特征融合,通過LDA方法進(jìn)行數(shù)據(jù)降維,最后通過樸素貝葉斯分類器進(jìn)行分類。在MNIST數(shù)據(jù)集中進(jìn)行實(shí)驗(yàn),獲得了99.36%的準(zhǔn)確率。實(shí)驗(yàn)結(jié)果驗(yàn)證了卷積神經(jīng)網(wǎng)絡(luò)與樸素貝葉斯結(jié)合后可以有效地提高識別準(zhǔn)確率。
關(guān)鍵詞: 手寫數(shù)字識別; VGG?16網(wǎng)絡(luò); 樸素貝葉斯分類器; 圖像預(yù)處理; 特征提取; 數(shù)據(jù)降維
中圖分類號: TN919?34; TP391.41 ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼: 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 ?引 ?言
數(shù)字識別一直是計(jì)算機(jī)視覺與深度學(xué)習(xí)領(lǐng)域研究的熱點(diǎn)問題。在財(cái)務(wù)處理、金融管理、車牌識別、郵政編碼識別和無人駕駛等領(lǐng)域應(yīng)用廣泛。然而對于手寫數(shù)字,人工的手寫數(shù)字筆體不一,導(dǎo)致圖像本身的復(fù)雜性和不確定性,使識別更加困難。例如,日常生活中郵政編碼識別時(shí),微小的錯(cuò)誤可能導(dǎo)致巨大損失。
傳統(tǒng)的方法都存在特征提取不充分導(dǎo)致準(zhǔn)確率不高的問題,如模板匹配法、統(tǒng)計(jì)決策法、句法結(jié)構(gòu)法、模糊判別法、邏輯推理法和神經(jīng)網(wǎng)絡(luò)法等[1?5]。因此,解決手寫數(shù)字圖像識別的關(guān)鍵在于特征提取,其直接影響最后分類器的識別準(zhǔn)確率。部分學(xué)者為了對特征進(jìn)行高效的提取來提高準(zhǔn)確率,提出的文獻(xiàn)[6]基于旋轉(zhuǎn)投影統(tǒng)計(jì)特征的手寫數(shù)字識別方法通過抽取數(shù)字的輪廓和骨架來提取幾何特征,文獻(xiàn)[7]中基于貝葉斯網(wǎng)絡(luò)的手寫數(shù)字識別的研究與應(yīng)用以及文獻(xiàn)[8]中基于主成分分析法及貝葉斯分類器的手寫數(shù)字識別,雖然在原有的基礎(chǔ)上提高了準(zhǔn)確率,但是未考慮特征是否提取充分,準(zhǔn)確率依舊不足的問題。
近年來,針對這一問題,文獻(xiàn)[9]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的聯(lián)機(jī)手寫漢字識別系統(tǒng),文獻(xiàn)[10]提出的基于卷積神經(jīng)網(wǎng)絡(luò)的藏文手寫數(shù)字識別,都是通過卷積神經(jīng)網(wǎng)絡(luò)對圖像進(jìn)行充分的提取特征,但是存在提取特征不充分,并未把握淺層特征和深層特征之間的關(guān)系。在此基礎(chǔ)上,部分學(xué)者研究采取特征融合型卷積神經(jīng)網(wǎng)絡(luò)[11],還有部分學(xué)者則是采用傳統(tǒng)的機(jī)器學(xué)習(xí)算法與之結(jié)合的方法,如基于KNN的卷積神經(jīng)網(wǎng)絡(luò)[12],還有學(xué)者則是基于深度卷積自編碼神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別研究也取得不錯(cuò)的成果[13]。
在此啟發(fā)下,本文提出樸素貝葉斯[14?16]和卷積特征相結(jié)合的方法,在VGG?16網(wǎng)絡(luò)框架下加上一個(gè)分支來融合淺層特征和深層特征,并在此基礎(chǔ)上為了使網(wǎng)絡(luò)能夠加快學(xué)習(xí)的速度,將采用交叉熵代價(jià)函數(shù)[17],針對網(wǎng)絡(luò)可能出現(xiàn)的過擬合問題,采用dropout[18]的方法來減少過擬合。為保持?jǐn)?shù)據(jù)之間原有的特征聯(lián)系,采用LDA[19]進(jìn)行數(shù)據(jù)降維。最后通過樸素貝葉斯分類器做分類,在MNIST數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)。驗(yàn)證結(jié)果表明,該方法解決了傳統(tǒng)方法的特征提取困難和提取特征不充分等問題,并提高了準(zhǔn)確率。
1 ?相關(guān)工作
1.1 ?改進(jìn)VGG?16網(wǎng)絡(luò)
在傳統(tǒng)VGG?16的網(wǎng)絡(luò)上加上一個(gè)分支,利用這個(gè)分支網(wǎng)絡(luò)實(shí)現(xiàn)淺層特征與深層特征的融合,更好地體現(xiàn)出它們之間的聯(lián)系,進(jìn)而有效地提高了識別準(zhǔn)確率。
1.1.1 ?卷積層
2 ?算法設(shè)計(jì)
2.1 ?算法框架
本文提出基于改進(jìn)VGG?16和樸素貝葉斯的手寫數(shù)字識別的主要思想是通過雙線性插值和歸一化先對圖像進(jìn)行預(yù)處理,然后經(jīng)改進(jìn)的VGG?16網(wǎng)絡(luò)框架對圖像進(jìn)行特征提取和特征融合,再采用LDA方法進(jìn)行數(shù)據(jù)降維,最后利用樸素貝葉斯分類器進(jìn)行預(yù)測分類。算法框架如圖1所示。
由圖1可知,算法主要包括兩個(gè)階段:訓(xùn)練階段和測試階段。訓(xùn)練階段:利用訓(xùn)練數(shù)據(jù)集對改進(jìn)的VGG?16網(wǎng)絡(luò)進(jìn)行訓(xùn)練,然后用訓(xùn)練好的網(wǎng)絡(luò)對數(shù)據(jù)集中的樣本進(jìn)行特征提取,把提取后的特征圖轉(zhuǎn)換成特征向量輸入到LDA中進(jìn)行數(shù)據(jù)降維,然后把降維后的向量輸入樸素貝葉斯分類器中做最后的分類。測試階段:用測試數(shù)據(jù)集中帶識別的樣本數(shù)據(jù)進(jìn)行改進(jìn)VGG?16網(wǎng)絡(luò)的特征提取和LDA數(shù)據(jù)降維,送入樸素貝葉斯分類器得到樣本的預(yù)測類別。
2.2 ?圖像預(yù)處理
圖像預(yù)處理包括兩個(gè)階段:第一階段,把MNIST數(shù)據(jù)集的圖像做歸一化處理;第二階段,把歸一化后的圖像采用雙線性插值增強(qiáng)的方法對圖像進(jìn)行放大處理。
2.2.1 ?歸一化
本文采用的是MNIST手寫數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù)。為了避免卷積時(shí)數(shù)據(jù)值過大,因此在訓(xùn)練階段之前對數(shù)據(jù)集中的圖像進(jìn)行歸一化處理,由于MNIST數(shù)據(jù)集中的手寫數(shù)字圖像其灰度值都在0~255之間,因此將圖像的原始像素都除以255,把所有像素歸一化到[0,1]之間。
2.2.2 ?雙線性插值
因VGG?16網(wǎng)絡(luò)需要把原有的28×28放大到224×224作為輸入,則需要通過雙線性插值的方法進(jìn)行放大處理。
設(shè)原圖像大小是m·n,目標(biāo)圖像大小是a·b。那么兩幅圖像的邊長比分別就是[ma]和[nb]。目標(biāo)圖像的第(i,j)個(gè)像素點(diǎn)(i行j列)可以通過邊長比對應(yīng)回源圖像。其對應(yīng)坐標(biāo)為([i·ma],[j·nb])。顯然,這個(gè)對應(yīng)坐標(biāo)一般來說不是整數(shù),而不是整數(shù)的坐標(biāo)是不能在圖像上使用的。因此就需要尋找對應(yīng)坐標(biāo)上最近的4個(gè)像素點(diǎn),進(jìn)而求得該點(diǎn)的值。假設(shè)未知函數(shù)f在點(diǎn)P=(x,y)的值,已知函數(shù)f在Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1)以及Q22=(x2,y2)四個(gè)點(diǎn)的值。R1位于Q12和Q22之間,R2位于Q11和Q21之間,首先對x方向進(jìn)行線性插值,得到:
2.3 ?網(wǎng)絡(luò)結(jié)構(gòu)
基于改進(jìn)VGG?16和樸素貝葉斯的手寫數(shù)字識別的網(wǎng)絡(luò)結(jié)構(gòu)主要有輸入層、卷積層、池化層、特征融合分支、LDA數(shù)據(jù)降維、樸素貝葉斯分類器和輸出層。本文提出用歸一化和雙線性插值法對圖像進(jìn)行預(yù)處理,然后通過改進(jìn)的VGG?16網(wǎng)絡(luò)對圖像進(jìn)行特征提取和特征融合,再通過LDA進(jìn)行數(shù)據(jù)降維處理,最后采用樸素貝葉斯分類器分類,網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示。
圖2所示,網(wǎng)絡(luò)主要參數(shù)設(shè)置如下:
1) 輸入層為歸一化和插值后的224×224圖像;
2) 第一卷積層分別用兩組64個(gè)3×3的卷積核和64個(gè)1×1卷積核對輸入層的圖像進(jìn)行卷積操作,由于用到補(bǔ)零操作,所以得到64個(gè)224×224的圖像;
3) 第一池化層通過兩組2×2的區(qū)域?qū)せ畹奶卣鲌D執(zhí)行最大值池化,得到64個(gè)112×112的特征圖;
4) 第二卷積層通過兩組128個(gè)3×3和128個(gè)1×1的卷積核對第一池化層中的特征圖進(jìn)行卷積操作,同樣是補(bǔ)零的操作,所以得到128個(gè)112×112的圖像;
5) 第二池化層通過2×2的區(qū)域在對激活的特征圖執(zhí)行最大值池化,得到128個(gè)56×56的特征圖;
6) 第三卷積層通過三次256個(gè)3×3和256個(gè)1×1的卷積核對輸入層的圖像進(jìn)行卷積操作,由于用到補(bǔ)零操作,所以得到256個(gè)56×56的圖像;
7) 第三池化層通過2×2的區(qū)域?qū)せ畹奶卣鲌D執(zhí)行最大值池化,得到256個(gè)28×28的特征圖;
8) 第四卷積層通過三次512個(gè)3×3和512個(gè)1×1的卷積核對輸入層的圖像進(jìn)行卷積操作,由于用到補(bǔ)零操作,所以得到512個(gè)28×28的圖像;
9) 第四池化層通過2×2的區(qū)域?qū)せ畹奶卣鲌D執(zhí)行最大值池化,得到512個(gè)14×14的特征圖;
10) 第五卷積層通過三次512個(gè)3×3和512個(gè)1×1的卷積核對輸入層的圖像進(jìn)行卷積操作,由于用到補(bǔ)零操作,所以得到512個(gè)14×14的圖像;
11) 第五池化層通過2×2的區(qū)域?qū)せ畹奶卣鲌D執(zhí)行平均池化,得到512個(gè)7×7的特征圖,整合成特征向量;
12) 在每次池化前保留上一層的特征,確保淺層特征和深層特征的融合進(jìn)而提高識別準(zhǔn)確率;
13) 最后對均值池化進(jìn)行融合淺層特征和深層特征;
14) 在把特征向量放入LDA中進(jìn)行數(shù)據(jù)降維;
15) 將整合后的特征向量作為樸素貝葉斯分類器的輸入進(jìn)行分類判斷;
16) 為了避免過擬合現(xiàn)象采用dropout來保證;
17) 損失函數(shù)為交叉熵函數(shù)。
3 ?實(shí)驗(yàn)結(jié)果
本節(jié)首先介紹MNIST數(shù)據(jù)集,介紹所使用程序運(yùn)行工具,再對實(shí)驗(yàn)結(jié)果進(jìn)行展示分析。
3.1 ?數(shù)據(jù)集
本文采用的是MNIST數(shù)據(jù)集,MNIST數(shù)據(jù)集包括60 000行的訓(xùn)練集和10 000行的測試數(shù)據(jù)集。MNIST數(shù)據(jù)集中部分圖像如圖3所示。
3.2 ?卷積特征可視化
通過導(dǎo)入訓(xùn)練好的網(wǎng)絡(luò)參數(shù)對樣本數(shù)據(jù)集進(jìn)行圖像的特征提取,本文為了更好地展示出提取的特征,對部分特征進(jìn)行可視化處理,如圖4所示。
圖4展示了通過雙線性插值放大后的圖像224×224通過第一卷積層64個(gè)3×3的卷積核和64個(gè)1×1卷積核對圖像進(jìn)行特征提取;然后進(jìn)行相似操作,生成特征向量放入LDA中進(jìn)行數(shù)據(jù)降維;最后放入樸素貝葉斯分類器中進(jìn)行判別分類。
3.3 ?LDA降維
通過改進(jìn)VGG?16網(wǎng)絡(luò)提取出的特征向量是25 088維數(shù)據(jù),為降低特征維數(shù),本文采用可以保留上下文本關(guān)系的LDA降維方法進(jìn)行數(shù)據(jù)降維。為了研究特征維數(shù)貢獻(xiàn)率與準(zhǔn)確率之間的聯(lián)系,采用列舉的方式,如圖5所示。
令[β]為特征維數(shù)貢獻(xiàn)率,由圖5可知,當(dāng)[β]的取值逐漸變大準(zhǔn)確率隨著上升,當(dāng)[β]=95%時(shí),準(zhǔn)確率達(dá)到最大值,但當(dāng)[β]繼續(xù)增加時(shí)準(zhǔn)確率反而下降,這時(shí)卷積提取的部分有用信息被LDA刪除。因此,本次實(shí)驗(yàn)中選取當(dāng)[β]=95%時(shí),特征維數(shù)為25 088降維到15 386維,降維的效果最佳且準(zhǔn)確率達(dá)到最高。
3.4 ?對比實(shí)驗(yàn)
本文采用VGG?16網(wǎng)絡(luò)做對比實(shí)驗(yàn),在MNIST數(shù)據(jù)集上的損失函數(shù)曲線如圖6所示,識別曲線如圖7所示,識別結(jié)果如圖8所示。
從圖6~圖8中可以看出,在整個(gè)過程中誤差一直在減小,最終不變化,整個(gè)網(wǎng)絡(luò)達(dá)到收斂狀態(tài),訓(xùn)練集結(jié)果達(dá)到97.52%,在全部數(shù)據(jù)集上達(dá)到97.89%,達(dá)到預(yù)期目標(biāo)。
3.5 ?實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)環(huán)境是Windows 7系統(tǒng),采用Python語言,神經(jīng)網(wǎng)絡(luò)的框架采用Tensorflow。實(shí)驗(yàn)中先采用改進(jìn)的VGG?16網(wǎng)絡(luò)對圖像進(jìn)行特征提取和特征融合,然后采用LDA方法進(jìn)行數(shù)據(jù)降維,再利用樸素貝葉斯分類器進(jìn)行預(yù)測分類,計(jì)算分類識別率。經(jīng)過60 000步訓(xùn)練,損失結(jié)果基本趨于穩(wěn)定,用訓(xùn)練好的網(wǎng)絡(luò)再對數(shù)據(jù)集進(jìn)行測試,結(jié)果如圖9所示。
由圖9可知,本文提出的算法在MNSIT數(shù)據(jù)集中獲得了99.36%的成功率。為進(jìn)一步驗(yàn)證此算法的有效性和優(yōu)越性,將此方法與傳統(tǒng)的手寫識別算法在全部的樣本上進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表1所示。
表1的實(shí)驗(yàn)結(jié)果表明,本文提出的基于改進(jìn)VGG?16和樸素貝葉斯的手寫數(shù)字識別,在MNIST數(shù)據(jù)集的分類效果好于傳統(tǒng)的分類方法。本文方法相對于文獻(xiàn)[11]方法提高3.68%,相對于文獻(xiàn)[2]方法提高1.46%,相對于文獻(xiàn)[5]提高5.1%,相對于卷積神經(jīng)網(wǎng)絡(luò)提高1.47%,相對于文獻(xiàn)[13]提高0.03%。這一結(jié)果表明,卷積神經(jīng)網(wǎng)絡(luò)與樸素貝葉斯分類器相結(jié)合可進(jìn)一步提高手寫數(shù)字識別的準(zhǔn)確率。
4 ?結(jié) ?語
當(dāng)下手寫數(shù)字識別仍是研究的熱點(diǎn)。為了充分利用圖像的淺層特征、深層特征和解決識別準(zhǔn)確率不足等問題,本文提出基于改進(jìn)VGG?16和樸素貝葉斯的手寫數(shù)字識別,利用改進(jìn)VGG?16網(wǎng)絡(luò),做特征提取和特征融合,進(jìn)行LDA的數(shù)據(jù)降維,通過樸素貝葉斯分類器做分類。通過對MNIST手寫數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果可以驗(yàn)證,本文提出的算法不僅可以有效地解決淺層特征和深層特征之間聯(lián)系的問題,且有效地提高準(zhǔn)確率,為手寫數(shù)字識別算法提供一種新的思路。
參考文獻(xiàn)
[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īng)網(wǎng)絡(luò)的手寫數(shù)字識別模擬研究[J].科學(xué)技術(shù)與工程,2019,19(5):193?196.
[3] ARNALDO P C. Handwritten digit recognition [J]. Practical artificial intelligence, 2018(2): 461?478.
[4] 陳巖,李洋洋,余樂,等.基于卷積神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識別系統(tǒng)[J].微電子學(xué)與計(jì)算機(jī),2018,35(2):71?74.
[5] 張翼成,陳欣,楊紅軍,等.基于組合特征的BP神經(jīng)網(wǎng)絡(luò)數(shù)字識別方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(3):113?116.
[6] 莊偉,雷小鋒,宋豐泰,等.基于旋轉(zhuǎn)投影統(tǒng)計(jì)特征的手寫數(shù)字識別方法[J].計(jì)算機(jī)科學(xué),2011,38(11):278?281.
[7] 周佳敏.基于貝葉斯網(wǎng)絡(luò)的手寫數(shù)字識別的研究與應(yīng)用[J].科技視界,2013(8):27.
[8] 尹東霞.基于主成分分析法及貝葉斯分類器的手寫數(shù)字識別[J].大眾科技,2015,17(9):39?41.
[9] 劉欣.基于卷積神經(jīng)網(wǎng)絡(luò)的聯(lián)機(jī)手寫漢字識別系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2015.
[10] 夏吾吉,色差甲,扎西吉,等.基于卷積神經(jīng)網(wǎng)絡(luò)的藏文手寫數(shù)字識別[J].現(xiàn)代電子技術(shù),2019,42(5):79?82.
[11] 劉文斌,張樂.基于KNN的卷積神經(jīng)網(wǎng)絡(luò)改進(jìn)算法[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] 曾文獻(xiàn),孟慶林,郭兆坤.基于深度卷積自編碼神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別研究[J].計(jì)算機(jī)應(yīng)用研究,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] 邱寧佳,高鵬,王鵬,等.基于改進(jìn)信息增益的ACO?WNB分類算法研究[J].計(jì)算機(jī)仿真,2019,36(1):295?299.
[16] 孫玫,張森,聶培堯,等.基于樸素貝葉斯的網(wǎng)絡(luò)查詢?nèi)罩緎ession劃分方法研究[J].南京大學(xué)學(xué)報(bào)(自然科學(xué)),2018,54(6):1132?1140.
[17] 趙舵,唐啟超,余志斌.一種采用改進(jìn)交叉熵的多目標(biāo)優(yōu)化問題求解方法[J].西安交通大學(xué)學(xué)報(bào),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ìn)的卷積神經(jīng)網(wǎng)絡(luò)圖片分類識別方法[J].計(jì)算機(jī)應(yīng)用與軟件,2018,35(12):193?198.