吳之昊,熊衛華*,任嘉鋒,姜 明
(1.浙江理工大學 機械與自動控制學院,浙江 杭州 310018; 2.杭州電子科技大學 計算機學院,浙江 杭州 310018)
電力設備銹蝕會導致電力變壓器、輸電線路發生故障,甚至會影響到電力系統的安全運行。目前的銹蝕檢測方法往往采用人工巡檢的方式,需要耗費大量的人力物力,檢測效果也不理想。為了增加電力設備銹蝕檢測的效率,利用廣泛架設的攝像頭和機器視覺技術的檢測方法已經成為了目前的主要發展方向,宋偉[1]、Liao[2]、張洪才[3]等根據銹蝕區域的顏色特征在RGB、HSI等不同的顏色空間中進行銹蝕檢測,盧樹杰等[4]根據單目視差原理改進了檢測算法,降低了誤檢測概率。此外,Chang[5]采用了傅里葉變換、戴玉靜等[6]添加了紋理特征對銹蝕區域進行識別檢測,取得了較好的檢測效果。
由于電力設備一般架設在室外,受環境影響較大,因此基于傳統圖像處理的檢測算法具有一定的局限性。而逐漸發展基于深度學習的目標檢測方法可以有效地避免這個問題。Luca Petricca等[7]利用卷積神經網絡對銹蝕圖像進行分類,李輝等[8]結合傳統圖像處理與深度學習,提高了檢測的準確率。王達磊[9]、周自強[10]等則采用了深度學習的方法對銹蝕區域進行了分割和識別,有效地提取出了銹蝕區域。
目前電力設備的銹蝕區域檢測存在目標樣本少,實時性和可靠性要求高等特點,一般的通用目標檢測算法不能很好地滿足需求。因此該文基于目前表現最佳的YOLOv3算法,采用深度可分離卷積對模型進行壓縮,并結合空間-維度雙注意力機制提出一種Attention-YOLOv3檢測方法,同時在構建的銹蝕檢測數據集上進行訓練,所獲得的模型能有效地對銹蝕區域進行檢測和識別。
目標檢測算法分為二階段算法(two-stage)和一階段算法(one-stage),其中YOLO(you only look once)系列是一階段算法中非常有代表性的算法,采用了在同一個網絡中同時進行分類與回歸的方式,相比較以R-CNN[11]系列為代表的二階段算法雖然損失了部分精度,但大幅度縮減了檢測時間。YOLOv3算法[12]在v1和v2的基礎上增加了類似FPN[13]的多尺度檢測,增加了其在小目標檢測上的能力。同時YOLOv3針對不同的數據集,利用K-means對訓練集中的所有目標框進行聚類來得到候選框。所以YOLOv3算法可以很好地適應銹蝕目標大小、形狀多樣的特點,也可以滿足電力設備檢查的實時性需求。圖1所示為標準YOLOv3的算法結構。

圖1 標準YOLOv3的算法結構
注意力模型來源于人眼的選擇性注意機制,可以從大量信息中篩選出具有較高價值的主要信息,自從注意力模型最初被應用于循環神經網絡(RNN)之后,該技術就被廣泛地應用于圖像處理、語音識別等多個深度學習領域。注意力模型是通過訓練一個掩碼層,通過掩碼對該注意力域內的信息進行加權,利用分配不同的權重來使特征提取器忽略無效信息而關注有效信息。Hu等[14]在SENet(squeeze-and-excitation networks)中提出的SE-Block注意力模塊和Fu等[15]提出的應用于語義分割的DANet都采用了基于注意力機制的檢測方法,并取得了較好的檢測效果。圖像領域的注意力一般集中于用于提取不同特征的通道域和建立像素之間關系的空間域內。
其中,通道域的注意力利用不同維度之間的依賴關系進行建模,然后對原始特征進行加權重標定。通道注意力的算法模型結構如圖2(a)所示。
而空間域的注意力則通過提取空間內各像素之間的關聯性,形成一個空間上下文依賴度的關系掩碼,并將其以權重的形式分配給特征圖的每個像素位置,用于突出空間內的有效特征、抑制無效特征,從而達到對特征進行選擇和融合的作用。通道注意力的算法模型結構如圖2(b)所示。
文中提出一種改進的Attention-YOLOv3算法銹蝕區域檢測算法。首先采用K-means算法聚類得到適用于文中數據集的候選框,其次采用以深度可分離卷積為基本模塊的MobileNet-v3網絡替代YOLOv3的Darknet主干網絡,在大量減少計算量的同時保證一定的檢測精度,最后結合空間注意力和維度注意力的級聯雙注意力模型對特征選擇進一步優化得到最佳的特征表達。圖3為基于Attention-YOLOv3的銹蝕區域檢測算法模型的具體架構。

