史敦煌,于雅楠,杜 薇,劉 全
(1.天津職業技術師范大學信息技術工程學院,天津 300222;2.青軟創新科技集團股份有限公司,青島 266000)
光學字符識別(optical character recognition,OCR)[1]是對相機采集圖片中所包含文字信息進行提取的一種技術,這種從圖片到文字的轉化方法在生活和工業領域得到了廣泛的應用。隨著經濟全球化的發展和港口物流吞吐量的與日俱增,依靠人工收集集裝箱編號信息的傳統方法,不僅消耗時間和人力資源,而且在人工長時間疲勞操作下很容易導致集裝箱編號檢測不準確,因此目前亟需一種快速且精確的自動識別方法替代人工作業收集。
集裝箱編號通常由0~9共10位阿拉伯數字和26個大小寫英文字母組成,具體分為箱體編號和箱型代碼。箱體編號統一按照ISO6346(1995)標準印制,由所屬人信息、集裝箱注冊碼和箱體校驗位組成。由于集裝箱表面文字多,相機采集到的區域經過連接文本提議網絡(connectionist text proposal network,CTPN)[2]檢測后,生成眾多大小不一的文本框,再將這些文本框送入卷積循環神經網絡(convolutional recurrent neural network,CRNN)[3]提取信息后,產生混雜有用信息的雜亂文字,無法直接通過識別關鍵信息提取集裝箱編號。當前,在圖片文字識別領域雖然有成熟的文本檢測方法,且檢測精度很高,但很難將其應用到港口集裝箱檢測,無法滿足港口智能檢測需求。為此,本文提出一種基于注意力機制(attention)和關鍵區域篩選(filter)的注意力連接文本提議網絡(attention connectionist text proposal network,ACTPN)算法,并將其應用于港口集裝箱檢測任務中,以解決集裝箱在復雜環境中的編號檢測難題。
文本區域檢測分為基于傳統方法的區域檢測和基于深度學習的區域檢測。1999年由Lowe[4]在計算機視覺國際會議上(ICCV)提出尺度不變特征變換(scale-invariant feature transform,SIFT)算法,通過提取并計算不隨尺度、旋轉等因素變化的關鍵點和特征向量檢測圖像的關鍵特征。Bay等[5]在2006年提出加速穩健特征(speeded up robust features,SURF)算法,首次在Hessian矩陣上使用積分,并提出使用降維的特征描述子,該算法較SIFT算法擁有更快的檢測速度。SIFT算法和SURF算法在圖像特征檢測領域可以很好地達到尺度不變性和旋轉不變性,但不具有檢測特征的仿射不變性。Matas等[6]于2002提出最大穩定極值區域(maximally stable extremal regions,MSER)算法,由于該算法可以在各種不同的復雜環境中快速且精準地對文本進行區域檢測,因此在傳統的文本區域檢測中得到了廣泛應用。
MSER算法利用像素值的變化大小對目標和背景進行辨別,像素值小的被認為是背景。在使用MSER算法處理圖片之前,需要將圖片轉換為灰度圖,然后將灰度圖處理成具有0~255間多個閾值的二值化圖片。隨著多個閾值的不斷變化,在這些二值化圖片中存在沒有變化的區域,該區域被稱為最大穩定極值區域。在一幅包含文字的圖片中,當這些二值化圖片在某一個固定閾值附近發生變化時,說明變化的閾值為字體的灰度值。該算法通過對這些灰度值進行判斷,可粗略地計算文本所在區域,進而定位出圖像中文字區域位置。MSER算法的數學定義式為

式中:W(i)為i時刻的變化率;Ri為i時刻的連通區域;Δ為i時刻的微小變化,當W(i)小于給定閾值時,區域Ri被定義為MSER區域。
CTPN是在2016年ECCV會議上提出的一種文字區域檢測方法,結合卷積神經網絡和長短期記憶神經網絡,在復雜的文字環境中可以高效地框出文字區域,該算法主要應對橫向文本的區域檢測。不同于目標檢測Faster R-CNN[7]算法,CTPN采用垂直錨回歸方法,該方法能夠在復雜橫向文本中檢測尺度較小的區域。在實際的檢測任務中,文本檢測的精度受到文字長度大小影響,采用固定的檢測框會導致在大小不一的文字檢測任務中,存在長文本框不住,短文本框較大的現象,使得檢測精度較低。為了避免上述問題,CTPN采用豎直錨和邊框長短比例不一的錨來提供建議框。由于CTPN算法主要針對橫向文字檢查任務,故CTPN采用16個像素點為寬,取11~273個像素點為長。CTPN網絡由VGG-Net[8]、BLSTM[9]、RPN組成。CTPN訓練損失包括3個部分,其損失函數可表示為

