仝夢園,金守峰,陳 陽,李 毅,尹加杰
(西安工程大學 機電工程學院/西安市現代智能紡織裝備重點實驗室,陜西 西安 710048)
試卷作為評價學生學習效果的主要形式,評閱過程主要以人工進行閱卷及分數統計,但人工閱卷及分數統計過程中存在勞動強度大、人為主觀統計誤差等問題。機器評閱作為輔助手段,主要在客觀題中大量使用,但是設備價格貴,需要特定的答題卡。隨著深度學習在人工智能技術的快速發展,在語音、手寫數字識別等領域受到廣泛關注[1-2]。
近年來,手寫字符識別已應用于快遞表單[3]、條碼識別[4]、數字表盤抄表[5]、檔案信息[6]等各方面,應用深度學習技術的手寫字符識別可分為傳統模型、模型改進與新模型。在傳統模型階段,陳龍等分別通過對各傳統模型進行手寫體數字識別,驗證了BP神經網絡效果較好[7]。在模型改進階段,通過對卷積神經網絡[8]、VGG-16網絡改進[9]與LeNet-DL網絡[10]等的改進使手寫字符識別得到更好地識別。為了進一步提高識別的準確率與效率,魏明俊等提出了一種帶PCA卷積的稀疏表示分類算法,解決卷積核訓練困難的問題[11];楊怡等提出了一種結合評判函數Silhouette改進的AP聚類算法,實現手寫字符的識別[12];Kang等提出在不需要任何預處理任務,通過編碼器、CNN和雙向GRU的手寫體識別模型,能夠逐字符拼寫相應的單詞,但是出現大寫字母時,識別過程會出錯[13];Wang等提出了一種新的具有密集連接結構的自由基分析網絡(DenseRAN),使DenseRAN具有識別未見漢字類的能力,但是識別的種類有限[14];劉慶等基于稀疏自編碼器和卷積神經網絡,提出新的CNN模型,克服了帶標簽訓練數據樣本不足的問題,還可以提取有效特征以加速網絡收斂[15];任曉奎等提出了一種多分類器下無分割手寫數字字符串識別算法,使用動態選擇策略,以避免長度分類器誤分類對識別結果的影響[16];Mohamad等提出了一種基于HSA的元啟發式方法,采用Freeman鏈碼作為數據表示,求解HCR最短路徑長度和最短的計算時間[17];Roy等提出了一種基于深度架構的串聯方法,用于無限制的手寫筆跡識別,充分利用隱藏在文檔圖像中的監督信息,并解決識別任務[18];楊鐘亮等提出了一種基于sEMG的KF-LSTM模型,實現由sEMG信號預測并重建手寫數字的軌跡,但是需要按住按鈕來完成數字圖像的繪制,與平時書寫習慣不完全匹配,會造成人手疲勞[19]。
針對人工評閱強度大、效率低等問題,文中采用圖像分割來簡化手寫分數識別的類別,通過構建卷積神經網絡提取特征,PCA進行降維,應用貝葉斯分類器實現數字分類,提高分數識別的準確性與效率。
由于圖像存在噪聲、光照等干擾,本文采用直方圖增強、中值濾波及同態濾波等預處理算法對圖像進行處理,以提高圖像質量。由于試卷成像過程中的隨機放置會導致圖片發生傾斜,對手寫數字的提取造成影響,本文對預處理后的圖像建立旋轉模型,計算分數欄與水平方向的夾角來進行旋轉校正。對原圖進行最大類間方差法的圖像分割獲得標題欄區域后,應用Canny算子提取邊緣特征建立如圖1(a)所示的計算模型,點A(x1,y1)為標題欄上邊緣除原點外任意一點,點B(x2,y2)為x軸上的任意一點,分別與原點構成向量OA和向量OB,根據向量數量積運算原理來計算它們之間的夾角,表達式為
(1)
式中:θ為圖像旋轉角。根據計算的旋轉角,進行旋轉校正補償,并二值化后的圖像如圖1(b)所示。

(a) 原圖
在試卷圖像采集視場高度一定的前提下,成像大小是一致的,每個圖像中分數欄線框的大小都是一致的,通過計算每個分數欄區域內的像素來判別是否存在手寫數值,對分隔欄進行一次分割如圖2(a)所示。對于單個手寫數字0~9之間的像素范圍為36~65,2個手寫數字的像素數范圍將大于71,超過單個最大像素數的圖像則判定為存在左端數字部分。根據區域分割法,將每個分數欄中的分數進行一次分割,對于分數欄中超過單個最大像素的圖像進行二次分割,分割后的圖像如圖2(b)所示。對分割后的圖像進行圖像透視變換,轉換為28×28的子圖,作為神經網絡訓練的樣本。

(a) 一次分割
為提高手寫試卷分數的精度,本文構建如圖3所示的卷積神經網絡模型,由輸入層、第1卷積層(用C1表示)、第1池化層(用S1表示)、第2卷積層(用C2表示)、第2池化層(用S2表示)、輸出層組成。輸入層為分割后的28×28的手寫分數圖像;C1層由8個5×5的濾波器對輸入圖像進行卷積;C2由18個5×5的濾波器對S1的輸出圖像進行卷積;S1與S2層用2×2的窗口,以步長為2進行最大池化采樣;輸出層為手寫分數圖像的特征。卷積過程中ReLU函數作為激活函數,學習率為2.4。

