葉樹芬,施振華,蘇成悅,梁立,黃海潤,關家華
(1.廣東工業大學 物理與光電工程學院,廣州 510006; 2.廣州杰超科技有限公司,廣州 510006;3.廣東電網有限責任公司佛山供電局,廣東 佛山 528000)
電力線路巡檢是電網穩定安全運行的重要環節,人工操作的無人機巡檢替代傳統人工巡檢可節約大量的時間和人力成本[1]。智能無人機自動巡檢成為當前電力巡檢的研究熱點,導航是智能無人機巡檢的關鍵[2]。由于導航精度不夠,巡檢無人機飛偏的概率較大[3],對電力線和桿塔準確且高效的識別是無人機沿電力線路實時巡檢的基礎[4]。
電力線識別的傳統數字圖像處理算法需要預先對目標特征進行數值化定義,通過某種固定特征進行匹配。Zhu等[5]通過Radon變換以及線段平行的約束條件識別電力線。駱顧平等[6]改進Ratio算子并結合輪廓特征和利用Hough變換的直線編組擬合算法識別出電力線。數字圖像處理算法對與電力線形狀相似的道路和房屋等有邊緣特征的圖像,以及多樣性場景存在識別干擾,容易產生漏檢和誤檢[7]。
檢測電力線路的深度學習算法主要有電力桿塔識別的目標檢測算法和電力線識別的語義分割算法。目標檢測雙階段算法以R-CNN系列[8-10]為代表,該算法產生候選區域再分類和回歸。單階段算法直接預測目標的類別與位置,算法速度更快,常見有YOLO[11-14],SSD[15]等。孫樂楊等[16]增加YOLOv5模型特征層尺度以及通過切割高分辨圖像后進行識別,提升遙感圖像里小目標電力塔檢測效果。楊知等[17]提出結合YOLOv2和VGG模型級聯的目標檢測算法來識別高分辨率遙感影像中的電力塔。有研究人員針對電力線的特征提出語義分割算法,但這類算法復雜度高[18-19]。深度學習算法泛化能力更強,但算力和內存空間是模型在嵌入式平臺應用的瓶頸,復雜模型實時性較差,已知的算法還不能同時實現電力桿塔和電力線兩類目標的檢測任務。
本文在YOLOv5網絡模型基礎上,采用減少特征提取層Bottleneck數量和深度可分離卷積,以減少模型整體參數量和計算量;通過改進NMS算法,提升電力線和電力桿塔的檢測精度;部署于嵌入式平臺驗證表明本算法能兼顧檢測精度和速度,具有較好的實用性。
YOLOv5包含5個版本的模型,它們的區別在于模型的深度和寬度不同,考慮在嵌入式平臺上使用,本文選用模型體積較小,精確度適中的YOLOv5s作為基礎模型,其由輸入端、Backbone、Neck和Prediction四個部分組成。
輸入端部分包含對圖像的預處理和數據增強的方式,自適應錨框計算和自適應圖片縮放。
自適應錨框計算是YOLOv5s網絡在訓練之前,會對錨框的長寬進行初始設定,訓練過程中,網絡會根據初始錨框大小輸出預測框,和真實框比較計算出兩者的差距,再反向更新迭代網絡參數。YOLOv5s會在訓練和參數迭代的過程中,根據不同的數據集,自適應計算出最佳的錨框值。
自適應圖片縮放是YOLOv5s網絡會自動采用相同比例將圖片分辨率縮放到長寬均為32的倍數,不滿足比例的一邊進行填充,在保證不失真的情況下,減少計算量,加快目標檢測速度。
Backbone包含C3層和SPPF(spatial pyramid pooling-fast,快速空間金字塔池化模塊)結構,用于圖像的特征提取,其網絡結構如圖1所示。

