廖曉輝, 謝子晨, 路銘碩
(鄭州大學(xué) 電氣與信息工程學(xué)院,河南 鄭州 450001)
變電站內(nèi)電氣設(shè)備的可靠運(yùn)行對(duì)電力系統(tǒng)是至關(guān)重要的。及時(shí)、準(zhǔn)確地完成各種電氣設(shè)備識(shí)別,有利于對(duì)變電設(shè)備進(jìn)行巡檢保護(hù),同時(shí)可以取代傳統(tǒng)的人工巡檢方式,滿(mǎn)足變電站電氣設(shè)備實(shí)時(shí)檢測(cè)的需求[1]。此外,開(kāi)發(fā)設(shè)計(jì)變電站電氣設(shè)備識(shí)別APP,有助于變電站工作人員以及參觀學(xué)習(xí)人員對(duì)變電站設(shè)備進(jìn)行快速準(zhǔn)確識(shí)別,對(duì)變電站電氣設(shè)備的實(shí)時(shí)識(shí)別與設(shè)備學(xué)習(xí)具有重要意義。
為了滿(mǎn)足變電站巡檢智能化與高效化的要求,要對(duì)變電站電氣設(shè)備進(jìn)行快速、準(zhǔn)確的識(shí)別。傳統(tǒng)的目標(biāo)檢測(cè)算法有SIFT算法、HOG算法、LBP算法等[2-4],這些算法雖然可以很好地進(jìn)行特征提取,但在變電站復(fù)雜背景下設(shè)備識(shí)別效果較差、精確率不高?;谏疃葘W(xué)習(xí)的目標(biāo)檢測(cè)算法有RCNN系列、YOLO系列、SSD系列等。Girshick等[5]在2014年設(shè)計(jì)了R-CNN模型,該模型識(shí)別過(guò)程中需要對(duì)每個(gè)候選區(qū)域都做特征提取,存在著訓(xùn)練速度慢等問(wèn)題。在R-CNN和SPP的基礎(chǔ)上,Girshick[6]又提出了Fast R-CNN模型。李文璞等[7]使用Faster RCNN模型識(shí)別變電設(shè)備缺陷,識(shí)別的平均精度可達(dá)90%以上。但這些算法的網(wǎng)絡(luò)參數(shù)量較大,識(shí)別速度難以滿(mǎn)足要求,部署在Android端上很難實(shí)現(xiàn)電氣設(shè)備的實(shí)時(shí)檢測(cè)。Redmon等[8]提出YOLO算法,該算法與SSD算法都是單階段算法,目前已有多個(gè)版本,其中的YOLOv5模型具有體積小、檢測(cè)速度快、實(shí)時(shí)性好等優(yōu)點(diǎn),更加適用于此類(lèi)實(shí)時(shí)的視頻檢測(cè)。YOLOv5模型中的YOLOv5s版是深度最小、特征圖的寬度也最小的算法,體積較小,便于實(shí)現(xiàn)Android端的部署。
本文以變電站常見(jiàn)6種電氣設(shè)備為例,采用改進(jìn)后的YOLOv5s算法對(duì)設(shè)備數(shù)據(jù)集進(jìn)行訓(xùn)練,訓(xùn)練完成的模型能實(shí)現(xiàn)變電站電氣設(shè)備的圖片識(shí)別和視頻識(shí)別,同時(shí)將訓(xùn)練好的電氣設(shè)備識(shí)別網(wǎng)絡(luò)模型通過(guò)TensorFlow Lite框架進(jìn)行部署,在Android上實(shí)現(xiàn)電氣設(shè)備準(zhǔn)確快速的識(shí)別。
YOLOv5s是YOLO系列中性能較好的算法,相較于以往版本有很大的提升,目前在電力系統(tǒng)的各類(lèi)圖像識(shí)別中也被廣泛應(yīng)用。YOLOv5s算法主要由輸入端、Backbone、Neck和輸出端4部分組成。
在輸入端部分,YOLOv5s采用了Mosaic數(shù)據(jù)增強(qiáng)技術(shù)、自適應(yīng)錨框計(jì)算以及自適應(yīng)圖片縮放技術(shù),提高了模型對(duì)小目標(biāo)的檢測(cè)能力,對(duì)不同訓(xùn)練集的最佳錨框尺寸進(jìn)行自動(dòng)計(jì)算,同時(shí)解決了黑邊填充過(guò)多造成的信息冗余問(wèn)題,提高了模型的推理速度[9]。
在Backbone部分,采用快速空間金字塔池化(spatial pyramid pooling-fast, SPPF),將不同感受野的特征圖融合,以提高特征圖的表達(dá)能力,同時(shí)采用C3結(jié)構(gòu)來(lái)增加網(wǎng)絡(luò)的深度和感知能力,提高特征提取的能力。
在Neck部分,采用特征金字塔網(wǎng)絡(luò)(feature pyramid network,FPN)與路徑聚合網(wǎng)絡(luò)(path aggregation network,PAN)相結(jié)合的結(jié)構(gòu)[10-11],通過(guò)FPN結(jié)構(gòu)的上采樣操作與PAN結(jié)構(gòu)的下采樣操作相結(jié)合,輸出預(yù)測(cè)的特征圖,大大提高了特征提取能力。
在輸出端部分,YOLOv5s采用CIOU_Loss作為損失函數(shù)。該損失函數(shù)可以同時(shí)考慮重疊面積、目標(biāo)框中心點(diǎn)距離、長(zhǎng)寬比等因素,同時(shí)采用非極大值抑制操作來(lái)對(duì)檢測(cè)框進(jìn)行篩選。
為了解決目前變電站電氣設(shè)備識(shí)別過(guò)程中存在的問(wèn)題、提高變電站中小目標(biāo)檢測(cè)的能力、減少漏檢和誤檢的情況,對(duì)YOLOv5s網(wǎng)絡(luò)模型進(jìn)行改進(jìn),改進(jìn)后的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 改進(jìn)后的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)圖Figure 1 Structure of the improved YOLOv5s network
YOLOv5s主要通過(guò)網(wǎng)絡(luò)中的C3模塊來(lái)增加網(wǎng)絡(luò)的深度和感受野、提高特征提取的能力,C3模塊的結(jié)構(gòu)圖如圖2所示,模塊中使用了3個(gè)卷積模塊CBS以及n個(gè)Bottleneck。Bottleneck結(jié)構(gòu)主要是為了降低參數(shù)量,減少網(wǎng)絡(luò)的復(fù)雜度,同時(shí)也是梯度流主分支。C3模塊將輸入通道分為兩部分:一部分經(jīng)過(guò)一個(gè)卷積模塊后連接到輸出端;另一部分經(jīng)過(guò)若干個(gè)Bottleneck層后輸出。
圖2 C3模塊結(jié)構(gòu)圖Figure 2 C3 module structure diagram
為了提高電氣設(shè)備識(shí)別精確度,在YOLOv5s算法中引入梯度流更豐富的C2f模塊,模塊結(jié)構(gòu)如圖3所示,C2f將輸入通道分為兩部分:一部分直接連接到輸出端;另一部分經(jīng)過(guò)若干個(gè)Bottleneck層后再與輸出端拼接。C2f減少了卷積操作,同時(shí)將不同階段的特征進(jìn)行拼接和融合,梯度流相比C3模塊更加豐富,識(shí)別效果較好。在YOLOv5s代碼的common.py文件中對(duì)C2f模塊進(jìn)行定義,同時(shí)更改配置文件中對(duì)應(yīng)參數(shù),即可對(duì)原C3模塊進(jìn)行更改。
圖3 C2f模塊結(jié)構(gòu)圖Figure 3 C2f module structure diagram
在對(duì)檢測(cè)框進(jìn)行篩選的過(guò)程中,需要進(jìn)行非極大值抑制(non-maximum suppression,NMS)操作[12-13]。由于變電站中設(shè)備種類(lèi)較多且較為密集,因此收集到的電氣設(shè)備數(shù)據(jù)集中同一類(lèi)型的設(shè)備容易出現(xiàn)重疊現(xiàn)象。NMS在對(duì)目標(biāo)框進(jìn)行篩選的過(guò)程中直接對(duì)IOU大于設(shè)定閾值的框進(jìn)行刪除處理,容易出現(xiàn)漏檢和誤檢的情況,因此采用改進(jìn)的Soft-NMS目標(biāo)框篩選方法。Soft-NMS將IOU大于閾值的框的得分降低:將獲得的IOU取高斯指數(shù)后與原得分相乘,之后重新排序,不斷循環(huán)。公式如下:
(1)
式中:M為預(yù)測(cè)框中得分最大的邊框;bi為第i個(gè)預(yù)測(cè)的邊框;Si為第i個(gè)邊框的得分。
由式(1)可以看出,IOU越大,預(yù)測(cè)框得分越低,可以更準(zhǔn)確地選擇目標(biāo)框,適用于重疊程度較高的預(yù)測(cè)框的篩選。在YOLOv5s代碼的general.py文件中對(duì)Soft-NMS進(jìn)行定義,調(diào)用Soft-NMS函數(shù)來(lái)進(jìn)行訓(xùn)練與驗(yàn)證即可改進(jìn)原NMS操作。
在對(duì)變電站電氣設(shè)備識(shí)別過(guò)程中,搭建的模型訓(xùn)練環(huán)境配置:Windows10系統(tǒng)、R5 5600 H處理器、GTX 1650顯卡、16 GB內(nèi)存、Python3.7.3、CUDA11.3。Android端運(yùn)行環(huán)境配置:realme GT大師探索版機(jī)型,運(yùn)行內(nèi)存12 GB;高通驍龍870八核處理器。
3.2.1 幾何變換與像素變換
如圖4所示,對(duì)電氣設(shè)備數(shù)據(jù)集通過(guò)水平及垂直翻轉(zhuǎn)、縮放等幾何變換操作,以及改變亮度、調(diào)節(jié)對(duì)比度、高斯模糊等像素變換操作來(lái)進(jìn)行數(shù)據(jù)增強(qiáng)。同時(shí),在采集數(shù)據(jù)的過(guò)程中,不良照明或高溫容易造成傳感器噪聲,因此,對(duì)部分電氣設(shè)備圖像添加高斯噪聲,進(jìn)而提高模型的魯棒性。
3.2.2 基于K-means算法的背景替換
為了避免采集的電氣設(shè)備圖片背景較為單一,對(duì)采集到的部分圖片進(jìn)行背景替換。如圖5所示,利用K-means聚類(lèi)算法對(duì)原圖進(jìn)行圖像分割[14],生成對(duì)應(yīng)的二值圖像,也稱(chēng)為mask圖;將mask圖與原圖通過(guò)OpenCV中的cv2.bitwise_and()函數(shù)進(jìn)行圖像的按位與運(yùn)算摳出設(shè)備圖像;將設(shè)備圖像與新的背景圖像進(jìn)行背景融合,從而實(shí)現(xiàn)圖片的背景替換。
數(shù)據(jù)集預(yù)處理后,所構(gòu)建的電氣設(shè)備圖像數(shù)據(jù)集共有2 076張圖片,按照6∶2∶2的比例將數(shù)據(jù)集隨機(jī)劃分成訓(xùn)練集、驗(yàn)證集和測(cè)試集。數(shù)據(jù)集構(gòu)建完成之后,使用LabelImg軟件標(biāo)注數(shù)據(jù)集。本文共制作6個(gè)標(biāo)簽,分別是電力變壓器(power transformer)、絕緣套管(insulating sleeve)、油枕(conservator)、風(fēng)機(jī)(fan)、絕緣子串(insulator string)、隔離開(kāi)關(guān)(disconnector)。標(biāo)注后得到txt格式的標(biāo)簽文件用于模型訓(xùn)練。各個(gè)設(shè)備的標(biāo)簽數(shù)量分布如表1所示,標(biāo)簽數(shù)量總計(jì)5 902個(gè)。
圖4 數(shù)據(jù)增強(qiáng)Figure 4 Data enhancement
圖5 圖像分割與融合Figure 5 Image segmentation and fusion
表1 數(shù)據(jù)集各標(biāo)簽數(shù)量分布表Table 1 Table of label quantity distribution in data set
模型的評(píng)估指標(biāo)包括:精確率Precision、召回率Recall、平均精度均值mAP、幀率以及P-R曲線(xiàn)等。Precision和Recall兩個(gè)評(píng)估指標(biāo)的計(jì)算公式如下所示:
(2)
(3)
式中:TP為真陽(yáng)性;FN為假陰性;FP為假陽(yáng)性。
幀率是評(píng)估模型檢測(cè)速度的一個(gè)重要指標(biāo),即每秒內(nèi)可以處理的圖片數(shù)量,通過(guò)幀率大小來(lái)評(píng)估模型是否滿(mǎn)足實(shí)時(shí)檢測(cè)的需求。P-R曲線(xiàn)是以召回率和精確率分別作為橫縱坐標(biāo)繪制出的二維圖像。曲線(xiàn)與坐標(biāo)軸圍成的面積即為某一類(lèi)別的AP值,對(duì)所有N個(gè)類(lèi)別的AP值取平均值即為mAP值,公式如下:
(4)
本文在原有YOLOv5s算法基礎(chǔ)上進(jìn)行改進(jìn):引入C2f模塊來(lái)提高設(shè)備檢測(cè)尤其是小目標(biāo)檢測(cè)的精度;采用Soft-NMS取代原有的NMS對(duì)檢測(cè)框進(jìn)行篩選,來(lái)解決數(shù)據(jù)集設(shè)備重疊問(wèn)題,減少漏檢現(xiàn)象。使用評(píng)估指標(biāo)對(duì)算法不同改進(jìn)方法進(jìn)行實(shí)驗(yàn)結(jié)果對(duì)比,如表2所示。由表2可知,在算法中引入C2f模塊后,模型的mAP值較原算法提高了2.6百分點(diǎn);采用Soft-NMS檢測(cè)框篩選方法之后,模型的mAP值提高了0.8百分點(diǎn),由于Soft-NMS篩選檢測(cè)框相比NMS更加復(fù)雜,參數(shù)量增加,使得推理時(shí)間變慢,幀率有所降低。將兩個(gè)改進(jìn)方法相結(jié)合后的YOLOv5s模型的mAP值為91.6%,與原模型相比提高了3.3百分點(diǎn),識(shí)別精度提高,由于模型參數(shù)量增加,使得幀率從54幀/s降到了38幀/s,但整體推理速度還保持在較高水平。
表2 算法不同改進(jìn)方法的實(shí)驗(yàn)結(jié)果對(duì)比Table 2 Experimental results comparison of algorithm with different improved methods
如圖6所示,根據(jù)算法改進(jìn)前后模型的P-R曲線(xiàn)可知,改進(jìn)后的P-R曲線(xiàn)與坐標(biāo)軸所包圍面積更大,意味著模型性能更好,各個(gè)設(shè)備的mAP值也在提高,其中識(shí)別效果最好的電力變壓器的mAP穩(wěn)定在97%。
YOLOv5s改進(jìn)前后網(wǎng)絡(luò)模型訓(xùn)練變化曲線(xiàn)如圖7所示,經(jīng)過(guò)100個(gè)Epoch后模型逐漸趨于穩(wěn)定,改進(jìn)后的網(wǎng)絡(luò)模型訓(xùn)練結(jié)果更好,且與改進(jìn)前相比更早達(dá)到收斂狀態(tài)。
圖6 P-R曲線(xiàn)對(duì)比Figure 6 Comparison of P-R curves
圖7 模型訓(xùn)練指標(biāo)變化曲線(xiàn)對(duì)比Figure 7 Comparison of model training index change curve
選取未參與訓(xùn)練圖片進(jìn)行測(cè)試,將YOLOv5s改進(jìn)前后的電氣設(shè)備識(shí)別效果進(jìn)行對(duì)比,結(jié)果如圖8所示,其中標(biāo)簽后邊的數(shù)字為置信度,表示圖中設(shè)備被模型正確識(shí)別的程度??梢钥闯?改進(jìn)后的模型的識(shí)別置信度提升明顯,各種電氣設(shè)備的識(shí)別置信度均維持在較高水平。
圖8 YOLOv5s改進(jìn)前后電氣設(shè)備識(shí)別效果對(duì)比Figure 8 Comparison of electrical equipment recognition effect before and after YOLOv5s improvement
將訓(xùn)練完成的識(shí)別網(wǎng)絡(luò)模型部署在Android端時(shí),往往會(huì)受到移動(dòng)設(shè)備計(jì)算能力和內(nèi)存占用等方面的限制,造成部署后的APP出現(xiàn)運(yùn)行慢、卡頓等情況[15],而使用深度學(xué)習(xí)框架TensorFlow Lite (TF-Lite)可以對(duì)不同的硬件進(jìn)行優(yōu)化,通過(guò)量化等方式來(lái)減少模型的大小[16]。
TensorFlow Lite由模型轉(zhuǎn)換器和解釋執(zhí)行器兩個(gè)主要部件組成。其模型處理過(guò)程如圖9所示[17]。模型轉(zhuǎn)換器將已訓(xùn)練好的TensorFlow模型編譯,生成可供移動(dòng)設(shè)備使用的TensorFlow Lite文件格式(FlatBuffer格式)。在設(shè)備端,解釋執(zhí)行器讀取TensorFlow Lite模型,調(diào)用不同的硬件加速器比如GPU進(jìn)行執(zhí)行操作[18]。TensorFlow Lite框架具有低功耗、低內(nèi)存、兼容性好等優(yōu)點(diǎn),同時(shí)部署方式簡(jiǎn)單,適用于識(shí)別網(wǎng)絡(luò)模型在移動(dòng)設(shè)備上的部署。
Android Studio軟件可以對(duì)Android進(jìn)行開(kāi)發(fā)與調(diào)試。TensorFlow Lite模型由模型轉(zhuǎn)換器轉(zhuǎn)換得到。在開(kāi)發(fā)過(guò)程中,主要用到了模型中的*.tflite文件和一個(gè)label.txt的標(biāo)簽文件,將這兩個(gè)文件加入到Android工程的Assets目錄下,設(shè)置識(shí)別APP的各個(gè)界面和參數(shù)。在Android Studio軟件中加載網(wǎng)絡(luò)模型,之后連接手機(jī)進(jìn)行APP調(diào)試,完成模型在Android端的部署。
圖9 TensorFlow Lite模型轉(zhuǎn)換過(guò)程Figure 9 TensorFlow Lite model conversion process
調(diào)試完成之后,打開(kāi)電氣設(shè)備識(shí)別APP進(jìn)入到主界面,主界面有“變電站電氣設(shè)備識(shí)別”和“常見(jiàn)電氣設(shè)備介紹”兩個(gè)按鈕,選擇“常見(jiàn)電氣設(shè)備介紹”進(jìn)入到設(shè)備介紹子界面可以查看設(shè)備的簡(jiǎn)介、功能及作用等內(nèi)容。選擇“變電站電氣設(shè)備識(shí)別”進(jìn)入到電氣設(shè)備實(shí)時(shí)檢測(cè)子界面,通過(guò)調(diào)用手機(jī)攝像頭可以對(duì)電氣設(shè)備進(jìn)行實(shí)時(shí)視頻檢測(cè),如圖10所示。在移動(dòng)端對(duì)常見(jiàn)電氣設(shè)備進(jìn)行識(shí)別,平均識(shí)別精確率在85%以上,且每張圖片的處理速度均不超過(guò)1 s,幀率為16幀/s,具有較好的識(shí)別精度和識(shí)別速度;應(yīng)用大小為90 M,內(nèi)存占用較小,可在移動(dòng)設(shè)備上正常使用。
圖10 電氣設(shè)備識(shí)別APP效果圖Figure 10 APP renderings of electrical equipment identification
本文以電力變壓器、絕緣套管、油枕、風(fēng)機(jī)、絕緣子串、隔離開(kāi)關(guān)6種常見(jiàn)電氣設(shè)備為研究對(duì)象,設(shè)計(jì)了一個(gè)基于改進(jìn)YOLOv5s的變電站電氣設(shè)備識(shí)別系統(tǒng)以及基于Android系統(tǒng)的電氣設(shè)備識(shí)別APP。YOLOv5s網(wǎng)絡(luò)模型較小,便于在移動(dòng)端進(jìn)行部署,同時(shí)引入C2f和Soft-NMS對(duì)算法進(jìn)行改進(jìn),使用改進(jìn)后的網(wǎng)絡(luò)模型YOLOv5s對(duì)設(shè)備進(jìn)行識(shí)別,利用精確率、召回率、mAP、幀率、P-R曲線(xiàn)等模型評(píng)估指標(biāo)對(duì)訓(xùn)練好的變電站電氣設(shè)備識(shí)別模型進(jìn)行評(píng)估,mAP值穩(wěn)定在91.6%,與原模型相比提高了3.3百分點(diǎn),具有較好的識(shí)別效果。同時(shí),利用TensorFlow Lite框架對(duì)訓(xùn)練好的網(wǎng)絡(luò)模型進(jìn)行Android端部署,部署后的APP占用內(nèi)存較小、兼容性好,對(duì)移動(dòng)設(shè)備要求不高,可滿(mǎn)足變電站電氣設(shè)備實(shí)時(shí)檢測(cè)的需求。所設(shè)計(jì)的APP還具有設(shè)備學(xué)習(xí)功能,對(duì)于變電站參觀學(xué)習(xí)人員學(xué)習(xí)了解電氣設(shè)備起到很好的輔助作用。