圖 3 CNN網絡結構的設計
通過卷積神經網絡提取單幅圖像的特征為288維,由于構建卷積神經網絡導致特征維數較多,影響識別效率,因此本文采用PCA方法對數據進行降維,將卷積神經網絡提取的18層4×4的特征組成18條16維的數據,將數據排成16行18列的矩陣Am×n,先對Am×n進行零均值化表達式為
(2)

之后,對協方差矩陣C進行求取,表達式為
(3)
式中:m表示樣本個數。同時求出協方差矩陣的特征值λ1,λ2,…,λk。
最后,對特征向量按照對應特征值λ大小從上到下按行排列成矩陣B,Y=BA即為降維后的k維矩陣。特征貢獻率的表達式為
(4)
通過分析不同特征累計貢獻率下數字的識別效果,在Mnist數據庫中驗證最優的特征識別率,得出特征累計貢獻率與識別率的關系如圖4所示。

圖 4 特征累計貢獻率與識別率的關系
如圖4所示,特征累計貢獻率為95%時,由于剔除了特征中冗余信息,因此識別準確率最高。將特征提取后的原始數據與降維后數據進行對比,得到對全部訓練集的訓練次數與時間和識別準確率之間的關系如表1所示。

表 1 原始數據與PCA降維的對比
如表1所示,將特征從288維降到144維后,依然保持著較高的準確率,但是算法消耗的時間節省約51%。
通過降維后需要實現手寫數字的識別分類,由于特征降維后的特征數量減少,且數字識別分類為多分類問題,本文通過融合貝葉斯分類器對手寫數字進行分類。
貝葉斯分類器是對訓練數據集中圖像的特征進行獨立性假設,對輸入的特征利用貝葉斯公式求出后驗概率的最大輸出,進而實現數字的分類。假設一個待分類樣本H(h1,h2,…,hm),類別集合表示為Ω(ω1,ω2,…,ωn),對樣本H判別分類,就是求取后驗概率的最大值。先計算先驗概率,其表達式為
(5)
式中:Ni為數字i的樣本數;N為樣本總數;P(ωi)為類別數字i的先驗概率。
之后,計算每個類別的條件概率,其表達式為
P=(H|ωi)=P(h1,h2,…,hm|ωi)
(6)
式中:P(H|ωi)訓練集中每個類別的條件概率。
最后,求取后驗概率,其表達式為
P(ωi|H)=P(ωi)P(H|ωi)/P(ω0)P(H|ω0)+
P(ω1)P(H|ω1)+…+P(ωn)P(H|ωn)
(7)
式中:P(ωi|H)為后驗概率。
由于本文實現的是手寫數字多分類問題,為體現預測結果和實際結果的差別,選擇對數損失函數,其表達式為
L(Ω,P(Ω|H))=-lgP(Ω|H)
(8)
對手寫試卷分數欄進行預處理后,通過輸入卷積神經網絡提取特征,經過PCA降維,融合貝葉斯分類器進行分類識別,直接輸出圖像的類別。實現端到端的學習方法,不用對各部分問題進行方法的選擇與分析。
在識別出手寫數字后,需要將識別結果與分數欄區域相匹配進行分數的求和,由于單個分數欄中的分數不能出現3位數的成績,只存在單個數字和2位數字,因此在二次分割的分數欄區域進行標記的基礎上,建立分數求和模型為
(9)
式中:zi為統計的分數;i為分隔欄數量;f為二次分割中十位左邊的分數;g表示為進行二次分割中右邊的分數。
為了驗證本文算法的效率,采用Mnist數據庫分別與文獻[20]和文獻[21]的算法進行對比分析,實驗結果如表2所示。

表 2 實驗對比結果
由表2可知,本文算法的識別率較高,算法耗時短,具有較好的效率。
本文以液壓傳動及控制技術、互換性與測量技術與機械設計基礎這3門專業核心課程的試卷來驗證本文算法的可行性。每門課程的開課班級為12個班共計396份試卷,3門課共計1 188份試卷。
對3門課程各396份試卷分數,通過預處理將每組手寫分數欄整理成28×28的圖片作為樣本輸入,將本文算法與文獻[20]、文獻[21]算法對手寫試卷分數進行識別,實驗統計數據如表3所示。

表 3 分數識別數據
如表3所示,本文算法對3門課程共計1 188份試卷識別的平均準確率為98.23%,平均每份試卷識別時間為7.5 s,與文獻[20]、文獻[21]進行對比,準確率高,耗時短。本文算法的識別平均準確率為98.23%,其1.77%的錯誤率主要來源于,在試卷分數欄圖像采集過程中會出現手寫數字不規范、數字與分數欄有交叉等情況。
1) 本文通過對手寫試卷圖像的采集、對分數欄的提取以及分割處理等將手寫分數簡化為單個數字識別的問題。
2) 本文算法通過卷積神經網絡提取圖像的特征,為實現效率采用PCA進行特征降維,融合貝葉斯分類器實現數字的分類,在Mnist數據庫中實現較高的識別率。
3) 將本文算法對手寫試卷各欄分數進行識別,通過各欄分數的統計,得到3門課程共計1 188份試卷識別的平均準確率為98.23%,平均每份試卷識別時間為7.5 s,證明了算法的實用性。
4) 解決人工評閱試卷耗時長的問題,為提高手寫試卷的識別質量以及統計準確率,后面需要進一步提高圖像采集質量與優化算法。