涂 錚 萬志偉
1 武漢港迪智能技術有限公司 2 武漢理工大學自動化學院
集裝箱箱面上的重量字符是集裝箱的重要信息,自動提取并識別該信息可以有效提升集裝箱碼頭作業的自動化的水平。當前集裝箱面文本識別中較成熟的為箱號識別。王炎等提出了一種基于數學形態學的箱號快速定位算法,該方法在獲取少量的箱號先驗知識后,能在單一場景下以較快的速度完成定位任務[1];沈寒蕾等使用最大穩定極值區域(Maximally Stable Extremal Regions,MSER)方法對集裝箱號進行定位,能夠在單一場景下完成定位任務[2];黃深廣等提出了一種基于字符邊緣和顏色等先驗信息的多特征箱號定位算法,通過多種定位方式實現多個場景下的高精度箱號區域定位,但未達到實時性的要求[3]。在字符識別領域,陳永煌提出了一種模板匹配和特征匹配互補方法來進行箱號識別,準確率高低很大程度上取決于字符分割的效果[4];羅輝武等提出基于結構特征和灰度特征的字符識別方法,結構的丟失容易引起識別的錯誤,難以適應箱號磨損等特殊情況[5];吳曉軍等提出基于邊緣幾何特征的高性能模板匹配算法,邊緣特征不具有魯棒性,難以實際應用[6]。
隨著視覺識別算法的研究深入,基于深度學習的文本識別方法在箱號定位方面應用增多。崔循等提出了1種基于改進Faster R-CNN的集裝箱箱號定位算法,完成了較為精確的箱號區域定位,但過程存在大量冗余的計算,在復雜環境下無法有效地達到實時性的要求[7];Verma等提出了一種空間變換網絡(Spatial Transformer Network,STN)結合連通圖文本檢測器的箱號識別方法,識別率較高,但無法適應一些惡劣的工業環境[8];張紹明等通過目標檢測算法對集裝箱前門圖像進行處理,獲取箱面上所有的文字,配合級聯決策樹提取箱號區域,但級聯決策樹并不適用于集裝箱側門和后門圖像[9]。箱號識別方面,陳力暢嘗試在字符分割后采用卷積神經網絡進行字符識別,具有較高的識別準確率,但需要保證前期分割的正確率[10];Wu等針對集裝箱箱號字符排列緊湊難以分割的情況,通過對灰度圖像使用水平高通濾波器定位箱號區域,隨后經過連通域分析分離出單字符塊和多字符塊,分別采用模板匹配法和隱馬爾可夫模型進行識別,但人工設計特征過多,適應性不強[11];Yoon等提出了同時采集多個視圖的集裝箱圖像來進行箱號識別,結合一種特征級和決策級融合的方法解決了字符丟失和字符粘連的問題,但是其單視圖箱號識別率并不高,并且算法的整體計算量較大[12]。
然而,現有箱號識別技術難以直接應用于重量字符的識別,因為重量字符相較于箱號信息,存在3個不同的特性:背景復雜,有大量的文字干擾;由于實際拍攝角度受限,存在多種拍攝角度的圖像,需要進行特殊處理;一般的識別系統不能獲得所需的文本結果,需要特殊的后處理才能得到最終所需的信息。為此提出了改進的DBNet(Differentiable Binarization Net,可微分二值化網絡)來完成重量字符檢測任務[13],改進的SAR(Show Attend Read,注意力識別方法)來完成重量字符識別任務[14],通過專門設計的后處理方法將識別結果合并,得到最終所需的集裝箱重量、容積等信息。
為對堆場作業區集裝箱后箱面的重量容積等字符進行識別,集裝箱后箱面的仰拍和俯拍圖像見圖1。

圖1 集裝箱后箱面圖像
其中可識別文字信息由標記框給出,以圖1(a)為例,需要識別的字段為:總重(GROSS WT)、皮重(TARE WT)、負荷量(PAYLOAD)以及容積(CUBE)。經過樣本分析后,總結樣本特性為:
(1)數據圖像主要有2大類型,分別為俯拍視角和仰拍視角。
(2)重量會使用2種不同的單位進行描述,2個不同單位的數據排布在1行或2行。
(3)容積信息不一定存在,如圖1(b)所示。
(4)各部分信息之間存在關系,例如在單位一致的前提下,總重等于皮重加上負荷量。
通過分析發現,堆場作業區集裝箱后箱面的文字信息眾多,存在大量非感興趣區域的文字干擾,拍攝角度存在多樣性。為了得到最終重量信息,需要設計一個后處理的模塊。根據以上條件,設計了集裝箱重量字符實時視覺識別方法(見圖2)。

