針對儀表自動讀數問題,新型數字式儀表的讀數比較方便,現階段已經有非常多成熟的方案落地,而針對傳統指針式儀表自動讀數的現有方案還不夠成熟,存在識別不精確、易受環境干擾等問題,是亟待研究和攻克的難題。我們針對指針式儀表的讀取設計了一種基于Im-YOLOv4-Tiny的表計識別算法。
實現表計識別算法自動識別,共有四步:儀表數據集制作與處理及遷移學習預訓練、Im-YOLOv4-Tiny網絡模型構建、網絡訓練策略及超參數設定、指針定位與自動識數。
在“變電站巡檢”項目中,存在大量的表計圖像,深度學習模型可以提取圖片中的特征信息,結合項目中能獲取的大量圖片去持續優化深度學習模型可以幫助模型學習表計相關的特征信息,從圖像中獲取到有效且普遍的特征則需要大量的數據集。同時在訓練過程中采用了數據擴增,在提升訓練數據的多樣性的同時,提升模型的泛化能力。
表盤在使用的過程中可能受到時間、角度、光照、焦距等影響存在磨損、傾斜、反光模糊等問題。所以在樣本選擇時,加入上述異常狀態樣本進行訓練。

異常狀態樣本圖片數據集
Im-YOLOv4-Tiny模型的搭建由:由骨干特征提取網絡、特征金字塔和YoloHead三部分組成。網絡的第一部分骨干特征提取網絡主要用于輸入圖片前期的特征提取,在圖像輸入時會將圖像進行resize,將圖像處理成尺寸為416×416×3的輸入圖像,之后放入后續網絡提取特征,骨干網絡由卷積模塊和殘差模塊組成。卷積模塊中除了包含普通的卷積操作,還包含標準化和激活函數,為了避免梯度方向鋸齒問題、使用了LeakyReLU作為激活函數。改進模型結構如下:

Im-YOLOv4-Tiny網絡模型
網絡的第二部分特征金字塔是對骨干特征提取網絡的輸出進行加強特征提取,從骨干網絡的上層和下層分別取出兩個維度為(26,26,256)和(13,13,512)的特征層進行特征提取,并將不同維度的特征層經過卷積和采樣進行特征融合,通過不同尺度的特征結合來提取出更有利的特征。最后將兩個融合后的特征圖放入YoloHead進行預測。
由于制作的訓練集規模較小,為了進一步豐富數據集,引入了實時Mosaic數據增強。每一次訓練前,從訓練集中取出一個batch的圖片,從這個batch中隨機取出4張圖片進行裁剪拼接,重復batchsize次后生成新的一個batch的圖片放入網絡進行訓練。通過這種圖像隨機組合拼接的方式,豐富檢測物體的背景,增加數據集各尺度的目標數量。其流程如下:

數據增強流程
第三步:網絡訓練策略與超參數設定及遷移學習微調預訓練模型
利用“遷移學習”算法將設計好的網絡在其他數據集中進行特征學習,之后將學習到特征的網絡進行部分網絡結構凍結以保留學習到的特征,再將凍結部分結構的網絡以目標任務的數據集進行預訓練,預訓練結束以后再將網絡解凍作為初始權重網絡。在遷移學習的數據集中包含了變電站的各類電表,如電壓表、電流表、功率表、SF6氣壓表等,其中大部分為圓形儀表圖像,但由于圖像分辨率低,大部分圖像連肉眼無法對儀表進行讀數,因此僅作為遷移學習定位儀表用。
(1)損失函數改進優化
YOLO網絡的損失函數主要包含三部分:正負樣本的損失函數、預測種類的損失函數,以及IoU Loss。通過對IoU函數的改進新函數為GIoU,其中C表示包圍兩個框的最小外接矩形的面積。通過矩形大小可以反映兩個框的距離,通過IoU反映相交程度,減去二者未相交部分矩形的比例,既能反映重合程度,又能對未重合的情況進行量化表示。

損失函數改進
(2)學習率
學習率采用了TensorFlow中的ReduceLROnPlateau方法控制,這是一種在訓練過程中逐步下降學習率的方法,使用固定學習率常常導致網絡訓練效果不理想,通過學習率逐步下降的方式既能在開始時損失函數收斂更快,又能在訓練到尾聲時損失函數能夠收斂到較小處。
(3)訓練策略
訓練策略方面主要采用了三個策略:第一個策略是在訓練開始前需要凍結網絡的部分權重,訓練過50個epoch之后再將權重解凍,主要是為了保持遷移學習所學習到的權重特征;第二個策略是在訓練過程中加入了Dropout策略,即全連接層有一定概率斷開部分連接,可以在訓練時減少參數量;第三個策略則是在訓練即將結束時,加入了Earlystop策略,即當損失函數在一定數量的epoch之后不再變化時就認為已經達到最好的效果,提前結束訓練。
將儀表裁剪出來進行指針的識別和讀數,基于霍夫圓檢測和輪廓檢測的指針分離算法,將指針在原圖像上標識出來,并使用極坐標展開法和閾值分割法進行關鍵刻度線的分離以及指針讀數,算法的基本流程如圖所示。


