李瓊瓊, 陳國初
(上海電機學院 電氣學院, 上海 201306)
為了建設穩定的智能電網,輸電線路的運維需要先進、科學、高效的檢測方式。與人工巡檢相比無人機檢測是一種較為先進的檢測方式,無人機巡檢可以減輕勞動強度,提高工作效率。但目前無人機在輸電線路智能巡檢中存在諸多挑戰:①嵌入式設備由于模型計算量太大而導致運算能力差;②嵌入式設備由于模型太大而導致占用空間過多;③在巡檢過程中故障缺陷診斷的精度不佳。因此,研究輸電線路巡檢識別算法很重要。
目前,基于卷積神經網絡(Convolutional Neural Networks,CNN)的目標檢測算法主要分為2種:基于目標候選框的2階段檢測算法和基于回歸思想的單階段目標檢測算法。①基于目標候選框的2階段檢測算法,如Fast CNN[1]、Faster RCNN[2-5]等,這類算法識別精度高但在實時性上有所欠缺;②基于回歸思想的單階段目標檢測算法較為典型的有SSD[6-7]、YOLO[8-13]等系列,單階段目標檢測算法沒有候選框的提取操作,它可以直接生成目標類別和位置信息,因此其檢測速度快。
但是這2種方法存在著網絡模型復雜度高、計算量大等問題。為了解決算法存在的局限性,文獻[14-18]提出了多種改進策略。其中,文獻[14]提出在網絡模型中添加卷積層、調整錨框大小的方式提高YOLOv3的檢測精度;文獻[15]引入DenseBlock結構使得YOLOv3識別的能力提高,更能準確識別奶牛的發情行為;文獻[16]使用改進的K-means聚類算法改進YOLOv3,從而使得算法能夠應用于不同場景下的火焰;文獻[17]Faster-RCNN 網絡模型中引入了空洞殘差塊構建新型特征提取網絡,從而提高算法在遙感影像中飛機的檢測精度;文獻[18]對SSD算法引入損失函數從而提高變壓器套管的檢測精度。上述改進措施主要是為了提高模型的識別精度,但是,網絡模型復雜度和計算量過大會加大嵌入式設備的計算壓力。因此,很多學者提出構建輕量化的YOLO模型來減小模型參數量和計算量、減少模型的復雜度。文獻[19]是利用MobileNet V2網絡代替了YOLOv3的主干網絡,使得網絡模型更加輕量化,可以滿足遙感軍事的目標檢測;文獻[20]提出在保留特征提取模塊的前提下,通過減少每層的參數量和殘差層數實現網絡模型的輕量化,使網絡模型的參數量優于原始模型;文獻[21]提出先利用聚類算法獲得最佳先驗框,然后構建輕量化的YOLOv3網絡模型,實現對絕緣子的缺陷檢測。
基于上述研究,針對精度、巡檢算力和檢測精度效果3方面進行改進,本文將在YOLOv3-SPP的網絡基礎上開展對輸電線路故障檢測算法的研究,主要工作有:
(1) 針對輸電線路故障數據集較少的問題,采集并制作多種輸電線路故障類型的數據集;
(2) 針對檢測精度不佳的問題,提出使用廣義交并比(Generalized Intersection over Union,GIoU)算法代替平方和損失函數提高檢測精度;
(3) 針對巡檢算力低下的問題,提出對模型進行通道修剪,從而優化YOLOv3-SPP的輕量化性能,降低算法對于硬件的要求,減少推理時長。
YOLOv3-SPP檢測網絡如圖1所示。圖中:DBL模塊是由卷積層、歸一化(Batch Normalization,BN)、激活函數組成,表示YOLOv3-SPP的基本組成部件。resn可以延伸為res1,res2,…,res8,表示殘差塊中殘差單元的數量。concat表示將主干網絡中間層和后面的某一層的上采樣進行張量連接。

圖1 基于YOLOv3-SPP算法的輸電線路故障檢測
YOLOv3-SPP網絡主要在YOLOv3基礎上,在5、6層卷積之間添加了SPP模塊,如圖2所示。空間金字塔模塊主要分為池化的4個尺度:5×5、9×9、13×13、1×1(跳躍連接)。通過添加SPP模塊將網格劃分成更小的邊界框,從而使邊界框更能適合不同尺寸、復雜的圖片檢測。使得巡檢過程中小目標障礙物更容易檢測。

圖2 SPP模塊
從提高模型精度和壓縮模型大小2方面對算法進行改進。激活函數用GIOU 代替了原有的損失函數,提高了算法的精度。將模型大小壓縮,使得無人機在進行巡檢的過程中減小算力,減小了無人機巡檢負擔。
YOLOv3的原始損失函數是使用均方誤差函數(Mean Squared Error,MSE),但是它存在2個問題。在L2范數(預測框與真實框的角點距離)的Loss值相同時,對應的交并比(Intersection over Union,IoU)、GIoU如圖3所示。IoU主要是用來測量精度的,假設A為預測框、B為真實框,那么IoU計算公式如下:

