翟婭婭, 朱磊, 張博
(西安工程大學電子信息學院, 西安 710048)
近年來,隨著水表計量技術、計算機視覺技術的發展,遠程抄表系統逐漸代替人工抄表,減輕人力勞動的同時避免了假抄及誤抄的問題。水表讀數準確識別是遠程自動抄表系統的核心,其與所處的環境密切相關,環境不同,識別方法也不盡相同[1]。傳統水表讀數識別方法先通過圖像預處理檢測字符的目標區域,接著對字符進行分割,并采用某種字符識別方法對每個字符逐一進行識別,該類方法適用于場景較為單一且水表圖片清晰的情況,對于復雜場景下拍攝的水表讀數難以進行準確的識別。因此,研究能夠對不同環境下拍攝的水表讀數均能精確識別具有重要的現實意義和理論價值。
當前水表讀數自動識別的主流方法,大致可分為傳統方法和深度學習方法兩大類。徐平等[2]利用改進的Hausdorff距離模板匹配方法進行水表讀數識別;高菊等[3]根據水表字符特征,提出了一種有效的水表數字二次識別算法;陳英等[4]將預處理后的水表字符分割成單個字符,采用粗網格和穿越次數作為特征,通過特征向量的歐氏距離進行水表字符識別。上述方法對普通場景水表圖像的字符識別精度較高,但對于受霧化、抖動、污漬等干擾的復雜場景水表圖像字符識別精度欠佳,同時對兩個連續數字各占一部分的“半字”識別能力弱。
近年來,深度學習方法被用于水表讀數識別應用中。 Yang等[5]提出用全卷積序列識別網絡模型進行水表讀數識別,并提出一種增強損失函數來解決水表圖像“半字”的識別問題。康鑫等[6]提出先使用旋轉區域卷積神經檢測水表框,然后對水表框采用基于注意力機制的文本識別算法預測水表字符。車牌識別與水表讀數識別是比較接近的應用,二者在技術上有不少可以相互借鑒之處。孫陽等[7]在分割出來的單個字符中引入卷積神經網絡來改善低清晰度下的車牌識別。李祥鵬等[8]提出用快速區域卷積神經網絡(faster region convolutional neural networks,Faster R-CNN)算法進行車牌定位,用K-means++算法選擇最佳車牌區域尺寸,用增強的AlexNet網絡模型識別車牌讀數。深度學習方法有效提高字符識別準確率,上述先分割字符再單個字符識別的方法,識別過程相對煩瑣;而采用端到端的網絡模型方法,雖解決了識別過程煩瑣的問題,但存在參數量大、難以部署于低算力嵌入式設備的問題。
為解決現有水表讀數識別方法存在識別率低及模型參數量大等問題,現提出一種參數量較小、檢測精度較高的改進YOLOv4網絡,用于實現水表字符的檢測;根據網絡模型輸出的邊框信息,利用字符邊框定位的水表讀數提取方法,來實現水表讀數特別是“半字”的識別問題。
YOLOv4是著名的YOLO[9-12]目標檢測網絡進一步優化平衡目標檢測速度和精度的改進版本,主要由特征提取的主干網絡、特征融合的頸部網絡及進行分類回歸的預測頭三部分構成。
YOLOv4網絡的最前端,是對輸入數據進行馬賽克數據增強、交叉小批量標準化以及自對抗訓練的預處理結構。緊鄰預處理結構的主干網絡,是由YOLOv3的Darknet網絡與交叉階段部分連接網絡(cross stage partial network, CSPNet)[13]聯合構建的CSPDarknet特征提取網絡,由于在特征圖中融合了梯度信息,因此不僅提高了模型的學習能力,降低了計算復雜度,而且改善了網絡的識別效果。主干網絡之后的頸部網絡,借鑒了路徑聚合網絡(path aggregation network, PAN)的思想[14],在原有特征金字塔(feature pyramid networks, FPN)基礎上,引入空間金字塔池化模塊[15],通過最大池化將輸入特征圖轉變為不同尺度的特征圖并將其與原特征圖進行拼接的方式,增大了主干特征的接受范圍,顯著的分離了上下文特征;另外,頸部網絡將自頂向下傳達強語義特征的FPN與從底向上傳達強定位特征的PAN結合,從不同的主干層對不同的檢測層進行參數聚合,有效改善了深層網絡丟失淺層特征信息的問題。頸部網絡之后的預測頭改進了YOLOv3網絡的損失函數和非極大值抑制(non-maximum suppression, NMS),其中,采用完全交并比損失來綜合檢測目標框重疊面積,使得預測框的回歸速度與精度均達到最優,同時NMS算法采用距離交并比損失(distance-IoU loss, DIoU-NMS)來綜合檢測重合邊界框的交并比(intersection over union, IoU)和距離信息,從而有效提升了重疊目標的檢測性能。
為了不降低水表字符檢測精度,有效降低網絡模型參數量,提出了一種如圖1所示的改進YOLOv4網絡。該網絡利用由深度可分離卷積(簡稱為D)、批標準化(簡稱為B)、Relu6激活函數(簡稱為R)聯合構成的DBR模塊來改良標準卷積;構建了提升主干網絡性能的改進逆殘差組件(improved inverse residual component, IIRC),在預測輸出頭引入了加權平均非極大值抑制模塊(weighted average-NMS, Wa-NMS),提升“半字”檢測性能。
2.1.1 YOLOv4網絡卷積的改進
網絡模型中卷積操作主要用于提取更多的圖像特征,因此參與網絡模型計算的參數量大多比較龐大,而水表讀數特征相對簡單,用標準卷積會使得特征存在較大冗余,導致網絡模型難以輕量化。為了有效減少YOLOv4主干網絡模型的參數量,借鑒適用于嵌入式移動設備的輕量模型Mobilenetv1[16],將標準卷積替換為深度可分離卷積,如圖2所示。

