夏臻康,李維剛,2,田志強
(1.武漢科技大學(xué)信息科學(xué)與工程學(xué)院,湖北武漢 430081;2.武漢科技大學(xué)冶金自動化與檢測技術(shù)教育部工程研究中心,湖北武漢 430081)
隨著計算機技術(shù)的不斷發(fā)展,計算機視覺等智能化技術(shù)被廣泛應(yīng)用到工業(yè)場景下各類儀表的檢測與識別中[1]。其中指針式儀表以其結(jié)構(gòu)簡單、維護便捷和抗干擾能力強等特點,已成為工業(yè)場合下使用廣泛的一類儀表[2]。由于該類儀表無法輸出數(shù)字信號,只能通過人工進(jìn)行示數(shù)讀取[3-4],而人工讀數(shù)不但消耗大量勞動力且檢測效率低[5],并且由于不少工業(yè)場景中儀表所處環(huán)境復(fù)雜,存在無法通過人工進(jìn)行讀數(shù)的情況。因此,研究指針式儀表準(zhǔn)確、穩(wěn)定的自動讀數(shù)方法具有重要意義[6]。
近年來,有大量國內(nèi)外學(xué)者在指針式儀表檢測與讀數(shù)問題上進(jìn)行了深入研究。文獻(xiàn)[7]使用區(qū)域生長方法定位指針式儀表的刻度盤區(qū)域,并提出了一種改進(jìn)中心點投影的方法來檢測圓形比例區(qū)域,在儀表刻度不均勻時能適用。文獻(xiàn)[8]提出采用隨機樣本一致性方法克服背景圖像干擾的方案,并使用二值化閾值方法來分割指針區(qū)域以解決指針陰影問題。文獻(xiàn)[9]提出了一種無先驗知識的儀表自動檢測與讀數(shù)算法,通過橢圓檢測和非極大值抑制檢測表盤區(qū)域,結(jié)合分扇區(qū)選點算法、最大極值穩(wěn)定區(qū)域算法等算法操作完成儀表讀數(shù),可解決對儀表先驗知識不充足時無法讀數(shù)的問題。上述文獻(xiàn)所提方法雖然能實現(xiàn)對于指針式儀表的自動識別,但主要基于傳統(tǒng)機器視覺的檢測算法與分割算法,圖像在環(huán)境復(fù)雜時讀數(shù)難度大,且圖像處理步驟繁瑣,影響讀數(shù)精確度。隨著深度學(xué)習(xí)的興起,其應(yīng)用顯著提高了指針式儀表檢測和讀數(shù)的準(zhǔn)確性。文獻(xiàn)[10]提出了一種基于NiN(network in network)網(wǎng)絡(luò)結(jié)構(gòu)的儀表自動讀數(shù)解決方案,能對不同模擬刻度的儀表進(jìn)行高效檢測,但這種方案的檢測精度受環(huán)境影響較嚴(yán)重。文獻(xiàn)[11]提出一種基于計算機視覺的指針式儀表自動檢測與識別方法,該方法能根據(jù)檢測到的儀表位置調(diào)整相機狀態(tài),再通過透視變換、霍夫變換等步驟得到最終儀表讀數(shù),但該方法對硬件要求較高,并且使用霍夫變換識別指針容易導(dǎo)致識別精度低。文獻(xiàn)[12]引入Faster R-CNN檢測表盤、指針位置,并使用圖像分割的方法替代霍夫變換提高了檢測指針的準(zhǔn)確率,但是該方法的流程較多,在計算指針傾角的過程中容易積累誤差。
本文提出了一種基于目標(biāo)檢測的指針式儀表自動讀數(shù)方法,此方法針對在指針式儀表檢測困難時,讀數(shù)精度會受到影響的問題,適用于儀表所處環(huán)境復(fù)雜的情形。該方法首先利用改進(jìn)的YOLOv5算法對儀表表盤區(qū)域進(jìn)行目標(biāo)檢測,提取表盤圖像并進(jìn)行分類;其次,針對檢測到的儀表,對提取出的表盤區(qū)域做2次透視變換,以校正傾斜表盤;最后將無傾斜的表盤展開成矩形,再利用原始YOLOv5算法對指針位置進(jìn)行識別,通過距離法計算結(jié)果,實現(xiàn)指針式儀表的自動讀數(shù)。
本文提出的指針式儀表自動讀數(shù)方法的流程圖如圖1所示。該方法流程為:巡檢機器人在進(jìn)入到儀表檢測模式后,相機獲取存在儀表的當(dāng)前視野圖,通過儀表表盤檢測、儀表傾斜校正、儀表指針檢測及讀數(shù)3個模塊得到最終的儀表讀數(shù)結(jié)果。
圖1 儀表自動讀數(shù)方法流程
目前成熟的目標(biāo)檢測算法有Faster-RCNN[13]、Mask-RCNN[14]、YOLO[15]、SSD[16]等,其中YOLO系列算法作為One-stage算法的典型代表,算法檢測速度和精度較平衡,能夠廣泛地應(yīng)用在各類工業(yè)場所,以解決實際問題。本文選擇YOLOv5s網(wǎng)絡(luò)進(jìn)行改進(jìn),改進(jìn)后的YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。對于骨干網(wǎng)絡(luò),在最后一個C3模塊后面加上全局注意力模塊(global attention mechanism,GAM)[17],以強化網(wǎng)絡(luò)提取能力;在頸部區(qū)域,新增尺寸為輸入圖像1/4的特征圖,從而提升網(wǎng)絡(luò)針對較小目標(biāo)的特征挖掘能力[18];最后,引入Decoupled-head解耦頭[19],以改進(jìn)網(wǎng)絡(luò)模型檢測模塊的分類和定位效果。
圖2 改進(jìn)的YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)圖
1.1.1 加入全局注意力模塊
在YOLOv5原始網(wǎng)絡(luò)中,對每一層特征進(jìn)行提取時給予同等的關(guān)注度,這種方法忽略了不同特征通道具有不同的重要度,將導(dǎo)致部分目標(biāo)提取困難。針對此網(wǎng)絡(luò)特征差異性敏感度較弱問題,本文在骨干網(wǎng)絡(luò)中加入GAM模塊,利用該模塊對特征利用能力強的優(yōu)點,減少信息損失并且提高全局特征交互,模塊概述圖如圖3所示。
圖3 全局注意力機制概述圖
給定輸入特征圖F1∈RC×H×W,中間狀態(tài)F2和輸出F3定義為:
F2=Mc(F1)?F1
(1)
F3=Ms(F2)?F2
(2)
式中:Mc和Ms分別為通道注意力圖和空間注意力圖;?表示元素乘法運算。
通道注意力子模塊使用三維排列來保留三維信息,并使用2層多層感知器(multi-layer perceptron,MLP)放大跨維的通道空間依賴關(guān)系。在空間注意子模塊中,使用2個卷積層進(jìn)行空間信息融合以關(guān)注空間信息,并刪除了池化操作以進(jìn)一步保留特性映射。
因此,使用全局注意力模塊能使網(wǎng)絡(luò)目標(biāo)提取能力更強。
1.1.2 檢測端優(yōu)化
在原始YOLOv5網(wǎng)絡(luò)中,使用3種不同尺寸的特征圖檢測不同大小的目標(biāo)。而根據(jù)網(wǎng)絡(luò)中使用特征金字塔網(wǎng)絡(luò)(feature pyramid network,FPN)[20]的思想,經(jīng)過深層次卷積后的特征圖雖然擁有豐富語義信息,但在經(jīng)過多次卷積會丟失掉目標(biāo)的一些位置信息,影響較小目標(biāo)的檢測;淺層卷積后得到的特征圖語義信息較少,但目標(biāo)的位置信息卻比較豐富。
在一些工業(yè)場合中,部分儀表位置偏僻,導(dǎo)致采集到的儀表目標(biāo)在圖中占比較小。因此,本文在原始YOLOv5網(wǎng)絡(luò)中增加一個4倍下采樣過程,將通過該下采樣過程后的原始圖片特征送入后續(xù)特征融合網(wǎng)絡(luò),能得到新尺寸的特征圖,此特征圖具有較小感受野且位置信息較豐富。新增特征圖將位置信息向檢測端傳遞,從而檢測端能在4個尺度上進(jìn)行目標(biāo)檢測,有利于提升對于較小目標(biāo)的檢測性能,以優(yōu)化網(wǎng)絡(luò)整體檢測效果。
1.1.3 引入解耦頭(decoupled head)
傳統(tǒng)的YOLO系列網(wǎng)絡(luò)在head部分采取的都是耦合頭部(coupled head),而文獻(xiàn)[21]表明,對于目標(biāo)檢測任務(wù),分類與回歸之間存在沖突,采用傳統(tǒng)的耦合檢測頭會導(dǎo)致模型性能降低,YOLOX[19]算法采用解耦頭方法,在目標(biāo)檢測任務(wù)上取得了較好效果,解耦頭示意圖如圖4所示。本文引入解耦頭替換原有耦合頭部,解耦頭經(jīng)1×1卷積后,將通道維數(shù)減小至統(tǒng)一通道數(shù),再接入2個平行的3×3卷積層,分別用于分類任務(wù)和定位、置信度任務(wù),對于用于定位和置信度任務(wù)的分支再使用2個平行的1×1卷積進(jìn)行解耦,最終能使分類、定位和置信度檢測分別采用不同的檢測層。
圖4 解耦頭示意圖
利用改進(jìn)YOLOv5網(wǎng)絡(luò)可以在復(fù)雜環(huán)境下檢測和提取目標(biāo)表盤區(qū)域,并對儀表種類進(jìn)行分類。而由于儀表表盤平面與相機平面一般存在角度偏差,所以提取出的表盤區(qū)域圖像并不是圓形,而是具有傾斜角度的畸變圖像。因此需要通過透視變換對待檢測圖像進(jìn)行處理,將其修正為正面視角圖像從而減小讀數(shù)的誤差。儀表傾斜校正模塊主要包括利用AKAZE[22]算法進(jìn)行關(guān)鍵點匹配后的次透視變換[23]和對一次透視變換后的圖像進(jìn)行橢圓擬合[24]后的二次透視變換。一次透視變換的作用是,將待檢測圖像校正成為同模板圖像一樣的無傾斜圖像;二次透視變換的作用是得到儀表圓心,并為展開提供中心,以及保證待檢測圖像校正為圓形,從而減小給后續(xù)步驟帶來的誤差。
1.2.1 基于AKAZE算法的儀表透視變換
首先,需要對每個類型的儀表,都提前獲取一張居中且無傾斜的儀表表盤圖像作為模板圖像,且對模板圖像上包括起始刻度點、終止刻度點在內(nèi)的關(guān)鍵點進(jìn)行標(biāo)注并保存標(biāo)注數(shù)據(jù);接著,針對每張待讀數(shù)的圖像和提前獲取到的模板圖像,在做灰度化處理之后,經(jīng)AKAZE算法進(jìn)行特征點檢測,并用雙向匹配法匹配特征點,然后利用RANSAC[25]篩除圖像中匹配誤差較大的特征點,獲得單應(yīng)性矩陣M;最后,通過得到的矩陣M對待讀數(shù)圖像做透視變換,向模板圖像校正。
(1)AKAZE算法。AKAZE算法包括3個步驟:構(gòu)建非線性尺度空間、特征點檢測及定位、M-LDB(modified-local difference binary)特征描述子生成。其中,AKAZE算法采用改進(jìn)局部二值微分算法的M-LDB算法進(jìn)行特征點描述,該算法利用非線性空間提取的梯度和強度信息,在旋轉(zhuǎn)不變性和尺度不變性上均有較好的魯棒性。因此,本文利用AKAZE算法能較好檢測到待讀數(shù)圖像與模板圖像中可以匹配的特征點。
(2)RANSAC算法與透視變換。雙向匹配后得到的匹配結(jié)果依舊存在錯誤匹配點,不篩除誤匹配點會影響后續(xù)透視變換的效果,因此采用RANSAC算法剔除誤匹配點。該算法是在已得到匹配點的基礎(chǔ)上,隨機從中抽取4個點作為樣本點,計算出單應(yīng)性矩陣;然后計算所有匹配點與矩陣間的投影誤差,若該誤差小于閾值,則在剩余匹配點中選擇1個點加入樣本點,同時繼續(xù)按此前方式進(jìn)行計算比較,不斷更換新的矩陣,直到找到最佳的單應(yīng)性矩陣。透視變換則是利用此前找到的最佳單應(yīng)性矩陣,將圖像從當(dāng)前平面投影至新的視平面,實現(xiàn)圖像校正。
1.2.2 基于橢圓擬合的儀表透視變換
本步驟基于由AKAZE算法透視變換后得到的圖像,因此將本次變換稱為二次透視變換。由于通過一次透視變換是基于模板圖像的透視變換,因此可用模板圖像標(biāo)注的關(guān)鍵點來擬合橢圓,利用擬合后橢圓的長短軸端點作為變換矩陣的計算依據(jù),從而實現(xiàn)保證待匹配圖像向模板圖像校正的目的,同時擬合橢圓后能得到表盤圓心,為表盤展開提供條件。橢圓擬合是用橢圓方程表示平面上點的分布,即找到一個使平面上點盡可能靠近該橢圓的圓。本文使用最小二乘法擬合表盤橢圓,求解出平面上橢圓的一般方程如式(3)所示。
F(x,y)=Ax2+Bxy+Cy2+Dx+Ey+1=0
(3)
式中A、B、C、D、E為橢圓一般方程系數(shù)。
根據(jù)透視變換原理,變換矩陣通過2個視平面中4個不同點對應(yīng)的坐標(biāo)值得到唯一解。因此,在得到擬合出的橢圓方程后,求解出橢圓長短軸端點作為變換矩陣計算依據(jù),從而達(dá)到校正效果,此次變換如圖5所示。
圖5 基于橢圓擬合的透視變換
經(jīng)過目標(biāo)檢測與傾斜校正后,能得到圓形且無傾斜的指針儀表圖像,通過獲取指針位置并采用距離法就能得到儀表示數(shù)。儀表指針檢測及讀數(shù)主要分為表盤展開、指針目標(biāo)檢測和基于距離法的讀數(shù)計算3個部分。
1.3.1 表盤展開
為了便于采用距離法進(jìn)行儀表讀數(shù)計算,需要利用極坐標(biāo)變換[26]將表盤圖像由圓形展開為矩形。在二次透視變換階段,得到了表盤刻度區(qū)域的圓心,以該圓心為變換中心進(jìn)行極坐標(biāo)變換,將圖像變換到極坐標(biāo)系。極坐標(biāo)變換表達(dá)式如(4)、式(5)所示:
(4)
(5)
式中:ρ、θ分別為極坐標(biāo)系極半徑和極角;xc、yc為變換中心;x0、y0為原坐標(biāo)系中像素點的橫縱坐標(biāo)。
得到展開圖像后,由于極坐標(biāo)展開的起點與圓形表盤刻度位置并不對應(yīng),通過圓形表盤刻度起點、終點位置信息能得到極坐標(biāo)變換后在矩形表盤上對應(yīng)的位置信息,對圖像進(jìn)行重新拼接,獲得最終只包含刻度所在區(qū)域的矩形表盤圖像。
1.3.2 指針目標(biāo)檢測和讀數(shù)計算
目前,對于指針位置的檢測大多基于傳統(tǒng)的圖像處理技術(shù),直接在截得的儀表表盤區(qū)域圖像上或者在最原始的圖像上,用傳統(tǒng)圖像處理方法定位儀表指針中軸線,此種方法往往需要對圖像進(jìn)行多步處理。本文得到矩形表盤圖像后,則能用YOLOv5對指針進(jìn)行目標(biāo)檢測,得到目標(biāo)包圍框,該包圍框的中軸線則為指針尖所在的直線,此方法與常規(guī)方法相比,減少了原始圖像中其他區(qū)域?qū)χ羔樦休S線定位過程的干擾。由于對指針的目標(biāo)檢測背景更加單一、目標(biāo)更大,因此更好檢測,本文選用原始YOLOv5網(wǎng)絡(luò)進(jìn)行指針位置的檢測。
得到指針位置后,即可用指針位置、最小刻度線位置和最大刻度線位置3者通過距離法公式得到最終讀數(shù)?;诰嚯x法求得的最終讀數(shù)r為
(6)
式中:W為矩形儀表寬度;Xp為指針線位置橫坐標(biāo);m為儀表量程;r0為儀表起始讀數(shù)。
本文選擇的巡檢平臺如圖6所示,該機器人頭部安裝有攝像機,可采集待讀數(shù)的儀表圖像,云臺可帶動攝像機繞水平軸與垂直軸轉(zhuǎn)動,機器人底部裝有移動輪,使機器人實現(xiàn)自由移動。巡檢機器人將采集到的儀表圖像傳輸至工控機進(jìn)行處理,工控機可根據(jù)處理結(jié)果發(fā)送指令,控制機器人各部件的操作。儀表讀數(shù)系統(tǒng)以Python為開發(fā)語言,在Ubuntu系統(tǒng)上進(jìn)行仿真實驗。實驗的硬件配置為Intel(R)Core i7-9700K CPU,NVIDIA Geforce RTX2080 Ti顯卡,軟件環(huán)境為CUDA10.0,Cudnn7.5.0。
圖6 巡檢平臺
對于儀表表盤的目標(biāo)檢測模塊,采用巡檢機器人采集實驗測試場地的2 400張儀表圖像,包含一種不同類型的儀表,按照8∶1∶1的比例隨機劃分成訓(xùn)練集、驗證集與測試集。訓(xùn)練時網(wǎng)絡(luò)輸入圖片大小為640 pixel×640 pixel,采用SGD優(yōu)化器,初始學(xué)習(xí)率為0.01,動量系數(shù)大小為0.937,Batch設(shè)為32,迭代次數(shù)400次。用平均準(zhǔn)確度均值(mean average precision,mAP)評價目標(biāo)檢測效果。
為評估本文改進(jìn)算法檢測性能,將本文提出算法與主流算法進(jìn)行對比分析,實驗選取了Faster-RCNN和YOLOX網(wǎng)絡(luò)模型進(jìn)行對比驗證,同時為驗證本文改進(jìn)點對原始YOLOv5網(wǎng)絡(luò)性能的影響,通過消融實驗來比較3種結(jié)構(gòu)的改進(jìn)效果,對比結(jié)果如表1所示。
表1 表盤檢測的性能 %
由表1可知,本文改進(jìn)算法在mAP上明顯優(yōu)于Faster-RCNN和YOLOX算法。且本文的3種改進(jìn)點均能使原始網(wǎng)絡(luò)的檢測性能得到提高,使用3種改進(jìn)組合的改進(jìn)網(wǎng)絡(luò)mAP提升最好。綜上所述,本文改進(jìn)算法相對原始YOLOv5算法檢測精度得到有效提升,對儀表表盤目標(biāo)能夠進(jìn)行準(zhǔn)確檢測,圖7為部分儀表檢測結(jié)果。
圖7 部分儀表目標(biāo)檢測結(jié)果
本文做一次透視變換時,其中一類模板圖像及其標(biāo)注示例如圖8所示。對儀表圖像進(jìn)行2次透視變換,完成傾斜校正后的圖像如圖9所示。表盤傾斜校正的效果對最終讀數(shù)精度會有直接影響,實驗結(jié)果表明本文校正方法能對圖像進(jìn)行有效校正。
圖8 模板圖像標(biāo)注示意圖
圖9 儀表校正效果示意圖
2.4.1 指針檢測結(jié)果分析
在得到傾斜校正好的儀表表盤圖像后,采用極坐標(biāo)變換對不同種類儀表表盤進(jìn)行展開。將展開后的儀表數(shù)據(jù)集用原始YOLOv5網(wǎng)絡(luò)進(jìn)行訓(xùn)練,同樣以mAP評價目標(biāo)檢測效果,在測試集上得到mAP為99.5%,證明YOLOv5對指針的目標(biāo)檢測在精度上有較好效果,圖10為展開儀表圖像檢測到指針的示意圖。
圖10 指針目標(biāo)檢測示意圖
2.4.2 讀數(shù)結(jié)果分析
在得到指針位置后,就可以通過距離法對儀表示數(shù)進(jìn)行計算,將采用本文方法的讀數(shù)結(jié)果與人工讀數(shù)相比較,對讀數(shù)誤差進(jìn)行定量分析。其中,對比實驗包括目標(biāo)檢測算法對儀表讀數(shù)結(jié)果影響分析和有干擾環(huán)境下讀數(shù)的結(jié)果分析。
(1)目標(biāo)檢測算法對儀表讀數(shù)結(jié)果影響分析。為驗證本文流程的有效性并分析目標(biāo)檢測性能對最終讀數(shù)的影響,對比了改進(jìn)YOLOv5前后自動讀數(shù)方法的性能。分別將量程為2.5 MPa的壓力表、量程為1.6 MPa的壓力表、量程為100 ℃的溫度表、量程為150 ℃的溫度表和量程為120 ℃的溫度表記為儀表1、儀表2、儀表3、儀表4和儀表5,每類儀表隨機抽取3組數(shù)據(jù)進(jìn)行測試,結(jié)果如表2所示。由表2可知,改進(jìn)YOLOv5后自動讀數(shù)結(jié)果的誤差均小于改進(jìn)前的誤差,表明本文的改進(jìn)策略能有效減小最終讀數(shù)誤差。且不同類型儀表通過本文方法讀數(shù)誤差均較小,其中最大相對誤差為1.718 6%,在讀數(shù)誤差可允許的范圍內(nèi),也表明本文方法能針對不同類型指針式儀表進(jìn)行準(zhǔn)確讀數(shù)。
續(xù)表
(2)有干擾環(huán)境下的指針讀數(shù)。在實際工作環(huán)境中,儀表所處環(huán)境較復(fù)雜,會導(dǎo)致拍攝的儀表圖片容易受到光照強度、污垢等因素的影響。為了測試本文方法的穩(wěn)定性,選取測試集中多組被干擾后的量程為1.6 MPa的壓力表的真實圖像進(jìn)行測試,各類干擾示例圖像如圖11所示,表3為其中部分測試結(jié)果。實驗表明,各類環(huán)境干擾會對讀數(shù)有影響,其中最大相對誤差為1.9089%,但都在預(yù)期允許的誤差范圍內(nèi),證明本文方法能在有干擾的情況下對儀表進(jìn)行較準(zhǔn)確的讀數(shù)。綜合表2與表3的情況,可知本方法對于不同影響、不同種類的儀表都能進(jìn)行較準(zhǔn)確的讀數(shù),具有一定泛化性和魯棒性,在所有測試樣本上進(jìn)行實驗后,驗證本文方法對于指針式儀表讀數(shù)的最大相對誤差小于2.5%,能在實際場合中應(yīng)用。
圖11 各類干擾示意圖
表3 不同環(huán)境下的部分儀表讀數(shù)結(jié)果
針對復(fù)雜環(huán)境下指針式儀表的讀數(shù)問題,本文提出了一種基于目標(biāo)檢測的指針式儀表自動讀數(shù)方法,該方法由儀表表盤檢測、儀表傾斜校正、儀表指針檢測及讀數(shù)3個部分組成。本文提出的方法在表盤檢測部分基于改進(jìn)的YOLOv5網(wǎng)絡(luò),改進(jìn)算法mAP相對原始算法提高了3.6%,達(dá)到98.7%,能有效從復(fù)雜環(huán)境中準(zhǔn)確檢測到表盤;并且本方法相對傳統(tǒng)方法減少了一些圖像處理步驟,化簡了流程。通過實驗證明,本方法對指針式儀表讀數(shù)的最大相對誤差小于2.5%,且具有較好的穩(wěn)定性與準(zhǔn)確性,能夠適應(yīng)多種干擾,滿足實際應(yīng)用的要求。