圖2 集裝箱重量字符實時視覺識別方法流程
其中,輕量化的文本檢測器選用改進的DBNet,實現集裝箱重量和容積字符的檢測。DBNet采用多任務學習形式,使得其能夠在保證精度的前提下仍能夠保證速度,因其直接使用一個分數圖進行預測和簡單的后處理。
針對輕量化文本識別網絡,經典的文本識別網絡如Shi等提出的用于單行文本的識別網絡,雖然速度方面表現非常優秀,但精度不夠[15];調研了Yu等提出的高精度網絡,給高精度文本識別任務提供了解決方案,但由于需要識別的重量字符圖像多,使用該網絡帶來大量資源負擔[16]。最終選定了改進的帶有二維注意力的SAR網絡來實現集裝箱重量字符識別。
在完成對圖像的文本檢測和識別任務之后,使用聚類后處理模塊將表示同一信息的2個不同單位的識別結果合并,并通過結果是否相同、總重與皮重、負荷量等先驗知識進行判別。如果信息不統一或發現明顯誤差,則表示識別結果不合理,此時需要進行人工操作,否則認定是合理的重量識別結果。
Ding等設計的多個卷積多路計算網絡結構,復雜的結構,可以增加訓練時網絡的復雜度,從而提升網絡的表達能力,獲取更好性能,而在網絡推理時,將網絡結構中多路的多個卷積算子進行融合,達到同等計算結果下輕量化網絡的目的,這個過程稱為網絡的結構重參數[18]。將結構重參數方法引入輕量化DBNet網絡,能夠在不增加網絡參數和計算復雜度的情況下,提升精度。網絡在訓練后,由于網絡中存在許多冗余連接,利用通道剪枝移除這些冗余連接,使其不再參與到網絡的計算中,可以起到輕量化網絡的作用。最后,訓練數據的擴充是可以在無損速度的前提下提升精度的策略,通過研究數據進行特定的數據擴充,可以明顯提升模型的魯棒性。
2.2.1 模型結構重參數
該方法所使用的ResNet(Deep Residual Learning for Image Recognition,結構重參數的殘差連接網絡)主要由圖3所示的模塊結構圖組成[17]。

圖3 結構重參數模塊
其中圖3(a)為模型訓練階段的卷積模塊,在傳統的卷積模塊中加入了identity的殘差結構和1×1 conv的殘差結構,而在模型推理階段又通過算子融合策略將所有的網絡層都轉換為3×3 conv,這里可以使得整個網絡均是由3×3 conv和Relu堆疊而成,易于模型的推理和加速。在算子融合階段,分為以下3個步驟實現。
(1)通過公式(1)將殘差塊中的卷積層和BN層進行融合。
(1)
式中,Wi為融合前卷積的權重;W′i為融合后卷積的權重;γi和βi分別為BN層的尺度因子和偏移因子;σi和μi為BN層統計的方差和均值;bi為融合前卷積的偏置;b′i為融合后卷積的偏置。
(2)融合后的卷積層轉換為3×3 conv。由于整個殘差塊中可能包含1×1 conv分支和identity兩種分支,對于1×1 conv分支而言,整個轉換過程就是利用3×3的卷積核替換1×1的卷積核,即將1×1卷積核中的數值移動到3×3卷積核的中心點即可;對于identity分支而言,該分支并沒有改變輸入的特征映射的數值,通過設置一個3×3的通道分離卷積核,保持了原來的數值。
(3)合并殘差分支中的3×3 conv。即將所有分支的權重W和偏置B疊加起來,從而獲得一個融合之后的3×3 conv網絡層(見圖3(b))。
2.2.2 通道剪枝
Liu等使用通道剪枝的方法對網絡進行輕量化,通道剪枝是通過對卷積的通道數進行壓縮來達到減少參數量和計算量的目的[19]。具體來說,對BN中γ參數加入L1約束來產生稀疏通道,指導去除對輸出影響小的通道,完成幾乎無損的剪枝效果。原理在于γ參數值越小,說明這一個通道的所占輸出的比例小,因此可以去除。但是如果γ的多個通道在同一個BN層中值很接近時,刪除就會帶來網絡精度的很大影響。因此使用L1范數來稀疏化γ值。加入L1約束后的網絡訓練過程中的損失為:
Loss′=∑Loss(f(x,w),y)+λ∑g(γ)
(2)
式中,g(γ)代表對γ使用L1范數;Loss(f(x,w),y)代表原網絡的輸出f(x,w)和標簽y之間的損失;Loss′代表改動后的損失。
為了將通道剪枝應用至ResNet18基礎網絡上,設計了圖4所示的2種結構。其中圖4(a)和圖4(b)分別用于替代普通的需要剪枝的卷積基礎模塊和帶shortcut的瓶頸層形式。其中slim conv代表后續剪枝操作的卷積算子。

