李金紅,熊繼平,陳澤輝,朱凌云
1(浙江師范大學 數學與計算科學學院,金華 321004)
2(浙江師范大學 物理與電子信息工程學院,金華 321004)
指針式儀表識別技術不僅僅是模式識別技術領域的前沿研究發展方向,還具有寬闊的應用前景[1].目前在很多公司中,存在大量的指針式儀表,尤其是用在變電站這種場景中,儀表幾乎全部為模擬式顯示而非數字式顯示的儀表,這種指針式儀表如果靠人工去讀數,不僅在人工上消耗很大,而且人工讀數還會存在一定的誤差,導致精度不高[2,3].因此研究一種快速、準確、魯棒性強的指針式儀表識別的方法具有十分重要意義[4,5].
針對指針式儀表識別的問題,研究人員從不同的研究方向提出了各種解決方法.徐發兵等人[6]提出先檢測圖像中的文本,再從這些文本中篩選出刻度線處的數字,其中文本檢測和篩選數字使用的方法分別是改進過的EAST 算法和印刷體數字識別模型.根據那些數字的位置計算確定指針直線和儀表圓盤的圓心,該方法中圖像質量對于最終提取的效果影響較大,并且整個研究過程步驟較多;劉葵等人[7]先應用連通域分析、圖像閾值分割實現指針分割,再用最小二乘法實現了細化直接提取中軸線;徐麗等人[8]提出了一種基于迭代最大類間方差的算法,該方法在對光照條件、拍攝角度的不同以及表盤中一些干擾等影響的抗干擾性較好,具有良好的魯棒性能;邢浩強等人[9]提出通過透視變換消除儀表圖像畸變,雙邊濾波、MSRCR算法增強圖像,再通過Hough 檢測儀表的表盤與指針,最終得到儀表的讀數.此研究方法對硬件計算資源要求較高,還存在一定的漏檢的情況.
然而,直接基于Hough 變換等傳統圖像處理技術獲取指針位置,對圖像噪聲非常敏感,常會出現提取指針所在區域、識別精度較差等問題.針對這個問題,本文提出了一種基于深度學習的指針式儀表識別的方法,該方法先通過Faster R-CNN 算法先檢測指針目標框,裁剪出指針目標框區域,再在該區域圖像上對指針進行細化、Hough 變換檢測直線,提取指針,此方法減少了儀表圓盤背景及刻度線對指針提取的影響,提高了指針提取的準確度和魯棒性,還適用于不同背景下的儀表指針檢測.
針對指針式儀表,本文所提出研究方法包括儀表目標檢測、儀表指針目標檢測以及儀表讀數識別3 個主要部分.識別系統的具體流程如圖1所示.

圖1 儀表識別系統的流程圖
目前,深度學習在計算機視覺領域發展了許多,其在圖像分類、目標檢測和語義分割等方面都取得了一定的成果[10-16].卷積神經網絡(CNN) 采用卷積(convolution)、權值共享(shared weights)等,是一種模擬人類視覺神經細胞處理圖像的方法[17].適用于處理圖像分類、分割和目標識別等問題.采用Faster R-CNN模型檢測儀表類目標[18].
目前對于指針式儀表自動識別研究大多基于傳統的圖像處理技術,先用深度學習方法得到儀表圓盤目標之后,直接在截得的儀表圓盤區域圖像基礎上或者直接在最原始的圖像上用傳統圖像處理方法定位儀表指針中軸線所在直線.此方法對圖像的質量的要求高,前期對圖像處理步驟多.本文提出了先用深度學習方法檢測出指針,再根據檢測的位置信息裁剪得到的指針區域圖像上用傳統圖像處理方法定位指針中軸線所在直線.此方法與上述方法相比大大減少了原始圖像上其它區域對指針中軸線所在直線定位過程的干擾,而定位指針中軸線所在直線是儀表讀數識別中非常關鍵的一步,很大程度上決定了最后結果的精度.采用Faster R-CNN 模型用于儀表類目標的檢測,Faster RCNN 模型分為4 個主要內容:
(1)卷積層:Faster R-CNN 首先使用一組基礎的卷積加ReLU 激活函數再加上池化組成層提取圖片的特征圖,將特征圖輸入RPN 層和全連接層.
(2)RPN 網絡:RPN 網絡就是專門用來提取候選區域.
(3)感興趣區域池化:該層得到特征圖和候選區域,結合這些信息提取候選區域的特征圖,輸入全連接層判斷得到目標類別.
(4)分類器:根據候選區域的特征圖得到候選框的類別,再次采用邊框回歸得到更精確的檢測框.具體如圖2所示.

