張 欣,王紅星,陳玉權,黃 鄭,沈 杰,高小偉
(1.江蘇方天電力技術有限公司,南京 211102;2.北京御航智能科技有限公司,北京 100085)
絕緣子是架空輸電線路中不可或缺的部件,在輸電線路中起到防止電流接地以及支撐導線的雙重作用。一些常見的絕緣子缺陷如絕緣子爆片、絕緣子電弧燒傷、絕緣子傘裙破損等會引起絕緣子絕緣的失效,從而損害輸電線路的使用和運行壽命。因此對絕緣子進行缺陷檢測是輸電線路巡檢過程中必不可少的環(huán)節(jié),但巡檢圖像中絕緣子區(qū)域目標背景較為復雜且缺陷形狀多變、大小不一,這些缺陷特性都為絕緣子缺陷檢測研究帶來一定挑戰(zhàn)。
隨著無人機技術的成熟,輸電線路無人機巡檢技術逐漸代替人工巡檢技術[1],將會產(chǎn)生海量的巡檢圖,尤其在桿塔精細化中一些關鍵部位需要進行缺陷檢測。目前,在絕緣子串檢測方面已有一些研究成果,如基于方向梯度直方圖檢測算法、紅外成像法、支持向量機方法以及深度學習算法在絕緣子串檢測的應用[2]。其中,無人機巡檢 + AI方案的提出減少了人為干擾因素,深度學習算法的應用使得電力巡檢變成一件智能且便捷的事情[3]。趙振兵等人提出了利用區(qū)域全卷積網(wǎng)絡模型對巡檢圖像中的絕緣子進行檢測,在 R-FCN 網(wǎng)絡中引入 ASDN(Adversarial Spatial Dropout Network)解決了絕緣子部分遮擋難以檢測的問題[4]。陳春玲等人提出Faster R-CNN+VGGNet 網(wǎng)絡方法實現(xiàn)了復雜背景下的絕緣子目標的高精度識別[5]。Jiaming Han 等人采用級聯(lián)模型方法來檢測絕緣子爆片,首先定位絕緣子串的位置,運用YOLO-v3微型網(wǎng)絡檢測定位區(qū)域中的絕緣子爆片缺陷,實驗證明該方法非常有效,且YOLO-v3微型網(wǎng)絡節(jié)省了檢測時間[6]。潘龍等人利用深度卷積神經(jīng)網(wǎng)絡算法對復合絕緣子實現(xiàn)了憎水性判別,提高了檢測效率和準確性[7]。Zenan Ling等人利用兩個模塊解決了低信噪比圖像中絕緣子爆片的問題,首先基于Faster R-CNN進行目標檢測,然后將檢測結果利用Unet網(wǎng)絡實現(xiàn)分類,實驗結果表明此方法非常有效[8]。
上述對絕緣子檢測相關工作做了很多探索,但針對多類型絕緣子缺陷檢測的研究較少,目前絕緣子識別與缺陷檢測研究面臨著以下挑戰(zhàn):
1)缺少用于無人機巡檢圖像中絕緣子缺陷檢測的公開可用數(shù)據(jù)集及標準的標注方案。
2)現(xiàn)有算法大多集中于絕緣子爆片這一類缺陷進行的算法研究,但在實際工作中絕緣子電弧燒傷、絕緣子傘裙破損等其他缺陷也會造成絕緣子絕緣的失效,因此需要對絕緣子多種缺陷目標檢測,增加了檢測難度。
3)絕緣子材質(zhì)復雜多變導致缺陷形態(tài)多變、大小不一增加了檢測復雜度。
針對以上問題,為有效實現(xiàn)無人機巡檢圖像中多類絕緣子缺陷的檢測,收集了足夠的絕緣子巡檢圖像,探索出了可靠的絕緣子缺陷標注方式,建立標準的絕緣子缺陷數(shù)據(jù)集并提出使用Cascade R-CNN[9]為基礎算法,通過設定不同的IoU(Intersection over Union)閾值利用Cascade R-CNN訓練了多級聯(lián)的檢測器,可以使網(wǎng)絡更加適應各種大小不一絕緣子缺陷目標,從而提升檢測精度。此外,在原有網(wǎng)絡基礎上進行了方法的改進,最終聯(lián)合絕緣子串模型實現(xiàn)了缺陷檢測。經(jīng)過實驗對比測試,筆者提出的方法能夠有效的識別各類絕緣子缺陷。
相較傳統(tǒng)分類方法(如支持向量機方法、決策樹分類等)深度學習方法是機器學習中的熱點方向,作為一種以模擬人腦映射為原理的圖像處理算法它具有強大的自學習能力、容錯能力,尤其在目標識別領域表現(xiàn)突出,如人臉識別、自動駕駛等,這些對于將深度模型應用到絕緣子檢測上有著很好的借鑒作用。
一般情況下一個具有較好泛化能力的深度模型必然需要依賴于一定數(shù)量的樣本數(shù)據(jù)。場景豐富、目標形態(tài)多樣的訓練數(shù)據(jù)能夠使得深度網(wǎng)絡在訓練中得到更加準確的參數(shù)。考慮到目前缺少公開可用的電力數(shù)據(jù)集,需要構建專業(yè)的巡檢圖像絕緣子缺陷數(shù)據(jù)集。
根據(jù)絕緣子受損類型及損傷特點將絕緣子數(shù)據(jù)中缺陷分為絕緣子爆片、絕緣子電弧燒傷、絕緣子傘裙破損3類。示意圖見圖1,標注方式需遵循以下規(guī)則:
圖1 絕緣子缺陷Fig.1 The defect of insulator
1)目標需要完全包括在標注框內(nèi)部。
2)目標框盡量少地包含除缺陷外的背景干擾。
3)摒棄不確定目標(模糊目標)。
訓練樣本挑選過程中盡量篩掉一些質(zhì)量不佳(如模糊、噪音嚴重等)的巡檢圖片。最終確定絕緣子缺陷訓練集中絕緣子爆片數(shù)量為3 120張、絕緣子電弧燒傷數(shù)量588張、絕緣子傘裙破損537張,測試集中絕緣子爆片數(shù)量為614張、絕緣子電弧燒傷數(shù)量111張、絕緣子傘裙破損128張,詳見表1。由于3類樣本數(shù)量不均衡,會導致訓練模型泛化能力差且容易出現(xiàn)過擬合,為使網(wǎng)絡更加穩(wěn)健缺陷數(shù)據(jù)采用數(shù)據(jù)增強的方式對燒傷與破損數(shù)據(jù)擴充。在增加樣本復雜度方面,使用調(diào)整圖片亮度、圖像裁剪的方式進行了數(shù)據(jù)增強,使網(wǎng)絡能足夠多地學習到目標變化中的深層特征。
表1 數(shù)據(jù)集Table 1 Data set
眾所周知,深度神經(jīng)網(wǎng)絡主要任務為目標分類與目標定位。在訓練時首先提取候選目標,然后將候選目標回歸到對應的真實標簽上進行分類,在這一關鍵步驟中網(wǎng)絡根據(jù)IoU閾值來確定候選目標是否合格,因此IoU閾值的選取決定了檢測目標的質(zhì)量。經(jīng)過對大量的輸電線路巡檢圖像進行標注,發(fā)現(xiàn)圖像中缺陷形態(tài)大小比較多變,尤其是一些電弧燒傷目標在形態(tài)顏色方面變化都較大,而且圖像中還包含背景干擾影響絕緣子缺陷檢測準確性。因此選取Cascade R-CNN網(wǎng)絡作為基礎網(wǎng)絡,可通過設定不同的IoU閾值,訓練多個級聯(lián)的檢測器,上個網(wǎng)絡輸出用于下一個網(wǎng)絡輸入,通過網(wǎng)絡間的級聯(lián)減少了缺陷目標多變對網(wǎng)絡造成的影響,使得輸出結果準確度逐步提升。
據(jù)統(tǒng)計,絕緣子爆片目標面積大小約為同圖片中電弧與燒傷目標的10倍,不同分辨率圖片中的同類目標的大小也可大致分為大尺寸,中尺寸和小尺寸3類。為解決多尺度目標檢測問題,首先將損失函數(shù)更改為Focal loss,并引入RoI Align方法以解決小目標的漏檢,在此基礎上訓練了絕緣子串模型,將絕緣子串的檢測區(qū)域設置為RoI供下一個檢測分支使用,以消除巡檢圖像中的大多數(shù)背景干擾。除此之外,在網(wǎng)絡中還引入了FPN結構,在不增加原有模型計算量的情況下,大幅度提升了較小缺陷目標檢測的性能[10]。
1.2.1 損失函數(shù)的改進
在實際訓練工作中經(jīng)常會遇到這樣一個問題:正負樣本比例極度不平衡的,有時正負樣本接近500:1,而且困難樣本在負樣本中占比極少。在這種情況下就會導致另一個問題:梯度完全由簡易樣本控制,雖然loss很低,但由于簡易樣本比重大,依舊對loss有很大貢獻,從而導致困難樣本收斂不夠好。
基于標準的交叉熵損失函數(shù),F(xiàn)ocal loss的解決方法是賦予一個權重因子?給正樣本的loss,負樣本的權重為1-?,并將1-pt作為樣本的損失權重就能辨別簡易樣本/困難樣本,以及對比例失衡現(xiàn)象起到抑制作用[11]。Focal Loss的計算如下:
FL(pt)=-?t(1-pt)γlog(pt)
(1)
式中pt是不同類別的分類概率,?t和γ都是常數(shù)不參與訓練(0≤?t≤1,γ>0)。從表達式可以看出:
1)在前景類或者是背景類中pt值增大,權重(1-pt)γ減小,也就是說簡易樣本能夠通過權重進行控制。
2)?t用于調(diào)節(jié)正負樣本比例,若前景類用?t表示,背景類則表示為1-?t。
3)γ和?t兩者的最優(yōu)值彼此作用,因此兩者要聯(lián)合調(diào)整評估精準度。
1.2.2 加入RoIAlign
在網(wǎng)絡中加入ROI Align層,ROI Align 是在Mask-RCNN中提出的一種區(qū)域特征聚集方式,對ROI Pooling操作中兩次量化造成的區(qū)域不匹配問題進行了改進[12]。首先取消了兩次離散量化操作,為了將特征聚集操作連續(xù)化在過程中使用雙線性插值,從而使得圖像像素值精確到了浮點位。除此之外,ROI Align在兩步量化中不需要對像素值全部計算,具體操作如下:
1)遍歷所有RoI區(qū)域,保持浮點數(shù)邊界不做量化。
2)將RoI區(qū)域分割成m×m個等大子區(qū)域,每個等大子區(qū)域的邊界也不做數(shù)量的評定。
3)在每個等大子區(qū)域中計算特定4個坐標位置,用雙線性插值方式算出這4個坐標值,然后進行max-pooling操作。
在ROIAlign反向傳播中,xi×(r,j)是坐標為浮點數(shù)的采樣點(由前向傳播時得到),在池化前的特征圖中,與xi×(r,j)橫縱坐標相差一個像素內(nèi)的所有點(即雙線性插值時特征圖上的四個點)需要接受與之對應點yrj的回傳梯度,所以ROI Align的反向傳播公式如下:
(2)
式中,yrj表示池化后的第r個候選區(qū)域的第j個點,L是池化前的特征圖,xi表示L上的像素點,i*(r,j)表示點yrj像素值的來源;Δw、Δh分別為xi*(r,j)與xi縱坐標和橫坐標的差,d(i,i*(r,j))表示兩個像素間的間隔長度。
1.2.3 聯(lián)合絕緣子串模型檢測
盡管從之前的文獻中了解到深度網(wǎng)絡可以解決大部分變化因素的影響從而識別出缺陷目標,但實際場景中絕大多數(shù)絕緣子圖像的背景復雜度高,實現(xiàn)多類別絕緣子缺陷目標檢測時易將背景誤檢,且存在部分巡檢圖像尺寸大小超過5 000×5 000,使得目標在檢測時經(jīng)過網(wǎng)絡壓縮成為了極小目標,易被漏掉。針對這一問題,通過Cascade R-CNN訓練絕緣子串模型,將絕緣子串的檢測區(qū)域設置為RoI,最后檢測RoI區(qū)域中的絕緣子缺陷。經(jīng)實踐證實,這種方法可以消除航拍圖像中的大多數(shù)背景干擾,并且通過絕緣子串的提取步驟避免了將RoI區(qū)域壓縮為極小目標的操作,從而極大程度上提升了召回率。
在Cascade R-CNN基礎網(wǎng)絡中將原有的交叉熵損失函數(shù)更改為Focal loss,然后引入了RoI Align層以解決小目標的漏檢,并利用高精度絕緣子串模型進行聯(lián)合檢測,最終形成的新網(wǎng)絡如圖2。
圖2 改進的網(wǎng)絡結構Fig.2 The structure of improved network
實驗評估工作深度學習框架為pytorch,硬件環(huán)境為Tesla V100-DGX WORK STATION,里面搭載了四塊NVIDIA Tesla V100 Tensor Core GPU。所提出的網(wǎng)絡使用在ImageNet數(shù)據(jù)集上經(jīng)過預訓練的101層的ResNeXt 作為骨干網(wǎng)絡,而其他層的參數(shù)則是隨機初始化的,訓練過程中三次判斷正負樣本的IoU閾值分別設為0.5、0.6、0.7,輸入圖像訓練尺寸為((1 333,800),(2 000,1 200)),學習率初始化為0.02,經(jīng)多次迭代后學習率會逐漸降低,得到最終的模型,并在測試集上進行測試。
為了驗證所提出網(wǎng)絡的有效性和魯棒性,將其與Faster-rcnn網(wǎng)絡[]進行了比較,共訓練了4組實驗:
1)基于Faster R-CNN網(wǎng)絡的絕緣子爆片、絕緣子電弧燒傷、絕緣子傘裙破損缺陷模型訓練與識別。
2)基于Cascade R-CNN網(wǎng)絡的絕緣子爆片、絕緣子電弧燒傷、絕緣子傘裙破損缺陷模型訓練與識別。
3)在Cascade R-CNN網(wǎng)絡引入損失函數(shù)Focal loss及加入RoIAlign進行缺陷訓練與識別。
4)絕緣子串模型訓練及聯(lián)合絕緣子串模型進行缺陷識別。
為了公正地評價網(wǎng)絡,不同實驗中訓練迭代次數(shù)均保持一致,然后在制定的標準測試集進行了測試。在訓練階段,將網(wǎng)絡的最大迭代設置為30個epoch。
在數(shù)據(jù)集制作階段直接仿照了Pascal VOC數(shù)據(jù)集格式[14],在VOC數(shù)據(jù)集中評價指標主要運用AP值、召回率 (Recall)與準確率(Precision)來進行表示,在本實驗中也使用了AP值、召回率 (Recall)與準確率(Precision)來測試模型性能。AP值越高,代表檢測結果越準確。具體來說,可以按以下方式計算召回率與準確率:
Precision=TP/(TP+FP)
(3)
Recall=TP/(TP+FN)
(4)
式中,TP(True Positives)表示缺陷目標被正確分類的數(shù)量;FP表示背景干擾被錯誤認為是缺陷目標的數(shù)量;FN(False Negatives)表示缺陷目標被漏檢的數(shù)量。
通過表2可以看出,與常規(guī)FasterR-CNN方法相比,本研究提出的Cascade R-CNN方法在絕緣子爆片與絕緣子電弧燒傷兩類中準確率和召回率指標都有提高,雖在傘裙破損類別表現(xiàn)稍差,但總體mAP還是有明顯提升,基于Cascade R-CNN方法改進損失函數(shù)為Focal loss并加入RoIAlign層之后,檢出率大幅度上升,并且當加入高召回率的絕緣子串模型進行聯(lián)合檢測時絕緣子電弧燒傷缺陷精度上升非常明顯。具體分析發(fā)現(xiàn),本文方法對絕緣子爆片誤識別率很低,雖同時進行了多類絕緣子缺陷識別,但經(jīng)測試數(shù)據(jù)檢測其精度仍能達到0.904,絕緣子傘裙破損缺陷精度較低但recall值卻高出很多,電弧燒傷類別也具有較高的缺陷檢出率,平均AP值可達到0.744,這說明本文方法對多類型絕緣子缺陷檢出率有了較大的提升。
表2 不同方法在測試集上的表現(xiàn)Table 2 Performance of different methods on the test set
在模型測試過程中選擇了一些具有不同場景的典型缺陷圖像用以評估算法性能,見圖3至圖7。①缺陷目標極小的場景。圖3中絕緣子爆片目標極小,即使人眼不仔細觀察也會被漏檢,通過檢測結果對比發(fā)現(xiàn)加入絕緣子串模型聯(lián)合檢測能有效地消除部分極小目標漏檢率,增加召回率。②檢測圖像質(zhì)量不佳。由于飛行環(huán)境的局限性,某些采集的圖像質(zhì)量不如預期的好,如圖5光照條件差圖像極不清晰導致圖像對電弧燒傷目標的漏檢,但通過實驗對比發(fā)現(xiàn)改進算法也能有效的減少這部分情況的漏檢。③目標誤檢也是一種常見的現(xiàn)象。如圖4與圖6分別展示了絕緣子爆片缺陷和絕緣子電弧燒傷缺陷的誤檢對比情況,改進算法之后很大程度上消除了誤檢。④圖7主要是對絕緣子傘裙破損檢測結果進行的展示。絕緣子傘裙破損類別在檢測中難度較大,主要表現(xiàn)為絕緣子傘裙材質(zhì)不同(分為陶瓷絕緣子、玻璃絕緣子、復合絕緣子)導致不同材質(zhì)傘裙破損缺陷在外觀形態(tài)方面差異較大,經(jīng)過算法改進之后大部分傘裙破損能夠被正確識別出來。綜合以上得出結論,本方法實現(xiàn)了多類絕緣子缺陷目標檢測,并且有效的提升了檢出率,實驗證實比Faster R-CNN方法更準確,更可靠。
圖3 極小缺陷目標檢測結果對比Fig.3 Comparison of detection results of extremely small defects
圖4 極易誤檢目標檢測結果對比Fig.4 Comparison of detection results of easily mis-detected targets
圖5 極不清晰圖片目標檢測結果對比Fig.5 Comparison of target detection results in unclear pictures
圖6 多目標檢測結果對比Fig.6 Comparison of multi-target detection results
圖7 絕緣子傘裙破損檢測結果對比Fig.7 Comparison of detection results of insulators with sheds damaged
提出了一種改進的Cascade R-CNN算法,能夠?qū)旊娋€路絕緣子多種缺陷進行自動識別定位。經(jīng)巡檢圖像實踐測試所提方法有效的實現(xiàn)了3類絕緣子缺陷檢測并且提升了精度,可得以下結論:
1)利用無人機巡檢數(shù)據(jù)按照Pascal VOC數(shù)據(jù)格式制定了標準的絕緣子缺陷標注規(guī)則,構建了包含絕緣子爆片、絕緣子電弧燒傷、絕緣子傘裙破損多類型缺陷數(shù)據(jù)集,測試表明本文標注方法能夠增強缺陷數(shù)據(jù)特征并使其準確地識別出來。
2)基于Cascade R-CNN算法通過將損失函數(shù)更改為Focalloss解決了小目標漏檢現(xiàn)象,之后加入了RoI Align方法,并通過聯(lián)合絕緣子串模型提取絕緣子串區(qū)域并設置為RoI,用于聯(lián)合檢測多類絕緣子缺陷。實驗表明,本研究所提的算法能夠有效地檢測出3類絕緣子缺陷目標,mAP可達到0.744。
3)對實驗結果進行了不同場景的測試與分析。經(jīng)對比分析,本研究所提算法針對目標較小、圖像質(zhì)量不佳等情形下,比Faster R-CNN方法具有更好的缺陷檢出率。
本方法有效的實現(xiàn)了輸電線路巡檢圖像多類型絕緣子缺陷的檢測,經(jīng)實驗證實,所提算法在3類絕緣子缺陷檢測中表現(xiàn)良好。但由于高壓輸電線路中絕緣子材質(zhì)不同的變化,多類型絕緣子缺陷自動檢測仍是一項艱巨的任務,尤其在絕緣子傘裙破損類別仍有很大的進步空間。此外,實驗過程中收集的訓練樣本極大不均衡,尤其絕緣子傘裙破損類別訓練樣本量少,這也是導致其精度不高的另一個主要因素。因此,下一步的工作主要是進一步改善算法并收集和創(chuàng)建更多的絕緣子缺陷圖像,以提高所提出算法的通用性。