曲超然,陳立偉,王建生,王水根
1. 哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150001
2. 煙臺艾睿光電科技有限公司,山東 煙臺 264000
隨著計算機(jī)技術(shù)的不斷發(fā)展,計算機(jī)視覺(computer vision,CV)被應(yīng)用于數(shù)字儀表讀數(shù)識別領(lǐng)域[1]。光學(xué)字符識別(optical character recognition,OCR)是計算機(jī)利用檢測與識別方法對采集圖像進(jìn)行文符識別的技術(shù),是計算機(jī)視覺中的重要研究領(lǐng)域[2],它主要包含2 個階段:利用采集到的圖像進(jìn)行文符檢測;對檢測內(nèi)容進(jìn)行文符識別。
隨著現(xiàn)代工業(yè)技術(shù)的發(fā)展,傳統(tǒng)OCR 技術(shù)效率低、流程復(fù)雜以及技術(shù)的局限性已不能滿足復(fù)雜環(huán)境下的文本檢測任務(wù),基于深度學(xué)習(xí)的OCR 技術(shù)成為了研究熱點。在文本檢測方面,Liu 等[3]在2016 年提出一種基于Anchor 機(jī)制的一階段檢測算法,該方法模型小,計算量低并且優(yōu)于一階段的YOLO 算法[4]和兩階段的Faster-RCNN 算法[5]。但是用于文符區(qū)域識別時,Anchor 的尺度比例難以調(diào)節(jié)。針對這些問題,Liao 等[6]提出基于一階段多框檢測(single shot multibox detector,SSD)的TextBoxes 算法,該方法運行速度快且符合行識別的特性。然而,該算法只能回歸到矩形框,無法檢測多角度的文本框。Liao 等[7]針對以上問題又提出了改進(jìn)的Textboxes++,目的是提高對多角度文本的檢測。Tian 等[8]提出連接文本提議網(wǎng)絡(luò)(connectionist text proposal network,CTPN)算法,將卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)結(jié)合,同時融合空間和序列特征。然而這種算法無法處理復(fù)雜背景的文本。Zhou 等[9]開發(fā)出了EAST 算法,利用全卷積神經(jīng)網(wǎng)絡(luò)(fully convolutional network,F(xiàn)CN)模型在樣本目標(biāo)上回歸文符區(qū)域的輪廓,所有像素位置都輸出了密集的文字預(yù)測。文獻(xiàn)[10]網(wǎng)絡(luò)增加了不規(guī)則文本框的識別。在文本識別方面,CRNN 算法[11]對不定長的文字序列進(jìn)行端到端的識別,但模型復(fù)雜且計算困難,對方向角度大的文字識別率低。Shi 等[12]提出了有效識別透視變換過的文本以及彎曲文本的RARE 算法,但該算法收斂速度較慢。文獻(xiàn)[13]提出卷積神經(jīng)網(wǎng)絡(luò)與條件隨機(jī)域(conditional random fields,CRF)結(jié)合的模型,識別后使用一個帶有注意力機(jī)制的recurive RNN 模型,直接利用圖像完成字符串學(xué)習(xí)進(jìn)行識別。
工業(yè)儀表識別與通用情況下的文字識別不同,包含多種因素與復(fù)雜背景的干擾,傳統(tǒng)OCR 算法不能有效地減少以上影響,故本文提出了一種適用于復(fù)雜背景下基于深度學(xué)習(xí)的工業(yè)數(shù)字儀表讀數(shù)檢測與識別方法。該算法包含以下幾個優(yōu)勢:1)使用基于分割的二值化處理(DB)算法簡化后處理步驟,以實現(xiàn)對復(fù)雜環(huán)境下的高效文本檢測。2)提出一種適用于數(shù)字儀表的圖像預(yù)處理方法。3)引入注意力機(jī)制改進(jìn)CRNN 算法,實現(xiàn)對數(shù)字儀表讀數(shù)的準(zhǔn)確識別且有效解決了特殊文符粘連的問題。4)構(gòu)建了一種復(fù)雜背景的數(shù)字儀表檢測數(shù)據(jù)集和一種合成的儀表讀數(shù)識別數(shù)據(jù)集。
分割網(wǎng)絡(luò)是一種適用于復(fù)雜背景下的文符檢測?;诜指畹姆椒ㄖ攸c在于后處理,它將分割后的結(jié)果處理為文符區(qū)域。本節(jié)基于分割的文本檢測方法通過可微分DB[14]模型來簡化后處理過程,同時將自適應(yīng)閾值融入網(wǎng)絡(luò)提升網(wǎng)絡(luò)效率。
網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,輸入圖片通過融合特征輸出與原圖同尺寸的特征圖F,利用特征圖F預(yù)測概率圖和閾值圖,兩者計算后輸出二值圖。
圖1 DB 算法結(jié)構(gòu)
通過閾值選取,利用網(wǎng)絡(luò)去預(yù)測圖像中所有位置的閾值,能夠明顯地將背景與前景區(qū)分。由于這種方法會給訓(xùn)練帶來梯度不可微的情況,因此可以近似這個二值化過程為
式中:B為近似二值圖,T為學(xué)習(xí)到的閾值,P為概率圖,k為放大因子。該函數(shù)因為可微,所以可以很好地融入網(wǎng)絡(luò)的訓(xùn)練。上述方法可以有效分離文符區(qū)域和背景,同時可以將密集文本分離出來。
損失函數(shù)L為P、B、T三者損失值之和:
式中:Ls為概率圖的損失,Lb為二值圖的損失。Ls和Lb通過二值交叉熵?fù)p失(binary cross entropy,BCE)計算,同時使用難例挖掘方法解決正負(fù)樣本不均勻問題。
式中Sl為正樣本和負(fù)樣本比例是1∶3 的樣本集。
Lt計算方式為
式中:Rd為在膨脹Gd內(nèi)像素的索引,y*為閾值圖的標(biāo)簽,x*為網(wǎng)絡(luò)輸出的x中的最優(yōu)值。
在數(shù)字儀表檢測完成后,需要對檢測到的文符區(qū)域或文本框進(jìn)行文符識別,轉(zhuǎn)變?yōu)橛嬎銠C(jī)可以處理的信息。本節(jié)基于CRNN 模型進(jìn)行改進(jìn),對于現(xiàn)有數(shù)字儀表中字符粘連識別不準(zhǔn)問題,提出了一種結(jié)合Attention[15]機(jī)制的文字識別算法,同時結(jié)合工業(yè)實際問題,提出了一種儀表讀數(shù)預(yù)處理方法。
CRNN 算法將CNN 提取特征與長短期記憶(long short-term memory,LSTM)序列化識別的優(yōu)點相融合,最后利用時序分類算法(connectionist temporal classification,CTC)計算損失函數(shù),其網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 CRNN 網(wǎng)絡(luò)結(jié)構(gòu)
圖片輸入后,經(jīng)過4 個卷積-激活-最大池化模塊提取特征,將原有圖像的色彩和結(jié)構(gòu)信息抽象歸一化,通過卷積后產(chǎn)生多類特征圖。再使用一個深層雙向的LSTM 網(wǎng)絡(luò)[15],對提取的文符序列特征進(jìn)行預(yù)測。這里采用的是2 層各256 單元的雙向LSTM(BiLSTM)網(wǎng)絡(luò)。
在卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上引入CTC 算法[16]來對循環(huán)層的輸出進(jìn)行轉(zhuǎn)錄,最后進(jìn)行分割、對齊等處理。首先,將循環(huán)層的輸出
式中B 代表從預(yù)測文本輸出值與真實文本值之間的變換方法,簡稱為B 變換。
利用損失函數(shù)可以對網(wǎng)絡(luò)進(jìn)行反向傳播,根據(jù)所使用的優(yōu)化器對網(wǎng)絡(luò)參數(shù)完成更新,最后得到像素區(qū)域?qū)?yīng)的最大概率字符。CTC 的損失函數(shù)為
數(shù)字儀表中7 段LED 顯示數(shù)碼管具有間斷式連接特性,在文本識別過程中容易產(chǎn)生誤識別。同時,通過伸縮變換方法直接改變圖像大小可能會導(dǎo)致文字畸變過于嚴(yán)重,影響訓(xùn)練結(jié)果。本節(jié)基于最大類間方差法(OTSU)提出一種適用于數(shù)字儀表識別的預(yù)處理方法,該方法可以分為以下三步:
1)取一個長寬比為6.25∶1 的儀表圖像作為標(biāo)準(zhǔn),將所有訓(xùn)練樣本集中的圖像高度歸一化,將高度固定為32 像素,貼切數(shù)字特點。
2)對全部圖像進(jìn)行處理。根據(jù)標(biāo)準(zhǔn)模版判斷,如果低于標(biāo)準(zhǔn)比值,在長度上使用黑色像素補齊;如果高于標(biāo)準(zhǔn)比值,壓縮長度至200 像素。
3)利用最大類間方差算法對檢測后的灰度圖進(jìn)行二值化。
通過以上處理后,圖像長寬比被固定為200∶32,可以有效防止圖像被拉伸形變過大導(dǎo)致的失真情況,且可有效突出儀表讀數(shù),如圖3 所示。
圖3 預(yù)處理方法
本節(jié)使用基于雙向解碼器擴(kuò)展的序列到序列模型來完成識別。網(wǎng)絡(luò)模型由編碼模塊和解碼模塊構(gòu)成,其中基于CRNN 的解碼模塊是由提取特征的殘差網(wǎng)絡(luò)[17]和兩層的BiLSTM 網(wǎng)絡(luò)組成。在數(shù)字儀表讀數(shù)區(qū)域輸入骨干網(wǎng)絡(luò)后,提取的特征圖經(jīng)由RNN 循環(huán)層輸出具有依賴關(guān)系的特征序列,因此模型捕獲到了字符間的相關(guān)性。而后者可以得到正反2 個方向上的關(guān)聯(lián)信息。
如圖4 表示,編碼器先從輸入圖像中提取特征圖,使用深層的殘差網(wǎng)絡(luò)將特征圖的高度固定,然后在水平方向?qū)⑵浞指畛商卣餍蛄?。在卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)中加入多個殘差連接的卷積層進(jìn)一步提高特征提取能力,但是這些特征仍然會受到網(wǎng)絡(luò)捕獲到的儀表讀數(shù)區(qū)域的限制。為了進(jìn)一步增加提取特征的范圍,在編碼器上同時引入了雙向LSTM 網(wǎng)絡(luò)。
圖4 特征序列生成方法
最后使用LSTM 網(wǎng)絡(luò)的輸出xt來預(yù)測當(dāng)前步驟的標(biāo)簽符號:
因為yt-1包含在yt計算中,由此可知解碼器容易得到其輸出字符之間的依賴關(guān)系。在推導(dǎo)過程中采取啟發(fā)式圖搜索方法[19],在每一個階段預(yù)選10 個累積最大的候選值。與貪心搜索方法[20]比較,啟發(fā)式圖搜索方法的準(zhǔn)確率略低,但其穩(wěn)定性和速度會更快。
基于改進(jìn)的CRNN 儀表讀數(shù)識別算法使用了雙向解碼器,如圖5 所示。模型訓(xùn)練了2 個相反的解碼器,通過輸入編碼器輸出的序列與反轉(zhuǎn)序列后會產(chǎn)生2 個預(yù)測輸出,根據(jù)每一步歸一化指數(shù)函數(shù)的對數(shù)之和,對兩者的輸出結(jié)果進(jìn)行比較。最后將結(jié)果合并,取對數(shù)和輸出值最高的解碼器輸出作為最終的輸出。
圖5 解碼器結(jié)構(gòu)
解碼網(wǎng)絡(luò)是一個基于Attention 機(jī)制的LSTM網(wǎng)絡(luò)[18],輸入為任意長度的序列,輸出為所需要任意長度的字符序列。注意力模型在序列建模中能夠解析序列與序列之間的依賴關(guān)系。同時能夠在任意解碼階段查尋解碼模塊的輸入,從而具有更簡單的調(diào)試網(wǎng)絡(luò)的能力。Attention 機(jī)制可以減少序列過長導(dǎo)致網(wǎng)絡(luò)信息缺失的影響。在基于改進(jìn)的CRNN 算法中,解碼模塊總共包含各1 024 個注意力單元和隱藏層單元,其輸出的大小主要取決于待識別文本的長度,解碼模塊能夠識別常見的中文、英文以及相關(guān)的工業(yè)符號。解碼模塊輸出長度為T的序列,這個序列表示為{y1,y2,…,yT}。在第t步時,解碼模塊根據(jù)編碼模塊的輸出序列、上階段的狀態(tài)st-1和輸出yt-1來計算此時的輸出值。在此步驟中,解碼器首先通過Attention 機(jī)制計算注意力權(quán)重αt:
式中:w、W、V為需要訓(xùn)練的權(quán)重值。解碼器把H序列中每個元素及對應(yīng)權(quán)重值線性組合成一個向量,稱為注意力向量,用gt表示:
注意力向量gt解釋了用輸出序列編碼的上下文的一部分,將其作為解碼器模塊的部分輸入,得到輸出向量xt和狀態(tài)向量st:
網(wǎng)絡(luò)的訓(xùn)練過程是端到端的,損失函數(shù)定義為
式中:yt表示輸出的字符類別;pl、pr分別為2 個解碼器的概率密度;I是先驗條件,在本文的CRNN中代表真實的標(biāo)簽值。
工業(yè)數(shù)字儀表圖像的讀數(shù)識別需要利用檢測模塊和識別模塊共同作用構(gòu)建基于深度學(xué)習(xí)的數(shù)字儀表讀數(shù)識別算法。在此將結(jié)合前面提出的DB 文字檢測方法與改進(jìn)的CRNN 文字識別方法相結(jié)合,搭建OCR 系統(tǒng)。
實驗平臺所使用的操作系統(tǒng)為Ubuntu 18,檢測和識別網(wǎng)絡(luò)的訓(xùn)練和測試模型在PyTorch 架構(gòu)下搭建,所使用的服務(wù)器為RTX 6000。
本節(jié)實驗總共標(biāo)注了5 000 張數(shù)字儀表圖像。這些圖片一共包含4 種不同的情形,分別是環(huán)境復(fù)雜、光照不均、字符粘連和儀表傾斜。同時圖像中還包含了5 種不同類型的數(shù)字儀表。按照4∶1 劃分為訓(xùn)練集和測試集。此外,為了提高算法對工業(yè)環(huán)境的適應(yīng)性,利用人工增強的方法擴(kuò)充數(shù)據(jù)集中多種因素的影響,使得算法泛化性和魯棒性更高。
將本 文方 法與 與CTPN、EAST、PSENet 和PANNet 文本檢測方法對比發(fā)現(xiàn),DB 在測試集的準(zhǔn)確度為88.3%,召回率為77.9%,調(diào)和平均值為82.8%。在數(shù)字儀表檢測的實驗中總體優(yōu)于其他算法,且對于扭曲的文字檢測效果更好,對比結(jié)果如表1 所示。
表1 檢測算法對比實驗 %
利用訓(xùn)練完成的DB 模型,在真實場景下對數(shù)字儀表的檢測效果如圖6 所示。
圖6 模型預(yù)測效果
由于缺乏公開的電表數(shù)據(jù)集,本節(jié)基于Styletext 數(shù)據(jù)合成工具,對數(shù)字儀表文字圖像進(jìn)行數(shù)據(jù)合成。利用文符(特殊符號、數(shù)字、中文)和背景疊加合成。字體采取常用的5 種中文和英文字體加上10 種常見數(shù)碼管字體,如圖7 所示。
圖7 LED 數(shù)碼管數(shù)字字體數(shù)據(jù)集
背景取自設(shè)備儀表上獲取的6 種背景,最后得到100 000 張樣本,以7∶2∶1 的比例劃分為訓(xùn)練集、驗證集和測試集1。對于儀表數(shù)字以及特殊符號粘連實驗,生成了5 000 個訓(xùn)練樣本,1 000 個驗證集,1 000 個測試集2。最終的訓(xùn)練集選取為真實樣本與合成樣本結(jié)合的方法,驗證集及測試集均在真實樣本中選取。
通過表2 可知:在合成測試集中,本文識別模型在識別字符粘連等特殊場景較CRNN 模型準(zhǔn)確率提高9%;在真實測試集中,在與已訓(xùn)練儀表的測試集上準(zhǔn)確率分別為91.7%、94.1%,提高2.4%,表明模型具有不錯的分類性能;在未訓(xùn)練儀表上的測試準(zhǔn)確率分別為86.8%、90.3%,提高3.5%,表明本文模型具有較強的泛化能力??傮w來看,模型在數(shù)字儀表識別的準(zhǔn)確性及有效性有明顯提高。
表2 識別結(jié)果對比
將訓(xùn)練后的DB 網(wǎng)絡(luò)模型與改進(jìn)的CRNN 網(wǎng)絡(luò)模型整合成一個完整的OCR 系統(tǒng),通過對真實的數(shù)字儀表圖像預(yù)測實驗,文字識別準(zhǔn)確率總體達(dá)到90%以上,預(yù)測效果如圖8 所示。
圖8 OCR 識別效果
本文設(shè)計了一種基于深度學(xué)習(xí)的數(shù)字儀表識別算法,采用基于分割的DB 網(wǎng)絡(luò)進(jìn)行文符檢測,實驗表明該算法對彎曲的文本檢測效果良好。
1)通過提出的數(shù)字儀表圖像預(yù)處理方法,對檢測后的文字圖像區(qū)域進(jìn)行二值化處理后,利用引入Attention 機(jī)制的CRNN 算法進(jìn)行文符識別,有效地改善了圖像背景復(fù)雜、角度傾斜和光照不均等影響因素造成的分辨率低、對比度差等問題。
2)同時構(gòu)建了一種包含多種復(fù)雜場景下的數(shù)字儀表讀數(shù)檢測數(shù)據(jù)集與合成的文符識別數(shù)據(jù)集。在上述數(shù)據(jù)集上測試檢測率可達(dá)到88.3%,識別準(zhǔn)確率達(dá)到96%,OCR 系統(tǒng)整體識別準(zhǔn)確率達(dá)到90%以上,優(yōu)化了特殊字符粘連導(dǎo)致識別不準(zhǔn)確的問題。