圖1 Backbone結構圖
YOLOv5s新版中C3層是采用CSP(cross stagepartial connections,跨階段局部網絡)架構,包含三個標準卷積層以及多個Bottleneck模塊,替換了原先設計應用于Backbone中的CSP1_X和Neck中的CSP2_X兩種CSP結構,可以增強網絡的學習能力,降低模型的尺寸,同時保持目標檢測的精度。
SPPF模塊采用多種尺寸的最大池化方式進行多尺度特征的融合,池化后的輸出將作為下一池化的輸入,速度比SPP(spatial pyramid pooling,空間金字塔池化模塊)更快。
Neck部分包含FPN(feature pyramid networks,特征金字塔網絡)和PAN(path aggregation network,路徑聚合網絡)的組合結構,其中FPN是通過對高低層特征進行融合,可以提高細長型電力線等小目標檢測效果。PAN是自底向上方向的增強,使得深層的特征圖可以獲得淺層豐富的細節信息,提高大目標的檢測效果。
YOLOv5s用到的損失函數為定位損失(box_loss)、置信度損失(object_loss)和分類損失(class_loss)三部分的加權和。YOLOv5s的定位損失使用的是CIoU_loss[20],其計算過程公式如下:
(1)
其中:dc為預測框和真實框中心點間的距離,ds為預測框和真實框最小外接矩形的對角線距離,IoU為預測框和真實框的交并比,其計算公式如式(2)所示,α為平衡參數,ν用于衡量寬高比的傾斜角度,計算公式如式(3)和式(4)所示:
(2)
(3)
(4)
CIoU_Loss計算公式如下:
CIoU_Loss=1-CIoU
(5)
為了驗證本文提出的電力線和電力桿塔算法識別的效果,且現有公開的電網數據集較少,實驗數據集采用自建的方式。
通過無人機實地拍攝獲取,拍攝地點在廣東省佛山市南海區部分備用電力配網線路,再將這些視頻數據進行取幀得到實驗所需的圖片。經過篩選整理后得到2 000張圖片,并統一分辨率為1 280×720,方便后續模型的訓練。數據集示例如圖2所示,背景包含草地、公路、建筑和水塘等,每張圖片都包含多個復雜背景下電力線目標以及多角度的電力線和電力桿塔目標,根據深度學習領域常用的8:1:1比例隨機將圖片分為訓練集、驗證集和測試集。

圖2 數據集示例
數據集使用在線標注工具對圖片進行標注,標注的結果利用格式轉換腳本轉換為yolo_txt格式進行保存,每個標注txt文件存放一個圖片的目標信息,文件的每一行存放一個目標的信息,包括標注標簽的種類class,目標框的中點x坐標x_center,中點y坐標y_center,寬度width以及高度height。標注標簽的種類包含電力桿塔tower和電力線line。
為了通過目標檢測的方式對電力線進行識別,本文對電力線采用分段標注的方式,如圖3所示,將圖片中電力線逐一分段,每一小段打上一個電力線的標簽,這種方式相比較于一個框標注一整條電力線,可以減少大量不必要的背景信息引入,同時分段小框還能用于在電力線走向的判別上,將連續的分段小框中心點連接起來,可以形成一條帶方向的電力線。

圖3 標注示意圖
自制電力線數據集過程中,電力線的長度和不同傾斜角度都會影響分段真實框的大小,采用人工分段不可避免存在真實框長寬不完全統一的情況,這種偏差會在一定程度上使得模型訓練出來的目標框和真實框大小也會有存在偏差,并且一個分段電力線真實框尺寸本身也比較小。當且僅當目標框同樣大小且位置高度重合,目標框和真實框的IoU才可能較高,而在其他大部分情況下,由于上述標注誤差和電力線目標較小,目標框和真實框是較難高度重合,IoU偏小。對于常見長度和角度的電力線,在標注之前,提前固定真實框長度和寬度在一個區間內,盡可能減少引入較大的標注誤差。
本文主要從兩個方面改進檢測算法:(1)優化特征提取層網絡結構,加快算法移植在嵌入式平臺上的部署推理;(2)結合實際電力線識別的場景,改進NMS算法,提高識別效果。
對特征提取網絡輕量化的優化工作主要分為修改各C3層中Bottleneck數量比例和簡化特征提取網絡中參數量大的卷積結構兩個部分,在不損失過多模型精度前提下,減少模型的參數量和計算復雜度。
3.1.1 修改Bottleneck數量比例
YOLOv5s特征提取網絡的C3層主要是對殘差特征進行學習的模塊,比CSP結構更簡單和更快,但是C3層采用多路分離卷積并且通道數較高,容易占用較多的緩存空間,降低算法運行速度,C3層的工作邏輯如下:
1)原始輸入i進入一分支執行標準卷積模塊,輸出結果賦值給a;
2)將a傳入由Bottleneck組成的模塊,使用Bottleneck的數量在定義網絡的時候確定,輸出結果賦值給b;
3)原始輸入i進入另一分支只執行標準卷積模塊,輸出結果賦值給c;
4)特征拼接b和c,輸出結果為d;
5)對結果d執行標準卷積操作,最后返回輸出。
其中Bottleneck結構如圖4所示,通過1×1的標準卷積將輸入特征圖的通道數減小一半,再通過3×3的標準卷積將通道數擴大一倍,獲得需要的特征并且通道數不發生改變,還有一個shortcut參數控制是否進行殘差連接,在特征提取層默認為True,最后使用add操作進行特征融合。