(a)通道域

(b)空間域

圖3 基于Attention-YOLOv3的銹蝕區域檢測算法
DarkNet是由YOLO系列作者Joseph Redmon提出的一個開源神經網絡框架。Darknet在YOLOv3上的表現已經很優越,但是由于其龐大的網絡結構,在實際運行中仍需要很大的計算量和推斷時間。雖然DarkNet提出了輕量級網絡Tiny-DarkNet,但是只對網絡結構做了簡單的精簡操作,沒有考慮到特征提取能力下架會導致檢測精度的大幅度下降的后果。
文中采用深度可分離卷積代替DarkNet中的標準卷積操作,并以此作為YOLOv3的特征提取主干網絡。深度可分離卷積和標準卷積的密集連接的方式的不同之處是,首先深度可分離卷積采用了一個1×1的卷積增加通道數,增加特征的表達能力,其次使用3×3的單通道分組卷積作用于單特征圖內的信息交流,最后再用1×1的卷積操作用于通道間的信息交流,因此可以在縮減參數的同時保證檢測精度不會大幅下降。
卷積操作實現了空間內的局部特征提取和通道間的信息交流,但是往往會喪失空間語義上的關聯度,同時不會對通道的重要性進行區分。因此可以使用空間注意力模型對空間內的特征進行依賴性分析,同時通過通道注意力模型對不同通道的特征圖進行加權得到更加有利于分類的特征圖,所以該文提出一種級聯的雙注意力模型用于對特征進行選擇。
空間注意力模型首先通過矩陣乘法構建每個像素點與其他像素點之間的關系,然后通過一個softmax函數對其進行關聯性分析并組成權重掩碼矩陣,再通過矩陣乘法對原始特征進行重標定得到空間注意力特征。隨后將空間注意力特征作為通道注意力模型的輸入,利用全局池化來表示全局特征,然后通過一個全連接層和sigmoid函數對其進行權重標定,最后再通過點乘來得到完整的注意力特征。級聯雙注意力模型完整結構如圖4所示。

圖4 級聯雙注意力模型
圖5為原圖像經過上采樣后得到的特征圖與經過空間注意力與通道注意力之后的對比,其中圖5(a)為原圖像,圖5(b)為卷積后的特征圖,圖5(c)為空間注意力后的特征圖,圖5(d)為通道注意力后的特征圖。

圖5 注意力模型前后的特征對比
由圖5可知,經過上采樣后的特征圖存在大量的無效特征,而在經過空間注意力模塊后,無效的特征被抑制了,電塔上的銹蝕特征則被提取出來,在此基礎上再通過通道注意力模塊對其進行加強,最后得到的特征圖更加有利于目標的分類定位。
文中采用的RustDetection銹蝕目標檢測數據以電纜、變壓器、電表、電箱等多種電力設備銹蝕故障圖片為基礎,同時通過網絡采集、實地拍攝等方式收集包含金屬管道銹蝕、車輛銹蝕、橋梁銹蝕等共計800張銹蝕圖像,并以3∶1的比例劃分為訓練集和測試集。并利用LabelImg標注軟件對數據集進行標定,按照COCO格式建立標準的數據集。
隨后結合Faster R-CNN的基于長寬比的anchor思想,提出一種改進的K-means聚類算法對訓練集進行聚類,不僅采用了IOU score,還增加了ratio作為參考依據用于更好地對細長型和扁平型目標框進行回歸。改進的距離公式如式(1)所示,其中λ1和λ2分別取0.8和0.2。
d(box,centroid)=1-(λ1IOU+λ2ratio)
(1)
共取得Avg IOU可以達到68.98%的[[13,19],[23,32],[28,49],[43,63],[77,45],[69,92],[99,117],[45,138],[192,191]]九種不同大小的預選框,并分別給三個尺度的特征圖分配三種不同大小的預選框。
算法模型的訓練和測試過程均在NVIDIA GTX 1080Ti GPU上進行。首先對輸入樣本進行歸一化,縮放為416×416,然后輸入算法模型進行訓練。
訓練過程采用遷移學習的方式,即整個網絡首先在具有17 125張圖片和20類的VOC2012公共數據集上進行預訓練,等網絡獲得較好的檢測效果后,將20類分類子網絡改為文中實驗所需的二分類子網絡。隨后將除該子網絡之外的特征提取網絡的參數凍結,利用提出的RustDetection數據集針對分類子網絡進行專項訓練,同時也防止因為數據集變化導致的整體網絡性能下降,20輪之后開放特征提取網絡,對整個網絡的特征提取能力進行訓練。圖6為采用了預訓練模型和隨機參數初始化的訓練loss曲線,可以看到采用了預訓練的模型的損失下降得更快,也可以更快地達到最小值。