圖2 Faster R-CNN 模型流程圖
Faster R-CNN和Fast R-CNN 之間最大的不同,它提出了一個RPN的網絡,該網絡起到了推薦候選區域的作用.RPN 網絡能夠進行端對端的訓練,最后目的是選出候選框區域.整個模型詳細的框架結構設置如表1[19].本文中的模型是在ImageNet 數據集上的預訓練好的模型上進行微調的模型,采用的主要超參數如學習率為0.001,“gamma”學習率衰減設置為0.1,“weight_decay”即權值衰減用于防止過擬合的參數設置為0.0005,“momentum”設置為0.9.其中Faster R-CNN 模型使用的損失函數為式(1).


表1 Faster R-CNN 結構圖
式(3)可得到儀表圓盤的圓心的坐標(Cx,Cy).
1.3.1 儀表圓盤的圓心
根據檢測到的儀表目標框的位置,即儀表目標框的左上角和右下角的坐標 (bx1,by1) 、(bx2,by2),如圖3所示,通過如式(2)可得到儀表圓盤的半徑r,再通過如

圖3 儀表目標框

得到圓心的坐標后,將原始圖像的坐標系轉換為以儀表圓盤圓心為原點的坐標系,如圖4所示,再將1.2 節中檢測儀表的指針目標框的位置坐標變成轉換后的新坐標系下的,轉換后的指針目標框的位置坐標為(zx1,zy1) 、(zx2,zy2),如圖5所示,分別為指針在新坐標系第二、四象限下,其它兩個象限情況類似.

圖4 轉換后的新坐標系

圖5 指針目標框坐標
1.3.2 指針的細化
首先根據指針檢測中得到的指針目標框的坐標,從原圖中裁剪出指針圖像,在此基礎上進行傳統圖像處理,如果直接得到的儀表圓盤的基礎上進行操作,細化后會得到結果如圖6(a)所示.從圖中可以看出細化后的結果中有很多直線,對定位到指針直線具有很大的干擾性.
將指針細化前需要先把儀表的指針圖像進行二值化.本文采用的二值化方法是OpenCV2 庫中的自適應閾值法(adaptive threshold)函數,此函數并不是像固定閾值方法那樣,它是按照圖像的不同部分亮度的情況來計算局部閾值,因此對于圖像的不同部分,計算出不同的閾值,相較固定閾值法效果更好.
本文采用的細化(骨架提取)方法是查表法,細化如“瘦身”,把圖中一些不必要的點去掉,比如一個圓,最終得到的結果就是一個圓心,這個圓心就是圓的骨架.具體思想就是基于八領域來判斷一個點是否去除,比如內部點、直線端點等不可以.指針圖像和細化的結果如圖6(b)、圖6(c)所示.

圖6 細化結果
1.3.3 霍夫變換直線檢測
霍夫變換是一種常用圖像處理方法[20],本文采用霍夫變換檢測已經經過細化后的指針圖像中的指針中軸線.它采用投票算法,該方法可以得到所有你所需要檢測的特定形狀,并將結果組合成一個集合,其中用到的以x,y為坐標的極坐標系裝換為ρ,θ霍夫空間的公式如式(4).該方法可以進行直線,橢圓等形狀的檢測.檢測的結果如圖7所示,加粗黑色部分表示檢測到的直線.


圖7 霍夫變換直線檢測
1.3.4 最小二乘法擬合直線
根據霍夫變換檢測到的直線,利用得到的直線集合中所有直線的兩個坐標,再將這些坐標點用最小二乘法去擬合出一條直線,即為指針中軸線的表達式.它通過最小化誤差的平方即殘差平方和公式如式(5)所示,來得到能夠擬合數據的最佳函數.