圖4 Bottleneck結構圖
神經網絡中模塊的寬度、深度和數量是可以根據不同數據集需要進行定制化的設計,減少卷積的操作可以有效的減少網絡的計算量,提升網絡的目標檢測速度。
ResNet網絡中跨階段計算分布的原始設計在很大程度上是經驗值,借鑒ConvNeXt網絡修改方法,將layer0到layer3層中block數量從ResNet-50的(3,4,6,3)改為(3,3,9,3)后降低計算復雜度,提高識別精度[21]。YOLOv5s的特征提取網絡中包含4個C3層,分別位于第二到第五層下采樣卷積層的下一層,本文將各C3層中Bottleneck數量從(3,6,9,3)改為(1,1,3,1),數量比例也是1:1:3:1,修改后特征提取網絡中各個C3層的結構如圖5所示。

圖5 修改后各C3層結構
從圖4和圖5可以看出,減少各個C3層中Bottleneck模塊的數量,可以減少Bottleneck中卷積和特征融合的參數量和計算量,精簡網絡結構,減少緩存的使用,提高模型的目標檢測速度。
3.1.2 引入深度可分離卷積
在特征提取的過程中,隨著網絡深度的增加,特征圖的通道數也在不斷增加,使用傳統卷積對深層特征圖提取特征時,必然會有較大的參數量產生,導致算法計算運行速度較慢。本文采用深度可分離卷積[22]來替換YOLOv5s特征提取網絡中最后一個卷積層結構,這個卷積的參數量是最大的,可以有效減少參數量和計算量,并且這樣不會影響上層卷積的特征提取效果。
深度可分離卷積是將一個標準卷積分解成一個深度卷積(depthwise convolution)和一個點卷積(pointwise convolution),如圖6所示,拆分了卷積中通道和空間相關性的聯合映射,可以實現與傳統卷積同樣的效果且不會損失過多的識別精度。

圖6 深度可分離卷積
假設輸入特征圖大小為W×H×C,標準卷積核大小為K×K×C,個數為N個,輸出特征圖大小為W×H×N,那么該標準卷積的參數量為卷積核大小與輸入輸出特征圖通道數的乘積,計算過程如式(6)如示,計算量的計算過程如式(7)所示:
ParaSC=K×K×C×N
(6)
OSC=W×H×C×K×K×N
(7)
標準卷積核拆分之后得到深度卷積核大小為K×K×1,個數與上一層通道數相同為C個,是在二維平面上進行卷積,點卷積核大小為1×1×C,個數為N個,得到該深度可分離卷積的參數量為深度和點卷積核參數量的相加,計算過程如式(8)如示,同理計算量也為兩者相加,如式(9)所示:
ParaDSC=K×K×C+C×N
(8)
ODSC=W×H×C×K×K+W×H×C×N
(9)
因此,該深度可分離卷積與標準卷積的參數量和計算量壓縮比分別為:
(10)
(11)
可以看出,對于一個3×3大小的標準卷積,在輸出通道數為4的情況下,經過深度可分離卷積的替換,參數量和計算量均可以減少到原來的36.1%,當輸出通道數遠遠大于卷積核大小乘積,一個標準卷積的計算量壓縮比可以大約為1/9。本文針對的卷積結構為輸入特征圖通道數為256個,輸出特征圖通道數為512個的卷積層,是特征提取網絡中下采樣的最后一層卷積,替換為深度可分離卷積后,參數量有較大下降,模型計算復雜度降低。
3.1.3 特征提取網絡搭建
本文經過改進后YOLOv5s特征提取網絡結構如表1所示,其中網絡的深度超參數設置為0.33,寬度超參數設置為0.50。

