唐 霞 蘇盈盈 羅 妤 王艷玲
(重慶科技學院電氣工程學院, 重慶 401331)
指針式儀表有結(jié)構(gòu)簡單、使用維修方便、價格低廉等優(yōu)點,在工業(yè)生產(chǎn)中應用普遍。目前,大量的指針儀表未實現(xiàn)智能化,仍需通過人工檢定儀表讀數(shù),耗時且讀數(shù)誤差較大。
本次研究將面向工業(yè)指針儀表設計智能識別系統(tǒng),以提高指針定位的準確性和實效性,滿足工業(yè)需求。設計思路是:首先,基于Faster-RCNN[1]法對表盤進行定位;然后,采用灰度化、k-Means二值化方法對提取的目標圖像進行預處理;最后,指針定位采用虛擬旋轉(zhuǎn)直線擬合的方法。
針對工業(yè)用圓形表盤指針式儀表設計了一套智能識別系統(tǒng),系統(tǒng)主要包括三大部分:儀表定位、指針確定、讀數(shù)識別。整個識別系統(tǒng)的流程如圖1所示。
儀表定位設計中,采用了深度學習中的Faster-RCNN方法,可實現(xiàn)在復雜背景下的精確定位。其作用是,將拍攝的工業(yè)現(xiàn)場圖片輸入進去,然后自動檢測儀表盤的位置,并指定此目標儀表盤的區(qū)域框。此時,此區(qū)域框有4個參數(shù),即圍繞中心點的x、y軸坐標,以及框的寬、高。通過Faster-RCNN方法得到這4個參數(shù)的主干網(wǎng)絡結(jié)構(gòu)(見圖2)。
圖1 儀表智能識別系統(tǒng)流程圖
在主干網(wǎng)絡結(jié)構(gòu)中,首先,將指針儀表圖片輸入到Faster-RCNN網(wǎng)絡中,統(tǒng)一將輸入圖像的最小邊像素處理成600,不改變長寬比例,形成對應大小的不失真圖片。
然后,傳入到主干特征提取網(wǎng)絡Resnet50中,經(jīng)4次壓縮圖片,得到共享特征層(Feature Map)[2]。此時網(wǎng)格為共享特征層大小,每個網(wǎng)格默認先驗框為9,先進行3×3的卷積處理,再分別進行兩次1×1的卷積處理,所得通道數(shù)依次為18、36。據(jù)此判斷原始先驗框內(nèi)是否包含物體,并得到每一個網(wǎng)格、每一個先驗框的調(diào)整參數(shù),調(diào)整之后得到建議框(Proposal)。
圖2 儀表定位的主干網(wǎng)絡結(jié)構(gòu)圖
最后,將此區(qū)域傳入感興趣區(qū)域池(ROI Pooling)[3],利用建議框在特征共享層上截取圖片。將所截取圖片的不同大小區(qū)域調(diào)整成相同大小,利用分類與回歸網(wǎng)絡判斷截取到的圖片中是否包含目標,并對建議框進行調(diào)整。綜合判斷所截取到的圖片,進行目標預測,從而獲得Faster-RCNN目標指針儀表檢測結(jié)果。
先后進行灰度化和k-Means二值化處理[4],以便使后續(xù)指針的識別結(jié)果更加準確?;叶仁侵负诎讏D像中像素點的顏色深淺程度。k-Means二值化是最常用的聚類方法,通常將輸入數(shù)據(jù)看作樣本集,通過k-Means實現(xiàn)樣本聚類,相似樣本視為同一類別。將輸入的數(shù)據(jù)劃分為k個類別,實現(xiàn)的步驟如下:
(1) 在輸入的數(shù)據(jù)中隨機選取k個點,作為每個類的中心點。
(2) 計算樣本中每個點到中心點的距離,當距離最近時進行一次聚類。
(3) 根據(jù)聚類結(jié)果,重新計算新的中心點(均值)。
(4) 重復步驟(2) — (3),直到中心點不再發(fā)生變化為止。
采用虛擬旋轉(zhuǎn)擬合直線算法實現(xiàn)對指針的確定。在儀表圖像經(jīng)過k-Means二值化處理之后,虛擬旋轉(zhuǎn)擬合直線再以右側(cè)0°順時針繞儀表中心旋轉(zhuǎn)360°。當擬合直線旋轉(zhuǎn)經(jīng)過目標指針時,記錄像素重合度信息,重合度信息最密集處即可確定為指針位置。記錄此時的角度。虛擬旋轉(zhuǎn)擬合直線的計算如式(1)(2)所示:
x=(x1-x0)×cos(i×π/180°)+x0
(1)
y=(x1-x0)×sin(i×π/180°)+y0
(2)
式中:(x0,y0)為儀表盤中心坐標;(x,y)為虛擬旋轉(zhuǎn)直線端點坐標;i為虛擬直線旋轉(zhuǎn)的角度;x1為指針長度。
以(x0,y0)為起點、(x,y)為終點構(gòu)造一條虛擬旋轉(zhuǎn)擬合直線。首先,通過尋找像素位置程序找到儀表中每個整數(shù)數(shù)值的坐標并存放在數(shù)組中,計算每個整數(shù)對應的角度;然后,通過直線擬合中記錄的角度與整數(shù)對應的角度進行計算,得到最后的指針識別結(jié)果。假設指針指向整數(shù)刻度值a和b之間,以虛擬直線起始角度0°,計算角度r和指針識別結(jié)果t。
(3)
t=a+|b-a|×|(r-r1)/(r2-r1)|
(4)
式中:(x′,y′)為確定指針之后的端點坐標;r為指針指向的角度;r1為a刻度值對應的角度;r2為b刻度值對應的角度。
智能識別系統(tǒng)的仿真實驗在Windows 10操作系統(tǒng)上進行。CPU為3 600 6-Core,GPU為GeForce RTX 2 060 SUPER,開發(fā)語言為Python。此外,圖像處理部分用到了OpenCV、Matpoltlib開源庫,深度學習網(wǎng)絡用到了Tensorflow-gpu 1.13.2、Kares 2.1.5。
收集工業(yè)應用指針儀表圖像,制作指針儀表數(shù)據(jù)集500張,選用其中400張作為訓練集,其余100張作為驗證集。整個數(shù)據(jù)集使用開源Labelimg工具[5],運用VOC數(shù)據(jù)集的格式進行手動標注。測試集用于測試訓練的效果。
在訓練過程中,輸入的圖片像素為1 080×1 920,使用Resnet 50網(wǎng)絡進行預訓練。其中,設置世代為50,每個世代訓練的步數(shù)為1 000,最初學習速率為0.0001(20世代以后的學習速率為0.000 01),最后訓練得到的損失率為0.235。按照此損失率的權重隨機對50張含有儀表的圖片進行預測,得到部分儀表盤定位(見圖3)。 根據(jù)表盤定位結(jié)果可知,F(xiàn)aster-RCNN能夠精確地對工業(yè)儀表盤進行定位,效果良好。
圖3 部分儀表盤定位結(jié)果
將定位的儀表盤提取出來后,為了使儀表的數(shù)值識別結(jié)果更加準確,對目標圖像進行預處理。
(1) 灰度化處理。采用OpenCV自帶的COLOR_BGR2GRAY函數(shù)予以灰度化。
(2)k-Means二值化處理。截取指針儀表的圓盤像素點區(qū)域作為樣本,將k設置為2,像素點以黑白顏色來區(qū)分。每張圖片的像素點均值為閾值,大于閾值的像素點為白色,小于閾值的像素點為黑色。
預處理后的圖像如圖4所示:
圖4 圖像的預處理
以圖像的中心為儀表盤的圓心,構(gòu)造虛擬旋轉(zhuǎn)直線(見圖5)。直線從右側(cè)0°處繞圓心順時針旋轉(zhuǎn)360°,直線線寬的像素設置為3,記下與直線像素重合的數(shù)量。重合數(shù)量的最大值為指針指示的位置,記錄下此時的角度。
圖5 構(gòu)造虛擬旋轉(zhuǎn)直線效果圖
采集50組工業(yè)應用指針儀表樣本,進行識別測試,其中具有代表性的10組樣本識別測試結(jié)果如表1所示。
表1 部分儀表樣本識別測試結(jié)果
表1中數(shù)據(jù)顯示,系統(tǒng)識別結(jié)果的準確率不低于97.87%,智能讀數(shù)相對于人工讀數(shù)的平均誤差僅為0.308 42 ℃。測試結(jié)果表明,智能讀數(shù)比人工讀數(shù)更為精確,可滿足大多數(shù)工業(yè)應用的要求。
針對圓形表盤指針式儀表識別中人工判讀耗時較長且讀數(shù)不精確的問題,基于Faster-RCNN快速準確定位表盤的方法,設計了一套工業(yè)儀表智能識別系統(tǒng)。這套智能識別系統(tǒng)的功能主要包括儀表定位、指針確定和讀數(shù)識別:基于Faster-RCNN法對儀表進行定位;采用旋轉(zhuǎn)虛擬直線擬合法對指針進行定位;采用角度法對指針儀表進行識別。
采用Faster-RCNN方法進行定位,可以直接將訓練好的模型用于定位識別,節(jié)約識別時間,且定位結(jié)果準確可靠。本次設計的指針儀表智能系統(tǒng)可滿足大多數(shù)工業(yè)應用的需求,有很強的實用性。