郭 浩 寧初明 韓壽松 李華瑩
1(六六四〇七部隊(duì) 北京 100089)
2(軍事科學(xué)院系統(tǒng)工程研究院 北京 100020)
3(陸軍裝甲兵學(xué)院車輛工程系 北京 100071)
當(dāng)前,OCR技術(shù)在生活中廣泛使用,并能以較高正確率識(shí)別身份證、銀行卡、表格單據(jù),為人們帶來(lái)了很大的便利,同時(shí)該技術(shù)在軍隊(duì)信息化建設(shè)中亦存有較高的使用價(jià)值。在諸如文稿數(shù)字化保存、單據(jù)記錄、裝備設(shè)備銘牌識(shí)別、故障研究記錄表格自動(dòng)錄入等領(lǐng)域可發(fā)揮重要作用,極大節(jié)約人力成本。其準(zhǔn)確率的進(jìn)一步提升可使人工糾錯(cuò)負(fù)擔(dān)顯著減輕,意義重大。OCR技術(shù)的技術(shù)設(shè)想早于計(jì)算機(jī)技術(shù)的出現(xiàn),早在1929年,德國(guó)科學(xué)家Tausheck首先提出了OCR概念。第一套可用OCR軟件是由IBM于20世紀(jì)60年代早期開(kāi)發(fā)的IBM1418,但僅能識(shí)別所指定字體的數(shù)字、英文字母及部分符號(hào)[1]。隨后20世紀(jì)60年代中期至70年代初期,日本東芝公司推出了基于手寫(xiě)體數(shù)字識(shí)別的郵政編碼識(shí)別信函自動(dòng)分揀系統(tǒng),在手寫(xiě)體識(shí)別上分揀率達(dá)到92%~93%,開(kāi)始了成熟的商業(yè)應(yīng)用[1]。在之后一個(gè)階段的發(fā)展中,OCR技術(shù)著力解決圖像質(zhì)量較低的文檔與大字符集識(shí)別如多語(yǔ)種(如中英文)混合識(shí)別的問(wèn)題,并在固定文檔的識(shí)別中取得了不錯(cuò)的效果。而國(guó)內(nèi)的OCR技術(shù)受限于計(jì)算機(jī)發(fā)展程度及中文OCR的研究難度問(wèn)題,起步較晚,且發(fā)展較慢[2]。在1989年,清華大學(xué)成功推出了國(guó)內(nèi)第一套中文OCR系統(tǒng)——清華文通TH-OCR1.0版本[2],使得印刷體漢字識(shí)別趨近于成熟,并成功走向市場(chǎng)。雖然這些技術(shù)都取得了一定的商業(yè)應(yīng)用,但依據(jù)原理,傳統(tǒng)OCR技術(shù)通過(guò)煩瑣的文檔傾斜校正、行列切分、字切分,特征提取與匹配等流程進(jìn)行文檔的字符級(jí)別識(shí)別,有著識(shí)別率低下,對(duì)視角、光源甚至字體要求苛刻的問(wèn)題,使得應(yīng)用局限于掃描文檔,很難應(yīng)用于相機(jī)拍攝的自然環(huán)境文字識(shí)別。尤其自然環(huán)境中存在凸凹體文字、弧形排列、字體缺損等問(wèn)題,更是傳統(tǒng)OCR技術(shù)所難以解決的。自2012年AlexNet[3]的提出使得深度學(xué)習(xí)技術(shù)取得突破以來(lái),當(dāng)前研究廣泛嘗試采用深度學(xué)習(xí)技術(shù)直接對(duì)自然環(huán)境文字進(jìn)行識(shí)別,取得了在準(zhǔn)確率遠(yuǎn)優(yōu)于傳統(tǒng)OCR技術(shù)的效果,但當(dāng)前主流文本區(qū)域分割網(wǎng)絡(luò)如EAST[4]網(wǎng)絡(luò)仍存在有計(jì)算量較大,需要多次非極大抑制算法支持等問(wèn)題,同時(shí)輕量的端到端網(wǎng)絡(luò)如FOTS[4]存在有較大的精度損失問(wèn)題,這些問(wèn)題均限制了深度學(xué)習(xí)在自然環(huán)境OCR中的進(jìn)一步應(yīng)用。本文中使用DBNET[4]與CRNN-CTC[5]復(fù)合二階段方法進(jìn)行自然環(huán)境下的字符級(jí)別文本識(shí)別,僅需兩階段處理即可在多視角、復(fù)雜光源下使用,在高準(zhǔn)確率的同時(shí)保證實(shí)時(shí)性,最后通過(guò)Flask高效后端框架、Celery高效消息隊(duì)列,并結(jié)合Layui前端框架實(shí)現(xiàn)了基于Python原生的實(shí)用化OCR識(shí)別系統(tǒng)。
在兩階段的深度學(xué)習(xí)方法中,首先采用文本區(qū)域分割網(wǎng)絡(luò)將圖像中的有文字區(qū)域與無(wú)文字區(qū)域分割,隨后采用基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)與循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)結(jié)合的CRNN網(wǎng)絡(luò),并以連接時(shí)態(tài)分類(Connectionist Temporal Classification,CTC)編碼形式輸出,通過(guò)分配識(shí)別區(qū)域、檢測(cè)字符這兩個(gè)過(guò)程,并交由兩類特定網(wǎng)絡(luò)處理,從而提高了識(shí)別準(zhǔn)確率。
DBNET是當(dāng)前最為高效的圖像文本區(qū)域分割網(wǎng)絡(luò)之一,分割實(shí)時(shí)率強(qiáng)且準(zhǔn)確高,在一般的語(yǔ)義分割網(wǎng)絡(luò)中,其概率圖劃分閾值對(duì)分割正確率影響較大。
DBNET采用了基于神經(jīng)網(wǎng)絡(luò)本身的自適應(yīng)二值化,對(duì)于文本區(qū)域概率圖進(jìn)行逐像素的二值化,從而徹底將二值化環(huán)節(jié)融入神經(jīng)網(wǎng)絡(luò)之中,使得分割準(zhǔn)確率提高的同時(shí),進(jìn)一步減少了后續(xù)流程,并使得后續(xù)CRNN識(shí)別過(guò)程得到更為準(zhǔn)確的分割圖,大幅提高了文字識(shí)別的正確率。其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 DBNET網(wǎng)絡(luò)結(jié)構(gòu)示意圖
圖1展示了DBNET網(wǎng)絡(luò)的一般結(jié)構(gòu)[5],其結(jié)構(gòu)與一般FPN(特征金字塔網(wǎng)絡(luò))相似,但預(yù)測(cè)環(huán)節(jié)中除分割文本核區(qū)域之外還有閾值特征圖預(yù)測(cè),其二值化公式表示為:
(1)
(2)
使用鏈?zhǔn)椒▌t可得:
(3)
從式(3)中明顯可以看出,其梯度由放大因子k增大,使得正負(fù)樣本均可在反例時(shí)獲取較高梯度,從而提高文本區(qū)域劃分正確性。
通過(guò)DBNET實(shí)現(xiàn)文本區(qū)域劃分后,需采用CRNN模型及CTC編解碼方式進(jìn)行區(qū)域內(nèi)字符級(jí)文字識(shí)別。
圖2展示了劃分后的圖像區(qū)域通過(guò)CNN(卷積神經(jīng)網(wǎng)絡(luò))分析后,采用LSTM(長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò))進(jìn)行CTC編碼的過(guò)程,即CRNN+CTC方法,本文所采用的輕量CRNN結(jié)構(gòu)如表1所示,輸入張量尺寸為32×n×3。
表1 CRNN模型結(jié)構(gòu)參數(shù)表
圖2 CRNN+CTC工作流程圖
可以看出,n表示文字區(qū)域圖像寬度,理論上對(duì)于圖像寬度沒(méi)有限制,從而避免了長(zhǎng)列文字識(shí)別困難的問(wèn)題。對(duì)于LSTM的輸出進(jìn)行Softmax處理,所得到y(tǒng)為文本的后驗(yàn)概率矩陣,定義為:
y=(y1,y2,…,yt,…,yT)
(4)
式中:T指輸出LSTM輸出第三維度??紤]到存在空格,標(biāo)點(diǎn)符號(hào)與空字符(因輸出序列長(zhǎng)度遠(yuǎn)遠(yuǎn)大于文字序列長(zhǎng)度)設(shè)定字符集為:
L′=L∪{blank,punctuation}
(5)
式中:L指代通用漢字及英文字符集合,組成L′為全字符集,由此生成神經(jīng)網(wǎng)絡(luò)所預(yù)測(cè)的后驗(yàn)字符矩陣。
CTC解碼方法通過(guò)空字符分割與重復(fù)字符拋棄的方式進(jìn)行:
B(π1)=B(sst-aaa-tee-)=stateB(π2)=B(—stta-t—e)=state
(6)
式中:“—”表示blank空字符,使得LSTM的多種輸出都可以得到有效解釋,從而很大程度上增強(qiáng)了CRNN網(wǎng)絡(luò)預(yù)測(cè)的魯棒性。
在文本檢測(cè)訓(xùn)練中,本文采用了多種數(shù)據(jù)集融合方式進(jìn)行數(shù)據(jù)增廣。Chinese Text in the Wild數(shù)據(jù)集是當(dāng)前數(shù)量最大的中文數(shù)據(jù)集之一,共含中文字符1 018 402個(gè),32 285幅圖像,圖像來(lái)源為騰訊街景,包含中文字符類型多,且清晰度高(2 048×2 048像素)。為同時(shí)完成中英文識(shí)別任務(wù),引入ICPR MWI 2018中英文OCR數(shù)據(jù)集作為補(bǔ)充,其主要由合成圖像、網(wǎng)絡(luò)廣告圖片組成,字體樣式較為豐富。最終在ICDAR2015數(shù)據(jù)集驗(yàn)證其模型效果,對(duì)比EAST、PSENET算法及谷歌開(kāi)源OCR引擎Tesseract如表2所示。
表2 ICDAR2015數(shù)據(jù)集測(cè)試結(jié)果
表2中Hmean為加權(quán)精確率與召回率的綜合評(píng)價(jià)指標(biāo):
(7)
式中:β=1,表示精確率和召回率重要性相當(dāng)。表2體現(xiàn)了DBNET與基于機(jī)器學(xué)習(xí)的OCR算法以及以往深度學(xué)習(xí)算法的比較,可以明顯看出,基于DBNET的文本區(qū)域檢測(cè)算法能夠在保證效率的同時(shí)大幅提升運(yùn)算效能,對(duì)比普通機(jī)器學(xué)習(xí)OCR算法更能在復(fù)雜環(huán)境中表現(xiàn)出優(yōu)異的性能,對(duì)比其他大型網(wǎng)絡(luò)如EAST時(shí),在精確度僅微小下降時(shí),運(yùn)算效能提升幅度極大,而對(duì)比輕量網(wǎng)絡(luò)PSENET,其精確率和實(shí)時(shí)率都有提升,運(yùn)行效率更加符合服務(wù)器的使用需求,部分復(fù)雜光源環(huán)境及彎曲文本的檢測(cè)效果如圖3所示。
圖3 DBNET與CRNN+CTC部分檢測(cè)效果圖
由圖3可見(jiàn)對(duì)于彎曲或平直中英文文本區(qū)域及各類樣式字體識(shí)別,該算法組合均有優(yōu)良表現(xiàn)。
在工程應(yīng)用上,由于深度學(xué)習(xí)的算法部署存在圖像解碼、模型運(yùn)算等環(huán)節(jié),具有計(jì)算IO資源高占用的特點(diǎn),為提高并發(fā)效率,異步消息隊(duì)列處理方式成為必然選擇。采用異步消息隊(duì)列處理的硬、軟件方案部署如圖4所示。
圖4 OCR識(shí)別系統(tǒng)硬、軟件方案簡(jiǎn)圖
為避免過(guò)高的IO占用成為系統(tǒng)響應(yīng)速度瓶頸,提高OCR識(shí)別系統(tǒng)負(fù)載能力,系統(tǒng)后端分別部署業(yè)務(wù)服務(wù)器與GPU服務(wù)器以及存儲(chǔ)服務(wù)器,業(yè)務(wù)服務(wù)器采用Nginx作為高性能反向代理服務(wù)器,提供前端響應(yīng),接收上傳圖片并置入消息隊(duì)列,隨后GPU服務(wù)器通過(guò)消息隊(duì)列提取云存儲(chǔ)服務(wù)器圖片數(shù)據(jù)進(jìn)行異步分析,并在分析結(jié)束后將結(jié)果返回業(yè)務(wù)服務(wù)器。出于基于Python語(yǔ)言原生構(gòu)建的需要,在軟件層方面,業(yè)務(wù)服務(wù)器后端采用Flask作為Nginx反向代理所代理的Web框架,并提供基于云存儲(chǔ)的圖像存儲(chǔ),在此基礎(chǔ)上采用Celery作為圖像消息隊(duì)列,提供業(yè)務(wù)服務(wù)器與GPU之間的通信,GPU服務(wù)器則使用TensorFlow作為算法模型部署的深度學(xué)習(xí)框架。經(jīng)實(shí)際測(cè)試,該架構(gòu)有良好的并行性能,能夠滿足中等規(guī)模(100~1 000人)的OCR使用需求。
針對(duì)當(dāng)前傳統(tǒng)OCR方法存在有光照、視角、字體要求苛刻的問(wèn)題,本文設(shè)計(jì)了一種基于DBNET及CRNN+CTC的兩階段復(fù)合深度學(xué)習(xí)OCR方案,并在大型開(kāi)源自然環(huán)境中英文檢測(cè)數(shù)據(jù)集上進(jìn)行訓(xùn)練,結(jié)果與傳統(tǒng)OCR及其他基于深度學(xué)習(xí)的方法對(duì)比,表明該方法對(duì)于自然場(chǎng)景文字識(shí)別效果突出,優(yōu)于其他算法且在運(yùn)算效能上有著顯著提升。在該技術(shù)的應(yīng)用方面,創(chuàng)新性地進(jìn)一步探究了基于異步消息隊(duì)列處理的深度學(xué)習(xí)OCR系統(tǒng)部署方案,使得該技術(shù)進(jìn)一步得到實(shí)用化。該方法未來(lái)將在軍隊(duì)信息化建設(shè)中發(fā)揮重要作用。