表1 特征提取網絡結構
從表1可見,本文算法特征提取網絡包含5個卷積層,4個C3層和1個SPPF模塊,第5層卷積層為深度可分離卷積,卷積核大小3×3,卷積的步長為2,最后經過特征提取后得到通道數為512的特征圖,將輸入到Neck和Prediction用于后續目標預測。
當一幅待測試的圖像輸入到訓練好的目標檢測網絡,每個目標網格區域都會產生多個候選框,這些候選框之間會有重疊部分,NMS是一種非極大值抑制算法,用于將冗余的候選框去除,盡可能找到最佳的預測框,即一個目標對應一個預測框,原算法步驟如下:(1)將候選框集合根據置信度得分進行排序;(2)選擇置信度最高的候選框添加到最終輸出列表中,將其從候選框列表中刪除;(3)計算所有候選框的面積,并計算置信度最高的候選框與其它候選框的IoU,刪除IoU大于閾值的候選框;(4)重復上述過程,直至候選框列表為空。
置信度評分是通過候選框與對應待檢測目標的概率以及候選框和真實框IoU乘積來表示該目標框預測的精度[23],其計算公式如式(12)所示:
confidence=Pr(Object)×IoU
(12)
其中:Pr(Object)表示YOLOv5s模型的候選框內存在目標的可能性,如果候選框內不存在目標,則Pr(Object)=0,IoU表示候選框位置的準確性。
由于手工標注誤差的存在,IoU偏小,使得置信度整體偏小且不能很好體現位置信息。原NMS算法對電力線候選框篩選后得到的結果如圖7所示。從圖中可以看到,預測框沒有完全覆蓋整條電力線,出現了空缺漏檢的情況。漏檢的情況出現,可能會導致無人機因為失去實際電力線的定位信息而發生飛偏等意外事故。

圖7 標準NMS算法檢測效果
在實際的電力線識別當中,需要盡可能地將整條電力線路完整清晰的識別出來。原NMS算法采用置信度分數高低來對候選框進行優先篩選,但是分類置信度高的預測框不一定擁有與真實框最接近的位置,容易將定位更為準確的候選框抑制去掉[24]。本文根據電力線具有連續性這個特征,將原算法步驟(1)中根據置信度得分進行排序修改為根據候選框縱坐標y1作為排序標準,檢測效果如圖8所示,更能反映預測框位置信息。

圖8 改進NMS算法檢測效果
從圖8中可以看出,修改后的預選框可以不重疊并且更加清晰緊密地將電力線識別出來,按照電力線的走向逐一排列,提高了目標檢測效果。
實驗中使用到的硬件配置如表2所示,軟件操作系統為Ubuntu20.04,搭建環境有:CUDA版本為10.1,cuDNN版本為7.6.5,深度學習框架使用Pytorch1.10.2,圖形處理工具使用OpenCV4,編程語言使用Python 3.8等。

表2 硬件配置表
在電力線和電力桿塔檢測模型訓練階段,使用包括Mosaic,Mixup[25],圖片平移、縮放、翻轉等數據增強方法,豐富數據集,提高模型的訓練效果。
Mosaic數據增強能隨機將4張電力線路圖片進行縮放和裁剪,并且以不同的排布隨機拼接成一副圖片,如圖9所示為一個批次大小(batch size)數量的圖片經過Mosaic處理后的結果,在對原始圖片拼接處理之后,還會以像素填充的形式將圖片長和寬縮放到同一尺寸。經過這樣的方式處理數據后,每次送進網絡的圖片,相當于包含了4張原始圖片的數據信息,豐富了電力線路圖片之間的關聯信息,對于單GPU訓練,可以減少batch size,提高訓練精度。