圖3 相同Loss值對應的V GIoU、V IoU

由圖可知:首先,當Loss值相同時,使用MSE性能指標,最右側預測框和真實框重合位置、區域覆蓋最廣,其效果就最好;其次,使用MSE盡管在一定程度上可以緩解目標尺度對于回歸精度的影響,但是無法完全解決這一問題。
IoU 主要是為了計算預測框和真實框的交并比。然而,Io U 函數有2個缺點:①當2個框不重合時,根據定義IoU 的值變為0,如圖4所示,因此沒有梯度值,就無法執行正常訓練;②當IoU 相同時,檢測結果存在較大差異。圖中的IoU 都是相等,但是在圖4(b)比圖4(a)的預測效果更好,體現了使用IoU 進行目標回歸的局限性。

圖4 IoU為0時不同情況的回歸
針對以上缺點,本文采用GIoU 作為回歸框損失函數。由預測框A和真實框B,可以計算出最小封閉凸面面積C,然后得到GIoU 的值,計算公式為

由以上公式可知,GIo U 的值總是小于等于IoU。IoU 的取值范圍為[0,1],而GIoU 的取值范圍為[-1,1],當預測框A和真實框B完全重合時,GIoU 和IoU 的值都為1;當預測框A和真實框B不重合時,Io U 變為0,GIoU 的計算公式為
VGIoU=-1+(A∪B)/C(4)
此時,預測框和真實框不重合,GIoU 會接近-1,而A∪B依然不會改變,為了優化GIoU,最小封閉面積凸面面積必須減小,預測框和真實框的位置才會越接近。
YOLOv3-SPP是一種性能優異的目標檢測模型,可以對輸電線路故障進行有效的檢測。但是YOLOv3-SPP屬于復雜的CNN,為了降低模型的復雜度和參數量,便于后期部署在無人機上,將對YOLOv3-SPP進行模型剪枝。
模型剪枝策略如下:首先,為卷積層的每個通道引入比例因子,將L1正則化應用于BN層的比例因子;其次,利用這些比例因子進行稀疏訓練,對具有小比例因子的通道層進行通道修剪,并對不重要的殘差層進行層修剪,將得到的修剪模型進行微調;最后,利用通道修剪和層修剪,得到剪枝后的YOLOv3-SPP網絡模型。
2.2.1 稀疏訓練 稀疏訓練主要是為了評估每個通道的重要程度。CNN引入一個權值系數,將網絡的訓練權重和權值系數結合起來,從而得到優化訓練過程中的損失函數為

式中:L為基于通道修剪的YOLOv3-SPP模型的目標損失函數;(x,y)為輸入圖像及其標簽;W為網絡權重;f為YOLOv3神經網絡函數;第1個求和項為神經網絡正常訓練時的損失函數;λ為比例因子,用于調整目標檢測損耗項和信道比例因子懲罰項在總損耗值中的比例;γ為平衡因子;g()為比例因子懲罰項,通常在稀疏訓練中使用;第2個求和項為γ系數的L1正則化。
在經過稀疏訓練后,可以得到一個稀疏模型,其中不重要的層其權值會接近于0,再通過設定閾值過濾掉較小的通道就能完成通道修剪。
2.2.2 基于BN層的稀疏方法 利用BN層的稀疏方法主要是為了優化YOLOv3-SPP訓練過程,加速網絡的收斂,使網絡獲得更好的性能。其計算公式為

式中:γ為比例因子;β為平移因子;Zin、Zout為BN層的輸入、輸出;μ、σ為輸入數據的平均值和標準方值;ε為偏差值。
如果γ值很小,則表示下一層的輸入值很小,可以忽略。即γ可以用來表示通道對于網絡模型的貢獻能力,所以,稀疏訓練時,可以直接將BN 層的γ參數作為稀疏訓練迭代的縮放系數。
2.2.3 層修剪 YOLOv3-SPP有5組23處殘差連接處,對應add操作。由于殘差層的輸入和輸出通道維度需要保持一致,因此不能和通道修剪一起進行。
在每一個殘差層之前評估DBL,對每個層的γ值進行排序,并對γ值最小的層進行層修剪。為了保證YOLOv3-SPP的完整性,在修剪殘差層時往往會修剪1個殘差層和前面2個卷積層。在這里,只考慮剪掉主干網絡中的殘差層。YOLOv3-SPP有23個殘差,總共69層剪枝空間。在實驗中,本文嘗試剪掉了12處殘差,相當于剪掉了36層。
2.2.4 微調 剪枝效果取決于稀疏訓練,不同的剪枝策略和閾值的設置對于剪枝的效果也會不同。通常剪枝的精度會提高,但多數時候修剪后的模型精度會下降。所以這時就需對模型進行微調,從而提高精度,通過重復上述過程,得到效果較好的網絡模型。
深度學習算法的優勢就是數字圖像庫和深層的網絡結構。構建優質的數據集,能夠使目標檢測更加精確。目前沒有關于輸電通道檢測圖像的公共數據集,關于輸電線路風箏、氣球、塑料薄膜、絕緣子缺陷、鳥窩的公共數據集也不多,所以本實驗中使用的數據主要是通過爬蟲技術從互聯網上獲取的。由于絕緣子缺陷數據集較少,首先,對其進行平移、旋轉、加噪、亮度、對比度等變換,使得絕緣子缺陷這一類的數據集擴充;其次,使用labeIlmg對所有數據集進行手動標注;最后,制作完成如圖5所示的故障數據集(部分),每類數據集1 000張,輸電線路數據集總共包含5 000張圖片,按照4∶1劃分為訓練集和測試集。

