吳庭棟,楊 罡,趙國偉,張興忠+
(1.太原理工大學(xué) 軟件學(xué)院,山西 晉中 030600;2.國網(wǎng)山西省電力公司電力科學(xué)研究院,山西 太原 030001;3.國網(wǎng)山西省電力公司大同供電公司,山西 大同 037008)
目前,主流的目標(biāo)檢測技術(shù)主要分為兩類。第一類是以R-CNN[1]、SPPNet[2]、Fast R-CNN[3]、Faster R-CNN[4]和Mask R-CNN[5]等為代表的專注于精度的算法,精度高但實時性差。第二類是以YOLO[6]、SSD[7]、YOLO-v2[8]和YOLOv3[9]等為代表的專注于精度與實時性權(quán)衡的算法。
目標(biāo)檢測技術(shù)在工業(yè)領(lǐng)域中的一個應(yīng)用就是與無人機航拍巡檢結(jié)合。王萬國等[10]將Faster R-CNN算法用于無人機電力線巡檢圖像部件檢測,證明了基于深度學(xué)習(xí)的識別方法實現(xiàn)電力小部件的識別是可行的;陳慶等[11]提出了一種針對絕緣子自爆故障的識別算法,取代人工分析,降低了由人為經(jīng)驗判斷可能造成的誤差;湯踴等[12]選取Faster-RCNN研究了不同網(wǎng)絡(luò)模型在輸電線路中對不同部件的識別準(zhǔn)確率和識別時間;張驥等[13]提出了一種通過卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練獲取深度模型的檢測算法,以有效地識別出輸電線路外破隱患。上述研究均將重點集中于檢測精度上,并未對精度與速度的權(quán)衡進行研究,同時也并未考慮設(shè)備算力的大小,都是在算力強大的服務(wù)器端進行。在算力受限的嵌入式開發(fā)平臺上進行實時檢測的研究還處于起步階段。
本文自建架空線路關(guān)鍵部件數(shù)據(jù)集,并提出了一種多尺度并行融合檢測算法MSPF-DN,可以將此模型移植到NVIDIA Jetson AGX Xavier上,由航拍巡檢無人機攜帶,來輔助巡檢人員完成關(guān)鍵部件實時檢測,有效提升航拍巡檢的效率和智能化水平。
SSD算法是一種端到端的目標(biāo)檢測算法,可以從特征提取網(wǎng)絡(luò)中直接回歸出物體類別和位置。將VGG16[14]的最后兩個全連接層替換為全卷積層并在其后增加4個額外的卷積層共同組成SSD算法的特征提取網(wǎng)絡(luò)。SSD根據(jù)網(wǎng)絡(luò)輸入圖像大小分為SSD300和SSD512版本,后者精度更高,但速度相較前者略低。以SSD300為例,其算法結(jié)構(gòu)如圖1所示。
圖1 SSD算法結(jié)構(gòu)
SSD算法分為兩個階段,網(wǎng)絡(luò)訓(xùn)練階段和預(yù)測階段。在訓(xùn)練階段,將候選框和真值標(biāo)簽進行匹配,以此來劃分正負樣本,并根據(jù)損失函數(shù)的值對得到的負樣本進行排序,最終使正負樣本的比例保持在1∶3。在預(yù)測階段,首先得到候選框的偏移及相應(yīng)目標(biāo)類別的置信度,然后通過非極大值抑制算法去除多余的候選框,最后輸出物體位置信息和相應(yīng)類別的置信度。
SSD同時對目標(biāo)類別的位置偏移量和置性度進行回歸,故其損失函數(shù)由位置損失和分類損失兩部分共同組成,如式(1)所示
(1)
式中:N是匹配的候選框數(shù)量,x為候選框與真實框的匹配結(jié)果;c為類別置信度;α為權(quán)重項;l為預(yù)測邊框;g為真實邊框。
SSD算法在檢測精度和速度上都是表現(xiàn)非常優(yōu)秀的卷積神經(jīng)網(wǎng)絡(luò),因此,本文以SSD算法為基礎(chǔ),對其進行相應(yīng)改進。
本文所使用的數(shù)據(jù)集為自建架空線路關(guān)鍵部件數(shù)據(jù)集。從國家電網(wǎng)提供的10 000張實際巡檢圖像中挑選出了包含絕緣子、懸垂線夾、防震錘3類關(guān)鍵部件的3822張圖像,其中3類關(guān)鍵部件如圖2所示。
圖2 3類關(guān)鍵部件
3822張巡檢圖像的平均分辨率為4615×2936,其中每張圖像包含3類部件數(shù)不等。首先,對這些圖像中的部件類別進行編號表示,絕緣子類別以0000_1111表示,懸垂線夾類別以0102_1111表示,防震錘類別以0103_1111表示,然后按照VOC數(shù)據(jù)集的標(biāo)注方式進行精準(zhǔn)的標(biāo)注工作,如圖3所示??傆嫎?biāo)注16 763個關(guān)鍵部件,其中絕緣子6262個,懸垂線夾4754個,防震錘5747個,每類部件都相對均勻。以此圖片和標(biāo)注作為本文的數(shù)據(jù)集。按 7∶2∶1 的比例將數(shù)據(jù)集劃分為訓(xùn)練集、驗證集和測試集。
圖3 數(shù)據(jù)標(biāo)注
與VOC數(shù)據(jù)集或COCO數(shù)據(jù)集進行比較,從部件占比來看,絕緣子較大,而懸垂線夾和防震錘較小,通過實際測量,絕緣子的寬高比范圍在0.05-17之間,懸垂線夾的寬高比范圍在0.57-3.44之間,防震錘的寬高比范圍在0.63-7.41之間。其中,各部件之間的寬高比跨度較大,在一定程度上會影響最終的識別效果。從檢測難易度來看,圖像中非部件干擾較多,鐵塔與部件相互遮擋、同類部件之間重疊、地面物體雜亂多樣等,為關(guān)鍵部件的檢測帶來不小挑戰(zhàn)。本文算法是針對此類架空線路關(guān)鍵部件數(shù)據(jù)集提出的,具有很強實用性及參考價值。
MSPF-DN算法在SSD算法的基礎(chǔ)上進行改進,算法結(jié)構(gòu)如圖4所示。算法引入了全新激活函數(shù)h-swish[15],本算法為加快檢測的速度,設(shè)計了一個輕量級的特征提取網(wǎng)絡(luò)EPNets,由于本文數(shù)據(jù)集的特點,EPNets只提取到特征圖大小為10的尺度,去掉了SSD原始算法中較小的尺度;為進一步提升檢測效果,設(shè)計了一個輕量級并行結(jié)構(gòu)PF-Module,并在EPNets的多個預(yù)測特征圖上使用,然后將輸出的多尺度特征圖送入檢測和分類器,最后通過非極大值抑制得到最終的檢測結(jié)果。由于架空線路關(guān)鍵部件數(shù)據(jù)集所限,EPNets只在較大的特征圖上應(yīng)用PF-Module結(jié)構(gòu)。
圖4 MSPF-DN算法結(jié)構(gòu)
激活函數(shù)swish定義請參見文獻[16],文中用swish激活函數(shù)替代神經(jīng)網(wǎng)絡(luò)中常用的ReLU激活函數(shù),以此來提升網(wǎng)絡(luò)的精度,如式(2)所示
(2)
雖然swish激活函數(shù)相較于ReLU提升了檢測精度,但它所帶來的精度提升與增加的計算量并不成正比,嚴重影響了速度。
為解決這種不均衡性,將swish激活函數(shù)修改為了h-swish激活函數(shù),如式(3)
(3)
激活函數(shù)swish與h-swish的曲線如圖5所示,其中,縱坐標(biāo)o(x)代表相對應(yīng)的激活函數(shù)值。從圖5中可看出,h-swish和swish函數(shù)曲線基本吻合。但由式(3)可知,h-swish 比swish更易求解以及求梯度。因此可用h-swish替代swish,既提升了精度,又不過多增加計算負擔(dān)而影響速度。
圖5 swish與h-swish函數(shù)
由于輕量化的要求,本文特征提取網(wǎng)絡(luò)的設(shè)計所采用的基本卷積操作為深度可分離卷積,卷積模塊結(jié)構(gòu)為3×3、5×5的倒殘差塊和線性瓶頸與h-swish激活函數(shù)的組合。
3.2.1 深度可分離卷積
深度可分離卷積[17]是輕量級網(wǎng)絡(luò)的主要結(jié)構(gòu),相較于標(biāo)準(zhǔn)卷積其大幅度縮減了網(wǎng)絡(luò)參數(shù),使卷積操作變得更快。假設(shè)輸入特征圖大小為DF×DF×M,卷積核大小為Dk×Dk×M×N,那么標(biāo)準(zhǔn)卷積T和深度可分離卷積K的參數(shù)量如式(4)、式(5)所示
T=Dk×Dk×M×N×DF×DF
(4)
K=Dk×Dk×M×DF×DF+M×N×DF×DF
(5)
其中,DF是輸入特征圖的長寬,M是輸入特征圖的通道數(shù),Dk是卷積核的長寬,N是卷積核的個數(shù)。
由此,深度可分離卷積與標(biāo)準(zhǔn)卷積的參數(shù)量比例可由式(6)表示
(6)
由式(6)可知,深度可分離卷積與標(biāo)準(zhǔn)卷積相比,參數(shù)量大大減少。
標(biāo)準(zhǔn)卷積同時考慮了通道和區(qū)域,使用與輸入數(shù)據(jù)通道相同的若干個卷積核,對其進行卷積運算。深度可分離卷積則將通道與區(qū)域分離,先只考慮區(qū)域,然后再考慮通道,首先對輸入數(shù)據(jù)的每個通道使用單通道的卷積核進行卷積,然后將卷積后的結(jié)果作為輸入數(shù)據(jù),使用多個與其通道相同的1×1卷積核對輸入數(shù)據(jù)進行組合,生成新的結(jié)果。深度可分離卷積如圖6所示。
圖6 深度可分離卷積
3.2.2 倒殘差塊和線性瓶頸
倒殘差塊[18]對ResNet[19]中的殘差塊進行了改進。ResNet中殘差塊的過程如圖7所示,首先輸入數(shù)據(jù)經(jīng)過一個1×1卷積0.25倍降維操作,然后使用3×3的標(biāo)準(zhǔn)卷積對上一步的結(jié)果進行卷積操作,最后使用1×1卷積0.25倍升維,一降一升,保持了前后維度的統(tǒng)一。倒殘差塊的過程如圖8所示,首先輸入數(shù)據(jù)經(jīng)過一個1×1卷積6倍升維操作,然后使用3×3的深度可分離卷積對上一步的結(jié)果進行卷積操作,相比使用標(biāo)準(zhǔn)卷積,此操作使參數(shù)量大大降低,最后使用1×1卷積6倍降維。
圖7 標(biāo)準(zhǔn)殘差塊
圖8 倒殘差塊
在特征提取中,雖然使用深度可分離卷積可減少參數(shù)量,但它的使用也會損失一部分特征,這就降低了網(wǎng)絡(luò)對特征的提取能力。因此,通過在網(wǎng)絡(luò)中使用先升維后降維的倒殘差塊,先將輸入數(shù)據(jù)變換到高維度后再使用深度可分離卷積,以此來減少特征損失,進而提高網(wǎng)絡(luò)的表達能力。
激活函數(shù)通常是非線性的,在高維空間使用可以有效增加非線性,而在低維空間使用則會破壞非線性。圖8中,在深度可分離卷積后使用了1×1卷積用于降維,如果繼續(xù)使用非線性激活函數(shù)會破壞非線性,因此,線性瓶頸[18]要求必須將其后的非線性激活函數(shù)改為線性激活函數(shù),以此來保持非線性。
3.2.3 網(wǎng)絡(luò)結(jié)構(gòu)
本文網(wǎng)絡(luò)EPNets參考MobilenetV2網(wǎng)絡(luò)進行改進。網(wǎng)絡(luò)在倒殘差塊的使用上采用以下組合:3×3的倒殘差塊與ReLU激活函數(shù)組合、5×5的倒殘差塊與h-swish激活函數(shù)組合。分別如圖9和圖10所示。網(wǎng)絡(luò)中的標(biāo)準(zhǔn)卷積之后一律使用h-swish激活函數(shù)。
圖9 3×3的倒殘差塊與ReLU激活函數(shù)組合
圖10 5×5的倒殘差塊與h-swish激活函數(shù)組合
EPNets的網(wǎng)絡(luò)結(jié)構(gòu)見表1,其中Conv2d是標(biāo)準(zhǔn)卷積,Inverted Residual表示倒殘差塊(均采用6倍擴張系數(shù)),HS表示h-swish激活函數(shù),RE表示ReLU激活函數(shù)。
表1 EPNets網(wǎng)絡(luò)結(jié)構(gòu)
特征提取網(wǎng)絡(luò)EPNets對特征進行了初步的提取,為進一步充分提取特征,本文引入了輕量級并行結(jié)構(gòu)PF-Mo-dule,如圖11所示。PF-Module首先將輸入特征圖分別輸入到兩條支路中,其中一條支路采用3×3的深度可分離卷積與ReLU激活函數(shù)的組合;另一條路采用5×5的深度可分離卷積和h-swish激活函數(shù)的組合。將得到的結(jié)果進行相加融合,然后使用3×3的標(biāo)準(zhǔn)卷積與h-swish激活函數(shù)的組合,進行冗余信息過濾,形成一個新的特征圖。其中,輸入與輸出的特征圖大小相同。通過并行提取特征,增加了特征的多樣性和魯棒性,提高了網(wǎng)絡(luò)的精度。
假設(shè)PF-Module結(jié)構(gòu)輸入特征圖大小為N×N×C,則兩條支路融合后的特征圖大小N×N×2C,輸出特征圖大小為N×N×128。
圖11 PF-Module結(jié)構(gòu)
本文共選取5個特征圖用于檢測,分別是:在EPNets網(wǎng)絡(luò)中l(wèi)ayer7、layer14和layer18層的輸出特征圖上應(yīng)用PF-Module結(jié)構(gòu)后的3個輸出特征圖;layer18層的輸出特征圖在PF-Module結(jié)構(gòu)中兩條支路的輸出特征圖。
實驗操作系統(tǒng)為ubuntu 16.04 LTS,深度學(xué)習(xí)框架為TensorFlow,接口語言為Python,CPU為Intel?CoreTM i9-9900K 3.60 GHz×16,內(nèi)存為16 G,GPU為GeForce RTX 2080 Ti。移動端嵌入式平臺為NVIDIA?Jetson AGX XavierTM,內(nèi)存為16 G。
本文所使用的數(shù)據(jù)集在第2節(jié)已有介紹,由于自建數(shù)據(jù)集的數(shù)據(jù)量不足,為得到更好的實驗結(jié)果,需要在大型數(shù)據(jù)集COCO上進行預(yù)訓(xùn)練,COCO數(shù)據(jù)集包含91類目標(biāo),328 000圖像和2 500 000個label。
目標(biāo)檢測算法的評價標(biāo)準(zhǔn)有很多,本文選取檢測精度、檢測速度和模型大小來對MSPF-DN算法進行評估。AP(average precision)用于評估算法在各個類別上的精度,mAP(mean average precision)用于評估算法在所有類別的精度,是各類別AP的一個均值,F(xiàn)PS(frames per second)用于評估算法檢測速度,代表每秒檢測幀數(shù),MB(MByte)用于評估模型的內(nèi)存大小。通過權(quán)衡這幾項性能指標(biāo),得到適用于嵌入式平臺運行的輕量級模型。
MSPF-DN算法的訓(xùn)練過程分為兩階段,第一階段是使用COCO數(shù)據(jù)集預(yù)訓(xùn)練的過程,第二階段是使用自建數(shù)據(jù)集進行適應(yīng)性訓(xùn)練的過程。為解決樣本失衡的問題,兩階段的訓(xùn)練過程中,使用的損失函數(shù)是Focal Loss[20]置性度損失和Smooth L1[4]位置損失相結(jié)合的總體目標(biāo)損失函數(shù),通過改變樣本分布,有效提高了網(wǎng)絡(luò)輸入樣本的質(zhì)量。
在具體的訓(xùn)練方式上,第一階段批處理大小為64,使用0.9的動量優(yōu)化器,其中學(xué)習(xí)率的衰減方式為余弦衰減[21],采用warmup[22]預(yù)熱學(xué)習(xí)率的方式,前2k次迭代使用0.013 333的小學(xué)習(xí)率進行初始化學(xué)習(xí),接下來的迭代在0.04的大學(xué)習(xí)率初始化下進行衰減學(xué)習(xí),總共迭代25k次,這樣的方式有助于模型更快收斂,且效果更佳。
在第二階段,加載第一階段得到的預(yù)訓(xùn)練模型,訓(xùn)練過程與第一階段相同,但迭代次數(shù)低于預(yù)訓(xùn)練的迭代次數(shù),共迭代10k。其中前2k次迭代使用0.013 333的初始化學(xué)習(xí)率,剩余的8k次迭代使用0.04的初始化學(xué)習(xí)率。
(1)本節(jié)實驗是在自建工業(yè)數(shù)據(jù)集上對MSPF-DN算法進行訓(xùn)練和評估,在主流SSD算法下,使用不同的基礎(chǔ)網(wǎng)絡(luò)進行實驗,輸入圖像尺寸為300×300,以此作為評判基準(zhǔn)。
實驗結(jié)果見表2,表中“速度”是在移動端嵌入式平臺測出的實時速度。對比基準(zhǔn)實驗,本文MSPF-DN算法可以有效提升檢測精度,與基準(zhǔn)實驗對比,分別提高了6.31%和4.4%;該算法也加快了檢測速度,比基準(zhǔn)網(wǎng)絡(luò)中最快的高2 FPS;同時該算法有效減少了網(wǎng)絡(luò)模型的參數(shù),與基準(zhǔn)網(wǎng)絡(luò)對比,分別減少7.6 MB和4.1 MB。
(2)本節(jié)實驗通過不同尺度的網(wǎng)絡(luò)輸入對MSPF-DN算法進行訓(xùn)練,并對比了不同尺度下的AP、mAP、FPS和模型大小。
實驗結(jié)果見表3,不同尺度的網(wǎng)絡(luò)輸入不會改變模型大小,但隨著尺度的增加,輸入圖像中各個目標(biāo)的尺寸會相應(yīng)增大,使網(wǎng)絡(luò)計算復(fù)雜度相應(yīng)的增加,推理過程耗費的資源增多,因此,增大輸入尺度雖然可以有效提高網(wǎng)絡(luò)檢測精度,但會帶來檢測速度下降,在實際的應(yīng)用中還需要根據(jù)需求來進行權(quán)衡。
圖12~圖14分別展示出了不同尺度輸入下分類損失、位置損失及學(xué)習(xí)率的變化曲線。
MSPF-DN640的檢測精度是最優(yōu)秀的,這里為了更精準(zhǔn)的對比,在圖15中列出了MSPF-DN300與MobileNetv2_SSD在相同圖像上的檢測結(jié)果。圖中第一行是MSPF-DN300的檢測結(jié)果,第二行是MobileNetv2_SSD的檢測結(jié)果。觀察發(fā)現(xiàn),MSPF-DN300在復(fù)雜背景下和遮擋下的檢測性能比MobileNetv2_SSD更優(yōu)秀。
表2 不同基礎(chǔ)網(wǎng)絡(luò)和結(jié)構(gòu)的實驗結(jié)果
表3 不同輸入尺度的MSPF-DN實驗結(jié)果
圖12 MSPF-DN300的損失及學(xué)習(xí)率變化曲線
圖13 MSPF-DN512的損失及學(xué)習(xí)率變化曲線
圖14 MSPF-DN640的損失及學(xué)習(xí)率變化曲線
圖15 MSPF-DN300與MobileNetv2_SSD檢測效果
本文針對航拍智能巡檢場景,提出了一種多尺度并行融合實時檢測算法MSPF-DN,該算法以SSD算法為基本框架,使用不同倒殘差塊與不同激活函數(shù)組合的結(jié)構(gòu),設(shè)計了更高效的特征提取網(wǎng)絡(luò)EPNets。同時為進一步提高網(wǎng)絡(luò)的精度,設(shè)計了輕量級并行結(jié)構(gòu)PF-Module,并應(yīng)用于特征提取網(wǎng)絡(luò)EPNets的多個特征圖上。最后,將PF-Module 結(jié)構(gòu)輸出的特征圖共同用于檢測。本算法針對架空線路關(guān)鍵部件,在嵌入式NVIDIA Jetson AGX Xavier設(shè)備上實現(xiàn)了實時且高精度的檢測。下一步將增加關(guān)鍵部件類型及數(shù)據(jù)量,進一步改進網(wǎng)絡(luò),來提高該算法對大多數(shù)關(guān)鍵部件的檢測能力。