圖6 遷移學習的Loss曲線
評價指標為AP(average precision),采用11-Point方法進行計算得到,即采用recall值在0到1之間每隔0.1時取最大的precision值繪制P-R曲線,求得precision的平均值即為AP值。其中,準確率(precision)、召回率(recall)、AP值的計算如下:
(2)
(3)
(4)
其中,TP表示正例被判真的個數,FP表示正例被判假的個數,FN表示負例判假的個數,x為11個recall值下的最大precision值。在實際的檢測中對于正樣本需要被檢測出來的要求更為嚴苛,因此召回率(recall)在銹蝕目標檢測中更為重要,也是最重要的指標之一。同時,由于AP值綜合了準確率和召回率進行考量,所以AP值為判定模型是否能正確識別銹蝕區域的主要判定標準。表1為各種模型與文中算法在RustDetection測試集上的對比。可以看出,Tiny-YOLOv3只是對網絡結構進行簡單的刪減,并沒有考慮其在精度上的變化,因此若直接采用Tiny-YOLOv3就會導致檢測效果大幅度下降,不能滿足現實中檢測的需求。而采用深度可分離卷積來代替DarkNet的YOLOv3算法在檢測效果上由于參數的下降帶了一定程度的精度下降,仍在可接受的范圍內,基本達到了與標準YOLOv3算法相同的水平。

表1 各模型的測試效果比較
文中在此基礎上添加了級聯的雙注意力模型,使得檢測精度大幅度上升,這是由于注意力機制在上采樣之后進行了特征的選擇,剔除了無效的冗余特征,留下了對分類和定位更有利的特征信息,不會被無效特征所誤導,因此可以更加精準地定位出銹蝕的區域。
表2為不同模型的權重文件大小和檢測時間對比。由于實際應用場景中沒有GPU進行檢測的加速,往往只有PC機作為檢測的主要設備,因此文中的檢測過程均在Intel Core i5-7200U CPU上進行。

表2 各模型大小和檢測時間比較
由表2可知,雖然Tiny-YOLOv3有最快的推斷時間,但是其權重文件比應用了DW_Conv的YOLOv3和文中算法都要大。這是因為深度可分離卷積相比較標準卷積有更多的矩陣運算,因此需要更多的時間用于推斷計算,但其仍就比標準YOLOv3提升了1.85到2.63倍。而文中算法相較于應用了DW_Conv的YOLOv3,由于加了級聯雙注意力模型,所以推斷時間有0.3 s的延遲,相比較標準的YOLOv3算法可以縮短46.7%的檢測速度。
在模型大小上,標準YOLOv3具有龐大的體量,需要很大的存儲內存,不適合部署在工業設備上,應用了深度可分離卷積后減少了12倍,已經可以滿足了工業設備的存儲需求。而文中方法增加了雙注意模型的微量參數,增加了2 MB的內存需求,但是綜合檢測速度和檢測精度,文中算法依舊是最佳的檢測算法。
最終的檢測效果如圖7所示,可以較好地檢測出檢修電源箱、輸電線、電力箱等上的銹蝕區域。

圖7 模型測試結果
提出的基于Attention-YOLOv3的銹蝕區域檢測算法得到了實驗驗證,實驗結果表明該算法可以在輕量級的檢測模型上得到更好的檢測效果,若可以在專用的圖形處理器上,該算法可以做到10 fps以上的檢測效率,完全滿足了實時監測的要求。在下一階段,將進行模型的壓縮和優化,并將其部署在移動端設備上,并和報警設備進行結合,做到現場檢測、現場報警、現場處理。