閆彥輝,張 楠,武建超,張國慶,唐 銳,倪 威
(1.國網新疆電力有限公司巴州供電公司,新疆 庫爾勒 841000;2.華北電力大學 電氣與電子工程學院,北京 102206)
目標檢測是計算機視覺領域頗具挑戰(zhàn)性的任務之一,現如今相關目標檢測算法已經走進人們的日常生活,例如汽車無人駕駛、無人機圖像識別、安全監(jiān)控、交通監(jiān)控等。在實際應用中,目標檢測算法通常部署在云端服務器和邊緣計算設備上,不論是部署在云端服務器還是邊緣計算設備上,都對設備的內存和算力提出了較高的要求。在電力行業(yè)中,電網的安全可靠運行一直都是重中之重,尤其是輸電線路的安全。由于輸電線路覆蓋區(qū)域廣,涉及地形較為復雜,所以對于輸電線路周邊環(huán)境進行監(jiān)測是很有必要的。傳統(tǒng)的輸電線路監(jiān)控只能提供視頻監(jiān)控和錄像功能,無法對輸電線路周圍的目標進行主動識別,需要工作人員對圖像進行人工分析,增加了工作人員的工作量;而將輸電線路影像數據送到云端服務器進行分析則需要考慮到時延問題,不符合實時監(jiān)測的要求。綜上,有必要采取更加輕量級的目標檢測算法在邊緣計算設備上就地對輸電線路周圍典型目標進行識別判斷。
近年來深度學習理論[1]不斷發(fā)展,基于深度學習的目標檢測算法在檢測精度和速度上明顯提升,當前基于深度學習的目標檢測算法主要分為單階段(One-Stage)算法和兩階段(Two-Stage)算法。兩階段目標檢測算法會在圖像上不同區(qū)域生成多個大小不一的候選框,然后利用神經網絡對在這些候選框區(qū)域內提取到的特征進行分類和邊框回歸并得到檢測結果,代表算法有R-CNN[2]、Fast-RCNN[3]、Faster-RCNN[4]等,但是生成候選框數量巨大,會占用大量的計算資源,雖然檢測精度高但是推理速度慢,不太適用于實時性需求高的應用場景。單階段目標檢測算法不用生成候選框,省去了龐大的計算量,這類算法直接把目標邊界框定轉換為回歸問題,借此得到目標的類別信息和位置信息,典型的單階段算法有SSD[5](Single Shot multibox Detection)和YOLO[6-8](You Only Look Once)系列算法。孫翠英等[9]利用SSD結合輕量級網絡MobileNet[10]的方法來檢測輸電線典型故障,在檢測精度和模型推理速度上都取得了較好的效果。鄭偉等[11]利用MobileNet結合跨階段層次結構CSPNet[12](Cross Stage Partial Network)構建了輕量級的骨干特征提取網絡,利用空洞卷積代替下采樣中的深度可分離卷積來減少下采樣后信息丟失,實現了多尺度和小目標的精確檢測。陳嘉琛等[13]在YOLOv3-SPP(YOLOv3-Spatial Pyramid Pooling)網絡基礎上對網絡進行剪枝處理,在犧牲較少檢測精度的情況下加快了網絡推理速度,降低了算法對硬件設備的算力要求。本文以YOLOv5s算法為基礎對輸電線路附近典型目標進行檢測,首先,對圖像數據進行歸一化處理,在YOLOv5s網絡上進行基礎訓練后再進行稀疏訓練;然后,在稀疏訓練的基礎上對網絡模型進行剪枝,實驗結果表明剪枝后的模型在檢測精度和推理速度之間達到較好的平衡。
YOLO系列目標檢測算法是單階段目標檢測算法中性能比較出色的算法,YOLOv5是由Ultralytics公司于2020年5月提出的,至今一直在保持更新。YOLOv5一共有4種版本,分別是YOLOV5s、YOLOv5m、YOLOv5l和YOLOv5x,4種版本模型大小和精度依次遞增,其中YOLOv5s網絡模型相比較于其他3個版本更加小巧、推理速度更快、檢測速度可達140 f/s,其網絡結構如圖1所示。由圖1可知,YOLOv5s網絡結構整體由3部分構成,分別是Backbone、Neck和Prediction。
在Backbone部分,網絡組成包括Focus結構、BottleneckCSP結構和普通卷積結構。Focus結構是在YOLOv5提出的,核心思想是對圖像進行切片操作,并在通道維度進行拼接。當輸入為4*4*3的圖像,將圖像按通道切片為2*2大小的特征圖,然后再按通道拼接為2*2*12的特征圖,如圖2所示。Focus結構有效減少了卷積,通過對張量進行維度變換的方式巧妙地實現了下采樣,增加了通道維度并減少了計算量,提升了計算速度。
圖2 Focus結構中切片操作
在YOLOv4中,只有主干網絡采用了CSPNet結構,在YOLOv5中不僅在Backbone中有CSP結構,在neck部分也有CSP結構,但是兩者結構不一樣,主要體現在有無殘差邊,具體差異如圖1所示。圖1中C1-n模塊中bottleneck是有一處殘差邊,而C2-n模塊是沒有殘差邊的。在Backbone末端還有一個SPP[14]模塊,通過并行的3個多尺度最大池化來增大感受野范圍,避免了直接對特征圖進行縮放導致的信息丟失,提高了模型精度。
Neck部分由特征金字塔(Feature Pyramid Network,FPN)結構和路徑聚合網絡(Path Aggregation Network,PANet)結構[15]組成,如圖3所示。
FPN具有自上而下和橫向連接結構,并以此來融合高分辨率的淺層特征圖和包含豐富語義信息的深層特征圖,實現了從單張圖片到多個尺度都具有強語義信息的金字塔,頂層特征做上采樣和低層特征融合。而PANet則是在FPN自上而下的路徑之后又添加了一個自下而上的路徑,將低層的語義信息向高層傳遞,強化特征提取能力。
Prediction部分包含邊框損失和非極大值抑制(Non-Maximum Suppression,NMS),YOLOv5使用泛化交并比(Generalized Intersection over Union,GIoU)作為邊框損失函數,GIoU對尺度大小敏感度低,當預測框與真實框不重合時仍然可以進行優(yōu)化。在對預測結果進行處理時,對眾多預測框進行篩選,利用NMS操作來獲得效果最好的預測框。
從設備性價比的角度考慮,在算力有限的邊緣端設備上部署大型目標檢測網絡模型是比較困難的,為了追求檢測速度和精度之間的平衡,通常會采用模型壓縮方法來對目標檢測網絡模型進行“瘦身”。本文采取的是對模型進行剪枝的方法來實現模型壓縮,神經網絡剪枝方法大致上可以劃分為結構化剪枝和非結構化剪枝,非結構化剪枝主要是對權重直接進行修剪,其得到的權重矩陣是稀疏的,如果沒有專門的硬件設備和專用庫是很難達到壓縮和加速模型的效果。結構化剪枝主要是對卷積核和通道進行修剪,當某個卷積核或者通道在評價標準下重要性排序較低,那么將會被移除。剪枝流程如圖4所示。
圖4 剪枝流程
在對模型剪枝前,需要對訓練好的YOLOv5s模型進行稀疏訓練,以便對通道重要程度進行區(qū)分。批歸一化(Batch Normalization,BN)層[16]能加速神經網絡訓練收斂并改進網絡泛化性能,被廣泛用于神經網絡,它的原理是使每層的激活輸入在訓練時保持同分布,使得激活輸入值始終處于激活敏感區(qū)域,遠離導數飽和區(qū),緩解了反向傳播中的梯度消失問題。BN層迭代過程為
(1)
(2)
式中:μβ為對m個輸入求得的均值;m為本輪訓練樣本mini-batch的大小;zi為輸入;σβ為對輸入求得的標準差,對輸入zi進行歸一化處理得到zi為
(3)
歸一化處理之后得到的zi符合正態(tài)分布,ε是為了防止標準差為零而加入的一個正則化參數,歸一化處理之后對輸入進行重構得到zout如式(4)所示。
zout=γzi+β
(4)
式中:γ為本文使用BN層的尺度縮放因子,是篩選通道重要性的指標。對這些通道的尺度縮放因子計算L1范數,通過對尺度縮放因子L1正則化使其向0逼近,而與0接近的尺度縮放因子對應的卷積核對網絡貢獻小,將其剪除不會對精度造成太大影響。計算公式為
(5)
在網絡損失函數基礎上加入對尺度縮放因子γ的L1范數項,得到重構后的損失函數為
L=Llocation+Lclass+Lconfidence+λ‖γ‖1
(6)
式中:λ為稀疏比例因子,用來平衡原損失函數中的坐標損失Llocation與分類損失Lclass兩部分對損失函數整體的貢獻度。
在稀疏訓練完成之后,對BN層所有尺度縮放因子的絕對值進行排序,根據設定的通道剪枝率來確定全局閾值δ,對于通道尺度縮放因子γ小于全局閾值δ的通道進行剪枝操作。圖5為通道剪枝示意圖。
圖5 通道剪枝示意圖
假定由剪枝率確定的全局閾值δ=0.6,則圖中通道尺度因子γ<0.6的通道被去除,不參與前后參數傳遞過程,減少了通道從而實現剪枝。
本文選取的圖片數據主要由電網公司在某段輸電線路上監(jiān)控設備拍攝到的視頻截取得到,共包含1500張圖片,使用圖片標注軟件LabelImg對圖片進行手工標注,數據集共5類,分別是塔吊、施工機械、吊車、導線異物和煙火,其中塔吊類1152個,施工機械類927個,吊車類843個,導線異物類 482個,煙火類305個,標注生成XML文件存儲到數據中,其中訓練集和驗證集按照7∶3進行劃分。圖6為訓練集部分樣本,從圖6中可以看出,由于攝像頭拍攝角度、距離和天氣的不同,不同類別目標呈現不同的形態(tài),涵蓋了田野、城市多種情況下的圖像數據。
在剪枝處理時,由于backbone中bottleneck有殘差邊而prediction中沒有殘差邊,為保證對CSP結構中bottleneck的張量維度可加,沒有對其殘差邊進行剪枝。剪枝的閾值不能大于BN層任何通道的最大γ,同時為避免所有通道被裁剪,設定一個剪枝的安全閾值δ=0.8,確保至少有20%的通道被保留。
在制作的數據集上對網絡進行基礎訓練,批處理大小設置為16,動量衰減系數為0.937,權重衰減系數為0.005,初始學習率設置為0.001,訓練輪次設置為100。訓練過程中為獲得更好的訓練效果,采用余弦退火學習率調整策略,為避免數據集樣本分布不均勻導致網絡偏向樣本數較多的類,對樣本數較少的兩個類采用翻轉、縮放等方式對原數據集進行擴充?;A訓練過程損失函數變化如圖7所示。
由圖7可以看出,100輪基礎訓練之后損失值基本上收斂,而進行基礎訓練之后每層BN層的γ系數大致服從正態(tài)分布,不利于對各通道重要程度進行排序,基礎訓練γ值分布情況如圖8所示。
圖8 基礎訓練γ值分布情況
在進行100輪基礎訓練后得到的模型基礎上,對BN層進行稀疏訓練100輪,訓練過程中的γ系數變化如圖9所示,可以看出,稀疏訓練后通道重要程度較低的尺度縮放因子γ被壓縮至0附近。
圖9 稀疏訓練后γ值分布情況
實驗對稀疏系數等于0.001的模型進行通道剪枝。設置的全局閾值為50%,模型各項參數對比如表1所示。
表1 剪枝前后對比
實驗平臺CPU為Ryzen 4600,顯卡為GTX1650,通過對BN層的尺度縮放因子接近于0的通道進行裁剪,剪枝后模型參數量下降了41.95%。在剪枝處理之后對得到的剪枝模型進行50輪次的微調之后mAP達到71.7%,權重文件大小為5.77 MB,相比于原YOLOv5s權重文件大小14.1 MB壓縮了41.93%,單張圖片推理耗時減少0.4 ms,對計算資源消耗更少,能夠滿足實時性需求。
另外,將本文模型與YOLOv4、CenterNet和SSD進行了對比,如表2所示。在檢測精度方面,剪枝后的模型在輸電線路周圍典型目標數據集上的平均檢測精度優(yōu)于多數模型,在檢測速度上由于剔除了部分通道,模型計算量下降,推理速度顯著加快。綜合考慮精準率和召回率,剪枝模型顯然優(yōu)于其他模型。
表2 不同模型性能對比
為了實現對輸電線周圍典型目標檢測的準確性和實時性,降低人工成本,提出了一種基于YOLOv5s網絡剪枝模型的檢測算法,經實驗測試該算法能夠降低硬件設備計算成本,加快推理速度,準確率僅下降了4.4%,能夠滿足邊緣側小型算力設備實時檢測的需求,為算法部署到邊緣測設備上提供了參考。對于輸電線路周邊環(huán)境進行實時監(jiān)測的實施,可以提供理論和技術上的支持。