黃金海
(桂林電子科技大學(xué) 信息科技學(xué)院,廣西 桂林 541004)
在模式識別領(lǐng)域,對手寫體數(shù)字的識別,是許多從事圖像處理、機器學(xué)習(xí)研究人員的入門練習(xí)。其實現(xiàn)方法已經(jīng)有許多成功的案例,王一木等[1]提出自組織映射簡化算法在硬件電路上以并行運算實現(xiàn)的手寫數(shù)字識別。邵虹等[2]提出基于投影定位及數(shù)字結(jié)構(gòu)特征的方法識別發(fā)票印刷體數(shù)字。幸堅炬等[3]提出概率神經(jīng)網(wǎng)絡(luò)實現(xiàn)mnist數(shù)據(jù)集數(shù)字的識別,并有較高的準確率。李瓊等[4]提出在特征空間中確定SVM最優(yōu)核方法實現(xiàn)手寫數(shù)字的識別。以上實現(xiàn)方法都采用不同的算法實現(xiàn),本文以成功識別手寫數(shù)字為出發(fā)點,提出在pyqt5環(huán)境中以K-最近鄰(K-Nearest Neighbor,KNN)分類器算法實現(xiàn)手寫體數(shù)字的識別。
在機器學(xué)習(xí)分類方法中,KNN是無監(jiān)督學(xué)習(xí)中最簡單、易理解的分類算法。該思想是Cover和Hart在1968年的研究工作中提出的,它根據(jù)距離函數(shù)計算待分類樣本X和每個訓(xùn)練樣本間的距離(作為相似度),選擇與待分類樣本距離最小的K個樣本作為X的K個最近鄰,最后以X的K個最近鄰中的大多數(shù)樣本所屬的類別作為X的類別[5]。
KNN算法大致包括如下3個步驟。
(1)算距離:給定測試對象,計算它與訓(xùn)練集中的每個對象的距離。
(2)找鄰居:圈定距離最近的K個訓(xùn)練對象,作為測試對象的近鄰。
(3)做分類:根據(jù)這K個近鄰歸屬的主要類別,來對測試對象分類。
因此,最為關(guān)鍵的就是距離的計算。一般而言,定義一個距離函數(shù)d(x,y),需要滿足以下幾個準則。
d(x,y)=0
d(x,y)≥0
d(x,y)=d(y,x)
d(x,k)+d(k,y)≥d(x,y)
距離計算有很多方法,本文以歐幾里得距離(Euclidean distance)實現(xiàn)手寫體數(shù)字的識別。其計算公式如下:
手寫數(shù)字的原始圖像,可以有多種獲取方法,本文以畫圖面板寫出任意0~9的數(shù)字,并按順序以jpg格式命名數(shù)字圖像作為手寫體數(shù)字的初始樣本圖像。圖1中列舉了每個數(shù)字的兩種手寫體樣本。
當(dāng)讀入數(shù)字樣本圖片時,首先對數(shù)字樣本進行圖像預(yù)處理,預(yù)處理過程包括將圖片灰度化、縮放為與訓(xùn)練集同等尺寸大小32×32格式、將32×32圖片二值化并保存為txt文件。接著K值取3對新保存的txt樣本訓(xùn)練;訓(xùn)練完成后根據(jù)KNN多數(shù)分類法則識別顯示。流程如圖2所示。
圖2 識別流程
樣本的數(shù)據(jù)處理包含數(shù)字的訓(xùn)練和識別兩部分。數(shù)字的訓(xùn)練集和測試集分別是常用的trainingDigits和testDigits。由于數(shù)據(jù)集是已經(jīng)二值化的txt文本格式,需要將32×32的測試集與訓(xùn)練集分別轉(zhuǎn)換為1×1 024的一維向量,把測試集中每一個樣本分別與訓(xùn)練中每個樣本進行歐幾里得距離計算,計算結(jié)果按KNN原理分類提取各個樣本標簽,分別完成預(yù)測數(shù)字和真實數(shù)字的比較。當(dāng)K值分別取3,5,7,9時,其運算的正確率如表1所示。
表1 不同K值正確率
從表1中可知,當(dāng)K取3時,正確率最高,達到98.99%。K取取值越大,正確率均略有下降。
經(jīng)過上述數(shù)據(jù)處理分析,測試集與訓(xùn)練集的比較結(jié)果有高達97%以上的正確率,那么輸入前文所述的20個測試樣本,以pyqt5作為顯示界面,與訓(xùn)練集中的所有樣本進行KNN運算,其測試結(jié)果如圖3所示。
圖3 KNN手寫體數(shù)字測試圖
由圖3可知,手寫體數(shù)字的KNN算法識別準確率與測試集的準確率有較大差距,20個樣本中15個正確,錯誤率高達25%。這表明,KNN算法在手寫體數(shù)字識別中的應(yīng)用研究仍有待提高。
手寫體數(shù)字的KNN算法執(zhí)行效率并不高,識別準確率的提高需要更多訓(xùn)練樣本集,如mnist數(shù)據(jù)集。但是,數(shù)據(jù)樣本集越多,運算的時間就會越長,其效率也會越低。工程應(yīng)用中人們都希望識別能力既高效準確率又高,技術(shù)人員可以嘗試其他算法模型來完善識別效果。