圖9 訓練圖片Mosaic處理
Mixup數據增強是利用線性插值的方法形成新的樣本,本文增強系數為0.2,通過隨機取出兩張電力線路圖片,將它們的特征向量和標簽,對應地加權相加,得到新樣本的特征向量和標簽,新樣本融合了兩張原始圖片的信息,同樣可以增強模型的抗干擾能力。
在整個訓練過程中,訓練參數設置如下:最大訓練迭代次數(epoch)為100,batch size為16,初始學習率為0.01,動量(momentum)為0.937,權重衰減(decay)為0.000 5,在一定程度上降低模型出現過擬合的可能。
訓練策略用warmup來優化訓練的效果[26],在模型剛開始訓練時,模型的權重(weights)是隨機初始化的,若選擇預先設定好的學習率,可能會比較大,導致模型出現振蕩的不穩定情況,而選擇warmup預熱學習率的方式,將前三個epoch設置為預熱學習輪數,預熱學習初始動量設置為0.8,學習率較小,模型可以降低訓練的誤差,慢慢趨于穩定,等模型相對穩定后再使用預先設置的學習率0.01進行訓練,使得模型收斂速度變得更快,模型效果更佳。
本文在多次調整訓練參數后得到如圖10所示的損失下降曲線,其中橫坐標表示訓練epoch,縱坐標為損失值,從圖中可以看到,YOLOv5s損失函數中三個方面的損失整體均趨于收斂,通過數據表明,模型達到較好的擬合效果,呈現穩定狀態,可以用于接下來進行驗證和測試。

圖10 訓練損失下降曲線
在評估目標檢測算法識別效果的時候,通常根據數據集特性,應用場景側重等不同,合理選擇使用一些特定的量化指標進行評判。
本文在電力線和電力桿塔檢測任務當中,對算法的識別精確度,采用準確率(P,precision)和召回率(R,recall)來衡量不同算法的分類和檢測性能,除此之外,針對無人機攜帶的嵌入式平臺算力有限的算法效率優化,采用模型參數量,模型體積和每秒幀數(FPS,frames per second)作為改進算法的衡量指標。P和R的計算公式如下:
(13)
(14)
其中:TP表示算法檢測為電力線和電力桿塔目標當中判斷正確的數目,FP為判斷錯誤的數目,FN表示算法沒有檢測出真實電力線和電力桿塔目標的數目。在判斷目標框是TP還是FP時,首先是網絡產生大量的預測框,通過NMS算法篩選出符合要求閾值的預測框,再分別計算真實框和這些預測框的IoU,此時如果存在符合IoU條件的預測框,那么IoU最大的預測框就確定為這個真實框的唯一正確判斷結果,最后沒有判斷正確的預測框,均確定為錯誤判斷結果。
從實際工程應用的角度來看,分段標注的目的在于能將分段的目標框用于無人機沿著線飛行的指引,而不是將分段的目標框和真實框一一對應起來,因此本文將上述的IoU條件設置為0.3,充分考慮到手工標注的誤差存在和工程應用的需求,允許目標框位置上存在一定的偏差,更能反映不同目標檢測算法的檢測效果。
本節將從特征提取網絡Bottleneck數量比例選取,不同目標檢測算法對比和嵌入式平臺部署三個方面設計實驗并分析改進對實驗結果的影響,其中對于算法測試過程中NMS算法用到的參數設置如下:IoU閾值為0.01,置信度閾值為0.25。
4.4.1 Bottleneck數量比例改進對比
在特征提取網絡輕量化的改進中,本文針對各C3層中Bottleneck數量進行了修改。為了對比使用不同Bottleneck數量對算法的影響,在YOLOv5s原始特征提取網絡上采用4種不同的數量比進行實驗,得到對應的準確率、召回率和參數量指標,最終算法在測試集上結果如表3所示。

表3 不同Bottleneck比例效果對比
原始YOLOv5s特征提取網絡中Bottleneck數量比為(3,6,9,3),從表3可以看出,其準確率為96.6%,召回率為88.9%,參數量為6.69 MB,不斷減少各層Bottleneck數量,參數量不斷下降,但是對準確率和召回率的影響并不明顯,最后當數量比為(1,1,3,1)時,參數量為6.34 MB,減少了5.2%,準確率和召回率均有少量提升。從實驗結果可以看到,Bottleneck數量比例改進是可行的,在識別精度有所提高的情況下能有效降低模型的參數量。
4.4.2 目標檢測算法對比
為了驗證本文算法的有效性,將本文算法與雙階段算法Faster R-CNN,單階段算法SSD,輕量化的YOLOv4-tiny[27]和YOLOv5s進行對比,計算各個算法的準確率、召回率、模型體積和FPS指標,結果如表4所示。