式中:λ1、λ2為權重;Ns、Nv、No為不同樣本的個數;為文本區域損失;si為預測Anchor是正樣本的概率;CTPN算法中overlap設置為0.7,即當si預測Anchor的概率≥0.7時,判斷Anchor包含文本區域;si*為ground truth;Lres為縱坐標損失;v={vc,vh}為網絡判別坐標為真實文本坐標為邊緣細化損失,用來提高文本邊緣精度;o為預測文本左右Anchor相對文本的偏移量。該方法在橫向文字歪曲等復雜場景下檢測效果較好,通過檢測文本特征并生成大量小框后,采用長短期記憶神經網絡將檢測的小尺度檢測框進行拼接,最終生成包含文本信息的檢測框。
文本識別是將圖片包含的文字信息進行提取的技術,在各種不同的OCR應用場景中,研究人員一般根據實際應用場景將OCR分為識別多種場景的通用OCR和識別特定場景的專用OCR,證件識別[10]、車牌識別[11]和圖片文字翻譯[12]就是專用OCR的典型實例。由于在不同場景、不固定的圖片中存在文字布局多樣、文字字體多樣等問題,專用OCR技術很難得到應用,這增加了檢測難度。因此,應對這種多變場景下,文本檢測任務的通用OCR技術具有巨大的潛在價值,可以在更復雜的場景中克服專用OCR不可避免的問題。根據檢測內容及信息的復雜度,OCR檢測場景被定義為單一場景和多樣性場景。在單一場景中,場景信息不復雜,檢測任務不受隨機因素的影響;而在多樣場景中,場景信息受到多樣且隨機因素的影響,如低飽和度、低色彩差、高亮度,飽和度不均、字體多樣性和殘缺遮擋,導致OCR文本識別難度增加。因此,復雜環境下的文本檢測任務是場景文字識別技術(scene text recognition,STR)[13]需要解決的難題。
傳統文本識別方法可以在單一場景中進行文本識別,如惠普實驗室開發的Tesseract[14]開源工具,基于深度學習的文本識別方法可以在多樣場景中進行文本識別,相比于傳統的識別方式擁有較強的魯棒性。CRNN技術于2015年提出,該技術由卷積神經網絡、循環神經網絡(recurrent neural network,RNN)和聯結時域分類(connectionist temporal classification,CTC)3個網絡組成[15-16]。將圖片調整到相同的向量高度和維度大小,送入去除全連接層的CNN網絡深度處理后,得到具有時序性的特征表達;將這些特征表達送入具有記憶功能的RNN網絡進行文字序列提取,由于RNN網絡具有上下文信息獲取能力,對長句進行分析后生成任意長度的預測序列;將預測序列送入CTC進行文本拼接。
CTC是一種可以根據不同輸入序列進行計算并輸出眾多條件概率序列的算法,在CTC中提出“空白”的設計,不僅解決了輸入與輸出沒有嚴格對齊的問題,同時解決了輸出重復導致空白的問題。CRNN算法基于CTC進行文字識別,其算法損失公式為式中:yi為概率序列;Ii為圖片數據;li為標簽值。
針對復雜環境文字特征提取困難問題,本研究提出一種基于注意力機制(Attention)和關鍵區域篩選(Filter)的ACTPN算法。該算法在VGG特征提取階段加入注意力機制模塊,有效提高算法在復雜環境中提取關鍵文字信息的能力,并在全連接層(FC)后加入區域篩選模塊,進一步排除冗余候選框,提高算法在集裝箱編號區域的定位精度。ACTPN算法總體框架如圖1所示。

圖1 ACTPN算法
VGG算法利用卷積神經網絡提取圖像的高維特征信息[17],但由于在卷積處理階段利用固定大小的卷積核無法聯系多通道特征,導致通道信息丟失。為此,本文加入改進的Attention模塊[18]對VGG算法提取的圖像特征進行多感受野空間融合和通道信息整合,增強網絡對高維特征的提取能力。改進的注意力機制通過結合不同大小的空洞卷積,將不同特征層相加,擴大了特征提取的感受野。在特征相加后加入通道注意力機制,對通道信息進行整合,與原始注意力機制相比,本文提出的注意力機制采用膨脹率為1和3的空洞卷積和不同層次的特征融合。改進后的網路結構更復雜,注意力范圍更廣,適用于集裝箱檢測復雜環境的特征提取。具體流程為:提取VGG算法的特征圖,可以用F表示