指針定位與自動讀數算法
(1)指針定位
使用高斯濾波對裁剪后的圖像進行降噪,將其轉換為灰度圖后采用自適應閾值二值化的方法獲取儀表盤的二值化圖像。


圖像預處理流程圖
經過霍夫圓檢測裁剪以后的圖像四角的背景已經被剔除,儀表圓心也被定位出來了,之后使用輪廓檢測算法來分離指針。為了進一步分離指針,采用了膨脹和腐蝕細化了表盤邊緣,進一步突出了指針,最后采用霍夫直線檢測法。

表盤指針定位
(2)讀數計算
讀數計算通過分離刻度線來實現,通過極坐標展開的方法進行刻度線分離,將儀表盤邊緣的圓環展開成一條矩形帶,矩形帶寬度為2/5r,長度為2πr,將圓環上的點記為(x,y)和原圖的坐標記為(X,Y),加入補償以后其對應關系如公式中w為圓環長度2πr,r為表盤半徑,W、H為原圖的寬和高。


表盤拉伸對應關系式
展開之后如極坐標展開圖所示。將圓環帶進行二值化并經過一次膨脹和腐蝕操 作去除部分噪點干擾,如圓環帶二值化圖所示。之后使用一條縱向直線對圓環帶進行 橫向掃描,篩選出可能存在刻度線的位置,可以看到圖像中存在刻度線的位置, 其有效像素會超過一定的閾值,通過多次試驗求得最佳閾值為 4/9 的圓環帶寬度, 掃描并記錄下被認定為是刻度線的 X 坐標數組,并在圓環圖上以紅線標記。因為指針的存在,在橫向掃描時也會將指針所在位置判定為刻度線位置,可以利用極坐標展開圖中最下方像素即指針位置標綠來排除指針對于刻度線定位的影響, 同時也將刻度線所在直線標紅。最終標記后圓環圖如關鍵刻度線分離圖所示。


刻度線分離流程圖
實際刻度線在圓環帶上存在一定寬度,因此在X坐標數組中每處刻度線可能存在一簇連續的橫坐標被記錄,因此需要對這些連續的X坐標求平均作為該刻度線所在位置的坐標。除此之外,還需考慮當指針與關鍵刻度線重合,此時求平均后處理完的X坐標數組會少一個關鍵刻度信息,此時可以根據指針與左右兩側刻度線數量的關系求出指針所指向刻度的值。而當指針并未與關鍵刻度線重合時,記平均后的關鍵刻度線數組為[X1,X2,,X3…Xn],刻度線對應數值記為[V1,V2,,V3…Vn],指針位置為T,利用位置關系與比例法公式計算讀數。


讀數計算公式
至此,整個基于深度學習的機器視覺表計識別過程就已經結束了通過對樣本圖像數據的收集,樣本擴充,算法模型搭建、訓練,刻度線分離以及利用位置關系與比例法公式計算讀數。
“Im-YOLOv4-Tiny 的表計識別算法”與“傳統的表計識別算法”相比,由于檢測的指針式儀表種類、量程等各不相同,傳統的圖像處理后在進行表計識別的兩段式識別不同的是,Im-YOLOv4-Tiny采用機器學習的方式進行自動識別讀數,充分展示了利用機器視覺算法對表計識別的可行性。
(3)實驗驗證
將算法應用于實際采集中對表計進行讀數識別,對于1000 張各種狀態下的儀表圖像進行機器視覺識表,最終識別成功 1000 張,識別失敗 0 張,識別成功率達到了100%。偏差維持在±1%以內。以下是部分典型識別結果表和識別圖。
下圖:實驗驗證結果表


實驗驗證典型圖
對于基于Im-YOLOv4-Tiny的儀表定位算法,儀表定位已經比較準確,速度也能滿足實時性要求,使用基于輪廓檢測和極坐標展開法的指針分離與讀數識別方法,在表盤的識別正確率上也能滿足一般工業對表計識別準確度的要求,并在項目中已得到驗證。
我國工業儀表和公用事業單位表計總量超過60億,廣泛應用于石油、燃氣、化工、電力、制造、水務等行業。儀表作為生產經營活動中的關鍵核心計量設施,在可靠性、穩定性、準確性方面要求嚴苛。在生產過程中產生的數據作為關鍵過程參數,對于保證生產安全、生產質量及效益至關重要。利用視覺算法對儀表圖像進行識別和上傳,就能輕松地完成所有儀表的讀數和記錄工作。這不僅大大簡化了工作流程,節省了人力物力,還提高了工作效率,基于機器視覺的表計識別研究具有廣闊的市場前景。