圖1 改進的YOLOv4網絡結構Fig.1 Improved YOLOv4 network structure

圖2 標準卷積與深度可分離卷積Fig.2 Standard convolution and depth separable convolution
圖2(a)中傳統標準卷積是將各通道的輸入特征圖與相應的卷積核卷積并相乘得到輸出特征。圖中Dx和Dy分別為輸入數據的長度和寬度,標準卷積操作的計算量X1為

(1)
式(1)中:M和N分別為輸入和輸出數據通道數;Dk為卷積核的尺寸;Dw和Dh分別為輸出數據的長度和寬度。
圖2(b)中將標準卷積操作分為一個3×3的深度卷積(depthwise convolution, DC)和一個1×1的逐點卷積(pointwise convolution, PC)兩部分,以形成深度可分離卷積,其卷積操作計算量X2為

(2)
由式(1)和式(2)可得出標準卷積與深度可分離卷積之間的計算量比值為
(3)
由式(3)可知,使用深度可分離卷積,網絡模型的參數量會明顯減少。因此,如圖1所示,在改進YOLOv4網絡中,利用深度可分離卷積、批歸一化及Relu6激活函數共同構成DBR模塊,并用來代替卷積、批標準化及Leaky Relu函數組成的CBL模塊。
2.1.2 YOLOv4主干網絡的改進
為了保持網絡模型的檢測精度,并進一步降低模型的參數量,改進YOLOv4借鑒Sandler等[17]提出的Mobilenetv2瓶頸結構改進YOLOv4的CSPDarknet主干網絡。Mobilenetv2瓶頸結構中的逆殘差組件如圖3(a)所示,首先用1×1卷積提升通道數,再用3×3的DC進行特征提取,最后用1×1的PC降低維度。該逆殘差組件大為降低了參數量,但提取特征過少,從而影響檢測精度。為此,通過在原來逆殘差組件3×3的DC后引入SE注意力機制模塊[18],來構建如圖3(b)所示的改進逆殘差組件IIRC。IIRC主要在原有逆殘差組件基礎上,衍生出壓縮和激發兩個步驟,壓縮步驟在特征圖上執行全局平均池化,得到當前特征圖的全局壓縮特征量,而激發步驟則通過兩層全連接的主干結構得到特征圖中每個通道的權值,并將加權后的特征圖作為下一層網絡的輸入。引入SE注意力機制的IIRC,能對不同通道提取更多細節特征,降低參數量的同時保持較高檢測精度。

圖3 改進的YOLOv4主干網絡Fig.3 Improved YOLOv4 backbone network
2.1.3 YOLOv4預測輸出頭的改進
YOLOv4網絡直接用于水表讀數檢測,其DIoU-NMS會選中置信度最高的邊界框[19],因此其他邊界框在后續的比較中,會因為與置信度最大框的重疊面積過大而被刪除,從而增大了錯檢與漏檢的概率。另外,傳統水表時常出現兩個字符上下并列且各占一部分的“半字”情況,進而導致漏檢或錯檢概率進一步增大。為此,改進YOLOv4網絡在預測輸出頭部分引入了Wa-NMS。引入Wa-NMS后,一個目標被檢測出來的所有邊框將保留大于非極大值抑制閾值的預測框,對置信度最高的預測框以及交并比大于閾值的預測框進行坐標加權平均,從而獲得最終輸出的預測框。Wa-NMS的實現用公式描述為
(4)
Wi=CiIoU(Bi,bmax)
(5)