推導過程中省略BN和ReLU常規操作。
圖像經過VGG算法后,對特征圖分別進行空洞卷積,空洞卷積膨脹率分別設置為1和3,對應卷積核大小為3×3和7×7,得到特征F′

結合不同感受野下的特征圖送入空間注意力進行空間特征整合。得到特征F′

對F′′全局平均池化,會產生(C,H,W)大小的特征圖,C為通道數,H、W分別為長和寬。具體操作是對每一張特征圖進行全局平均池化,產生(C,1,1)大小的矩陣。特征描述z1~c為

特征描述z1~c經過大小為(c/r,1,1)的卷積核進行卷積,實現c/r通道的全連接層,得到ufc1

同理,ufc1經過卷積,得到U

將原特征圖與特征描述U相乘得到最終輸出特征F

文本框模型如圖2所示。

圖2 文本框建模
CTPN算法可提取集裝箱號位置,但仍會被集裝箱號以外的其他文字干擾,導致有用信息無法被準確提取。由于干擾文字與集裝箱號具有相同特征,從文本特征的角度很難精確篩選。針對此問題,本文提出在CTPN提取信息框后,加入過濾器進一步剔除干擾信息,準確定位集裝箱編號位置,減少冗余框,提高檢測精度和檢測速度。圖片經過CTPN全連接層處理后,計算檢測框的位置信息。將圖片的左上角定位原點,根據集裝箱號的位置特點及計算出的文本框距離排除冗余框。
由方框的坐標信息計算每個方框4個頂點到(vx,vy)的平方和,根據平方和的最小值確定方框2的位置。2號方框4個頂點坐標確定后,由于集裝箱編號框密集,按照方框中心點計算距離會導致3號框和1號框位置信息出錯,因此計算(x21,y21)到(xi2,yi2)的距離,得到1號方框4個頂點坐標。同時,計算(x24,y24)到(xi2,yi2)的距離,得到3號方框的4個頂點坐標,其中i取除2外全部方框的編號。距離計算式為

上述L1和L3為對應方框的最小平方距離,根據最小值定位方框1與方框3的位置,并按順序將3個框送入CRNN算法進行文字識別。
實驗數據集采用青軟創新科技集團股份有限公司提供的港口集裝箱數據集,數據集圖片在角度、光照、清晰度上均不同,且集裝箱編號具有多種印刷字體。實驗環境在Ubuntu16.04系統上搭建,選用PyTorch 1.0、TensorFlow 1.13、CUDA 8.0、PyCharm Community Edition 2020.3.2×64、OpenCV 2.0、NumPy 1.13,CPU型號為Intel(R)Core(TM)i5-9300H CPU@2.40 GHz,GPU型號為NVIDIAGeForce GTX2080Ti。
光學文本檢測主要分為區域檢測和文字檢測2個關鍵步驟。前者通過對輸入圖片進行文字區域定位,從而計算文字所在的區域坐標,而后者提取區域內的文字信息,并轉化為文本格式進行保存。實際的集裝箱編號檢測與普通文本檢測不同,該檢測受到被檢測集裝箱尺寸大小、箱體顏色和所處環境等因素干擾,相比普通文本檢測更加復雜,需要解決由于集裝箱表面文字雜亂而導致的提取困難等實際問題。
實驗分為3部分:①對區域檢測和文字檢測任務中常用的傳統方法和深度學習方法進行對比分析,如在區域檢測階段對比MSER算法和CTPN算法的檢測效果,在文字檢測階段對比Tesseract和CRNN算法的檢測精度。②在集裝箱數據集上對比分析本文提出的ACTPN算法與其他算法的各項檢測指標。③對CTPN+CRNN和ACTPN+CRNN算法進行遷移學習訓練,對比2種算法的文本識別正確率。
3.3.1 傳統方法與深度學習方法對比
考慮到實際應用環境,選取不同角度、不同光照下拍攝的集裝箱圖片用于算法對比實驗。MSER算法和CTPN算法識別結果如圖3所示。

