鐘映春,孫思語,呂 帥,羅志勇,熊勇良,何惠清
(1. 廣東工業(yè)大學(xué) 自動(dòng)化學(xué)院,廣東 廣州 510006;2. 廣州市樹根互聯(lián)技術(shù)有限公司,廣東 廣州 510308;3. 廣州優(yōu)飛科技有限公司,廣東 廣州 510830;4. 國(guó)家電網(wǎng)江西省萍鄉(xiāng)供電公司,江西 萍鄉(xiāng) 330000)
電力鐵塔是電力架空輸電線路的主要支撐金具[1]。如果鐵塔、架空輸電線路上存在鳥巢、風(fēng)箏等異物會(huì)嚴(yán)重影響架空輸電線的安全[2-3]。為此,架空輸電線路需要進(jìn)行定期巡檢。采用多旋翼無人機(jī)巡檢是當(dāng)前架空輸電線路巡檢的重要方式之一[4-5]。無人機(jī)在巡檢過程中會(huì)針對(duì)電力鐵塔進(jìn)行專門拍照成像,而后通過人工檢測(cè)或者模式識(shí)別的方式檢測(cè)鐵塔航拍圖像中是否存在鳥巢、風(fēng)箏等異物。無人機(jī)拍攝的電力鐵塔圖像數(shù)量大,采用人工檢測(cè)方法效率低下,為此有必要研究自動(dòng)識(shí)別鐵塔航拍圖像中鳥巢等異物的方法。
在從圖像中檢測(cè)識(shí)別鳥巢的研究中,Wu等[6]提出采用條紋方向直方圖和條紋長(zhǎng)度直方圖描述鳥巢的特征,并將其用于高鐵架空輸電線接觸網(wǎng)系統(tǒng)中鳥巢的檢測(cè)識(shí)別。實(shí)驗(yàn)表明,該方法的識(shí)別精度在35%~40%范圍內(nèi)。由于識(shí)別精度不高,難以在實(shí)踐中使用。徐晶等[7]將巡檢圖像分為若干圖像子塊,分析各個(gè)圖像子塊中不同方向的線段密度,從而判決某個(gè)圖像子塊是否屬于鐵塔區(qū)域;而后,在包含鐵塔區(qū)域的圖像子塊內(nèi),搜索符合鳥巢樣本的HSV(Hue Saturation Value)顏色特征量的連通區(qū)域,作為候選的鳥巢區(qū)域;再分析候選鳥巢區(qū)域的形狀特征參數(shù):描述鳥巢粗糙度的灰度方差特征量,描述鳥巢紋理的慣性矩特征量等,并以這兩個(gè)特征作為鳥巢識(shí)別的依據(jù),判斷圖像中是否包含鳥巢。實(shí)驗(yàn)表明,檢測(cè)精度在87.5%左右,識(shí)別精度較好,但是對(duì)于紋理特征不明顯的鳥巢,其識(shí)別精度有限。Lei等[8]采用Fast R-CNN方法識(shí)別無人機(jī)航拍圖像中的絕緣子缺陷和鳥巢。結(jié)果表明,平均檢測(cè)精度可以達(dá)到97.6%,但是每張圖像的識(shí)別時(shí)間長(zhǎng)達(dá)201 ms。這種檢測(cè)方法雖然精度較好,但是識(shí)別效率偏低,且權(quán)重參數(shù)規(guī)模未知,難以應(yīng)用于無人機(jī)巡檢過程中的實(shí)時(shí)檢測(cè)。
在無人機(jī)巡檢電力輸電線路的過程中,會(huì)產(chǎn)生大量的鐵塔航拍圖像。為了能夠自動(dòng)檢測(cè)鐵塔航拍圖像中的鳥巢,并著眼于未來無人機(jī)在巡檢過程中能夠?qū)崟r(shí)識(shí)別特定的目標(biāo)物,本文改進(jìn)了經(jīng)典的YOLOv3(You Only Look Once-Version 3,YOLOv3)算法,并試圖在平均識(shí)別精度、識(shí)別效率和權(quán)重參數(shù)規(guī)模3個(gè)方面取得平衡。首先,本文設(shè)計(jì)了鐵塔航拍圖像中鳥巢識(shí)別的總體架構(gòu);其次,本文構(gòu)建了用于訓(xùn)練和測(cè)試的鐵塔圖像數(shù)據(jù)集;第三,本文分別從預(yù)測(cè)框的寬高損失函數(shù)、預(yù)測(cè)類別不平衡損失函數(shù)和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)等3個(gè)方面對(duì)經(jīng)典YOLOv3算法進(jìn)行改進(jìn);最后進(jìn)行了改進(jìn)算法的測(cè)試和對(duì)比實(shí)驗(yàn)。
本文設(shè)計(jì)的鐵塔航拍圖像中鳥巢識(shí)別的總體架構(gòu)如圖1所示,包括構(gòu)建圖像數(shù)據(jù)集、構(gòu)建識(shí)別算法和結(jié)果分析等主要過程。
圖 1 鐵塔航拍圖像中鳥巢識(shí)別的架構(gòu)Fig.1 Structure of bird’s nest detection in aerial image of transmission tower
構(gòu)建數(shù)據(jù)集主要是進(jìn)行圖像尺寸歸一化、圖像擴(kuò)增和圖像標(biāo)注。構(gòu)建識(shí)別算法中對(duì)經(jīng)典YOLOv3算法中預(yù)測(cè)框的寬高損失函數(shù)、預(yù)測(cè)類別不平衡的損失函數(shù)、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)3個(gè)方面分別進(jìn)行改進(jìn)及對(duì)比實(shí)驗(yàn)。最后用平均精度值和F1評(píng)價(jià)指標(biāo)對(duì)改進(jìn)前后的算法性能進(jìn)行評(píng)估。
本文所使用的圖像數(shù)據(jù)集,是無人機(jī)在巡檢國(guó)家電網(wǎng)江西省某供電公司輸電線路的過程中實(shí)際拍攝的圖像。由于獲取的圖像來自于不同無人機(jī)上不同類型和廠家的攝像頭,且拍攝角度和圖像尺度不同,為了能夠完成識(shí)別檢測(cè),將所有圖像像素歸一化[9]為416×416。
由于鐵塔航拍原始圖像共有3 380張,總體數(shù)量不多,為了盡量減小在訓(xùn)練過程中產(chǎn)生的過擬合,本文采用了圖像擴(kuò)增技術(shù)[10],主要包括:
(1) 按照一定的比例放大或者縮小原始圖像。
(2) 隨機(jī)旋轉(zhuǎn)原始圖像。
(3) 隨機(jī)移動(dòng)原始圖像,改變圖像內(nèi)容的位置。
(4) 在原始圖像中適當(dāng)增加噪聲,如椒鹽噪聲和高斯噪聲。
經(jīng)過擴(kuò)增后共得到圖像13 316張,按照3∶1的比例分為訓(xùn)練集與測(cè)試集,故一共有9 986張訓(xùn)練集圖像,3 330張測(cè)試集圖像,訓(xùn)練集與測(cè)試集的圖像是原始圖像數(shù)據(jù)集隨機(jī)分配的。任意挑選一張鐵塔圖像及其變換圖像如圖2所示。
圖 2 圖像擴(kuò)增示例Fig.2 An example of increasing the number of images
本文使用LabelImg軟件作為標(biāo)注工件,對(duì)圖像數(shù)據(jù)集中鳥巢的類別和位置進(jìn)行標(biāo)注[11]。
經(jīng)典的YOLOv3算法的核心是一個(gè)端到端的卷積神經(jīng)網(wǎng)絡(luò)算法(Convolution Neural Network,CNN)[12]。該算法含有卷積層、殘差層和3個(gè)尺度的特征交互層,采用1×1卷積塊進(jìn)行降維,后面是3×3卷積層,初始卷積層和殘差層從圖形中提取特征,3個(gè)尺度的特征交互層負(fù)責(zé)預(yù)測(cè)輸出目標(biāo)的概率以及坐標(biāo)參數(shù)。
經(jīng)典的YOLOv3算法具有以下幾個(gè)主要特點(diǎn):(1) 該算法采用一個(gè)CNN網(wǎng)絡(luò)來實(shí)現(xiàn)檢測(cè),并采用一種單管道策略訓(xùn)練與測(cè)試,故而訓(xùn)練和識(shí)別速度比其他CNN算法的效率更高。(2) 該算法是對(duì)整張圖片做卷積,3個(gè)尺度的特征交互層起到了凝聚注意力的作用,使得其在檢測(cè)目標(biāo)有相對(duì)更大的視野,不容易對(duì)背景進(jìn)行誤判。(3) 該算法的泛化能力比其他CNN算法更強(qiáng),在做遷移學(xué)習(xí)時(shí),魯棒性更高。
在將經(jīng)典的YOLOv3算法用于識(shí)別電力鐵塔航拍圖像中的鳥巢時(shí),存在識(shí)別率不夠理想、識(shí)別效率不高、權(quán)重參數(shù)規(guī)模過大等不足。為此本文對(duì)YOLOv3算法進(jìn)行以下改進(jìn)。
3.2.1 改進(jìn)預(yù)測(cè)框的寬高損失函數(shù)
原始的YOLOv3算法中采用二元交叉熵?fù)p失函數(shù)(Binary Cross-entropy Loss),主要由預(yù)測(cè)框的中心點(diǎn)坐標(biāo)損失、預(yù)測(cè)框的寬高損失、預(yù)測(cè)類別不平衡損失及預(yù)測(cè)框的置信度等4個(gè)部分組成。其中,預(yù)測(cè)框的寬高損失函數(shù)為
該函數(shù)計(jì)算了每個(gè)網(wǎng)格單元 (i=0,1,···,S2)的每一個(gè)候選邊界框( j=0,1,···,B)與真實(shí)目標(biāo)邊界框的寬高誤差總和。其中,λcoord是 一個(gè)常數(shù)。主要是判斷第 i 個(gè)單元格中第 j個(gè)邊界框是否含有這個(gè)目標(biāo),如果負(fù)責(zé)預(yù)測(cè)這個(gè)目標(biāo)則為1,不負(fù)責(zé)則為0。wi為第i 個(gè)預(yù)測(cè)框?qū)挾?。為真?shí)目標(biāo)邊界框?qū)挾取i為第i 個(gè)預(yù)測(cè)框高度。為真實(shí)目標(biāo)邊界框高度。
分析電力鐵塔航拍圖像可見,由于無人機(jī)拍攝的角度和拍攝距離各不相同,使得在鐵塔航拍圖像中鳥巢的尺度有大有小,相差很大。此外,在整個(gè)圖像數(shù)據(jù)集中,小尺寸的鳥巢數(shù)目遠(yuǎn)遠(yuǎn)多于大尺寸的鳥巢數(shù)目。若沿用經(jīng)典算法中的損失函數(shù),將嚴(yán)重影響識(shí)別精度。為此,本文用類似于歸一化的思想對(duì)預(yù)測(cè)框的寬高損失函數(shù)進(jìn)行改進(jìn),以緩解圖像中物體大小不一的情況[13]。改進(jìn)后的預(yù)測(cè)框?qū)捀邠p失函數(shù)為
3.2.2 改進(jìn)預(yù)測(cè)類別不平衡損失函數(shù)
分析原始的電力鐵塔航拍圖像可見,平均一張航拍圖像包含1.6個(gè)鳥巢,圖像中的大部分內(nèi)容是背景物體。背景物體過多,就會(huì)在總損失函數(shù)L oss中占據(jù)主導(dǎo)地位,而目標(biāo)物體鳥巢在總損失函數(shù) Loss中的占比較小。這種情況稱為預(yù)測(cè)類別的不平衡。為了減小這種類別之間的不平衡,本文在原始的二元交叉熵?fù)p失函數(shù)的基礎(chǔ)上,結(jié)合Focal Loss算法的思路,重新定義預(yù)測(cè)類別不平衡的損失函數(shù),以改進(jìn)原來的類別不平衡問題[14]。
在經(jīng)典的二元交叉熵?fù)p失函數(shù)中,各個(gè)訓(xùn)練樣本交叉熵的直接求和可以得到分類的損失函數(shù)LossCE:
因?yàn)樵阼F塔圖像中檢測(cè)識(shí)別鳥巢是一個(gè)二分類問題,即將圖像中的目標(biāo)物確定為是鳥巢或者不是鳥巢物體,所以在公式中只有兩種情況。式(3)中, p表示候選框內(nèi)目標(biāo)物屬于鳥巢的概率。y表示目標(biāo)物的標(biāo)簽Label,y 的取值為{+1,-1}。y =1表示目標(biāo)物為鳥巢,y =-1表示目標(biāo)物為其他物體。當(dāng)候選框內(nèi)目標(biāo)物屬于鳥巢,也就是y =1時(shí),則該候選框內(nèi)目標(biāo)物預(yù)測(cè)為1的概率值越小,損失就越大。
為了表示簡(jiǎn)單,用 pt表示候選框中目標(biāo)物屬于鳥巢的概率,公式(3)可以寫成
為了減小類別之間的不平衡,本文改進(jìn)損失函數(shù)為
式(5)中,專注參數(shù) γ可以通過減少易分類樣本的權(quán)重,相對(duì)增加難分類樣本的權(quán)重,從而使得模型在訓(xùn)練時(shí)更專注于難分類的樣本。 αt是本文定義的權(quán)重系數(shù)。通過該系數(shù)可以調(diào)整正負(fù)樣本的權(quán)重,還可以控制難易分類樣本的權(quán)重。
3.2.3 改進(jìn)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
針對(duì)經(jīng)典YOLOv3算法的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),本文從以下兩個(gè)方面進(jìn)行改進(jìn):
(1) 因?yàn)椴捎昧硕喑叨忍卣鹘换尤诤蠙z測(cè)算法,經(jīng)典YOLOv3算法對(duì)尺度比較小的目標(biāo)物體的識(shí)別率相比于CNN有顯著提高。經(jīng)典的YOLOv3算法所得最大特征圖像素達(dá)到52×52。由于鳥巢在本文的圖像數(shù)據(jù)集中屬于尺度比較小的目標(biāo)物體且頻繁出現(xiàn),為了進(jìn)一步提高鳥巢的識(shí)別率,本文通過修改特征金字塔網(wǎng)絡(luò)的連接層數(shù),使其最大特征圖達(dá)到像素104×104,從而在識(shí)別小目標(biāo)方面具備比原有算法更好的效果。
(2) 經(jīng)典的YOLOv3算法采用了ResNet神經(jīng)網(wǎng)絡(luò)的思想。研究表明,在權(quán)重參數(shù)規(guī)模和識(shí)別率方面,當(dāng)前主流的DenseNet神經(jīng)網(wǎng)絡(luò)具有比ResNet神經(jīng)網(wǎng)絡(luò)更優(yōu)的性能[15]。為了提高YOLOv3算法的性能,本文根據(jù)DenseNet神經(jīng)網(wǎng)絡(luò)的思路對(duì)經(jīng)典的YOLOv3算法進(jìn)行改進(jìn)。
根據(jù)DenseNet神經(jīng)網(wǎng)絡(luò)的思想,對(duì)原神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)改造時(shí),為了加強(qiáng)對(duì)比性,也將輸入的圖像像素設(shè)為416×416。保留ResNet神經(jīng)網(wǎng)絡(luò)的前3層,后面加入類似于DenseNet神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。與原ResNet神經(jīng)網(wǎng)絡(luò)不同的是,為了使最終輸出的特征圖像素變?yōu)?3×13,將原ResNet神經(jīng)網(wǎng)絡(luò)的第2層中的平均池化改為最大池化,并將分類層去掉,而且在最后加上3個(gè)尺度的特征交互層。
改進(jìn)后的YOLOv3算法的神經(jīng)結(jié)構(gòu),如圖3所示。
圖 3 改進(jìn)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的YOLOv3Fig.3 Improved neural network of YOLOv3
實(shí)驗(yàn)的硬件環(huán)境為:采用i7-6700KCPU,32G內(nèi)存,NVIDIA公司的GTX1070系列GPU卡,顯存為8G,有1 920個(gè)CUDA內(nèi)核,內(nèi)存帶寬256 GB/s。
實(shí)驗(yàn)的軟件環(huán)境為:操作系統(tǒng)為Windows10,編程環(huán)境為VS2015,darknet,CUDA9.0,cuDNN7.0。在數(shù)據(jù)集擴(kuò)增階段以及實(shí)驗(yàn)結(jié)果分析也用到Keras深度學(xué)習(xí)框架。
本文采用平均精度值(Mean Average Precision,Map)、F1指標(biāo)對(duì)改進(jìn)前后的算法性能進(jìn)行評(píng)價(jià)[16]。
其中,Map值的含義為:針對(duì)每一個(gè)不同的召回率(Recall,R)值(在0到1之間每隔0.1取一個(gè)點(diǎn),共11個(gè)點(diǎn)),選取其大于等于這些R值時(shí)的查準(zhǔn)率(Precision,P)最大值,然后計(jì)算查準(zhǔn)召回值PR(Precision Recall,PR)[17]曲線下面積最大值為平均查準(zhǔn)值A(chǔ)P(Average Precision,AP),然后計(jì)算所有類別AP的平均值就是檢測(cè)到目標(biāo)的平均精度值Map。
此外,本文采用F1指標(biāo)進(jìn)行算法性能評(píng)價(jià)。
F1指標(biāo)綜合表達(dá)了召回率R和查準(zhǔn)率P相互促進(jìn)又相互制約的關(guān)系,可以在二者之間進(jìn)行平衡。F1值越高,物體識(shí)別算法就越好。
所有實(shí)驗(yàn)均是從數(shù)據(jù)集中隨機(jī)選取9 986張圖像作為訓(xùn)練集,其余3 330張圖像作為測(cè)試集。迭代次數(shù)為30 000次,采用分布策略的學(xué)習(xí)率和隨機(jī)多尺度訓(xùn)練方式。在實(shí)驗(yàn)過程中,僅改變算法相關(guān)的參數(shù),而其他參數(shù)都保持不變。
設(shè)計(jì)進(jìn)行3組實(shí)驗(yàn)。實(shí)驗(yàn)1:在經(jīng)典的YOLOv3算法基礎(chǔ)上,改進(jìn)預(yù)測(cè)框的寬高損失函數(shù);實(shí)驗(yàn)2:在實(shí)驗(yàn)1的改進(jìn)基礎(chǔ)上,疊加預(yù)測(cè)類別不平衡損失函數(shù)的改進(jìn);實(shí)驗(yàn)3:在實(shí)驗(yàn)2的改進(jìn)基礎(chǔ)上,疊加神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)。
采用圖像數(shù)據(jù)集對(duì)經(jīng)典的YOLOv3算法和預(yù)測(cè)框的寬高損失函數(shù)改進(jìn)后的YOLOv3算法進(jìn)行訓(xùn)練和測(cè)試,相應(yīng)的損失函數(shù)Loss曲線以及Map曲線如圖4所示。在圖4中,藍(lán)色曲線為經(jīng)典的YOLOv3算法結(jié)果,綠色曲線為實(shí)驗(yàn)1結(jié)果,由圖4可見:
圖 4 實(shí)驗(yàn)結(jié)果Fig.4 Results of experiment
(1) 訓(xùn)練迭代次數(shù)達(dá)到30 000次,原始YOLOv3算法和預(yù)測(cè)框的寬高損失函數(shù)改進(jìn)后的YOLOv3算法均趨向收斂,Map值達(dá)到穩(wěn)態(tài)。
(2) 對(duì)比藍(lán)、綠兩條Map曲線,算法改進(jìn)前的Map值波動(dòng)幅度較大,準(zhǔn)確率略低;而改進(jìn)后的Map值波動(dòng)幅度減小,準(zhǔn)確率整體上升1%~3%,且迭代約17 000次開始就進(jìn)入穩(wěn)態(tài),穩(wěn)定在89%左右。
由此可見,改進(jìn)預(yù)測(cè)框的寬高損失函數(shù)后,YOLOv3算法的識(shí)別精度與魯棒性得到一定程度的改善。
在實(shí)驗(yàn)1的基礎(chǔ)上,疊加進(jìn)行預(yù)測(cè)類別不平衡損失函數(shù)的改進(jìn)實(shí)驗(yàn),相應(yīng)的損失函數(shù)Loss曲線以及Map曲線如圖4中黃色曲線所示。
在實(shí)驗(yàn)中,設(shè)置式(5)中的參數(shù)α為0.5,γ為2,此時(shí)的識(shí)別效果較好,由圖4可見:
(1) 實(shí)驗(yàn)2的改進(jìn)算法損失函數(shù)趨向收斂,且Map值在大約迭代11 000次就進(jìn)入穩(wěn)態(tài),早于經(jīng)典算法和預(yù)測(cè)框的寬高損失函數(shù)改進(jìn)的算法。
(2) 改進(jìn)預(yù)測(cè)類別不平衡損失函數(shù)后的算法的Map值穩(wěn)定達(dá)到89%左右,迭代后期整體高于經(jīng)典算法和實(shí)驗(yàn)1改進(jìn)的算法。
由此可見,預(yù)測(cè)類別不平衡損失函數(shù)改進(jìn)后,YOLOv3算法的識(shí)別精度和訓(xùn)練時(shí)間得到一定程度的改善,且改善效果比實(shí)驗(yàn)1效果更好。
在實(shí)驗(yàn)2的基礎(chǔ)上,疊加進(jìn)行神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4中紅色曲線所示,由圖4可見:
(1) 改進(jìn)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)后的算法損失函數(shù)趨向收斂,且Map值在大約9 000次迭代準(zhǔn)確率逐漸上升,22 000次迭代進(jìn)入穩(wěn)態(tài)。
(2) 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)后的算法的Map值穩(wěn)定達(dá)到97%左右,明顯高于經(jīng)典算法和其他改進(jìn)算法。
由此可見,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)后,YOLOv3算法的性能得到顯著改善。
實(shí)驗(yàn)1至實(shí)驗(yàn)3獲得的實(shí)驗(yàn)結(jié)果如表1所示。
表 1 實(shí)驗(yàn)結(jié)果匯總Table 1 Summary of experimental results
(1) 改進(jìn)預(yù)測(cè)框的寬高損失函數(shù)主要是針對(duì)大小目標(biāo)的誤差對(duì)整體損失代價(jià)不一樣提出的,經(jīng)過歸一化的標(biāo)記框的寬和高,能使大小目標(biāo)的影響保持一致,就能檢測(cè)更多的小目標(biāo),Map最大值可以提高1.5%,F(xiàn)1值提高0.03。由于歸一化后的損失函數(shù)計(jì)算量較小,訓(xùn)練時(shí)間比原始算法縮短2 h。權(quán)重參數(shù)規(guī)模與經(jīng)典算法一樣。
(2) 改進(jìn)預(yù)測(cè)類別不平衡損失函數(shù)后,Map曲線相對(duì)來說波動(dòng)小一點(diǎn),魯棒性更好,比經(jīng)典算法更快達(dá)到穩(wěn)定的精度。這是因?yàn)樗惴訌?qiáng)了對(duì)鳥巢目標(biāo)的訓(xùn)練,從而適當(dāng)提高了精確率。與經(jīng)典算法相比,Map最大值可以提高2.2%,F(xiàn)1值提高0.04。但是,由于改進(jìn)了損失函數(shù),訓(xùn)練時(shí)間達(dá)到75 h。然而,由于忽略了部分背景的影響,識(shí)別時(shí)間減小3~4 ms。權(quán)重參數(shù)規(guī)模與經(jīng)典算法一樣。
(3) 對(duì)YOLOv3算法中的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),可以在不降低識(shí)別精度情況下縮減權(quán)重參數(shù)規(guī)模,以便將來在無人機(jī)上實(shí)時(shí)檢測(cè)識(shí)別鳥巢。實(shí)驗(yàn)結(jié)果證明,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)后,Map值提高10.5%,F(xiàn)1值提高了0.08,識(shí)別時(shí)間為40 ms,權(quán)重參數(shù)規(guī)模減小了41.7%。由此可見,相比經(jīng)典算法和其他改進(jìn)算法,雖然神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)使得識(shí)別時(shí)間略有增加,但是也可以達(dá)到25幀/s 的識(shí)別效率。更重要的是在權(quán)重參數(shù)規(guī)模大幅度減小的同時(shí),Map值得到了明顯提高。這為在無人機(jī)巡檢過程中實(shí)時(shí)識(shí)別奠定基礎(chǔ)。
將所有的改進(jìn)措施融合到一個(gè)算法中進(jìn)行鳥巢識(shí)別,并與改進(jìn)前的算法識(shí)別對(duì)比,任意挑選一組識(shí)別結(jié)果如圖5所示。
圖 5 算法改進(jìn)前后的鳥巢識(shí)別結(jié)果對(duì)比Fig.5 Results comparison of bird’s nest recognition of original and improved YOLO V3
對(duì)比圖5(a)和(b)可見,經(jīng)典的YOLOv3算法只能識(shí)別1處鳥巢,見圖5(a)中1處標(biāo)注有nest字符的方框。改進(jìn)后的算法可以識(shí)別出2處鳥巢,見圖5(b)中2處標(biāo)注有nest字符的方框。改進(jìn)算法的識(shí)別結(jié)果與人工識(shí)別結(jié)果相同。
針對(duì)經(jīng)典YOLOv3算法在識(shí)別電力鐵塔航拍圖像中的鳥巢過程中,存在識(shí)別精度欠佳、識(shí)別效率不高、權(quán)重參數(shù)規(guī)模過大等不足,本文分別從3個(gè)方面提出了改進(jìn)措施:預(yù)測(cè)框的寬高損失函數(shù)的改進(jìn)、預(yù)測(cè)類別不平衡損失函數(shù)的改進(jìn)和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)。實(shí)驗(yàn)結(jié)果表明:(1) 改進(jìn)預(yù)測(cè)框的寬高損失函數(shù)可以適當(dāng)提高識(shí)別的Map值和F1值,訓(xùn)練時(shí)間略有減少,識(shí)別效率略有提高,權(quán)重參數(shù)規(guī)模保持不變;(2) 改進(jìn)預(yù)測(cè)類別不平衡損失函數(shù)可以適當(dāng)提高識(shí)別的Map值和F1值,訓(xùn)練時(shí)間略有增加,識(shí)別效率有明顯提高,權(quán)重參數(shù)規(guī)模保持不變;(3) 改進(jìn)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)可以明顯提高識(shí)別的準(zhǔn)確性,并且可以顯著減小權(quán)重參數(shù)規(guī)模,代價(jià)是訓(xùn)練時(shí)間會(huì)增加一些,但是識(shí)別效率可以滿足實(shí)時(shí)性要求。由此可見本文提出的改進(jìn)措施切實(shí)有效,可以在提高識(shí)別精度和保持識(shí)別效率的同時(shí),顯著減小權(quán)重參數(shù)規(guī)模;對(duì)于YOLOv3而言,改進(jìn)其神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的效果明顯好于其他改進(jìn)措施。這可能是今后此算法改進(jìn)的主要方向之一。本文的探索為將來在無人機(jī)巡檢過程中實(shí)時(shí)識(shí)別目標(biāo)物奠定了重要基礎(chǔ)。