趙大賀, 姚曉通
(蘭州交通大學(xué)電子與信息工程學(xué)院, 蘭州 730070)
接觸網(wǎng)絕緣子是指部署在鐵路兩邊的電線桿上的絕緣子,該類絕緣子所連接的輸電線路是負(fù)責(zé)為鐵路所通過的列車提供必要電力的。其狀態(tài)的好壞影響著鐵路供電系統(tǒng)能否安全穩(wěn)定運行。然而,由于接觸網(wǎng)鋪設(shè)高度相對較低,常年暴露在大氣環(huán)境中,更易受到各類因素影響,形成污垢,造成絕緣性能下降[1]。
隨著計算機視覺技術(shù)的突飛猛進,利用其進行絕緣子檢測成為了新的發(fā)展趨勢。何洪英等提出了使用直方圖波谷分割方法,對不同濕度下絕緣子紅外圖像進行了分割提取[2];吳文海等提出了基于近義詞分配的絕緣子識別與分類[3];仝衛(wèi)國提出多特征相結(jié)合的信息融合方法對絕緣子進行識別[4]。以上傳統(tǒng)算法在識別絕緣子時沒有考慮復(fù)雜背景,而接觸網(wǎng)絕緣子由于鋪設(shè)較低其背景往往非常復(fù)雜。姚建剛等利用神經(jīng)網(wǎng)絡(luò)與溫度特征對絕緣子進行識別[5];陳春玲等利用Faster R-CNN對絕緣子進行識別[6];朱有產(chǎn)等提出了改進Mask R-CNN的絕緣子目標(biāo)識別方法[7];蘇超等利用SSD算法對絕緣子進行識別定位[8];鄒漢凌等提出基于Residual-FPN優(yōu)化的航拍絕緣子目標(biāo)識別[9];翟永杰等提出了改進區(qū)域候選網(wǎng)絡(luò)對絕緣子識別進行了研究[10]。以上深度學(xué)習(xí)方法的傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)雖然有良好的特征提取能力,但是網(wǎng)絡(luò)模型復(fù)雜、參數(shù)較多、計算量較大、檢測耗時較長,無法較好地適用于性能有限小型移動端嵌入式等平臺[11],很難通過視覺對絕緣子清洗機器人進行實時牽引控制。
最近幾年,關(guān)于神經(jīng)網(wǎng)絡(luò)的技術(shù)日漸成熟,大量新的技術(shù)方法被提出。GoogLeNet網(wǎng)絡(luò)通過增大網(wǎng)絡(luò)規(guī)模(包括深度和寬度)來提高網(wǎng)絡(luò)性能[12]。VGG通過使用小尺寸的卷積核應(yīng)用于計算機視覺[13]。SqueezeNet采用1×1卷積核,有效減少輸出特征圖的通道數(shù)[14]。Google 推出輕量級卷積網(wǎng)絡(luò)MobileNet[15],大幅度減少網(wǎng)絡(luò)參數(shù)和計算量,精度幾乎不下降,可應(yīng)用在ios和Android等移動平臺[16]。Inception v3方法將一個二維卷積拆分為兩個相對較小的卷積,從而可以有效降低參數(shù)量,提升計算速度[17]。
本研究針對當(dāng)前接觸網(wǎng)絕緣子識別面臨的難題與當(dāng)前深度學(xué)習(xí)發(fā)展的科技前沿新成果,提出了一種用SSD-MobileNet模型對復(fù)雜背景下接觸網(wǎng)絕緣子進行識別的方法。該模型以MobileNet-v1為網(wǎng)絡(luò)主干對復(fù)雜背景下的接觸網(wǎng)絕緣子進行特征提取,并以SSD目標(biāo)檢測器對其進行識別。其相較于傳統(tǒng)網(wǎng)絡(luò)模型參數(shù)較少,計算量較小,在輕量化和實時性方面有較大優(yōu)勢。
SSD(Single-Shot Multibox Detector)算法利用不同卷積層的feature map進行綜合,SSD網(wǎng)絡(luò)主要的設(shè)計思想是對目標(biāo)特征分層提取,并依此進行邊框回歸和分類。
SSD的網(wǎng)絡(luò)分為6個stage,每個stage都能學(xué)習(xí)到一個特征圖,然后在每個特征圖上進行邊框回歸和分類。SSD使用VGG-16[18]作為基礎(chǔ)主干網(wǎng)絡(luò)(conv4_3, fc_7),并在VGG-16基礎(chǔ)網(wǎng)絡(luò)上添加了特征提取層。
傳統(tǒng)的很多目標(biāo)識別算法對小目標(biāo)的檢測能力差,為了保證神經(jīng)網(wǎng)絡(luò)對小目標(biāo)有很好檢測效果,SSD模型除了在最終的特征圖上做目標(biāo)檢測之外,還在之前選取的5個特征圖上進行預(yù)測。SSD網(wǎng)絡(luò)結(jié)構(gòu)的第一個stage是VGG16的前5層網(wǎng)絡(luò),再將VGG16中兩個全連接層fc6和fc7轉(zhuǎn)化成兩個卷積層并且將fc_7作為第2個stage,在以VGG16為主干網(wǎng)絡(luò)的基礎(chǔ)上,SSD網(wǎng)絡(luò)繼續(xù)增加了Conv8、Conv9、Conv10和Conv11 4個網(wǎng)絡(luò)層,用它們來提取更高層次的語義信息同時作為第3、4、5、6個stage。
default box數(shù)量是SSD算法計算復(fù)雜度的關(guān)鍵。具體來說conv4_3、conv8_2、conv9_2卷積層每個feature map cell產(chǎn)生4個default box, 而fc7、conv6_2、conv7_2卷積層產(chǎn)生6個,一共產(chǎn)生38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4=8 732個default box。default box是目標(biāo)檢測的候選區(qū)域, default box的數(shù)量越多,計算所需要的時間越長,即計算時間與default box的數(shù)量近似成正比。
MobileNet為Google推出的一款高效的移動端輕量化神經(jīng)網(wǎng)絡(luò)模型,其核心是深度可分離卷積(Depthwise Separable Convolution, DSC)[19]。DSC是將傳統(tǒng)的標(biāo)準(zhǔn)卷積分解為一個深度卷積(depthwise convolution)和一個1×1的卷積(pointwise convolution)。圖1中,(a)表示傳統(tǒng)的標(biāo)準(zhǔn)卷積,(b)表示DSC的深度卷積部分,(c)表示DSC的1×1的卷積部分。
圖1 標(biāo)準(zhǔn)卷積與深度可分離卷積原理圖Fig.1 Schematic diagram of standard convolution and depth separable convolution
假設(shè)輸入特征圖大小為DF×DF×M,輸出特征圖大小為DF×DF×N,卷積核大小為DK×DK。傳統(tǒng)卷積操作過程如公式(1)所示:
(1)
傳統(tǒng)卷積的計算量:DK×DK×M×N×DF×DF。
DSC的深度卷積操作過程見公式(2):
(2)
其中深度卷積計算量為:DK×DK×M×DF×DF,1×1逐點卷積的計算量為:M×N×DF×DF,DSC的計算量為二者之和:DK×DK×M×DF×DF+M×N×DF×DF。
DSC的計算量與標(biāo)準(zhǔn)卷積的比為
(3)
MobileNet主要使用的卷積核尺寸為3×3,即DK等于3,通過公式(3)的結(jié)果可以看出采用深度可分離卷積可以將計算量減少8到9倍,大幅度提高了計算的效率。
由于大量使用1×1的卷積,用這些少數(shù)的乘加運算來定義簡單的網(wǎng)絡(luò)是不夠的,確保這些操作有效是非常重要的。實例化非結(jié)構(gòu)稀疏矩陣操作除非有一個非常高的稀疏度,否則不一定比稠密矩陣操作更加快速。該模型將計算量集中在1×1卷積中。通常卷積由GEMM來實現(xiàn),但是要求一個im2col即在內(nèi)存中初始化重新排序來映射到GEMM。而1×1卷積則不需要內(nèi)存的重新排序,并且能直接用GEMM方法實現(xiàn),大幅度提升了計算效率,因此是最優(yōu)化的數(shù)值線性代數(shù)算法之一。MobileNet中有大約95%的乘加運算來自于1×1的逐點卷積上,并且同時也占總參數(shù)量的75%左右,見表1。
表1 每種層的計算量和參數(shù)占比Table 1 The amount of calculation and the proportion of parameters for each layer
圖2是傳統(tǒng)卷積(a)與MobileNet中DSC(b)的結(jié)構(gòu)對比。Depth-wise卷積和1×1卷積后都增加了BN層和ReLU的激活層。
圖2 傳統(tǒng)卷積(a)與深度可分離卷積(b)結(jié)構(gòu)圖Fig.2 Traditional convolution (a) and depth separable convolution (b) structure diagram
MobileNet整體見表2,將深度卷積、逐點卷積各算一層,一共含有28層。
表2 MobileNet的整體結(jié)構(gòu)Table 2 MobileNet body architecture
MobileNet提出了寬度因子α(控制通道數(shù))和分辨率因子ρ(控制分辨率)兩個超參數(shù)。加入這兩個超參數(shù)后的DSC的計算量為
DK×DK×αM×ρDF×ρDF+αM×αN×ρDF×ρDF
(4)
表3 寬度因子對模型的影響圖Table 3 The influence graph of the width factor on the model
如表4所示,在imageNet數(shù)據(jù)集上使用DSC相較于標(biāo)準(zhǔn)卷積準(zhǔn)確率僅下降1%,但在計算量和參數(shù)量上大幅度減少。
表4 深度可分離與完全標(biāo)準(zhǔn)卷積對比Table 4 Depthwise separable vs full convolution mobileNet
SSD算法中將VGG16作為神經(jīng)網(wǎng)絡(luò)的主干,VGG16為常規(guī)卷積網(wǎng)絡(luò)。為了使模型輕量化高效率,本研究采用MobileNet-v1網(wǎng)絡(luò)結(jié)構(gòu)的conv1~conv13來替換VGG16成為主干網(wǎng)絡(luò),其余部分仍采用SSD的結(jié)構(gòu)。將兩個部分各自的優(yōu)勢整合到一起,構(gòu)成SSD-MobileNet-v1模型,見圖3。
圖3 SSD-MobileNet網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 SSD-MobileNet network structure diagram
SSD損失函數(shù)分為兩個部分,整體損失函數(shù)公式如下:
(5)
其中,Lconf(x,c)為類別置信度損失函數(shù),Lloc(x,l,g)為位置損失函數(shù)。
絕緣子的對應(yīng)搜索框的位置損失函數(shù)為
(6)
絕緣子的類別置信度損失函數(shù)為
(7)
SSD-MobileNet識別精度優(yōu)異,參數(shù)較少,計算量相對少了很多,為輕量級模型。因此其計算對硬件要求很低。有了以上方面的技術(shù)支撐,我們可以將SSD-MobileNet安裝到樹莓派等移動端嵌入式平臺,這些平臺體積小功耗低。然后采集數(shù)據(jù)并對其進行預(yù)處理,將數(shù)據(jù)加載到SSD-MobileNet模型中訓(xùn)練出性能達到要求的權(quán)重模型。進而將訓(xùn)練好的權(quán)重模型移植到樹莓派等移動端嵌入式平臺,使其具備相應(yīng)的識別功能。其過程見圖4。其中模型訓(xùn)練模塊在性能較好的PC端完成。
圖4 程序設(shè)計流程圖Fig.4 Programming flowchart
小型無人機價格低廉,但其體積、電量都有限,很難安裝體積較大或功耗較高的計算機設(shè)備。我們可以將安裝有SSD-MobileNet的移動端嵌入式平臺應(yīng)用在小型無人機上,通過無人機對復(fù)雜背景下的接觸網(wǎng)絕緣子進行高效識別。
由于該模型具有很快的計算速度,具有實時性,因此可以將其應(yīng)用在工業(yè)接觸網(wǎng)絕緣子清洗機器人中,進行實時視覺引導(dǎo),引導(dǎo)具有清洗功能機械臂對接觸網(wǎng)絕緣子進行清理。在一定程度上提升了工作效率。
相較于傳統(tǒng)模型計算速度慢,難以進行實時性的操作,將SSD-MobileNet模型應(yīng)用到接觸網(wǎng)絕緣子識別使這一問題得到一定程度的解決。同時在一定程度上解決了接觸網(wǎng)絕緣子處理工程上效率和成本的部分難題。
本設(shè)計的實驗環(huán)境采用Windows10操作系統(tǒng),Python3.6開發(fā)語言,CPU為core i7 6820HK,GPU顯卡為NVIDIA GTX 980m,內(nèi)存為16GB,并且進行了對CUDA 10和CUDNN進行了成功配置,即可用GPU加速運算該算法。本研究采用Facebook推出的PyTorch深度學(xué)習(xí)框架、MobileNet-v1深度可分離卷積的輕量級卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)以及SSD目標(biāo)檢測器。
在復(fù)雜背景下對接觸網(wǎng)絕緣子的圖片采集了2 000張左右,本文考慮到像素會影響訓(xùn)練,因此對采集到的像素為1 400×2 100的圖片進行像素縮減,縮減至原來的1/2。本實驗采用labelImg工具對圖片進行標(biāo)注制成數(shù)據(jù)集。通過數(shù)據(jù)集擴充程序?qū)в袠?biāo)簽的數(shù)據(jù)集進行小樣本數(shù)據(jù)集增廣處理得到6 000張左右復(fù)雜背景下的接觸網(wǎng)絕緣子圖片。本實驗將數(shù)據(jù)集的約80%作為訓(xùn)練集,剩余部分作為測試集。
深度學(xué)習(xí)依賴于高效率的計算能力和大規(guī)模的數(shù)據(jù)集,由于實驗數(shù)據(jù)集是有限的,為了提高網(wǎng)絡(luò)識別性能需要對MobileNet-v1進行特征提取訓(xùn)練。所以本實驗在官方給出的預(yù)訓(xùn)練模型的基礎(chǔ)上訓(xùn)練自己的數(shù)據(jù)集,大幅縮短訓(xùn)練時間。
實驗采用分段訓(xùn)練,在整個模型訓(xùn)練過程中,在多個訓(xùn)練節(jié)點調(diào)整學(xué)習(xí)率的大小,減少模型訓(xùn)練過程中的損失。學(xué)習(xí)率的設(shè)置采用了warm up預(yù)熱學(xué)習(xí)率的方法[20],因為在訓(xùn)練剛開始的時候,模型的權(quán)重是隨機進行初始化的,此時若使用一個較大的學(xué)習(xí)率,有可能會帶來模型的不穩(wěn)定,使用warm up的方式,使開始訓(xùn)練的幾個批次內(nèi)學(xué)習(xí)率較小(如0.001)。模型在較小學(xué)習(xí)率的預(yù)熱訓(xùn)練下,可以趨于穩(wěn)定,等模型相對穩(wěn)定之后,再選擇預(yù)先要使用的學(xué)習(xí)率(如,0.005)進行訓(xùn)練,加快其收斂速度,讓訓(xùn)練效果更好。其中動量參數(shù)momentum設(shè)置為0.9,整體訓(xùn)練過程采用隨機梯度下降算法(SGD)優(yōu)化整個網(wǎng)絡(luò)模型。
經(jīng)過大約50 000步的訓(xùn)練,損失函數(shù)已經(jīng)收斂,見圖5。當(dāng)訓(xùn)練進行到40 000步左右時,損失函數(shù)值已經(jīng)趨于平穩(wěn),此時模型的性能趨于穩(wěn)定。使用測試集對訓(xùn)練好的模型進行測試,其在測試集上的精度達到了90.59%,并且其在測試集上的平均耗時僅為0.039 9 s,見圖6。
圖5 損失函數(shù)圖Fig.5 Loss function graph
圖6 測試集測試結(jié)果圖Fig.6 Test results of the test set
本實驗結(jié)果評價指標(biāo)采用平均精確度AP(Average Precision)和平均檢測耗時Mean Time。其中檢測時間即為圖像加載到模型后經(jīng)卷積神經(jīng)網(wǎng)絡(luò)和檢測器到輸出結(jié)果所消耗的時間。平均精確率可以反映出一個模型的基本性能,而檢測耗時能反映出其實時性,也可側(cè)面反映其計算量。
將常規(guī)卷積的SSD模型與SSD-MobileNet模型的實驗結(jié)果進行對比,SSD模型與SSD-MobileNet模型均有較高的精確度,但檢測耗時方面,后者具有明顯優(yōu)勢,見表5。
表5 模型對比圖Table 5 Model comparison chart
其中,SSD-MobileNet模型相較于SSD模型精確度僅下降了1.6%左右,但其識別耗時為SSD模型的約4/5,速度顯著提升。檢測耗時僅為40 ms左右,對于絕緣子識別設(shè)備能夠較好地對其他設(shè)備進行實時牽引控制。SSD-MobileNet模型相對于傳統(tǒng)模型其模型更輕量,速度更快,能更好地用于硬件有限的小型設(shè)備,因此其在復(fù)雜背景下接觸網(wǎng)絕緣子識別技術(shù)中降低成本,解決實時性視覺引導(dǎo)問題有著重要的意義。
本研究根據(jù)工程作業(yè)的實際情況,除復(fù)雜背景外光線和遮擋也會對識別絕緣子產(chǎn)生一定的影響。所以研究對3種常見情況下的接觸網(wǎng)絕緣子進行效果測試,這3種情況下的絕緣子均在錯綜復(fù)雜的背景中,測試效果見圖7。其中圖(a)和(b)為在較暗光線下的測試效果,圖(c)和(d)為在較強的陽光下的測試效果,圖(e)和(f)為絕緣子在障礙物部分遮擋下的測試效果。
圖7 測試效果圖Fig.7 Test effect chart
根據(jù)本實驗的測試效果來看,在不同難度的條件下絕緣子均能在復(fù)雜背景中被識別出來。反映了SSD-MobileNet模型應(yīng)用于復(fù)雜背景下接觸網(wǎng)絕緣子識別具有可行性。
針對傳接觸網(wǎng)絕緣子識別算法識別效率低,使設(shè)備難以在工程中進行實時性視覺引導(dǎo),致使工程效率難以提升。本研究結(jié)合當(dāng)前接觸網(wǎng)絕緣子識別效率面臨的難題與當(dāng)前深度學(xué)習(xí)發(fā)展的科技前沿新成果,提出了將SSD-MobileNet輕量級模型應(yīng)用于復(fù)雜背景下接觸網(wǎng)絕緣子識別。相對于傳統(tǒng)卷積模型,在精度幾乎不變的情況下,大大地提升了系統(tǒng)處理數(shù)據(jù)速度,進而大幅度降低了識別時間,使之能廣泛應(yīng)用在計算能力有限的嵌入式系統(tǒng)中,這非常順應(yīng)現(xiàn)如今的工程和工業(yè)的實際情況。該模型使設(shè)備的使用能夠靈活多變,以應(yīng)對各種復(fù)雜多變的使用環(huán)境。初步解決了當(dāng)前識別效率的難題。但是根據(jù)實驗結(jié)果,其精度相較于SSD模型略有下降,網(wǎng)絡(luò)結(jié)構(gòu)部分仍有較大的提升空間,因此在今后的實驗會對該部分進行進一步的研究。