李 磊,李英娜,2*,趙振剛,2
(1.昆明理工大學(xué) 信息工程與自動化學(xué)院,云南 昆明 650500;2.云南省計算機技術(shù)運用重點實驗室,云南 昆明 650500)
絕緣子廣泛應(yīng)用于智能電網(wǎng)系統(tǒng)中,在電氣隔離和固定導(dǎo)線方面具有非常重要的作用。由于絕緣子長期處于高山、平原等相對惡劣的環(huán)境中,會受到雨雪、雷電、溫差等自然災(zāi)害的影響,因此,對輸電線路中的絕緣子進行定期巡檢尤為重要[1]。
隨著科技的發(fā)展,廣大科研工作者將無人機技術(shù)引入圖像處理領(lǐng)域。通過使用無人機,能夠及時獲得清晰的絕緣子圖片信息,利用目標檢測方式提取圖中的絕緣子,從而進行故障檢查、連接判斷等后續(xù)研究工作[2]。
目前傳統(tǒng)目標檢測算法主要包括Two-stage(Fast-RCNN[3]、Faster-RCNN[4])和One-stage(YOLO系列[5-7])兩類目標檢測算法。其中,YOLOv4[8]算法由于融合了其他算法的優(yōu)點,在檢測準確率和檢測速度上具有較高水平。劉悅等人[9]使用基于YOLOv4 和改進分水嶺算法對絕緣子檢測,解決了絕緣子在明暗交替區(qū)域背景難識別的問題;唐小煜等人[10]使用優(yōu)化的U-net 模型對絕緣子串語義分割,之后利用YOLOv4 網(wǎng)絡(luò)進行定位,提高了絕緣子定位速度和準確度;律方成等人[11]改進了Mosaic數(shù)據(jù)擴充算法,優(yōu)化YOLOv4 網(wǎng)絡(luò)參數(shù),降低了模型訓(xùn)練時的誤差。然而,以上各位學(xué)者關(guān)于理論算法的改進和數(shù)據(jù)集的選取均針對大型絕緣子的檢測,忽視了圖內(nèi)中小型絕緣子漏檢的情況。
中小目標檢測近來成為研究熱點,主要包括網(wǎng)絡(luò)結(jié)構(gòu)的改進和注意力機制的引入。黃繼鵬等人[12]通過修改Faster-RCNN 網(wǎng)絡(luò)結(jié)構(gòu),提高了利用低層特征為主要檢測依據(jù)的小目標檢測的精度;梁延禹等人[13]引入密集連接結(jié)構(gòu),增強淺層中小目標的上下文語義特征;張馨月等人[14]在SSD 算法上引入自注意力機制增強特征圖中關(guān)鍵信息權(quán)重,緩和特征圖的混疊效應(yīng)和位置偏移。這類改進算法雖提高了小目標檢測的準確率,但是忽略了錯誤檢測結(jié)果對網(wǎng)絡(luò)性能的影響。
中小型絕緣子相較完整絕緣子圖像會丟失更多的特征信息,導(dǎo)致模型預(yù)測時容易出現(xiàn)誤判現(xiàn)象。因此,本文提出改進的YOLOv4 中小型絕緣子檢測算法,解決中小型絕緣子容易錯檢、漏檢的問題。該改進算法具備以下特點:
(1)在特征提取網(wǎng)絡(luò)中引入SE 注意力機制改進CSP 結(jié)構(gòu),使其能獲得更豐富的絕緣子中小特征信息;
(2)在特征融合網(wǎng)絡(luò)中增加一層特征融合層,提高小型絕緣子檢測能力;
(3)使用改進k-means++方法對中小型絕緣子的標注框重新聚類先驗框以加快模型收斂速度,更適用于本文數(shù)據(jù)集特征;
(4)充分利用預(yù)測結(jié)果信息,引入負例挖掘模塊重新訓(xùn)練模型,以達到削弱復(fù)雜背景的干擾、提高模型檢測準確度、增強模型性能的目的。
相比YOLOv3 目標檢測算法,YOLOv4 算法在檢測精度和速度上都有提升,其網(wǎng)絡(luò)結(jié)構(gòu)主要由以下4 個部分構(gòu)成。
(1)CSPDarknet53 網(wǎng) 絡(luò)。CSPDarknet53 為 主干特征提取網(wǎng)絡(luò),由一個CBM 下采樣和多個CSP殘差結(jié)構(gòu)堆疊構(gòu)成,一方面提高了特征提取的能力,保留更多的特征信息;另一方面減少了計算量,提高了效率。CBM 卷積塊包括Conv 卷積網(wǎng)絡(luò)、BN標準化和Mish 激活函數(shù),結(jié)構(gòu)如圖1 所示。CSP塊由殘差塊、CBM 卷積塊和大殘差邊組成,如圖2所示。
圖1 CBM 結(jié)構(gòu)圖
圖2 CSP 結(jié)構(gòu)圖
Mish 激活函數(shù)的表達式為:
(2)SPP 結(jié)構(gòu)。SPP 模塊在進行最大池化處理時采用13×13、9×9、5×5、1×1 四個不同大小的核,能夠有效增大感受野,將上下文特征分離出來。
(3)PANet 網(wǎng)絡(luò)。PANet 網(wǎng)絡(luò)具有反復(fù)提取特征的特點,使用上采樣的方式對得到的特征層進行融合,有效利用了各層的特征信息,提高了檢測精度。
(4)YOLO 頭部網(wǎng)絡(luò),進行最后的預(yù)測輸出工作。
1.2.1 IoU 損失函數(shù)
IoU 損失函數(shù)[15]能夠用來確定正負樣本,評價目標輸出框與標注框之間的距離,并且具有尺度不變性,但是存在以下兩個問題:第一,如果兩個框沒有相交,則不能反映兩者的距離大小從而產(chǎn)生梯度消失的問題;第二,存在IoU值相等但是重合度不一樣的情況,從而導(dǎo)致無法篩選更優(yōu)回歸效果的目標框。IoU損失函數(shù)的表達式為:
式中:A與B分別代表預(yù)測框和標注框。
1.2.2 GIoU 損失函數(shù)
GIoU 損失函數(shù)[15]在IoU 損失的基礎(chǔ)上加入了懲罰項,同時關(guān)注了重疊區(qū)域和非重疊區(qū)域,解決了IoU 損失在檢測非重疊輸出框時的梯度消失問題,但依然存在重合度問題。GIoU 損失函數(shù)的表達式為:
式中:Ac為預(yù)測框和標注框的最小閉包區(qū)域的面積。
1.2.3 DIoU 損失函數(shù)
DIoU 損失函數(shù)[16]改進了懲罰項,比GIoU 更符合目標框回歸機制,同時考慮了目標框與標注框之間的距離、重疊率及尺度,使得目標框在回歸時能夠更穩(wěn)定、更迅速地收斂。DIoU 損失函數(shù)的表達式為:
式中:b為標注框的中心點,bgt為預(yù)測框的中心點,ρ為兩個中心點的歐式距離,c為兩個框最小閉包區(qū)域的對角線距離。
1.2.4 CIoU 損失函數(shù)
CIoU 在DIoU 的基礎(chǔ)上保留了重疊面積、中心點距離的評價策略[16],引入了長寬比的評價指標。長寬比的作用為控制目標框的寬高能夠盡可能快速接近標注框的寬高。YOLOv4 的損失函數(shù)包括坐標位置損失,置信度損失及類別損失,本文采用CIoU計算模型的坐標位置損失。CIoU 損失函數(shù)的表達式為:
式中:v為標注框和預(yù)測框的寬高比重合度,α表示正權(quán)衡參數(shù)。αv值越低,標注框與預(yù)測框越接近。
改進后的YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示。改進部分包括PANet 網(wǎng)絡(luò)增加特征提取層、Darknet53 網(wǎng)絡(luò)中CSP 結(jié)構(gòu)改進以及模型結(jié)束部分的負例挖掘引入。
圖3 改進YOLOv4 結(jié)構(gòu)圖
部分絕緣子在整個圖像中所占比例較小,且在自然場景下易受光照、形狀等復(fù)雜因素的影響,傳統(tǒng)的目標檢測算法漏檢率高。因此,本文額外增加一層特征融合結(jié)構(gòu)進行預(yù)測,改善了小型絕緣子丟失的問題。
改進后的YOLOv4 網(wǎng)絡(luò)使用4 種尺度來預(yù)測不同大小的目標。特征圖在CSPDarknet53 網(wǎng)絡(luò)中先進行下采樣,然后與第二個殘差塊的輸出相連接,建立一個4 層的特征融合層,如圖3 所示。輸入圖像的大小為416×416,4 個特征層的大小分別為(104,104,128),(52,52,256),(26,26,512),(13,13,1024)。
SE(Squeeze-and-Excitation)注意力[17]模塊在2017 年提出,其主要原理為通過學(xué)習獲得每個特征通道的重要性并根據(jù)重要程度在卷積運算時加強更有用的特征通道,抑制相對不重要的特征通道。一方面,該方法增加了各個通道之間的相關(guān)性,能夠獲得更豐富的特征信息,提高了小型絕緣子檢測的準確度;另一方面,由于整個SE 模塊使用了全連接層,避免了普通卷積層參數(shù)多且計算量大的問題,提高了檢測效率。SE 模塊由兩部分組成,如圖4所示。
圖4 SE 模塊結(jié)構(gòu)
SE 模塊的第一部分為壓縮(Squeeze)部分,利用全局平均池化操作將卷積之后的W×H×C的特征圖進行處理,得到一個1×1×C的通道評價向量,其中每一個通道向量都會獲得一個分數(shù)。第二部分為激勵(Excitation)部分,包括兩個FC(全連接層)和一個ReLU 函數(shù)(如式(6)所示)。首先經(jīng)過第一個FC 將通道計分向量的維度減少到輸入的1/r,然后使用ReLU 函數(shù)激活,接著使用另一個FC 將通道數(shù)量增加到與輸入時相同,最后經(jīng)過一個Sigmoid函數(shù)(如式(7)所示)化為0 到1 之間的歸一化權(quán)重,得到各個通道的權(quán)重值與SE 模塊輸入的特征圖對應(yīng)的輸出。
ReLU 函數(shù)表達式為:
Sigmoid 函數(shù)表達式為:
CSP 結(jié)構(gòu)將殘差塊分為兩個部分,一部分作為主干部分繼續(xù)進行殘差卷積,另一部分為一個大的殘差邊,經(jīng)過一次CBM 卷積后直接連接輸出,最后將兩部分調(diào)整成相同的通道數(shù)并堆疊。本文在每一個CSP 中的殘差單元添加一個SE 模塊,以提高模型在小型絕緣子檢測中的性能。改進的結(jié)構(gòu)如圖5所示。
圖5 CSP 模塊改進圖
中小型絕緣子識別存在圖像中的絕緣子與背景混淆的問題,導(dǎo)致背景與目標之間的邊界不明顯,從而干擾目標檢測算法的性能,增加誤檢率。因此,本文在YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)的末尾增加負例挖掘模塊(Negative Example Mining,NEM),解決因復(fù)雜背景或桿塔遮擋出現(xiàn)的誤識別問題。例如,圖6(a)中編號為6 的預(yù)測框?qū)⒉莸乇尘罢`識別為絕緣子,圖6(b)中編號為8 的預(yù)測框?qū)U塔誤識別為絕緣子。
圖6 誤識別檢測圖
在二分類任務(wù)中,樣本根據(jù)實際值和預(yù)測值被分為4 種不同的結(jié)果,用混淆矩陣表示,參見表1。
表1 二分類結(jié)果表示
表1 中,TP表示正確分類為真的樣本數(shù),F(xiàn)P表示錯誤分類為真的樣本數(shù),F(xiàn)N表示錯誤分類為假的樣本數(shù),TN表示正確分類為假的樣本數(shù)。
本文分別計算小型絕緣子檢測算法預(yù)測出的每個預(yù)測框的置信度f1以及該預(yù)測框和標注框之間的IoU 值f2。一般地,f2值小于0.5 的邊界框表示假正例樣本(FP),即預(yù)測為目標絕緣子對象實際為背景或其他信息。對于該類預(yù)測框,置信度f1越高,檢測算法就越難正確識別。將這些負例樣本按照置信值f1降序排列,得到樣本數(shù)據(jù)集S(如式(8)所示),與之對應(yīng)的正例(TP)樣本集為S′(如式(9)所示):
發(fā)現(xiàn)負例時,可以將預(yù)測框映射到對應(yīng)尺度的特征層中,然后將其放回到由主干網(wǎng)絡(luò)生成的特征圖里重新進行特征融合,并計算這些負例與標注框的損失值以達到優(yōu)化網(wǎng)絡(luò)的目的。具體過程如下。
訓(xùn)練開始時,將訓(xùn)練集放入模型進行訓(xùn)練。經(jīng)過訓(xùn)練后,選擇數(shù)據(jù)集S中前N個負例樣本并放入到模型中重新訓(xùn)練,可以使模型進一步學(xué)習到絕緣子與桿塔或其他背景之間的差異性,以降低誤檢率。進行重新訓(xùn)練時,一方面需要考慮正例與負例數(shù)量平衡關(guān)系,如果負例遠遠大于正例的數(shù)量,模型不會收斂出更好的解[18],因此,本文設(shè)定正例n與負例N的比例為1∶3。另一方面,為了得到更好的效果,重新訓(xùn)練時鎖定主干特征提取網(wǎng)絡(luò)(CSPDarknet53),微調(diào)SPP 結(jié)構(gòu)和PANet 網(wǎng)絡(luò)的參數(shù)進行預(yù)測。
先驗框引入的目的是將目標檢測的問題轉(zhuǎn)換為固定格子內(nèi)是否有目標以及預(yù)測框與真實框之間偏差的問題。原始的YOLOv4 網(wǎng)絡(luò)根據(jù)VOC 數(shù)據(jù)集標注聚類出大、中、小3 種尺度的9 個先驗框。由于本文使用的數(shù)據(jù)集中絕緣子的占比較小,因此該先驗框并不適用,會對預(yù)測結(jié)果造成偏差。
k-means++算法能夠進一步改善分類結(jié)果的最終誤差。為了加快模型的收斂速度、提高模型訓(xùn)練能力,本文通過對數(shù)據(jù)集手工標注,使用k-means++的方法聚類出適合訓(xùn)練的數(shù)據(jù)集的先驗框。改進的k-means++算法的具體步驟如下。
(1)從小型絕緣子數(shù)據(jù)集中選取隨機先驗框作為初始聚類中心c。
(2)計算當前聚類中心與其他先驗框的距離d1,原始的歐式距離容易造成較大誤差,不適用于本文先驗框的計算,因此改進為IoU 距離計算:
(3)計算每個絕緣子先驗框被選為下一個聚類中心的概率P(x):
(4)重復(fù)前三步,直到找到k個聚類中心,然后將數(shù)據(jù)集中每個樣本分配到最近的聚類中心,重新計算每個類別c的聚類中心,直到先驗框大小趨于穩(wěn)定、不再變化,如式(12)所示:
經(jīng)過聚類后的先驗框如表2 所示,新增一個特征融合層后共有4 個尺度,每個尺度有3 種不同的先驗框。
表2 不同特征圖對應(yīng)先驗框大小
3.1.1 中小型絕緣子圖片組合
本文數(shù)據(jù)集包括無人機拍攝和現(xiàn)有公共絕緣子數(shù)據(jù)集兩部分。因現(xiàn)有數(shù)據(jù)集中大部分絕緣子圖片在整幅圖中占比較大,不能滿足中小目標檢測,因此本文制作中小型絕緣子比重圖片。方法是分別將不同數(shù)量的絕緣子圖片與其他圖片拼接成2×2和3×3 的合成圖,同時為提高模型檢測能力,控制和調(diào)整絕緣子圖片所占合成圖中的比重。由于輸入圖片的像素大小是固定的(416×416),因此一張絕緣子圖在整張融合圖中的比例分別減少至原來的1/4 和1/9,可以進行中型和小型絕緣子檢測任務(wù)。
3.1.2 數(shù)據(jù)集擴充
為模擬自然場景下使用無人機拍攝絕緣子圖片時發(fā)生的光照條件變化以及被桿塔等結(jié)構(gòu)遮擋的情景,本文針對單張絕緣子圖片進行變換以擴充數(shù)據(jù)集,主要通過光照畸變、幾何畸變及圖像遮擋3 種方法。光照畸變包括改變圖像的亮度、對比度、飽和度以及加入噪聲等,幾何畸變包括翻轉(zhuǎn)、旋轉(zhuǎn)等,圖像遮擋為隨機遮擋某個部分,防止訓(xùn)練過擬合。訓(xùn)練圖片共5 100 張,具體分配如表3 所示。
表3 數(shù)據(jù)集分配
擴充圖示例如圖7 所示。其中,圖7(a)為2×2 合成圖無變化;圖7(b)為3×3 合成圖,針對絕緣子進行亮度調(diào)整和幾何旋轉(zhuǎn);圖7(c)為3×3合成圖,針對絕緣子進行集合旋轉(zhuǎn)和隨機遮擋。
圖7 數(shù)據(jù)集擴充圖片示例
實驗的環(huán)境配置如表4 所示。
表4 實驗環(huán)境配置
整個訓(xùn)練過程共100 個epoch,前50 個epoch為正常訓(xùn)練,設(shè)置學(xué)習速率參數(shù)為0.001,圖片的讀取數(shù)量為4 張。進行第51 個epoch 時,將負例和正例放入模型重新訓(xùn)練以便優(yōu)化網(wǎng)絡(luò),此時凍結(jié)Darketnet53 主干特征提取網(wǎng)絡(luò),調(diào)整學(xué)習速率參數(shù)為0.000 1,圖片的讀取數(shù)量為8 張。其中用于訓(xùn)練的圖片占總數(shù)據(jù)集的90%,驗證的圖片占10%。計算并保留每一個epoch 的loss 值和驗證集loss 值,其曲線如圖8 所示。從圖8 可以看出,從第51 輪開始loss 值進一步減少,達到第90 輪時基本趨于穩(wěn)定。
圖8 模型訓(xùn)練損失曲線圖
檢測結(jié)果圖如圖9 所示。其中,圖9(a)、圖9(c)均為YOLOv4 算法的檢測結(jié)果,圖9(b)、圖9(d)均為相同3 幅圖的本文算法檢測結(jié)果。在準確率方面,傳統(tǒng)YOLOv4 算法在檢測小型或超小型絕緣子時存在漏檢的情況,而使用本文算法對其檢測時,中型、小型和超小型絕緣子均被檢測出來,如圖9(b)的7 號絕緣子。在精準度方面,根據(jù)圖9 的效果可得YOLOv4 的預(yù)測框范圍偏大,本文算法檢測出的預(yù)測框更貼合絕緣子的實際尺寸,效果更優(yōu)秀。在抗干擾方面,本文的改進算法能夠?qū)⒈粭U塔遮擋的絕緣子識別出來,如圖9(d)中的9 號預(yù)測框。
圖9 檢測效果圖
精確率(Precision,P)是指絕緣子正樣本個數(shù)(TP)占所有絕緣子預(yù)測個數(shù)的比例,表示絕緣子預(yù)測精度:
召回率(Recall,R)是指絕緣子的正樣本個數(shù)(TP)占標注出的絕緣子個數(shù)的比例,表示絕緣子預(yù)測效果:
PR 曲線是精確率和召回率曲線,其中x軸為召回率,y軸為精確率。當算法對預(yù)測的絕緣子進行分類時,通過置信度來評判預(yù)測框是否舍棄。利用置信度對所有樣本進行排序,再根據(jù)樣本逐個選擇閾值,在該樣本之前的都屬于正例,之后的都屬于負例。為全面評估模型效果,需要對所有閾值進行評判。使用每一個樣本作為標準進行閾值劃分時,都能計算對應(yīng)的精準率和召回率,因此可以繪制PR 曲線。PR 曲線越右凸,表明效果越好。圖10 表示2×2 和3×3 合成圖時YOLOv3、YOLOv4、改進YOLOv4 算法不含負例挖掘(NEM)、改進YOLOv4算法含負例挖掘的PR 曲線圖。
圖10 不同合成圖的PR 曲線圖(IoU=0.5)
本文使用精確率、召回率、平均精度(Average precision,AP)、AP75衡量4 種算法的檢測精度,結(jié)果如表5所示。表5中的AP75指當IoU取值為0.75時的AP值。AP的計算公式為:
表5 各算法評價結(jié)果
IoU 取值越高,表明檢測框和目標框重合度越高,即檢測難度越大,精確度越低。另外,小型絕緣子檢測難度較大,3×3 合成圖的AP 值會低于2×2 合成圖的AP 值。根據(jù)表中數(shù)據(jù)可得,同時改進主干特征提取網(wǎng)絡(luò)和特征融合網(wǎng)絡(luò)后的算法在中型和小型絕緣子識別中均優(yōu)于傳統(tǒng)YOLOv4 算法,AP 分別提升了11.7 和5.08 個百分點,AP75值分別提升了12.44 和9.49 個百分點。引入負例挖掘模塊后,中小型絕緣子的檢測精確率和查全率進一步提升,預(yù)測出的先驗框更接近于目標框。2×2 圖中絕緣子的AP 由87.8%提升到88.91%,3×3 圖中絕緣子的AP 由71.02%提升到73.09%。
針對中小型絕緣子在目標檢測時漏檢、錯檢的問題,本文提出了一種改進YOLOv4 結(jié)構(gòu)的中小型絕緣子檢測算法。該算法的核心思想是通過改變網(wǎng)絡(luò)結(jié)構(gòu),增強中小型絕緣子的特征提取能力,在預(yù)測時能更準確;同時利用預(yù)測的錯誤目標優(yōu)化和改善網(wǎng)絡(luò)性能,進而提高檢測準確度。實驗結(jié)果表明,相較于傳統(tǒng)算法,本文的改進算法在絕緣子占比小的情況下有更好的檢測效果。AP75值有顯著提升,使得預(yù)測框大小更接近真實框大小。下一步的工作是提高模型在高約束條件下的精確度和特殊角度下絕緣子小目標的識別率,這樣能夠獲取到精準的絕緣子位置信息,以便后續(xù)研究。