張長樂,金 鈞
(大連交通大學自動化與電氣工程學院,遼寧大連 116028)
智能巡檢取代人工巡查,是必然的發展趨勢[1]。絕緣子在野外工作時,很容易出現各類故障。因此研究基于圖像識別的絕緣子故障檢測算法對于智能巡檢工作具有重要意義[2-3]。
針對絕緣子的故障檢測,目前已有一定的研究。如文獻[4]將水平投影法用于定位絕緣子破損位置;文獻[5]采用雙向GRU(Gated Recurrent Unit)和PCNN(Pulse Coupled Neural Network)相結合抽取人物關系的方法;文獻[6]將YOLOv2 網絡結合垂直投影等方法進行檢測;文獻[7]通過圖片的深度特征來訓練SVM(Support Vector Machine)分類器。
該文算法在YOLOv5s[8]基礎上進行優化,成功檢測出破損(damage)、閃絡(flash)、臟污(dirt)三種故障,且速度、大小、精度都優于原算法,仿真驗證了該算法對于原始算法的提升。
YOLOv5[9-10]的初始先驗框尺寸來源于K 均值(K-Means)聚類算法,而改進后先驗框尺寸來源于K-Means++[11]算法。改進后的先驗框大小和默認的先驗框大小如表1 所示。

表1 默認先驗框和改進先驗框大小比較表
該文算法在骨干網絡中添加了SE注意力模塊[12],即把骨干網絡中的C3 模塊都修改為添加了SE 模塊的SEC3 模塊,有效提升了算法的特征提取能力。
為了驗證SE 注意力模塊的有效性,對帶有破損故障的絕緣子進行熱力圖仿真,效果如圖1 所示。

圖1 熱力仿真對比圖
從圖1可以看出,未使用SE 注意力模塊的網絡未側重故障處聚焦,甚至對于環境的關注更強;當加入SE注意力模塊后,對故障處的關注明顯有了一定的側重。
因為絕緣子的故障痕跡通常為扁平狀且大小較小,所以加強算法對中小目標的針對性、對多尺度特征的融合能力很有必要。
該算法在頸部網絡中引入了BiFPN[13]雙向特征金字塔,有效提升了算法的特征融合利用能力。
修改頸部網絡的concat 模塊即可引入BiFPN,原網絡的頸部中共有四處concat 模塊,為了將BiFPN的作用發揮到最大,該文將所有concat 全部修改為了BiFPN_Add。
改進后網絡整體結構如表2 所示,表中輸入為-1 時在,表示輸入來自上一層;為中括號時,表示同時來自好幾層,數字代表具體層數,如[-1,4]代表來自上一層和第四層,張量信息代表該模塊的輸入通道數、輸出通道數、卷積核大小、步長等參數。

表2 改進后YOLOv5s網絡結構示意表
該文的數據集來自于無人機拍攝故障絕緣子圖像共1 600 張;共有1 228 處破損故障,1 385 處閃絡故障,806 處臟污故障。
該文使用LabelImage 標注工具對所有絕緣子故障進行標注,共以三種故障為識別目標,分別將破損標注為damage、閃絡標注為flash、臟污標注為dirt。
對于1 600 張原始圖片首先采用隨機矩形遮擋、翻轉、調整色調等方式將圖像擴充至4 640 余張,從而提高模型的泛化能力和訓練效率。該文隨機將訓練集、驗證集、測試集的比例劃分為10∶1∶1。部分圖像數據增強效果如圖2 所示。

圖2 部分圖像增強示例圖
2.2.1 仿真環境
具體仿真環境如表3 所示。

表3 仿真運行環境
2.2.2 網絡訓練
在YOLOv5s 模型訓練中,模型結構的損失函數Loss 值越小越好。為了實現模型的最佳性能,該文將迭代次數設置為250,權重衰減系數設置為0.000 1,學習率動量設置為0.937,圖片尺寸為640×640,最大訓練批次設置為16。
Loss 曲線在0 到100 次時損失函數值急劇下降;在100 到200 次時損失數緩慢下降;在經過200 次迭代后,損失值在0.06 附近趨于穩定,模型達到最優狀態。總計Loss 曲線變化如圖3 所示。

圖3 該文算法的總計Loss曲線
在目標檢測領域,精度(Precision)、召回率(Recall)和mAP 是評估訓練算法性能和可靠性的常用指標。由于平均精度的概括性、代表性強于前兩個指標,故該文使用平均精度對絕緣子故障檢測算法性能進行評估。
精確率的公式為:
召回率的公式為:
式中,TP 表示被模型預測為正類的正樣本數量,FP 則表示被模型預測為負類的正樣本數量,而FN 則表示被模型預測為正類的負樣本數量。
平均精度的計算式為:
平均精度AP 是指在所有召回值的可能取值前提下,求得的所有精度的平均數。即mAP 的AP 值在所有類別下的平均值,計算公式為:
式中,Q為總類別數量。
通過訓練得到權重文件,使用權重文件對目標圖像進行檢測,部分結果如圖4 所示。示例結果中有兩處破損故障,七處閃絡故障,四處臟污故障,全部識別正確。

圖4 部分仿真結果示例圖
為驗證算法性能,在同一數據集中,對幾種常見目標檢測算法的評估指標進行了對比,具體情況如表4 所示。

表4 分類準確度比較表
由表4 可知,該文算法能夠有效提高對破損、臟污、閃絡的檢測精度。該文算法對三種故障的平均檢測精度均遠高于Faster R-CNN 和SSD。該文算法與YOLOv2 以 及原始YOLOv5s 相比,在FPS 和mAP上都有一定提升。除此之外,模型的參數量僅有13.8 MB,顯著優于其他算法,比原有的YOLOv5s 進一步縮減了3.5%。
該文共有三處改進模塊,將改進后的模型中的改進模塊逐個添加并進行訓練,驗證模型的改進模塊是否具有正面影響。消融實驗具體結果由表5所示。

表5 消融實驗結果表
實驗結果表明,每個模塊單獨應用均能對最終結果產生正向作用,mAP 和FPS 都是伴隨著改進增多逐漸提升。單個模塊中BiFPN 對于評估指標的提升最大;三個模塊同時使用對于速度和準確度的提升效果最明顯。
該文提出了一種基于YOLOv5s 的絕緣子故障檢測算法,該算法利用K-means++算法重新設計先驗框大小,在骨干網絡中融合SE 注意力模塊,在頸部網絡融合BiFPN 雙向特征金字塔。通過以上操作,使得絕緣子故障檢測的總體mAP 相比于原網絡提升了3.6%,達到91.4%,速度提升了5 FPS,達到30 FPS,且文件大小比原YOLOv5s小了0.5 MB,僅為13.8 MB。
該算法具有較強的深度學習能力,能高速準確檢測絕緣子故障、臟污、閃絡三類故障缺陷位置,且保持了輕量化的優點。未來將繼續探索如何減少算法參數量以及如何提升算法對小目標的識別能力。