圖4 通道剪枝模塊
可以發現設計的瓶頸層與原始ResNet的瓶頸層不同,如此設計的原因在于,在去除當前卷積的輸出濾波器數目時,需要同時去除后續連接的下一個卷積的輸入濾波器數目。為了能夠成功完成通道剪枝,匹配各處的濾波器通道數,在設計通道剪枝模塊時,采用的均是slim conv后接一個普通conv的方式。
2.2.3 針對性數據增強方法
合適的數據增強方法由于僅在訓練時使用,因此可以在無損模型速度和參數量的前提下提升模型的精度。針對集裝箱重量字符檢測提出了以下幾種數據增強方法。
(1)為了模擬光照以及拍攝條件的變化,添加了對比度、亮度、銳度、高斯模糊等數據增強。
(2)為了模擬拍攝角度的變化,添加了左右翻轉、插值、仿射變換、縮放等數據增強。
(3)為了模擬多種分辨率的測試圖像,添加了多分辨率訓練策略,設置為512、768、1 024。
2.3.1 輕量化特征提取網絡
輕量化網絡設計中,使用更緊湊的特征提取網絡結構可以有效的降低網絡復雜度,減小網絡計算量和參數量,從而達到輕量化網絡的目的。
MobilenetV3[20]結合了MobilenetV1和MobilenetV2中設計的經驗,利用深度可分離卷積搭配1×1的點卷積來降低網絡的計算量,同時保持通道信息之間的交互,有效降低了網絡的復雜度,最終利用神經網絡搜索技術和倒殘差的瓶頸層結構找到最佳的神經網絡架構。在本項目使用的輕量化識別網絡SAR中,使用了MobileNetV3進行網絡的特征提取,同時在RNN部分,使用了門結構更少的GRU結構代替LSTM結構,以減少網絡的計算量。
2.3.2 針對性數據增強方法
集裝箱重量字符在拍攝時普遍存在傾斜和畸變,采用隨機扭曲,隨機仿射變化等方法進行數據增強來模擬拍攝角度變化帶來的影響。
集裝箱重量字符在拍攝時,可能存在移動導致的模糊情況,因此在數據增強中加入了隨機運動模糊。
首先對需要識別的重量字符進行單位以及名稱的統計,為簡化分類,字母大小寫不區分,分類如下:
(1)總重:MAX GROSS、GROSS WT、MGW。
(2)負荷:PAYLOAD。
(3)皮重:TARE WT、TARE。
(4)容積:CUBE。
其中,總重、負荷以及皮重的單位相同,包含kgs、lbs、lb、kg,其中1 kg=2.20462262185 lb。容積的單位為m3以及ft3,其中1 m3=35.341 ft3。僅僅得到單獨的識別結果無法進行應用。因此,通過總結和分析數據,提出了中位線延展合并方法,用于得到最終結果,并通過先驗知識糾錯來保證方法的有效性。
2.4.1 中位線延展合并
根據2類不同重量字符分布來進行合并。圖5(a)和圖5(b)分別代表同類型數據是2行和1行分布情況。根據這個數據特性,使用中位線延展合并方法,首先獲取屬性關鍵字,如MAX GROSS等,然后根據識別框的4個點坐標,獲取中位線信息,并將其向右側延展,聚類離其歐式距離最短的2個識別框。將結果進行合并,得到所需屬性的值。