(6)
式中:DetectionResult為預測框;GroundTruth為人工標記框;n為預測框的數量;i為數字變量;BOX為邊界框;加權因子Wi等于第i個置信度Ci與第i個邊界框Bi的交并比和具有最大置信度邊界框IOU(Bi,bmax)的乘積。
采用Wa-NMS通過多框共同決定一框的策略,能有效降低水表讀數中“半字”檢測存在的漏檢和錯檢問題,提升水表讀數識別精度。
水表讀數識別方法利用改進YOLOv4網絡檢測出水表讀數字符后,將采用基于字符邊框定位的方法來提取水表讀數的具體數值。
改進YOLOv4網絡通過3個不同的尺度對水表字符進行預測,預測信息包括:矩形框boxes的信息[Tx,Ty,Tw,Th]、檢測框置信度score及框類別標簽ClassIDs,其中,Tx、Ty、Tw、Th分別為預測框左上角的橫坐標、縱坐標與右下角的橫坐標、縱坐標。通過設置檢測框置信度閾值為0.5和IoU=0.4能有效地檢測到每個水表讀數字符,檢測結果示意圖如圖4所示。
水表讀數的分布存在明顯的規律性,即:水表字符有5位讀數,且按0~9依次變化;每個字符之間存在一定的間隙;時常出現兩個字符上下并列且各占一部分的“半字”情況,而兩個字符所占比例的差異決定了“半字”的實際精度。根據這些先驗信息,將水表讀數分為無“半字”與有“半字”讀數兩類,而基于字符邊框定位的方法來提取水表讀數具體數值的流程如圖5所示。

d1為上邊框的高度;d2為下邊框的高度圖4 水表檢測結果示意圖Fig.4 Schematic diagram of water meter test results

圖5 基于字符邊框定位的水表讀數提取流程圖Fig.5 Flow chart of water meter reading extraction based on character frame positioning
在改進YOLOv4網絡輸出預測信息后,通過每個預測框的Tx值對預測框進行由小到大的排序。對無“半字”的水表讀數識別,直接輸出排序后的ClassIDs作為水表讀數的數值。對有“半字”的水表讀數,為了精準識別到小數點后一位,首先,依次對前目標框boxes[i]與后目標框boxes[i+1]的Ty值做差,對比得到Ty差值最小的boxes[i]與boxes[i+1],其中,boxes[i]為i目標框的位置信息;接著根據兩者目標框的Th值來確定哪個目標框位于水表讀數的上部,并將上部字符作為該位水表讀數的整數位;進而通過判斷boxes[i]與boxes[i+1]各自Ty與Th的差值,通過d1和d2所占的比例,得到該位水表讀數的小數位,用T表示;最后整合輸出所有的整數位與小數,即可獲得包含1位小數的6位完整水表讀數數值,如圖6所示。

圖6 水表讀數識別效果圖Fig.6 Water meter reading recognition effect diagram
為了驗證所提方法性能,選用YOLOv3、YOLOv4、YOLOv4-Mobilenetv3(YOLOv4-MV3)、SSD和RetinaNet五種網絡模型作為對比方法。各檢測方法實驗的環境均為Ubuntu 16.04操作系統,深度學習硬件平臺為i5-7500 CPU @3.4GHZ,顯卡型號為GTX 1080。
實驗所用水表數據集均通過30萬像素的OV7725攝像頭拍攝得到。水表數據集共5 567張,其按類別分為無“半字”905張和有“半字”2 190張,同時包含受光照不均、霧化、抖動等干擾的水表復雜場景圖像618張。
實驗中訓練模型采用PASCAL VOC的數據集格式,先用Labelimg 標注工具對每張圖片目標物體所在區域進行手工數據標注矩形框,得到真實框 ground truth用于訓練。數據集的標簽種類依據水表讀數0~9設置為10類,如讀數0設置為“0”標簽。數據集按照8∶1∶1的比例劃分為訓練數據集、驗證數據集與測試數據集。
為了確保實驗的公平性,本文方法網絡與其他5種網絡的模型訓練參數保持一致,輸入的原始水表圖片為192×256像素,通過輸入將改進的YOLOv4網絡中調整為416×416像素。初次訓練設置批量為8,凍結迭代次數為50,學習率為0.001;第二次訓練設置批量為8,迭代次數為100,學習率為0.000 1。
為縮短訓練時間同時提高模型的泛化能力,實驗引入遷移學習,預先將訓練了11 520張水表讀數圖片的網絡模型遷移到改進的YOLOv4網絡模型中,然后使用上述訓練參數對預訓練模型進行訓練調整。
實驗選用了Padilla等[20]提出的準確率(precision,P)、召回率(recall,R)、平均準確率(average precision,AP)、調和均值F1以及平均精度均值(mean average precision,MAP)5個指標來進行評價,評價指標的計算公式分別為