1.3.5 儀表示數結果
根據1.3.1 節所述中的新坐標系下的指針目標框的位置坐標為(zx1,zy1) 、(zx2,zy2)來判斷指針所在新坐標系下的象限.具體判斷依據如下:
(1)第一象限:k>0,zx2≥10;
(2)第二象限:k<0,zx1≤-10;
(3)第三象限:k>0,zx1≤-10;
(4)第四象限:k<0,zx2≥10.
還有兩種情況:k=0和k不存在.若k=0,即指針中軸線與新坐標系下的X 軸重合;若k不存在即指針中軸線與新坐標系下的Y 軸重合.通過上述得到儀表指針中軸線所在直線的斜率,再根本上述判斷象限的方法可知指針位置所屬的象限,可以得到儀表指針中軸線所在直線與X 正軸或者負軸所成的角度angle.然后通過已知的指針式儀表的量程,即指針刻度的具體分布和兩條相鄰刻度線相交的角度,如本文實驗中的儀表的刻度7和刻度12 之間的角度為90°,和刻度12 與圖4中轉換后的坐標系下的X 軸正半軸重合等.具體示數value求解情況分為以下情況:
(1)第一象限:value=(angle/90)×13+33;
(2)第二象限:value=7-(angle/90)×13;
(3)第三象限:value=(angel/90)×13+7;
(4)第四象限:value=((90-angle)/90)×13+20.
通過上述計算即可得到儀表的示數.
首先自制所需的儀表數據集,自制儀表目標數據集共有225 張指針式儀表圖片,其中205 張圖像作為訓練集,剩余的20 張作為測試集.訓練集采用VOC 數據集格式,使用標記軟件LabelImg4.1 進行手工標記.然后用網絡訓練數據集,測試數據集用于測試訓練效果.測試結果如圖8所示.由測試結果可知,基于Faster R-CNN 模型的指針式儀表檢測模型能夠準確地檢測出不同狀態下的儀表表盤.
和上述的儀表圓盤檢測一樣,所用到的數據集是一樣的,不同的是在使用標記軟件LabelImg4.1 進行手工標記時在儀表圖像上標記的指針區域,然后用網絡訓練數據集,這個的訓練和上述儀表圓盤的訓練是一起訓練的,測試數據集用于測試訓練效果.其中儀表圓盤與指針進行目標檢測的訓練的損失函數loss的曲線如圖9所示,其中橫坐標iterations 表示的是訓練的輪數,軸坐標loss 表示的是訓練時的loss 損失值,由圖中可以看出最終的loss 值趨近于0.

圖9 損失函數loss 曲線
對含有儀表的圖像進行測試,得到測試結果如圖8所示,下面的圖為不同擺放角度下不同示數的儀表圖像.表2所示為隨機選取的20 張測試圖片的測試結果,其中每張測試圖片中有且僅有一個儀表表盤,每個表盤中只有一個指針目標 由測試結果可知,基于Faster R-CNN 模型的指針式儀表檢測模型能夠準確地檢測出不同狀態下指針,具有良好的效果,具有很強的準確性和魯棒性.

表2 指針目標檢測模塊測試結果

圖8 目標檢測結果圖
為了檢測算法的各方面性能,本文對采集的20 組儀表樣本進行測試,測試的樣本由不同的角度拍攝的顯示不同示數的指針式儀表.表3所示為其中10 組樣本測試結果,測試數據集的平均準確率高達為96.55%.

表3 儀表讀數識別測試結果
本文提出了一種基于深度學習的指針式儀表的識別方法.針對刻度分布均勻的指針式儀表,本文所提出的指針式儀表的識別方法由儀表檢測、儀表指針檢測以及儀表讀數識別3 個部分組成.該方法通過獲得儀表圓盤目標的包圍框,儀表指針目標的包圍框、指針細化、霍夫變換檢測直線、最小二乘法確定指針中軸線表達式等步驟識別儀表最終讀數.該方法先基于深度學習的方法檢測儀表表盤和指針目標,根據得到的指針目標框的位置信息裁剪得到指針圖像,在指針圖像的基礎上再結合一些傳統圖像處理的方法提取指針直線,與直接在儀表表盤目標框圖像或原始圖像上進行傳統圖像處理相比很大程度上減少了定位指針中軸線所在直線過程中的干擾,該方法具有很好的魯棒性和實際應用價值.測試實驗結果表明,提出的方法對于指針式儀表檢測與識別具有良好的準確性與穩定性,能夠滿足一定的實際應用.另外提高指針的中軸線位置的檢測精度,使得結果更精確,將是本文后續重點研究內容.