黃楊樂天,劉宜勝,陳 錟,劉丹丹
(浙江理工大學 機械工程學院,杭州 310018)
以前國內(nèi)大多數(shù)的數(shù)據(jù)中心機房主要依靠人工目視的方式進行機房巡檢,但是隨著數(shù)據(jù)中心及通信機房的規(guī)模逐步擴大,巡檢工作也變得越來越繁重。據(jù)此,基于移動機器人的機房巡檢系統(tǒng)應運而生,實現(xiàn)無人值守,提高巡檢效率[1-2]。目前巡檢系統(tǒng)在電網(wǎng)行業(yè)應用比較廣泛,特別是在變電站、配電室等[3-4]。研究前期的儀表識別主要采用的是傳統(tǒng)的視覺算法,圖像識別的準確度非常依賴于人工設計的圖像特征提取方法[5]。傳統(tǒng)的圖像特征提取方法基于匹配的機制,利用識別對象的特征進行匹配實現(xiàn)目標檢測[6],但由于變電站的環(huán)境復雜導致該方法的魯棒性較差,難以滿足項目的需要。
近年來,以深度學習為代表的儀表識別技術已經(jīng)應用在機器人上[7-8]。基于深度學習的目標檢測技術從檢測過程可分為二階段和單階段兩類[9],代表的網(wǎng)絡有R-CNN 系列[10]和YOLO 系列[11-12]。本文從機房巡檢識別系統(tǒng)出發(fā),設計了基于深度學習的儀表定位算法以及讀數(shù)識別方法,并實裝于杭州某軌道交通信號系統(tǒng)龍頭企業(yè)。
儀表的總體識別方案如圖1 所示。由于儀表圖像中表盤占比往往較小,因此采用了對小目標檢測精度高的Faster R-CNN 網(wǎng)絡。目前沒有公開的機房儀表數(shù)據(jù)集,本實驗根據(jù)實際場景建立了一個數(shù)據(jù)集。首先收集了巡檢機器人采集到的圖像,按8∶1∶1的比例劃分為訓練集、測試集和驗證集供網(wǎng)絡模型訓練。為了提高模型的泛用性,避免過擬合,對訓練集進行了數(shù)據(jù)增強,包括旋轉(zhuǎn)、鏡像和縮放,改變圖像的亮度、對比度、噪聲。對這些方法進行隨機組合,來增加數(shù)據(jù)的多樣性,經(jīng)過數(shù)據(jù)增強,共得到了1584 張圖像。
圖1 指針儀表的識別流程Fig.1 Identification process of pointer instruments
為了提高檢測模型的精度,本文對其進行了改進。首先使用殘差網(wǎng)絡對原始圖像進行特征提?。唤又?,區(qū)域生成網(wǎng)絡根據(jù)特征圖在原始圖像中生成一定數(shù)量的候選框,對框內(nèi)對象進行分類和回歸計算,篩選包含較多目標的候選框,池化模塊處理篩選后的候選框;最后,目標分類模塊對候選框內(nèi)的內(nèi)容進行分類,坐標回歸模塊執(zhí)行坐標偏差量的回歸計算得到更接近目標實際邊緣的邊界框。本文使用改進的Faster R-CNN 網(wǎng)絡結(jié)構(gòu)如圖2 所示。
圖2 改進后的Faster R-CNN 網(wǎng)絡框架Fig.2 Improved Faster R-CNN network framework
常用的主干特征提取網(wǎng)絡有VGG16、ResNet50等。ResNet 最大的特點是使用了殘差塊,殘差塊的引入使其有更深的網(wǎng)絡架構(gòu),而不會造成梯度消失或過擬合,增加網(wǎng)絡的非線性,提高了檢測的精度;同時參數(shù)比淺層網(wǎng)絡更少,性能更好且收斂速度更快,計算速度大大提高。該結(jié)構(gòu)由2 個卷積層和1個跨層連接組成,如圖3 所示。這個跨層連接允許梯度直接跨過1 個或多個卷積層,可以將輸入的特征圖直接添加到輸出中,從而保留更多的特征信息。表1 中對比了不同深度的ResNet 網(wǎng)絡結(jié)構(gòu)。
表1 三種深度的ResNet 網(wǎng)絡結(jié)構(gòu)Tab.1 Three deep ResNet network structures
圖3 殘差結(jié)構(gòu)模塊Fig.3 Residual structure module
區(qū)域生成網(wǎng)絡依靠RPN(region proposal network)以卷積層提取的特征圖作為輸入,基于滑動窗口機制,在每個窗口位置上生成k 個錨點,每個錨點與多個不同尺度和寬高比的候選目標框相關聯(lián),通過對每個錨點進行二分類和邊界框回歸。候選框回歸層輸出是候選框的4 個位置坐標,分類層輸出是預測前景和背景概率的2 個分數(shù)。比較每個候選框的得分并進行分類,判斷候選框?qū)儆诎瑑x表還是背景,并利用線性回歸來獲得更接近儀表實際邊緣的邊界框。
RoI Pooling 將RoI 區(qū)域劃分為一個固定大小的網(wǎng)格,而固定大小網(wǎng)格可能無法完全覆蓋RoI,從而導致信息的丟失,且當RoI 很小時,RoI Pooling的固定網(wǎng)格大小可能會導致特征量不足。為了提高儀表表盤的識別精度,將原池化層中的RoI Pooling改進為RoI Align,它取消了RoI Pooling 的嚴格量化,將提取的特征與輸入對齊,避免了RoI 邊界的量化,保留浮點數(shù),通過雙線性插值計算多個樣本點的精確值,并將多個樣本點的最大值或平均值聚合以得到最終值。這樣,RoI Align 可以更精確地捕捉RoI 內(nèi)的特征,同時也可以充分利用RoI 內(nèi)的像素信息,從而提高了目標檢測和物體識別的準確性。
在RPN 訓練期間,F(xiàn)aster R-CNN 為網(wǎng)絡訓練的每個候選框分配一個二進制標簽。以下2 種類型的錨被指定為正標簽:具有最高交并比(IoU)的錨與外部目標框重疊;錨對于任何目標具有高于0.7 的IoU。此外,具有低于0.3 的IoU 的非正錨被分配負標簽。Faster R-CNN 的總損失函數(shù)包括分類和回歸損失,損失函數(shù)定義如下:
式中:i 為小批量數(shù)據(jù)中錨點i 的索引;pi為錨點i成為目標對象的概率,如果錨是目標對象(正),則目標真實標簽為1,如果錨是背景(負),則為0;Ncls為小批量的數(shù)目;Nreg為錨點的數(shù)量;ti為候選框與錨點的4 個坐標偏移量為實際的偏移量。這里輸出的是坐標偏移量,要得到修正后的錨點還要用原坐標和這個偏移量進行運算,偏移量計算公式如下:
式中:w、h、x 和y 分別表示候選框的寬度、高度、x 坐標和y 坐標;wa、w*分別定義為候選框和錨點框的偏移量和實際偏移量,同樣適用于x,y,h。對于分類部分采用雙對數(shù)損失函數(shù),其計算公式如下:
式中:R 是smoothL1函數(shù),其計算公式如下:
由于提取到的指針式儀表區(qū)域邊框可能會發(fā)生傾斜,影響計算指針夾角的精確度,需要對表盤區(qū)域進行圖片矯正。本實驗所涉及均為矩形儀表,故利用邊框直線的傾斜角度對其進行矯正?;趫D像邊緣檢測使用的各類算子對圖像進行處理,并進行霍夫變換檢測直線,如圖4 所示??梢园l(fā)現(xiàn),Sobel算子幾乎沒有檢測到邊框直線;Scharr 算子檢測到的直線過多,對后續(xù)篩選邊框直線造成了困難。對比Canny,Laplacian 兩類算子處理后的圖片,均可以很好地檢測出邊框直線,而經(jīng)過Laplacian 算子處理后檢測到的直線更貼合邊框且無其余直線影響。故Laplacian 算子處理后進行霍夫變換能得到更符合要求的直線,然后從中篩選出相互垂直的直線,并保留最外端的線段,通過仿射變換矯正圖片。矯正流程如圖5 所示。
圖4 各類邊緣算子檢測后的霍夫變換圖Fig.4 Hough transform graph after detection of various edge operators
圖5 儀表圖片矯正流程Fig.5 Instrument image correction process
經(jīng)過矯正后的儀表圖片存在背景噪聲等問題。為了精確提取指針,需要對圖像進行濾波和形態(tài)學處理。首先,遍歷整張圖像進行輪廓檢測,由于指針是細長型的輪廓,因此可以通過長寬比來篩選目標輪廓;然后使用霍夫變換來檢測指針所在的直線;在矯正后的圖像中提取到指針直線時,其與水平線的夾角即為指針的旋轉(zhuǎn)角度。其處理流程如圖6所示。
圖6 指針提取過程Fig.6 Pointer extraction process
最后使用角度法對指針式儀表進行讀數(shù),其計算公式為
式中:Vmin表示零刻度線數(shù)值;Vmax表示最大刻度線數(shù)值;θ0表示指針旋轉(zhuǎn)角度;θ1表示零刻度線與最大刻度線間的夾角。
本文使用的深度學習框架為Pytorch,操作系統(tǒng)為Windows 10。其中GPU 為NVIDIA GeForce RTX 3090,顯存為32 G;Cuda 與Cudnn 版本11.3、Pyotrch版本1.11、Python 版本3.9、Opencv 版本4.5。實驗中的參數(shù)設置batch_size=8,epoch=500,學習率=0.001,權(quán)重變化=0.0001。
本文采用參數(shù)量(Parameters)、精確度(Precision,P)、召回率(Recall,R)、平均精確度(mAP)和F1 評分指標對模型的性能進行了客觀的評價。參數(shù)量指的是模型所包含的參數(shù)的數(shù)量。精確度是最常用的評價指標,它是正確的目標數(shù)除以檢測到的目標數(shù)。召回率是所有正例被分對的比率。平均精確度是衡量模型在所有類別中的平均值。F1 評分為精確度和召回率的加權(quán)平均值。具體計算公式如下:
式中:TP 為將正類預測為正類數(shù)樣本數(shù)量;FP 為將負類預測為正類數(shù)樣本數(shù)量;FN 為將負類預測為負類數(shù)樣本數(shù)量;TN 為將正類預測為負類數(shù)樣本數(shù)量。
4.3.1 網(wǎng)絡改進對比
表2 所示為不同池化策略的檢測結(jié)果對比,可知采用RoI Align 的每類儀表檢測精度均高于RoI Pooling,特別是對于電流表表盤,其準確度提高了10%。表3 顯示隨著ResNet 網(wǎng)絡層數(shù)的加深,模型的識別精度越來越高,說明在本數(shù)據(jù)集上加深網(wǎng)絡更好地提取了表盤特征,提高了模型的識別準確率,其中ResNet152 提升精度最高,平均提升了0.42%。
表2 不同池化策略的識別準確率Tab.2 Detection accuracy of different pooling strategies
表3 不同ResNet 層數(shù)對比Tab.3 Comparison of different ResNet layers
4.3.2 消融和對比實驗
為了驗證網(wǎng)絡改進的有效性,對改進Faster RCNN 進行了消融實驗,并和目前主流的YOLO 系列檢測模型性能進行了對比。由表4 可以看出,經(jīng)過改進池化策略和加深殘差網(wǎng)絡層數(shù)的Faster RCNN 比原模型的mAP 提升了6.2%,F(xiàn)1 得分提高了0.06。由表5 可以看出,輕量化模型YOLOv7-tiny的平均準確率高于其他YOLO 模型,改進Faster RCNN 的F1 得分與YOLOv7 系列相對持平,mAP 高出0.76%。
表4 Faster R-CNN 消融實驗結(jié)果Tab.4 Faster R-CNN ablation experimental results
表5 主流模型對比實驗Tab.5 Comparison experiment of mainstream models
4.3.3 指針讀數(shù)結(jié)果
搭載本文算法的巡檢系統(tǒng)能夠?qū)χ羔樖絻x表做出準確識別。隨機選取10 個儀表圖像,將本實驗的識別結(jié)果與真實讀數(shù)進行比較,得到相對誤差,讀數(shù)實驗如表6 所示。平均相對誤差在0.73%,最大誤差穩(wěn)定在2%之內(nèi),取得了較好的準確度,符合巡檢識別的精度要求。
表6 讀數(shù)結(jié)果對比Tab.6 Comparison of reading results
本文從機房巡檢識別系統(tǒng)出發(fā),構(gòu)建了機房巡檢系統(tǒng)總體架構(gòu),同時對其方案進行設計?;谏疃葘W習的儀表定位算法,針對指針儀表的表盤讀數(shù)的邊緣檢測結(jié)合霍夫變換的識別算法,有效提高了識別準確率,且誤差小于2%。經(jīng)過軌道交通信號公司測試人員測試用例,最終得到指針式表計識別率為96%,最大讀數(shù)誤差小于4%,符合企業(yè)巡檢需求,并投入生產(chǎn)使用,具有較好的實際應用價值。