(7)

(8)

(9)

(10)

(11)
式中:TP為正確檢測到水表讀數的數量;FP為檢測的水表讀數出現分類錯誤的數量;FN為圖片中的目標漏檢的數量;K為標簽樣本的總數量;F1為準確率P和召回率R的調和平均值;AP為準確率與召回率所繪制的曲線面積圖;MAP為P和R所繪制曲線面積圖的均值。P值越大,說明水表讀數檢測的準確率越高;R值越大,表明水表讀數檢測中漏檢概率越低。但有時候P和R是一對矛盾值,因此采用F1來評價模型好壞,F1越逼近于1說明模型優化的越好。MAP值越高,證明水表檢測模型具有更強的魯棒性和泛化能力。另外,實驗中還記錄了各網絡模型所占內存的大小,用來評價其網絡參數量的多少。
實驗有所識別方法對普通和復雜場景圖像讀數的識別性能指標對比如表1和表2所示,識別效果對比如圖7所示。

表1 各方法對普通場景水表圖像讀數識別的指標對比Table 1 Comparison of indicators for recognition of water meter image readings in common scenes by various methods

表2 各方法對復雜場景水表圖像讀數識別的指標對比Table 2 Comparison of indicators for recognition of water meter image readings in complex scenes by various methods

圖7 各方法對多種場景水表讀數的識別效果對比圖Fig.7 Comparison chart of the recognition effect of various methods on water meter readings in various scenarios
由表1可知,在普通場景下,本文方法性能指標均優于其他5種網絡模型方法,其中,準確率提升了0.04%以上,召回率提升了0.05%以上,F1提升了0.1%以上,MAP提升了0.03%以上,模型參數量壓縮了14.3%以上。由表2可知,在復雜場景下,本文方法的性能指標與其他5種網絡模型方法相比具有更大的優勢,其中,準確率提升了0.11%以上,召回率提升了0.38%以上,F1提升了0.4%以上,MAP提升了0.06%以上。
圖7展示了各方法對數據集中選取的1幅普通場景水表圖片(從左到右第一張)和4幅復雜場景水表圖片(從左到右第二~第五張,依次為曝光場景、黑暗場景、圖像傳感器抖動場景、出現水滴或霧化污染場景)的讀數識別效果對比圖。由圖7可知,對于普通場景水表圖像,各方法均可正確檢測水表讀數,但對于復雜場景水表圖像,5種對比方法均出現了錯檢或漏檢問題。如在曝光場景下,YOLOv4-MV3出現漏檢情況;在黑暗場景下,YOLOv4-MV3以及YOLOv3出現漏檢情況;在圖像傳感器抖動場景下,YOLOv3以及SSD出現漏檢情況,YOLOv4-MV3、RetinaNet以及YOLOv4出現將數字1錯檢成0的情況;在出現水滴或霧化污染場景下,YOLOv4-MV3、SSD及YOLOv3出現漏檢情況,YOLOv4與RetinaNet出現將讀數7錯檢成1的情況;而本文方法均能夠正確地檢測出水表讀數,顯然,本文方法對復雜場景圖像及“半字”讀數具有更好的識別效果。
提出了一種基于改進YOLOv4的水表讀數識別方法。該方法改進YOLOv4利用深度可分離卷積代替原有的標準卷積,并在此基礎上引入SE注意力機制和MobileNetv2瓶頸結構,使得網絡模型的參數量和計算量降低為原來的1/6左右,同時結合加權平均非極大值方法有效改善了水表讀數字符特別是“半字”的漏檢與錯檢問題。由實驗結果可得,所提方法的準確率、召回率等性能指標均優于對比方法。下一步工作是將其應用于低算力嵌入式設備中,為實現商業化提供可能。