朱立倩
(中國石油大學(華東)計算機科學與技術學院,山東 青島 266580)
數顯儀表在許多領域有著廣泛的應用,但大多數的數顯儀表不具備數據通信的功能,從而無法完成儀表數據的自動獲取與存儲。在實際應用中,需要大量的人力對儀表數據進行記錄以及錄入電腦,這不僅耗時耗力,而且多次的轉錄易導致錯誤發生,降低了系統的自動化水平。人們希望可以自動識別數顯儀表中的數據,以提高工作效率及自動化水平。
機器視覺的不斷發展,為數顯儀表字符的自動識別提供了可能。傳統字符識別方法[1-3]的一般步驟為對獲取的原始圖像進行預處理,字符定位,字符分割,字符識別,傳統方法一般需要圖片有較純凈的背景,略復雜的圖片會導致識別失敗,這表明傳統方法適應性差,容錯性低。近年來,隨著深度學習技術[4-6]的不斷發展,文本檢測和識別算法[7-10]的準確度都大大提升,這為數顯儀表字符識別提供了新的解決思路。
為了解決傳統方法適應性差,容錯性低的問題,采用深度學習技術,提出了一種基于深度學習的數顯儀表字符識別方法,記為DDICRNet(digital display instrument character recognition net),該方法對圖片內容有較大的容錯性,可以應用于不同的數顯儀表,只需要重新訓練模型,同時可以保證識別的準確度。該方法以變壓器直流電阻測試儀為具體應用對象,實驗結果顯示,該方法可以實現95%的準確率。
此部分詳細介紹了提出的數顯儀表字符識別方法。整體設計思路為字符區域定位網絡獲得圖片中的字符區域位置信息,利用位置信息裁剪字符區域,將裁剪后的字符區域送入字符識別網絡得到識別結果。整個方法由兩部分構成,分別為字符區域定位網絡CRLNet(character region location net)和字符識別網絡CRNet(character recognition net)。
定位的準確性直接影響識別的準確性,所以字符區域定位的準確性至關重要。為了提高字符區域定位網絡的準確性,在Faster R-CCN[5]的基礎上,從兩方面對其進行改進:(1)使用更加高效的特征提取網絡,以保證分類的準確性;(2)使用精確感興趣區域池化(precise RoI-Pooling)[11]代替RoI-Pooling,提高定位的準確性。通過這兩個方面的提高,保證檢測結果的準確性。
CRLNet由ResneXt-101[12],區域提案網絡[5],分類和回歸網絡以及后處理算法[5]構成。網絡結構如圖1所示。ResneXt-101由五個卷積組構成,每個卷積組由卷積層、池化層、激活層構成。卷積組2-5借鑒了GoogLeNeT[13]的split-transform-merge思想,在大卷積核層兩側加入1×1的卷積,控制核個數的同時減少參數個數。與Resnet[14]相比,參數更少,效果更好,訓練速度更快。由于以變壓器直流電阻測試儀為具體應用對象,所以考慮到需要定位區域的大小和形狀,將RPN中的候選框的大小設置為64×64,128×128。縱橫比設置為1∶4。將ResneXt-101最后一層產生的特征圖送入RPN網絡中,得到區域提案。選取256個區域提案作為樣本,正負樣本比為3∶1,通過精確的感興趣區域池化操作對區域提案的特征圖統一尺寸,通過三個全連接得到分類和邊框回歸的預測結果。

圖1 字符區域定位網絡結構
對特征圖上的感興趣區域進行RoI-Pooling會導致定位不準確,這是因為RoI-Pooling進行的兩次量化取整操作會帶來精度損失。另外,RoI區域中的像素是離散化的,沒有梯度更新也就無法調節訓練。精確的感興趣區域池化相比RoI-Pooling,沒有任何坐標量化過程,整個區域的像素值通過積分計算得到,所有的像素值都有梯度的傳遞。所以能在特征圖上對感興趣區域提取更精準的特征。給定精確的感興趣區域池化操作前的特征圖F,設wij是該特征圖上一個離散位置(i,j)處的特征,使用雙線性插值,這個離散的特征圖可以看作在任意連續的坐標(x,y)處都連續:
(1)
IC(x,y,i,j)=max(0,1-|x-i|)×max(0,1-|y-j|)是插值系數。然后將RoI的一個bin表示為:
bin={(x1,y1),(x2,y2)}
(2)
其中,(x1,y1),(x2,y2)是左上角和右下角的連續坐標。給定bin和特征圖F,通過計算一個二階積分來執行池化:
(3)
受文獻[15]方法的啟發,構建字符識別網絡。網絡可以視為編解碼器結構,編碼器由特征提取網絡ResneXt-50[12]和雙向長短時記憶網絡(BiLSTM)[16]構成,解碼器由加入注意力機制[17]的長短時記憶網絡(LSTM)構成。網絡結構如圖2所示。