圖5 中位線延展合并示意圖
2.4.2 先驗知識糾錯
先驗知識是通過數據總結獲取的,采用以下4點先驗知識進行重量信息識別結果的糾錯,在錯誤時交由人工判斷處理。
(1)不同單位的同一屬性換算結果應當相同。
(2)總重信息應當等于負荷與皮重的和。
(3)皮重信息應當小于負荷量。
(4)單位應當匹配屬性,例如重量的單位不應為m3。
對輕量化文本檢測網絡、輕量化文本識別網絡、整體方法進行測試及分析比較。
3.1.1 數據集及評價指標
測試中使用的數據集包含5 641張不同分辨率下的圖像,其中仰視拍攝的圖像3 021張,俯視拍攝的圖像2 620張,通過將所有圖像進行隨機9∶1比例的劃分,得到5 077張訓練數據集和564張測試數據集。
評價指標包含精確率、召回率、F1分數以及FPS(Frames Per Second,每秒識別幀數)指標。各個算法的基礎骨干網絡采用ResNet18,推理圖像的分辨率設置為長邊736,閾值設置為0.3,得到一個預測為正確的TP(True Positve,正類)設置為預測框,預測框與GT(Ground Truth,真值)的交并比達到0.5即可。
3.1.2 測試結果
測試結果見表1,對比各算法的性能可以得出以下結論。

表1 各檢測算法檢測性能對比表
(1)重參數可以有效提升模型性能,在重參數融合BN和支路卷積后提升模型速度19.2%,F1值提升4.5。
(2)通道剪枝通過對一個大網絡進行剪枝可以有保留模型性能,模型速度提升17%,F1值提升2.5。
(3)重參數+通道剪枝比僅通道剪枝性能更好,模型速度提升27%,性能提升2.8。
(4)加入數據增強后,模型性能得到了無損推理速度的提升。相比較基線DBNet F1值提升了5.8,速度提升了27%。
總結以上4點可以得知,重參數+通道剪枝+數據增強,達到了最高的精度和推理速度,證實了數據增強和訓練策略的有效性。
3.2.1 數據集及評價指標
測試數據集是從上述重量字符數據集上進行裁剪獲取的,總共包含81 920張數據,同樣根據9∶1的比例劃分得到73 728張訓練數據和8 192張測試數據。
設置訓練圖像分辨率為32×128,評價指標包含精度和FPS指標。推理時采用貪心解碼方法,即選中置信度最高的結果進行輸出,得到一個TP需要滿足識別文本結果與GT的結果完全一致。
3.2.2 測試結果
測試結果見表2。其中,輕量化特征提取網絡+數據增強,是在原始SAR算法上更換了輕量化特征提取網絡并加上了數據增強的結果。通過實驗對比,可以發現兩者之間的精度差距極小,僅有0.4,FPS提升了42%,滿足了設計要求,達到了精度和速度的均衡。

表2 各模型識別性能對比表
對整體識別流程進行實驗,該部分將會結合后處理模塊。
3.3.1 數據集及評價指標
測試數據集仍然是重量字符數據集,包含5 641張不同分辨率下的圖像,其中仰視拍攝的圖像3 021張,俯視拍攝的圖像2 620張,此時所有數據作為測試數據。
評價指標包含精度和FPS指標。當所有重量字符信息正確時,認定為一次識別成功的TP。
3.3.2 測試結果
測試結果見表3。仰視拍攝的圖像的重量信息可以有效的進行識別并獲取,準確率達到97.6%,每秒可以識別20張圖像。俯視拍攝的圖像由于存在遮擋等問題,模型表現不如仰視拍攝的圖像。尤其當拍攝俯角過大時,更加難以識別。

表3 重量信息識別實驗結果
通過將輕量化改進的DBNet、SAR以及后處理過程組合,提出集裝箱重量字符識別方法,完成了集裝箱重量、容積等信息的獲取和識別。其研究重點是對該方法的各個模塊進行輕量化改進,并保證或提升了各個模塊對于重量字符對象的識別精度等性能指標。該方法對于提升集裝箱碼頭作業的自動化程度有一定支撐作用。