趙晟然 朱波 伍常亮
摘? 要: 為了解決傳統(tǒng)的紙質(zhì)試卷統(tǒng)分方法需要依靠人工識(shí)別和匯總分?jǐn)?shù)導(dǎo)致效率低且容易出錯(cuò)的問題,本文設(shè)計(jì)開發(fā)了一個(gè)基于DCNN實(shí)現(xiàn)紙質(zhì)試卷智能統(tǒng)分的應(yīng)用系統(tǒng)。首先對涉及的圖像處理關(guān)鍵技術(shù)和基于DCNN的手寫分?jǐn)?shù)識(shí)別模型進(jìn)行研究,然后對系統(tǒng)進(jìn)行需求分析、功能結(jié)構(gòu)設(shè)計(jì)、主要業(yè)務(wù)流程設(shè)計(jì)和前后端子系統(tǒng)的接口設(shè)計(jì),最后展示了系統(tǒng)運(yùn)行情況,并根據(jù)開發(fā)過程和運(yùn)行結(jié)果對系統(tǒng)進(jìn)行總結(jié)。
關(guān)鍵詞: DCNN;手寫數(shù)字識(shí)別;微信小程序;統(tǒng)分系統(tǒng)
中圖分類號: TP391. 41? ? 文獻(xiàn)標(biāo)識(shí)碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.07.037
【Abstract】: In order to solve the problem that the traditional paper test method is dependent on manual identification and summary scores, which leads to low efficiency and error-prone problems, this paper designs and develops an application system based on DCNN to realize the intelligent test of paper test papers. Firstly, the key techniques of image processing and DCNN-based handwritten score recognition model are studied. Then the system is analyzed for requirements, functional structure design, main business process design and interface design of front and rear terminal systems. Finally, the system operation is demonstrated. The system is summarized based on the development process and operational results.
【Key words】: DCNN; Handwritten digit recognition; WeChat applet; Unified system
0? 引言
紙質(zhì)試卷作為一種傳統(tǒng)的考試載體,具有使用方便,成本低廉等優(yōu)點(diǎn),在從小學(xué)、中學(xué)到高校的不同層級、不同種類的教育過程中均占據(jù)主流地位,同時(shí)在企業(yè)招聘和諸多社會(huì)工作考核中得到廣泛應(yīng)用。但是,紙質(zhì)試卷的使用大都需要人工判分、統(tǒng)分等工作貫穿其中。最常見的統(tǒng)分方式是將試卷各個(gè)題目的得分先登記到試卷頭的分項(xiàng)得分表中,然后再依靠人工將各分項(xiàng)分?jǐn)?shù)匯總,得到試卷的總分。此種方法統(tǒng)分的效果顯著依賴于人工匯總分?jǐn)?shù)時(shí)計(jì)算的效率和準(zhǔn)確率,因此受人的因素影響較大,在統(tǒng)分試卷量較大時(shí),容易出錯(cuò),且效率不高。
分析人工統(tǒng)分試卷的過程,關(guān)鍵環(huán)節(jié)是統(tǒng)分者正確識(shí)別出分項(xiàng)得分表中各個(gè)題目的分?jǐn)?shù)(通常由試卷評閱人手工填寫),其本質(zhì)就是一個(gè)手寫數(shù)字識(shí)別的過程。隨著人工智能及機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,手寫數(shù)字識(shí)別已經(jīng)成為一種典型的可以依靠計(jì)算機(jī)來自動(dòng)完成的事務(wù),屬于計(jì)算機(jī)圖像識(shí)別的范疇。近幾年,機(jī)器學(xué)習(xí)領(lǐng)域中的深度學(xué)習(xí)方法在圖像識(shí)別上取得重大突破,尤其是深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Networks,DCNN)的應(yīng)用,極大提升了圖像識(shí)別的準(zhǔn)確率,也成為當(dāng)前手寫數(shù)字識(shí)別的利器。有關(guān)卷積神經(jīng)網(wǎng)絡(luò)的研究可以追溯到1962年,Hubel D H與Wiesel T N在生物研究中受到貓的視覺皮層神經(jīng)元結(jié)構(gòu)的啟示,提出了感受野的概念[1];1989年,LeCun Y等人使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行手寫郵政編碼數(shù)字的識(shí)別,被認(rèn)為是當(dāng)今深度卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用的開端[2];2007年,任丹與陳學(xué)峰介紹了手寫數(shù)字識(shí)別的原理及實(shí)現(xiàn)方法,并通過應(yīng)用闡述了相關(guān)內(nèi)容[3]。如今,隨著相關(guān)技術(shù)的逐漸成熟,有關(guān)DCNN的研究愈發(fā)深入。2017年,孔祥浩采用DCNN網(wǎng)絡(luò)學(xué)習(xí)特性進(jìn)行特征二次優(yōu)選與降維,基于深度卷積神經(jīng)網(wǎng)絡(luò)展開了對特征優(yōu)化以及分類識(shí)別方法的研究[4];2018年,楊東旭等人針對傳統(tǒng)DCNN模型中存在的問題,提出一種將噪聲注入Softmax并結(jié)合遷移學(xué)習(xí)的圖像分類方法,并使用MNIST對所提方法的良好效果進(jìn)行了驗(yàn)證[5]。
當(dāng)前基于DCNN進(jìn)行手寫數(shù)字識(shí)別的研究已非常多,在涉及到手寫數(shù)字識(shí)別的諸多領(lǐng)域也得到了廣泛應(yīng)用,但是,還沒有其在紙質(zhì)試卷統(tǒng)分過程中的應(yīng)用見諸報(bào)道。因此,本文考慮設(shè)計(jì)開發(fā)一個(gè)基于DCNN實(shí)現(xiàn)紙質(zhì)試卷智能統(tǒng)分的應(yīng)用系統(tǒng),以減少傳統(tǒng)依賴人工進(jìn)行試卷統(tǒng)分的工作量,并降低統(tǒng)分錯(cuò)誤率。
1? 試卷統(tǒng)分表圖像處理過程
圖像處理就是通過計(jì)算機(jī)對圖像進(jìn)行去噪、增強(qiáng)、復(fù)原、分割、提取特征等操作[6]。對圖片進(jìn)行處理不僅可以幫助減少原始圖像中的干擾和噪聲等影響因素,還能夠增強(qiáng)圖像的清晰度,提高DCNN模型對手寫數(shù)字的識(shí)別正確率。
圖像分割作為圖像處理過程中的關(guān)鍵技術(shù),可以將試卷統(tǒng)分欄圖像中手寫數(shù)字的有效特征部分提取出來,是DCNN模型對圖像特征進(jìn)行降低向量維度和確定數(shù)字分類等工作的基礎(chǔ)。因此,圖像處理過程對于系統(tǒng)后續(xù)的識(shí)別效果具有重要意義。
本系統(tǒng)中主要涉及對試卷卷頭的統(tǒng)分欄內(nèi)的分?jǐn)?shù)進(jìn)行圖像分割。通過對卷頭統(tǒng)分欄內(nèi)的手寫數(shù)字進(jìn)行識(shí)別和驗(yàn)證,結(jié)果表明本方法具有一定的普適性和準(zhǔn)確性,能夠處理手寫規(guī)范的圖片與部分手寫字跡潦草和不規(guī)范的圖片。
系統(tǒng)對圖像的具體處理過程如圖1所示。(a)是系統(tǒng)前端所采集的試卷卷頭統(tǒng)分欄原圖;(b)圖展示的是系統(tǒng)對原圖按照顏色進(jìn)行分割;(c)圖展示的是系統(tǒng)將分割后的圖像進(jìn)行二值化處理的效果。
接下來系統(tǒng)開始對卷頭統(tǒng)分欄以欄為單位進(jìn)行分割,將統(tǒng)分欄各欄內(nèi)的數(shù)組進(jìn)行單獨(dú)提取和順次排列。每一欄內(nèi)所包含的分?jǐn)?shù)數(shù)組排列情況如圖2所示。
經(jīng)過以上的圖像處理過程,系統(tǒng)已經(jīng)將前端采集到的統(tǒng)分欄原圖分割為以欄為單位、順次排列的一個(gè)個(gè)數(shù)組。接下來系統(tǒng)開始對每個(gè)欄內(nèi)的數(shù)組進(jìn)行細(xì)化分割,最終分割效果如圖3所示。
至此,系統(tǒng)對試卷統(tǒng)分欄內(nèi)的數(shù)字圖像已經(jīng)處理完畢,實(shí)現(xiàn)了對統(tǒng)分欄內(nèi)分?jǐn)?shù)數(shù)字的有效分割。
2? 手寫分?jǐn)?shù)識(shí)別模型
2.1? 選擇分類算法
DCNN在保留傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的容錯(cuò)性強(qiáng)、自適應(yīng)能力強(qiáng)和自學(xué)習(xí)能力強(qiáng)等優(yōu)點(diǎn)的基礎(chǔ)上,能夠隱式地從訓(xùn)練數(shù)據(jù)中對特征模式進(jìn)行學(xué)習(xí),實(shí)現(xiàn)對特征的有效提取。除此之外,DCNN還具有很好的自學(xué)習(xí)能力,更容易通過引導(dǎo)學(xué)習(xí)來達(dá)到預(yù)期目標(biāo)。因此,本系統(tǒng)選擇深度卷積神經(jīng)網(wǎng)絡(luò)作為分類算法。
2.2? 構(gòu)建手寫分?jǐn)?shù)識(shí)別模型
本系統(tǒng)采用TensorFlow1.0-GPU進(jìn)行DCNN模
型的搭建、訓(xùn)練、測試以及應(yīng)用。TensorFlow是具有多層級結(jié)構(gòu)的機(jī)器學(xué)習(xí)框架,支持高性能的數(shù)值計(jì)算。不僅可以幫助處理大量數(shù)據(jù),還可以建立用于實(shí)現(xiàn)各種智能功能的模型,因此在人工智能領(lǐng)域得到了廣泛應(yīng)用。結(jié)合本系統(tǒng)的工作特點(diǎn)和目標(biāo)功 能,本系統(tǒng)采用具有函數(shù)簡單、實(shí)現(xiàn)計(jì)算過程簡化、更易學(xué)習(xí)和優(yōu)化等優(yōu)點(diǎn)的線性整流函數(shù)(ReLU)作為激活函數(shù)。
經(jīng)過前期的準(zhǔn)備工作,最終建立的DCNN模型總體結(jié)構(gòu)為:輸入層(input)>卷積層(conv1)>池化層(pool1)>卷積層(conv2)>池化層(pool2)>全連接層(fullyconn)>輸出層(softmax)。DCNN模型圖如圖4所示。
由圖可知,輸入一張尺寸為28×28的黑白圖像進(jìn)入DCNN模型時(shí),卷積層1開始對圖像進(jìn)行特征提取。為了防止過量提取特征進(jìn)而導(dǎo)致過擬合的出現(xiàn),設(shè)定合適的卷積核大小顯得尤為重要[7]。
本文在對相關(guān)資料的閱讀學(xué)習(xí)的基礎(chǔ)上,通過預(yù)研確定各項(xiàng)參數(shù)及模型工作過程如下:將卷積層1的卷積核設(shè)定為32,卷積層2的卷積核設(shè)定為64。首先進(jìn)行卷積,卷積過程可以有效減少參數(shù)的數(shù)量。接下來激活函數(shù)relu開始工作,池化層1的卷積核設(shè)定為32,通過池化可以降低來自卷積層的特征向量維數(shù),進(jìn)而降低后面卷積層的處理復(fù)雜程度。經(jīng)過卷積與池化過程后,全連接層將1024個(gè)尺寸為1×1的神經(jīng)單元輸送至softmax層進(jìn)行歸一化,softmax層將會(huì)數(shù)字按照0到9的10個(gè)類型對神經(jīng)元進(jìn)行分類,最終確定最大相似概率的數(shù)字。至此,完成基于DCNN模型對圖像所包含的數(shù)字的識(shí)別過程。
2.3? 模型訓(xùn)練與測試
本系統(tǒng)選取MNIST中的完整數(shù)據(jù)對DCNN模型進(jìn)行訓(xùn)練和測試。MNIST由7萬張黑底白字的手寫數(shù)字圖片構(gòu)成,其中的5.5萬張圖片作為訓(xùn)練集,0.5萬張圖片作為驗(yàn)證集,1萬張圖片作為測試集。每張圖片由28×28個(gè)像素點(diǎn)構(gòu)成,每個(gè)像素點(diǎn)用一個(gè)灰度值表示。
圖5反映的是DCNN模型在訓(xùn)練過程中的訓(xùn)練精度變化情況。
在使用MNIST數(shù)據(jù)集對所搭建的DCNN模型進(jìn)行訓(xùn)練和測試后,DCNN模型的測試精度最終達(dá)到98.8%。
3? 系統(tǒng)需求分析及設(shè)計(jì)
3.1? 需求分析
針對傳統(tǒng)試卷統(tǒng)分方法存在依靠人工計(jì)算總分,存在工作效率低且容易出錯(cuò)等問題,結(jié)合系統(tǒng)的預(yù)期特點(diǎn)和功能,經(jīng)過需求分析確定本系統(tǒng)應(yīng)具有操作簡單、使用方便、人機(jī)交互界面友好的特點(diǎn);可以通過使用手機(jī)拍攝試卷統(tǒng)分欄圖片,快速實(shí)現(xiàn)對試卷統(tǒng)分欄內(nèi)分?jǐn)?shù)數(shù)字的準(zhǔn)確識(shí)別以及智能計(jì)算總分的功能。同時(shí),要求系統(tǒng)運(yùn)行穩(wěn)定,魯棒性高,擴(kuò)展性好,可以有效滿足當(dāng)前試卷統(tǒng)分工作過程中的使用需求。
3.2? 系統(tǒng)設(shè)計(jì)
完成需求分析以后,根據(jù)需求分析結(jié)果進(jìn)行系統(tǒng)體系結(jié)構(gòu)和前端子系統(tǒng)的設(shè)計(jì)。
3.2.1? 系統(tǒng)體系結(jié)構(gòu)
該系統(tǒng)設(shè)計(jì)微信小程序作為系統(tǒng)前端,借助TensorFlow深度學(xué)習(xí)框架完成后臺(tái)的相關(guān)模型的搭建和運(yùn)行。系統(tǒng)體系功能結(jié)構(gòu)如圖6所示。
設(shè)計(jì)系統(tǒng)工作流程如下:首先,系統(tǒng)通過前端的手機(jī)微信小程序采集試卷卷頭統(tǒng)分欄內(nèi)的分?jǐn)?shù)圖像,然后將分?jǐn)?shù)圖像傳送到服務(wù)端,在完成對原始圖片進(jìn)行包括讀取、旋轉(zhuǎn)縮放、二值化處理以及分?jǐn)?shù)的分割、去噪和形態(tài)學(xué)處理的圖像處理過程后,調(diào)用基于DCNN實(shí)現(xiàn)的分類模型,識(shí)別出卷頭統(tǒng)分欄中每個(gè)單項(xiàng)的得分,經(jīng)過系統(tǒng)后端程序的運(yùn)行,最終匯總計(jì)算出試卷總分并顯示在系統(tǒng)前端,將最終結(jié)果反饋給用戶。本系統(tǒng)工作流程如圖7所示。
3.2.2? 前端子系統(tǒng)設(shè)計(jì)
微信小程序作為一種輕量型應(yīng)用,只需要通過用戶掃一掃就可以使用,不僅符合用戶的使用習(xí)慣,也解放了用戶手機(jī)內(nèi)存的占用。除此以外,微信小程序還具有覆蓋面廣、方便快捷、即用即走、速度快、安全穩(wěn)定等優(yōu)點(diǎn)[8]。
系統(tǒng)集合時(shí)下熱門的微信小程序,設(shè)計(jì)出一套適配于該系統(tǒng)的微信小程序作為系統(tǒng)前端。微信小程序前端具體設(shè)計(jì)與運(yùn)行過程如下:
(1)微信小程序調(diào)用wx.chooseImage控件對試卷卷頭統(tǒng)分欄進(jìn)行拍照,拍照時(shí)會(huì)調(diào)用位置框自動(dòng)識(shí)別并劃定統(tǒng)分欄圖像范圍。拍照過程中可以將實(shí)時(shí)情況顯示給用戶。
(2)使用wx.uploadFile控件,將圖片文件上傳至服務(wù)器端的一個(gè)開辟的路徑,同時(shí)保存圖片文件名至服務(wù)器端的MySQL數(shù)據(jù)庫,并設(shè)置當(dāng)前狀態(tài)為0,表示圖片還未識(shí)別。圖片上傳情況和數(shù)據(jù)庫表設(shè)計(jì)如圖8所示。
(3)使用Python鏈接數(shù)據(jù)庫,每隔0.2秒查找狀態(tài)為0的記錄,如果有記錄存在,則調(diào)用封裝好的圖片預(yù)處理函數(shù)和DCNN進(jìn)行圖像識(shí)別,將結(jié)果按某種格式編碼為字符串形式,并將數(shù)據(jù)庫表中的scores字段更新為識(shí)別結(jié)果,同時(shí)將狀態(tài)更新為1,表示識(shí)別完成;如果記錄不存在,則繼續(xù)啟動(dòng)線程執(zhí)行SQL語句。微信小程序采用setInterval控件每隔1秒查詢一次數(shù)據(jù)庫,若查詢結(jié)果scores不為“nothing”,則解析scores字符串,得到單項(xiàng)得分并計(jì)算總分。數(shù)據(jù)庫表更新后結(jié)果如圖9所示。
(4)最終匯總計(jì)算出試卷卷頭統(tǒng)分欄內(nèi)的總分并顯示在系統(tǒng)前端,將最終結(jié)果反饋給用戶,完成系統(tǒng)的手寫分?jǐn)?shù)識(shí)別功能。
4? 系統(tǒng)運(yùn)行情況
微信小程序調(diào)用控件實(shí)現(xiàn)拍照功能如圖10所示。拍照后系統(tǒng)會(huì)在運(yùn)行后將識(shí)別結(jié)果顯示在微信小程序界面,快速清晰地反饋給用戶,如圖11所示。
5? 結(jié)論
本文針對傳統(tǒng)試卷統(tǒng)分方法存在工作效率低、容易出錯(cuò)等問題,構(gòu)建了微信小程序前端,Python語言、TensorFlow深度學(xué)習(xí)框架和MySQL數(shù)據(jù)庫作為系統(tǒng)后臺(tái)的試卷智能統(tǒng)分系統(tǒng)。系統(tǒng)通過建立合適的DCNN模型并使用MNIST數(shù)據(jù)集對其進(jìn)行訓(xùn)練和測試,取得了98.8%的識(shí)別精度。系統(tǒng)通過前端采集統(tǒng)分欄圖像,后臺(tái)調(diào)用DCNN模型對處理后的統(tǒng)分欄內(nèi)手寫數(shù)字圖像進(jìn)行準(zhǔn)確識(shí)別和計(jì)算,最終將結(jié)果反饋至前端界面,完成手寫分?jǐn)?shù)的智能統(tǒng)分過程。
驗(yàn)證結(jié)果表明該系統(tǒng)可以顯著降低試卷統(tǒng)分工作強(qiáng)度,提高工作效率和統(tǒng)分正確率。但是該系統(tǒng)仍然存在不足:當(dāng)前針對書寫工整的數(shù)字及數(shù)組識(shí)別正確率較高,但是對于存在跨欄現(xiàn)象或字跡潦草的數(shù)字和數(shù)組識(shí)別正確率較低,這將作為本系統(tǒng)后續(xù)研究的重點(diǎn)。
參考文獻(xiàn)
Hubel D H, Wiesel T N. Receptive fields, binocular interaction and functional architecture in the cat's visual cortex[J]. The Journal of Physiology, 1962, 160(1): 106-154.
Lecun Y, Boser B, Denker J S, et al. Backpropagation Applied to Handwritten Zip Code Recognition[J]. Neural
Computation, 1989, 1(4): 541-551.
任丹, 陳學(xué)峰. 手寫數(shù)字識(shí)別的原理及應(yīng)用[J]. 計(jì)算機(jī)時(shí)代, 2007(3): 17-18.
孔祥浩. 基于深度卷積神經(jīng)網(wǎng)絡(luò)的特征優(yōu)化與分類識(shí)別方法研究[D]. 哈爾濱工業(yè)大學(xué)碩士論文, 2017. 6.
楊東旭, 賴惠成, 班俊碩, 等. 基于改進(jìn)DCNN結(jié)合遷移學(xué)習(xí)的圖像分類方法[J]. 新疆大學(xué)學(xué)報(bào)(自然科學(xué)版), 2018, 35(2).
江明, 劉輝, 黃歡. 圖像二值化技術(shù)的研究[J]. 軟件導(dǎo)刊, 2009(4): 175-177.
周志華. 機(jī)器學(xué)習(xí)[M]. 清華大學(xué)出版社, 2016. 1.
劉剛. 微信小程序開發(fā)圖解案例教程[M]. 人民郵電出版社, 2017. 5.