圖2 字符識別網絡結構
由于BiLSTM的輸入是向量,所以特征提取網絡的輸出高度應為1像素。而ResneXt-50共有五個池化層,在高度上的步長均為2,所以輸入圖片的高度應固定為32像素,為了不改變輸入圖像的縱橫比,寬度為(W×32)/H。其中W,H為裁剪的字符區域的寬度和高度。使用修改后的ResneXt-50作為特征提取網絡。所做修改如下:將ResneXt-50最后三組卷積中的池化層步長由2×2改為2×1。這是因為字符是長條形的,即高度大于寬度,使用2×1的步長池化后得到的特征序列中一個像素點的感受野是長方形的,符合字符瘦高的特性。
編碼器為雙向長短時記憶網絡,具有長期記憶功能,可以同時利用前向和后向的信息。解碼器由加入注意力機制的長短時記憶網絡構成。長短時記憶網絡的長期記憶功能有限,當序列信息特別長時,通過多層后最初的信息會丟失,而注意力機制為特征序列的每一列分配權重,重新計算得到當前時刻的特征,此時的特征具有全文信息,有助于字符識別。
加入注意力機制的長短時記憶網絡解碼過程如圖2所示,在時刻t,由特征序列和長短時記憶網絡在時刻t-1的狀態St-1計算得到在時刻t特征序列的每一列hi的權重α,計算公式為:
et,i=wTtanh(Wst-1+Vhi+b)
(4)
(5)
其中,w,V,W是訓練得到的。通過式(5)得到時刻t輸入的特征向量:
(6)
t時刻的輸出為:(St,ht)=rnn(St-1,(gt,ht-1))。(gt,ht-1)是指將兩個向量拼接在一起。ht用于預測t時刻的字符概率:p(yt)=softmax(Wht+b),W和b是訓練得到的。
最終LSTM的輸出為1×w×c大小的概率矩陣,w為特征圖的寬度,c為字典中字符的個數。在概率矩陣中使用貪心搜索得到最后的字符序列。
處理器:Intel?CoreTMi7-5930K CPU @ 3.50 GHz×12,內存16 G,顯卡TITAN X(Pascal)。
Synth80是人工合成的圖片,可用于文字檢測和識別。利用文本識別數據生成器合成類似于真實數據集的圖片,共十萬張。真實數據集為采集的數顯儀表圖片,訓練集共500張,測試集共50張。
訓練字符區域定位模型:隨機選取synth80中的十萬張圖片,制作成Coco格式的數據集,用于字符區域定位模型訓練,得到預訓練模型。在此模型基礎上用真實數據集進行微調,得到最終的模型。
訓練字符識別模型:使用合成的十萬張圖片進行預訓練,使用真實的數據集進行微調,得到最終的字符識別模型。
由于圖片較大,截取了圖片中檢測以及識別的部分用于展示結果。

圖3 字符區域定位結果對比
FasterR-CNN的部分檢測結果如圖3(a)所示,會出現漏檢,定位不準確現象。改進后的算法CRLNet的部分檢測結果如圖3(b)所示,漏檢現象減少且定位更加準確;表1中字符區域定位網絡CRLNet的準確率達到96%,比Faster R-CNN提高了5個百分點,進一步證明改進后的算法有效減少漏檢現象。由實驗結果發現模糊以及反光的圖片易造成漏檢和定位不準確現象,改進后的算法有效緩解了上述現象,但并不能完全消除。在采集圖片時保證圖片的清晰可以從根源上解決上述現象。

表1 網絡準確率
由表1可知,單純的字符識別網絡CRNet可以達到98%的準確率。將字符區域定位和識別模型集成在一起構成DDICRNet,得到最終的識別準確度為95%。部分識別結果如圖4所示。實驗結果顯示,字符區域定位的準確性直接影響字符識別的效果,在保證定位準確清晰的情況下,基本可以識別正確。在實際應用中,最好的措施是在采集圖片時注意遮擋,避免抖動,盡量保證圖片的清晰,以提高字符區域定位算法的準確性,進而保證識別的準確性。

圖4 字符識別效果圖
提出利用深度學習技術解決數顯儀表字符識別的問題,取得了良好的效果,但由于網絡結構較復雜,圖片尺寸大(1 440×1 080),檢測和識別一張圖片需要0.2秒左右,無法滿足實時性要求,下一步的工作將研究提高網絡的識別速度。