圖3 MSER檢測效果和CTPN檢測效果
圖3(a)和(b)中選取的圖片環境光線較暗,MSER算法沒有檢測到編號中個別字符;圖3(c)和(d)為仰視角度,MSER算法和CTPN算法的編號檢測效果較好;圖3(e)和(f)為暗光線下傾斜角度,MSER算法檢測效果差,編號“CGMU”未能被檢測,而CTPN算法可以準確框出編號;圖3(g)和(h)選取半開門且左側存在文字干擾的圖片,MSER算法檢測框中包含左側干擾文字,而CTPN算法可以排除左側文字干擾,并準確框出編號內容。綜上所述,CTPN算法在不同光照、不同角度和不同字體大小的情況下表現較好,提取文本精確度高,具有高魯棒性,而MSER算法在環境較差的條件中不能準確識別文字區域。
在對比分析Tesseract與CRNN算法中,分別對1 000個數字與字母進行識別。
在相同數據集下Tesseract算法正確率僅為50.37%,而CRNN算法檢測正確率高達94.82%(正確率=識別正確的個數/測試集數目)。
3.3.2 ACTPN算法與其他算法對比
在集裝箱數據集上對本文提出的ACTPN算法進行驗證。其中,集裝箱數據集包括1 000張訓練集和500張測試集。在算法訓練階段,沒有采用大數據集預訓練再微調權重的方法,而是采用從頭訓練的方式,排除大數據預訓練對算法結果的影響。分別對比CTPN、ACTPN、CTPN+CBAM、CTPN+Channel-Attention、CTPN+Spatial-Attention這5種算法的召回率(R)、準確度(P)和F值(F-Measure)。其中,Channel-Attention為通道注意力機制,Spatial-Attention為空間注意力機制,CBAM為結合通道和空間卷積的注意力機制。CTPN+CBAM表示將Attention層更換為CBAM,同理CTPN+Channel-Attention、CTPN+Spatial-Attention算法的Attention層更換為Channel-Attention和Spatial-Attention。集裝箱數據集實驗結果如表1所示。

表1 集裝箱數據集實驗結果 %
由表1可知,ACTPN算法對比CTPN算法在召回率上提高6%,準確度提高16.89%,F值提高11.48%。ACTPN對比CTPN+CBAM、CTPN+Channel-Attention、CTPN+Spatial-Attention算法,R、P、F值均有顯著提高。
CTPN算法與ACTPN算法的特征提取效果如圖4所示。從圖4可以看出,ACTPN算法在VGG特征提取后加入Attention模塊可以有效抑制環境干擾,準確定位文本區域。CTPN算法與ACTPN算法在集裝箱號區域檢測上的對比結果如圖5所示。由圖5可以看出,在編號檢測中ACTPN算法比CTPN算法更加精準。

圖4 CTPN與ACTPN特征提取結果

圖5 CTPN結果和ACTPN結果對比
3.3.3 文本識別
分別對CTPN算法、ACTPN算法和CRNN算法進行訓練,在訓練集中對CTPN算法和ACTPN算法進行遷移學習訓練4 000次。其中,學習率設置為0.000 2,批大小為32。CRNN算法遷移學習訓練20 000次,學習率設置為0.000 1,批大小為8。對比2種算法在集裝箱數據集上的檢測效果,實驗數據表明:檢測正確率由12.85%提高到88.83%;在檢測時間上,ACTPN+CRNN算法將耗時由單張0.60 s降低到單張0.38 s。實驗結果如表2所示。

表2 算法正確率與單張圖片耗時
在訓練CRNN算法階段,訓練數據集選取0~1 000不同大小的數據,在實驗中發現當訓練集在900張左右時,算法的檢測精度不會隨著數據集的增加而提高。CRNN算法訓練樣本與集裝箱識別正確率關系曲線如圖6所示,ACTPN算法識別效果如圖7所示。

圖6 訓練樣本與識別正確率關系曲線

圖7 本文方法識別結果
從圖7的識別結果可以看出,該方法能夠很好地去除冗余文本框,提取有用的集裝箱編號信息。
本文在對比傳統文本檢測和基于深度學習文本檢測的光學字符識別應用效果的基礎上,提出一種基于改進注意力機制和關鍵區域的集裝箱編號檢測方法,并將此方法應用到集裝箱編號檢測上,解決了人工記錄存在的弊端,提高集裝箱檢測效率。該方法能夠有效減少冗余候選框數量,在對ACTPN算法進行遷移學習訓練后,可大幅度提高算法檢測精度和檢測速度。同時,ACTPN算法能夠在復雜環境下準確定位集裝箱編號位置,有效地解決了集裝箱編號獲取困難等問題,使其能應對各種復雜環境下的集裝箱檢測任務。