圖5 數據集展示(部分)
實驗所用硬件配置環境為Intel(R)Xeon(R)CPU E5-2689,顯卡NVIDIA GeForce GTX 1080 Ti,操作系統為Windows,軟件環境為CUDA11.0,Cudnn8.0.5,深度學習框架為Py Torch1.7.1。
輸電線路有異物懸掛、絕緣子缺陷等問題,會導致輸電線路發生單項或者兩相短路接地。本文使用了2種改進方法,為了驗證改進方法的有效性,將通過平均精度(Average Precision,AP)、平均精度均值(mean Average Precision,m AP)、推理時間、模型大小、參數量等性能指標進行評估。
3.3.1 基于GIo U 改進算法的對比實驗結果 為了驗證算法的有效性,文章利用Io U、和GioU 2種損失函數對數據集進行訓練,分別得到相應的權重文件。不同模型對輸電線路故障數據集的平均精度AP和m AP測試結果見表1。

表1 輸電線路故障數據集的測試結果比較 %
從實驗結果可以看出,基于GIoU-YOLOv3-SPP的方法平均精度分別達到了86.11%、81.67%、89.67%、93.67%、97.33%,比基于IoU-YOLOv3-SPP的方法平均精度更高,mAP 提高了6.7%。因此,GIoUYOLOv3-SPP是提高模型性能的有效改進方案。
3.3.2 通道修剪和層修剪的算法比較結果 通道修剪和層修剪算法的實驗結果見表2。其中,第2列是原始模型,第3列是通道剪枝模型,第4列是通道和層算法共同作用的實驗結果,修剪率為0.95,層修剪12處殘差。

表2 相同剪枝率下的不同模型壓縮策略結果比較
從上表可知,經過通道修剪之后,模型的內存由244.90 MB降至3.37 MB,m AP減小到0.004,經過層修剪之后,m AP減小到0.002,模型內存減小到3.19 MB。針對剪枝帶來的模型精度下降,可以通過微調的方式恢復精度。
3.3.3 不同剪枝率的通道和層剪枝算法結果 修剪過多的通道和層,會破壞模型的結構,降低模型的檢測精度,無法完成檢測功能;修剪得太少,則無法實現壓縮效果。因此,不同剪枝率的通道和層剪枝算法對模型性能結果見表3。

表3 不同剪枝率下的相同模型壓縮策略結果比較
實驗結果表明,隨著剪枝率的增加,模型的參數和模型的規模在不斷減小,模型的推理速度不斷提高。但是,模型的剪枝率越高,其檢測和識別的精度下降的越厲害。當剪枝率達到0.95時,模型的精度也降為0.004,模型內存為3.19 MB。在剪枝過程中,也可能導致一些重要的卷積核結構被刪除,導致模型無法識別,此時,需通過微調的方式來提高模型的精度。
在輸電線路故障檢測的實際工程應用中,可以配置無人機嵌入式設備,靈活選擇剪枝率,在模型大小和精度之間尋找一個平衡。
為了直觀地觀察到輸電線路故障檢測性能,本文選取了一些輸電線路故障檢測結果,如圖6所示。輸電線路故障檢測的結果表明,該模型可以準確檢測輸電線路故障,對小目標的輸電線路故障點有較好的探測和識別性能,與剪枝前的模型檢測精度基本相同。

圖6 輸電線路故障檢測結果
本文提出了一種基于改進YOLOv3-SPP 的輸電線路故障檢測方法。為了克服無人機在線路巡檢過程中檢測精度不佳,利用目標定位損失函數GIoU,提高模型的檢測精度。為了克服無人機在線路巡檢過程中有限的能耗和算力,利用通道修剪和層修剪策略減小模型大小,降低了算法對于硬件的要求,減少了推理時長。實驗表明:改進YOLOv3-SPP的輸電線路故障檢測方法能在保證檢測精度、檢測速度的同時滿足輕量化需求。