表4 不同算法性能和參數對比
表4的數據均在自制電力線路數據集的訓練集上進行訓練,通過測試集得出的結果。從表中可以看出,YOLOv5s獲得了96.6%的準確率,88.9%的召回率,兩者均優于Faster R-CNN和YOLOv4-tiny,相比于SSD的召回率雖然低了8.8%,但是高了SSD的準確率37.8%,再看模型體積和FPS,YOLOv5s相比于其他算法具有絕對的優勢,模型體積為14.0 MB,僅為SSD模型體積的15.4%,FPS為YOLOv4-tiny的兩倍以上。
本文算法將YOLOv5s作為基礎算法,在特征提取網絡中引入深度可分離卷積并且減少Bottleneck數量,同時也改進了NMS算法,優化目標框的篩選機制,從表中可以看出本算法模型體積進一步壓縮20.7%,有效降低了算法的參數量和計算量,在GTX1080Ti上FPS提高了17.7,雖然準確率有2.6%的下降,但是召回率有6.1%的提升,彌補了YOLOv5s在召回率上的不足,在實際電力線路檢測當中,出于防止無人機巡檢事故發生的角度,更加看重召回率。從對比實驗可以看到,本文提出的算法在平衡識別精度和識別速度上更具有優勢。
4.4.3 嵌入式平臺實驗
為了進一步驗證本算法在實際場景中的實用性,將目標檢測算法移植部署到嵌入式平臺Jetson Nano上。
Jetson Nano是一款嵌入式系統主板,體積較小,適合搭載在無人機上。硬件系統其CPU為4核的Cortex-A57,GPU為基于MaxwellTM架構的128核集成CPU,有64位的4 GB LPDDR4內存,在算力方面具有472 GFLOPs,可以基本滿足小型目標檢測算法的實時推理過程;軟件系統本文安裝的是JetPack 4.4.1 SDK。
目標檢測模型在訓練階段,更加注重識別精度的提升,但在模型部署階段,部署端平臺的性能會有較大的下降,因此在算法實際部署到嵌入式平臺這個過程中,一般都需要加速優化算法的推理過程,包括降低計算精度、運算合并以及內存使用的優化等。本實驗利用TensorRT加速推理,通過自制的測試集進行測試,同時還設置了與YOLOv5s的對比實驗,對比部署后的算法模型體積和每一秒檢測圖片的數量,實驗結果如表5所示,其中精度設置為半精度浮點型(FP16),輸入圖片大小為640×640。

表5 嵌入式平臺算法性能對比
從表5可以看到,本文改進算法,模型體積為14.6 MB,下降了22.3%,這意味著嵌入式平臺可以減少這部分模型的計算,能有更多算力完成其他功能。在識別速度上,FPS達到17.2,在原算法基礎上增加了1.6,在運算資源有限的情況下基本滿足實時檢測的需求,測試效果如圖11所示,電力線和電力桿塔能同時準確的識別出來。

圖11 Jetson Nano測試效果圖
為了進一步驗證使用目標檢測識別電力線來使無人機沿線路巡檢的效果,本文將電力線目標框的中心點連接起來,如圖12所示,給無人機的飛行提供電力線的方向,從而可以更好完成巡檢的工作。

圖12 測試驗證圖
實驗結果表明,本文在模型結構上壓縮計算量和參數量的方式,能有效優化算法在嵌入式平臺上推理的速度,提高實時性。
針對電力線和電力桿塔檢測任務,為了解決深度學習算法計算量大的問題,本文構建并標注了一個新的數據集,使用YOLOv5s作為基礎目標檢測算法,通過使用數量更少的Bottleneck完成對輸入目標的特征提取,采用深度可分離卷積技術降低卷積計算的參數量,有效降低算法的計算復雜度,優化NMS算法,進一步提升了目標檢測的召回率。通過多組對比實驗表明,改進的YOLOv5s算法比原始算法在檢測召回率度、模型體積和FPS指標均有一定的提升,能在嵌入式平臺上同時完成電力線和電力桿塔的檢測,具有較好的實時性。現有數據集所能覆蓋的場景有限,接下來需要獲取到更多原始電力線路樣本數據,從而進一步驗證算法的魯棒性。