朱有產(chǎn), 鄭 怡, 秦金磊
(華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院,河北 保定 071003)
關(guān)鍵字:YOLOv3算法;Darknet-41;絕緣子檢測;K-means++算法;多尺度預(yù)測
隨著電網(wǎng)智能化發(fā)展和計(jì)算機(jī)視覺原理的廣泛應(yīng)用,利用計(jì)算機(jī)圖像處理技術(shù)進(jìn)行電力設(shè)備檢測已成為當(dāng)下的研究熱點(diǎn)。絕緣子作為輸電線路中主要部件之一,在架空輸電線路中起到至關(guān)重要的作用,由于絕緣子長期暴露在外部,不可避免地發(fā)生各種故障,想要及時(shí)地掌握其運(yùn)行狀況與質(zhì)量安全,并且及時(shí)地排查絕緣子出現(xiàn)的擊穿、閃絡(luò)和爆裂等問題,需要投入大量的人力、物力以及財(cái)力。隨著無人機(jī)巡檢方式的普及,它彌補(bǔ)了傳統(tǒng)巡檢方式的不足,成為電力網(wǎng)絡(luò)智能診斷的主流發(fā)展趨勢。對(duì)于輸電線路絕緣子的識(shí)別以進(jìn)行狀態(tài)檢測與維護(hù)顯得十分重要,然而對(duì)處于復(fù)雜背景下的絕緣子識(shí)別與定位也是熱點(diǎn)與難點(diǎn)。
基于深度學(xué)習(xí)的目標(biāo)檢測算法主要分為兩階段檢測算法(Two-stage detectors)和單階段檢測算法(Single-stage detectors)兩類。兩階段檢測算法即基于候選區(qū)域的檢測方法,過程主要包括兩個(gè)階段,首先是提取候選區(qū)域,然后對(duì)每個(gè)候選區(qū)域進(jìn)行分類并預(yù)測邊界框。兩階段檢測算法主要包括R-CNN[1]、Fast R-CNN[2]、Faster R-CNN[3]等。文獻(xiàn)[4]利用Faster R-CNN算法來識(shí)別航拍絕緣子圖像,精確度較高,但是處理速度較慢,對(duì)于遮擋情況下的絕緣子識(shí)別效果不佳。兩階段檢測算法雖然有很高的檢測精度,但是算法的計(jì)算時(shí)間過長,無法達(dá)到實(shí)時(shí)檢測的要求[5-8]。單階段檢測算法即基于回歸的檢測方法,利用預(yù)定義的錨點(diǎn)來覆蓋圖像中的空間位置,無需提取候選區(qū)域,直接從圖片獲得預(yù)測結(jié)果,實(shí)現(xiàn)了端到端的目標(biāo)檢測[9-11]。單階段檢測算法很好的權(quán)衡了檢測的準(zhǔn)確率和處理速度,主要包括SSD[12]、YOLO[13]、YOLOv2[14]、YOLOv3[15]等。文獻(xiàn)[16]提出了一種基于改進(jìn)YOLOv3與匹配跟蹤的混合模型,將網(wǎng)絡(luò)中的殘差層替換為密集卷積塊并改變了網(wǎng)絡(luò)的設(shè)計(jì)結(jié)構(gòu),利用Softmax分類器將特征分類,實(shí)驗(yàn)表明改進(jìn)的算法具有較高準(zhǔn)確性和魯棒性。文獻(xiàn)[17]提出一種基于改進(jìn) YOLOv3 算法的航拍目標(biāo)檢測方法,對(duì)航拍數(shù)據(jù)集進(jìn)行目標(biāo)先驗(yàn)框維度聚類、優(yōu)化錨點(diǎn)參數(shù),同時(shí)減少部分卷積操作并引入跳躍連接機(jī)制降低特征冗余,提高了檢測準(zhǔn)確率,并降低了小目標(biāo)的誤檢率與漏檢率,在保證實(shí)時(shí)性的前提下,將檢測平均準(zhǔn)確率提高了12.7%。國內(nèi)外很多研究學(xué)者將YOLOv3算法應(yīng)用于目標(biāo)檢測領(lǐng)域[18],并針對(duì)具體問題提出了不同的改進(jìn)方案,但是在絕緣子檢測領(lǐng)域使用該算法較少。
將YOLOv3算法應(yīng)用于絕緣子檢測領(lǐng)域,為提高算法的適用性和準(zhǔn)確性,對(duì)YOLOv3算法加以改進(jìn)。調(diào)整圖像輸入尺寸,減少Darknet-53特征提取網(wǎng)絡(luò)中卷積層數(shù)量和下采樣中使用Residual(殘差單元)的次數(shù),降低網(wǎng)絡(luò)深度,減少運(yùn)算量,然后增加一個(gè)尺度預(yù)測,將淺層特征加入到預(yù)測結(jié)果中,改善小目標(biāo)檢測效果。
圖1 YOLOv3模型結(jié)構(gòu)圖Fig.1 YOLOv3 model structure diagram
Convolutional:由Conv2d(卷積層)、Batch Normalization(批量歸一化層,BN)和Leaky Relu(激活函數(shù))組成。BN層可以使優(yōu)化問題的解空間更加平滑,提高梯度預(yù)測的準(zhǔn)確性和穩(wěn)定性,從而加快訓(xùn)練的收斂速度,而激活函數(shù)則是為了避免深度網(wǎng)絡(luò)梯度的消失。
Concatenate:張量拼接。將darknet中間層和后面的某一層的上采樣進(jìn)行拼接。但是拼接的操作和殘差層add的操作不同,拼接會(huì)擴(kuò)充張量的維度,而add只是直接相加并不會(huì)導(dǎo)致張量維度的改變。
Convolutional Set:由5個(gè)卷積核尺寸分別為1×1、3×3、1×1、3×3、1×1的Convolutional單元組成。
Residual:殘差塊是若干層的集合,輸出特征表示和輸入之間的殘差,使用這個(gè)殘差塊加上原始輸入可以得到所求的特征表示,這種機(jī)制稱為跳躍連接,使得每個(gè)殘差塊只需擬合殘差即可,解決了反向傳播梯度彌散和梯度爆炸問題,降低每個(gè)殘差塊數(shù)據(jù)擬合的復(fù)雜程度。
Bounding Box Prediction:YOLOv3采用了K-means聚類得到anchor box 的尺寸,并為每種下采樣尺度設(shè)定3種anchor box,總共聚類出9種尺寸的anchor box,每個(gè)anchor box預(yù)測3個(gè)Bounding Box。YOLOv3采用Logistic Regression對(duì)Bounding Box 進(jìn)行預(yù)測,每次預(yù)測時(shí)輸出一組(tx,ty,tw,th,to),然后通過公式(1)計(jì)算出絕對(duì)的(x,y,w,h,c)。然后借用Logistic回歸對(duì)anchor box包圍的部分進(jìn)行一個(gè)目標(biāo)性評(píng)分(objectness score),即判斷這塊區(qū)域?yàn)槟繕?biāo)的可能性,找到得分最高的區(qū)域?qū)ζ溥M(jìn)行預(yù)測。
bx=σ(tx)+cx
by=σ(ty)+cy
bw=pwexp(tw)
bh=phexp(th)
(1)
其中,pw,ph表示網(wǎng)格對(duì)應(yīng)anchor box的寬和高,tx,ty為目標(biāo)中心點(diǎn)相對(duì)于所在網(wǎng)格左上角的偏移量,cx,cy表示此網(wǎng)格相對(duì)于圖像左上角的橫縱距離。
YOLOv3中使用的Darknet-53特征提取網(wǎng)絡(luò)是在Darknet-19的基礎(chǔ)上,融合了殘差單元和跳躍連接的思想以便更好地獲取物體特征,而刪除全連接層則可以輸入任意大小的圖像,并且為了降低池化帶來地梯度負(fù)面效果摒棄了Pooling池化層,取而代之的是用步長為2的卷積層來達(dá)到下采樣。Darknet-53網(wǎng)絡(luò)共有53層卷積層,考慮到本研究只識(shí)別絕緣子,過多的卷積層會(huì)增加計(jì)算量,因此對(duì)Darknet53網(wǎng)絡(luò)進(jìn)行改進(jìn)。改進(jìn)的Darknet-53網(wǎng)絡(luò)(記為Darknet-41)模型結(jié)構(gòu)見圖2,減少相連卷積層的數(shù)量,降低YOLOv3的5次下采樣中使用Residual的次數(shù),降低網(wǎng)絡(luò)深度和運(yùn)算量,避免丟失過多的特征信息。
圖2 Darknet-41網(wǎng)絡(luò)模型結(jié)構(gòu)圖Fig.2 Darknet-41 network model structure diagram
YOLOv3算法采用K-means聚類算法得到anchor box的尺寸。K-means聚類算法原理較簡單,可解釋度也較高,但是對(duì)于K值的選取存在一定的問題,而K值的選擇對(duì)最后的聚類結(jié)果和運(yùn)行時(shí)間都有較大影響。因此選擇K-means++聚類算法來得到anchor box的尺寸,K-means++聚類算法也可以理解為是對(duì)K-means隨機(jī)初始化質(zhì)心的優(yōu)化,可以有效的減少迭代次數(shù),加快運(yùn)算速度。K-means++聚類算法的步驟如下:
金庸走了,在閱盡滄桑之后,像秋葉般在香江凋零,自他在海寧袁花誕生以來,與他的家鄉(xiāng)近在咫尺的鹽官,海寧潮大漲已歷九十六度。舉世皆說他生于1924年,就連他本人也如此說,甚至袁花的查家族譜也如此載,而我在他的檔案和大量史料中發(fā)現(xiàn),他卻是生于1923年,那一年也是他存世的第一次海寧潮漲時(shí),比他大二十幾歲的表哥徐志摩正好帶了胡適之、陶行知、汪兆銘等來觀潮。也許這是個(gè)絕對(duì)的偶然,如同潮漲潮落那樣偶然。近一個(gè)世紀(jì)后,他在香江的蒼茫暮色中停止呼吸之際,海寧潮是否還在漲落與他已然無關(guān),就像他首創(chuàng)的《明報(bào)》也已與他無關(guān)。
1)初始化一定數(shù)量的二維坐標(biāo)點(diǎn)(x,y),所有坐標(biāo)點(diǎn)的初始類別都為0。
2)根據(jù)自定義的類別數(shù)K,從上述坐標(biāo)點(diǎn)中,隨機(jī)取K個(gè)點(diǎn)作為類別的中心點(diǎn)。
3)迭代所有坐標(biāo)點(diǎn),分別與K個(gè)中心點(diǎn)計(jì)算平方距離(就是Δx2+Δy2),這一平方距離可以認(rèn)為是與標(biāo)準(zhǔn)類別樣本的差異度,取平方距離最小的類別作為該坐標(biāo)點(diǎn)的類別。
4)根據(jù)步驟3,可以得到每種分類的樣本,然后,再從每種分類的樣本中,重新計(jì)算該分類的類別中心。
5)迭代步驟3、4,直到每個(gè)類別的中心點(diǎn)不變或變化很小為止。
一般而言深層網(wǎng)絡(luò)的感受野比較大,語義信息表征能力強(qiáng),但是特征圖的分辨率低,幾何信息的表征能力弱,而淺層網(wǎng)絡(luò)的感受野比較小,幾何細(xì)節(jié)信息表征能力強(qiáng),但語義信息表征能力弱。因此YOLOv3算法采用3個(gè)不同尺度的特征圖進(jìn)行預(yù)測,融合了深淺層的特征語義信息特征和空間信息特征。3次檢測中,每次對(duì)應(yīng)的感受野都不同,在最小的19×19特征圖上的感受野最大,適合檢測較大的對(duì)象,中等的38×38特征圖適合檢測中等大小的對(duì)象,較大的76×76特征圖的感受野最小,適合檢測較小的對(duì)象??紤]到絕緣子數(shù)據(jù)集中目標(biāo)完整性不一,分布沒有規(guī)律,因此增加一條預(yù)測分支來豐富預(yù)測回歸位置框,從而提升對(duì)小目標(biāo)的敏感程度,更好保留淺層網(wǎng)絡(luò)的語義信息。改進(jìn)的四尺度預(yù)測結(jié)構(gòu)見圖3,在Predict three層的Convolutional Set后增加一個(gè)預(yù)測分支,將76×76×128的特征圖先降維得到76×76×64的特征,再經(jīng)過上采樣得到152×152×64,再與152×152×128的特征相拼接得到152×152×192,然后再通過一系列的卷積層得到預(yù)測值。
圖3 增加的尺度預(yù)測結(jié)構(gòu)Fig.3 Increased scale prediction structure
實(shí)驗(yàn)基于Tresorflows深度學(xué)習(xí)框架,通過Python語言實(shí)現(xiàn)編程,所有實(shí)驗(yàn)均在配置處理器Intel(R) Core(TM) i7-8700 CPU @3.20GHz 16GB,顯卡Nvidia GeForce GTX 1060 5GB,CUDA10.0,cuDNN7.6.5,OpenCV3.4.8的Windows10 64系統(tǒng)上進(jìn)行。實(shí)驗(yàn)采用平均精度均值( Mean Average Precision,mAP)、每張圖片的平均檢測時(shí)間以及準(zhǔn)確率對(duì)算法性能進(jìn)行評(píng)價(jià)。
實(shí)驗(yàn)采用無人機(jī)航拍圖像數(shù)據(jù)作為樣本集,實(shí)驗(yàn)前將實(shí)驗(yàn)數(shù)據(jù)集按照VOC數(shù)據(jù)集的格式進(jìn)行整理,并對(duì)所有圖像數(shù)據(jù)集作了預(yù)處理,由于計(jì)算機(jī)資源限制將分辨率調(diào)整至608×608。圖像數(shù)據(jù)集包含訓(xùn)練集1 000張,測試集500張,共計(jì)1 500張。使用Labelme軟件為訓(xùn)練樣本數(shù)據(jù)集中圖片做目標(biāo)標(biāo)注,含有多個(gè)絕緣子的圖片絕緣子目標(biāo)依次命名為insulator01、insulator02、insulator03…(實(shí)驗(yàn)訓(xùn)練集單張圖片中最多有6個(gè)目標(biāo))。
YOLOv3算法采用K-means聚類算法得到anchor box的尺寸,但是其尺寸是根據(jù)COCO和VOC數(shù)據(jù)集訓(xùn)練所得,其大小不適用于絕緣子數(shù)據(jù)集。因此訓(xùn)練時(shí)根據(jù)絕緣子測試集采用K-means++聚類算法生成4尺度12組大小分別為(10,13)、(12,23)、(16,34)、(25,76)、(34,40)、(36,128)、(67,109)、(76,77)、(89,207)、(110,98)、(184,277)、(347,327)的anchor box。改進(jìn)的YOLOv3算法訓(xùn)練時(shí)采用分批梯度下降方式進(jìn)行訓(xùn)練,總共進(jìn)行7 100次迭代,avg loss最終收斂至0.095 1。使用YOLOv3的官方權(quán)重作為網(wǎng)絡(luò)訓(xùn)練初始化參數(shù),初始學(xué)習(xí)率設(shè)為0.001,batch設(shè)為64,subdivisions為8,decay為0.000 5,max_batches為10 000,在迭代到3 000次及6 000次之后,學(xué)習(xí)率分別設(shè)為0.000 1, 0.000 01。圖4為YOLOv3算法改進(jìn)前后的loss曲線對(duì)比圖。
圖4 loss曲線Fig.4 Loss curve
通過實(shí)驗(yàn)對(duì)比Darknet-53、Darknet-41以及其他兩種改進(jìn)特征提取網(wǎng)絡(luò)對(duì)絕緣子目標(biāo)檢測的效果,共對(duì)4種網(wǎng)絡(luò)進(jìn)行了對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果對(duì)比見表1。
表1 不同特征提取網(wǎng)絡(luò)性能對(duì)比Table 1 Comparison of network performance for different feature extraction
由上表可以看出,Darknet-53、Darknet-41和模型1在絕緣子數(shù)據(jù)集上的準(zhǔn)確率相差不大,都優(yōu)于模型2,說明適當(dāng)?shù)臏p少卷積層數(shù)量和殘差網(wǎng)絡(luò)使用次數(shù)對(duì)于準(zhǔn)確率的影響不大;對(duì)比Darknet-53、Darknet-41和模型1,Darknet-41的檢測速度最快,說明卷積層數(shù)對(duì)于檢測速度的影響較大。通過對(duì)比實(shí)驗(yàn)最終確定改進(jìn)的YOLOv3算法采用Darknet-41特征提取網(wǎng)絡(luò)。
通過實(shí)驗(yàn)對(duì)比YOLOv3的三尺度、改進(jìn)YOLOv3的三尺度及四尺度預(yù)測的性能?;贒arknet-41網(wǎng)絡(luò)的四尺度預(yù)測即先對(duì)61層處19×19的特征圖進(jìn)行處理后送入第1個(gè)預(yù)測層,同時(shí)將該特征圖上采樣后與49層處38×38的特征圖拼接,再送入第2個(gè)預(yù)測層,然后再將當(dāng)前的特征圖進(jìn)行上采樣與30層處76×76的特征圖進(jìn)行拼接送入第3個(gè)預(yù)測層,最后將當(dāng)前特征圖上采樣與11層處152×152的特征圖拼接并送入第4個(gè)預(yù)測層。不同預(yù)測尺度的性能對(duì)比見圖5。
圖5 不同預(yù)測尺度平均準(zhǔn)確率對(duì)比Fig.5 Comparison of average accuracy of different prediction scales
由圖5的實(shí)驗(yàn)結(jié)果可得,Darknet41-四尺度預(yù)測的性能明顯優(yōu)于其他兩組,說明預(yù)測尺度對(duì)于準(zhǔn)確率的影響較大。通過對(duì)比實(shí)驗(yàn)改進(jìn)的YOLOv3算法最終選定四尺度預(yù)測。
圖6 不同尺度預(yù)測結(jié)果Fig.6 Prediction results at different scales
分別使用Faster R-CNN、SSD、YOLOv3和改進(jìn)的YOLOv3 4種檢測框架在絕緣子測試集上進(jìn)行測試。對(duì)比結(jié)果見表2。
表2 不同方法性能對(duì)比Table 2 Performance comparison of different methods
由表2的檢測結(jié)果可得,改進(jìn)的YOLOv3算法和Faster R-CNN算法的準(zhǔn)確率相對(duì)較高,同時(shí)與Faster R-CNN算法相比,改進(jìn)的YOLOv3算法檢測速度提高了三倍多。相較于YOLOv3算法,改進(jìn)的YOLOv3算法mAP值提高了1.76%,同時(shí)平均檢測速度減少了5.158 ms,準(zhǔn)確率提高了1.12%。筆者選取了一張檢測結(jié)果差異較為明顯的圖片(見圖7,圖片中含有7個(gè)絕緣子)進(jìn)行對(duì)比,圖7(a)中檢測出9處目標(biāo),其中有2處為重復(fù)檢測,圖7 (b)中只檢測出了3處目標(biāo),圖7(c)中檢測出了5處目標(biāo),而圖7(d)中精確地檢測出了7處。
圖7 部分檢測結(jié)果Fig.7 Part of the test results
將YOLOv3算法應(yīng)用到復(fù)雜背景的絕緣子圖像檢測中,針對(duì)絕緣子處于復(fù)雜不一的背景且分布不均的問題,使用K-means++聚類算法重新生成anchor box,并提出了改進(jìn)Darknet-53特征提取網(wǎng)絡(luò)以及增加尺度預(yù)測。實(shí)驗(yàn)結(jié)果表明,本研究改進(jìn)的YOLOv3算法在絕緣子測試集上的mAP達(dá)到83.21%,平均檢測速度為30.975 ms,并且準(zhǔn)確率達(dá)到了95.99%。在后續(xù)的工作中,將繼續(xù)研究檢測時(shí)存在的漏檢、錯(cuò)檢等問題,并進(jìn)行絕緣子缺陷診斷方面的研究,建立絕緣子的識(shí)別與缺陷診斷系統(tǒng)。