郭智超,鄧建球,劉愛東,叢林虎
(海軍航空大學(xué) 岸防兵學(xué)院, 山東 煙臺 264001)
近些年來,無人機技術(shù)和目標(biāo)檢測技術(shù)在很多領(lǐng)域得到普及和應(yīng)用,二者的結(jié)合也日趨緊密。在軍用領(lǐng)域無論是大型武裝無人機還是小型無人偵察機都能見其技術(shù)應(yīng)用。目前應(yīng)用在無人機上的航拍目標(biāo)檢測技術(shù)主要包括兩類,一類是采用傳統(tǒng)方法的目標(biāo)檢測技術(shù),另一類是基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)。
傳統(tǒng)的無人機航拍目標(biāo)檢測方法(例如:ViolaJones、HOG+SVM、DPM)主要分為3部分:區(qū)域選擇部分、特征提取模塊、分類器(SVM,Adaboost等)。傳統(tǒng)方法存在許多不足,例如時間復(fù)雜度高,計算速度慢,無法實現(xiàn)實時檢測,對于模型要求較高,檢測性能不穩(wěn)定窗口常發(fā)生冗余現(xiàn)象,抗噪性較差。
應(yīng)用在無人機上的基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)主要分兩類。一類檢測方法是基于候選區(qū)域的方法,如R-CNN在2014年被Girshick提出[1],在此基礎(chǔ)上又相繼提出了性能更優(yōu)的Fast R-CNN[2]和Faster R-CNN[3],微軟研究院的何凱明團隊分別在2016年提出了R-FCN模型和2017年在Faster R-CNN的基礎(chǔ)上提出的Mask-RCNN模型[4]。另一類是基于回歸的目標(biāo)檢測方法,例如YOLO系列的YOLOv1[5]和YOLOv2[6],由Redmon在2016年提出,這兩種算法檢測速率極快,但檢測精測較差。隨后2016年Liu提出的SSD[7]算法解決了YOLO檢測精度差的問題,在精度和速率方面均表現(xiàn)良好。
在目標(biāo)檢測這一領(lǐng)域上的算法和應(yīng)用技術(shù)上美國和歐洲起步最早。2006年美國國防高級研究計劃局開發(fā)了COCOA系統(tǒng)并將其廣泛應(yīng)用在無人機上[8],可以滿足無人機基本目標(biāo)檢測跟蹤等功能。1998年由歐盟國家支持研發(fā)的ADVISOR系統(tǒng),廣泛應(yīng)用于公共交通管理,通過人機交互的方式,可以對人群的行為特征進行判定。
相對于歐美,我國起步較晚,但發(fā)展速度較快,2001年清華大學(xué)科研團隊研發(fā)出一套視覺偵察系統(tǒng),適用于野外且性能良好[9],將攝像機裝在車載云臺上,可以在384*28圖像分辨率下對物體檢測達到12.5幀/s的檢測速率。2012年郭喬進等提出一種基于概率圖的LDA-CFR檢測模型[10],可以充分利用圖像區(qū)域間的相關(guān)性來提高目標(biāo)分類的準(zhǔn)確性。2019年黃繼鵬等提出一種多尺度的Faster-RCNN算法,主要面向檢測小型目標(biāo),解決了對小目標(biāo)檢測性能差的問題[11]。
當(dāng)前無人機航拍目標(biāo)檢測中存在的問題是:無人機從高空拍攝的目標(biāo)或大或小,圖片受天氣影響清晰或模糊,對于小目標(biāo)或模糊圖片中的目標(biāo)容易出現(xiàn)檢測不到或檢測率太低的問題[12]。為改善這類問題,本文將無人機航拍的照片制作成數(shù)據(jù)集進行網(wǎng)絡(luò)訓(xùn)練,以SSD算法為主體,并通過特征融合方式對其網(wǎng)絡(luò)結(jié)構(gòu)加以改進,實現(xiàn)對各類目標(biāo)的精確檢測。
SSD的基礎(chǔ)網(wǎng)絡(luò)為VGG-16[13],VGG-16網(wǎng)絡(luò)由13個卷積層、3個全連接層以及5個池化層所構(gòu)成,其中卷積層和全連接層具有權(quán)重系數(shù)。主干網(wǎng)絡(luò)主要作用到了第5層卷積,也就是第5個尺度上的第3個卷積層的輸出結(jié)果,輸出結(jié)果相應(yīng)地成為了之后卷積層的輸入。此外,SSD在原本的VGG-16基礎(chǔ)上作了相應(yīng)的改進,在其基礎(chǔ)上添加了特征提取層,其中前半部分仍采用VGG-16的結(jié)構(gòu),后兩層FC6與FC7分別經(jīng)過3*3*1 024卷積和1*1*1 024卷積從全連接層轉(zhuǎn)變成了卷積層Conv6和Conv7,并隨之在Conv7之后添加了4層卷積層。SSD模型將其中5種不同的卷積層輸出分別用2個不同的3*3卷積核進行卷積,分別對置信度(c0,c1,c2,…,cn-1)和位置(cx,cy,w,h)進行預(yù)測。圖1和圖2分別為SSD的網(wǎng)絡(luò)結(jié)構(gòu)和VGG-16網(wǎng)絡(luò)結(jié)構(gòu)。
圖1 SSD網(wǎng)絡(luò)結(jié)構(gòu)框圖
圖2 VGG-16結(jié)構(gòu)配置框圖
多尺度特征映射是SSD算法核心,特征映射圖(feature map)是由原始圖片經(jīng)過多次卷積之后形成的,SSD網(wǎng)絡(luò)包含多個卷積層,用多個卷積層后的特征映射圖來定位和檢測原始圖像信息[11]。同時SSD采用lower和upper的特征層做檢測,在每次檢測時包含6個特征層,分別為Conv4-3、Conv7、Conv8-2、Conv9-2、Conv10-2、Conv11-2。同一個feature map中的每個單元的默認(rèn)框數(shù)目相同,不同feature map同一個單元默認(rèn)框數(shù)目不同。其中默認(rèn)框尺度具體公式如下:
(1)
式中:Sk表示默認(rèn)框的尺度,Smin和Smax分別為最小尺度和最大尺度,m代表模型中特征層的個數(shù),k是每個中心點產(chǎn)生的默認(rèn)框個數(shù),最底層尺度為0.2,則取Smin=0.2;最高層尺度為0.9,則取Smax=0.9。對于第一層的特征層min-size=s1,max-size=s2;對于第二層的特征層min-size=s2,max-size=s3,依次類推,對于最高特征層,min-size=s5,max-size=s6。
(2)
當(dāng)長寬比ar=1時還會多產(chǎn)生一種默認(rèn)框,其尺度為
(3)
表1 SSD特征層默認(rèn)框參數(shù)
對于每個單元的每個默認(rèn)框,其都輸出一套獨立的檢測值,分為兩部分,分別為檢測目標(biāo)的置信度和邊界位置信息。每個feature map上的中心點都包含k個默認(rèn)框,每個默認(rèn)框包含有4個位置信息和c個類別置信度,其中位置信息定義為(cx,cy,w,h)。若一個feature map的大小為m*n,則其擁有m*n個單元,則所有單元的預(yù)測值共(c+4)個,由于SSD采用卷積做檢測,所以就需要(c+4)*k個卷積核完成這個feature map的檢測過程。
SSD中每個默認(rèn)框的損失函數(shù)都由定位損失與置信度損失構(gòu)成[14]
(4)
定位損失函數(shù)Lloc為:
(5)
置信度損失函數(shù)Lconf為:
(6)
傳統(tǒng)的特征融合方式,如pooling降維融合和deconvolution升維融合,都是單向傳遞信息,使得分類網(wǎng)絡(luò)無法利用其他方向的信息,模型檢測效果無法達到最佳。pooling降維融合在減小圖片尺寸同時擴大了感受野,deconvolution升維特征融合中則采用反卷積技術(shù),起到特征還原的功能。圖3為pooling降維特征融合方式,圖4為deconvolution升維特征融合方式。
圖3 pooling降維特征融合方式框圖
圖4 deconvolution升維特征融合方式框圖
反卷積是卷積的逆化過程。反卷積操作通過向輸入特征矩陣中添加空白點,再進行卷積操作,實現(xiàn)增大輸出矩陣的目的。
由于原SSD網(wǎng)絡(luò)對低層特征圖表征能力較差,采用反卷積方式可以將高層豐富的語義特征映射在低層特征圖中。改進網(wǎng)絡(luò)中,反卷積操作主要起著增強圖像表征能力的作用。
圖5(a)和圖5(b)均為反卷積操作,其卷積核步長分別為1和2。圖5(a)中反卷積輸入與輸出均為5*5;圖5(b)中通過在指定的間隔中插入padding參數(shù)使圖像得以擴充,從而實現(xiàn)上采樣操作,最后通過3*3的濾波器進行反卷積計算,其輸入為3*3,輸出為5*5。
設(shè)置參數(shù)時,當(dāng)padding為VALID時,卷積核始終都是位于輸入矩陣內(nèi)進行移動;當(dāng)padding為SAME時,卷積開始的時候保證卷積核的中心位于輸入角的頂點位置。圖5(a)和圖5(b)中padding參數(shù)值均為SAME。
圖5 反卷積操作過程示意圖
反卷積的輸出(即卷積的輸入)計算公式如下:
i=(o-1)*s+k-2*p
(7)
式中:i為反卷積輸出;s為步長(stride);k為卷積核尺寸;p為輸入圖片周圍填充的圈數(shù);o為反卷積輸入。
在改進的SSD網(wǎng)絡(luò)中,基礎(chǔ)網(wǎng)絡(luò)沒有發(fā)生改變,依然采用VGG-16網(wǎng)絡(luò)框架,通過改進特征融合方式提升原有SSD的效果[15-16]。由于各層feature map size不同,在特征融合前都會進行規(guī)范化操作。通過(Pooling+deconvolution)的方式連接了從上層pooling下來的feature map和從下層de-conv上來的feature map,從而融合了不同層的特征,增強了模型泛化能力,是分類網(wǎng)絡(luò)的感受野有所提高,表達能力更強,更方便檢測小目標(biāo)。同時在輸入分類器網(wǎng)絡(luò)前增加了feature map的通道數(shù),通過各個分類器網(wǎng)絡(luò)上的參數(shù)共享,從而減少訓(xùn)練的參數(shù),提高訓(xùn)練速度。
改進后的SSD網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。如圖6所示,每個特征層所由各特征層融合而成。如Conv4_3’其第一層由原Conv4_3卷積運算而成,其余各層由原Conv7至原Conv11_2通過de-conv上采樣融合而成。對于Conv8_2’,如圖7所示,其前兩層由原Conv4_3和Conv7 通過Pooling下采樣而成,第三層由原Conv8_2卷積而成,其余各層由原Conv9_2至Conv11_2通過de-conv上采樣融合而成。除Conv4_3’和Conv8_2’,其余改進后的特征層均通過類似方法融合而成。
圖6 改進后的SSD網(wǎng)絡(luò)結(jié)構(gòu)框圖
本次實驗的硬件條件包括因特爾酷睿 i7-9750處理器、頻率為2.60 GHz與2.59 GHz的CPU、8GB內(nèi)存、GTX1660Ti顯卡。軟件環(huán)境包括Windows10 64位操作系統(tǒng)、 PyCharm編譯軟件、python3.6.3編程語言、Caffe深度學(xué)習(xí)框架。在程序設(shè)計過程中,為實現(xiàn)算法模型,需要的軟件環(huán)境還包括CUDA、cuDNN、OpenCV等。
圖7 Conv8_2’多層融合示意圖
本實驗采用的自建數(shù)據(jù)集由大疆無人機在戶外拍攝的大量圖像數(shù)據(jù)和少量DOTA航拍數(shù)據(jù)集的圖片組成,該數(shù)據(jù)集中包含了大量在不同高度、不同角度以及不同環(huán)境下拍攝的關(guān)于輪船、汽車、飛機以及學(xué)校操場4個樣本的圖像,其中經(jīng)過無人機拍攝收集到的圖片經(jīng)過處理轉(zhuǎn)換為VOC的格式并加以存儲。數(shù)據(jù)集中一共包括2264張訓(xùn)練集圖片和512張測試集圖片,訓(xùn)練的數(shù)據(jù)集樣本如圖8(a)與圖8(b)所示。
圖8 數(shù)據(jù)集樣本圖
本網(wǎng)絡(luò)結(jié)構(gòu)的性能通過mAP指標(biāo)、檢測速度來進行綜合評價,其中mAP指標(biāo)綜合由精度(P)、召回率(Recall)和平均值組成[17]。檢測速度由每張照片的平均檢測時間來表示
(8)
(9)
(10)
TP:預(yù)測為正,實際為正;FP:預(yù)測為正,實際為負(fù);TN:預(yù)測為負(fù),實際為負(fù);FN:預(yù)測為負(fù),實際為正。
(11)
計算mAP,需要首先通過召回率和精度值求出每一類的AP,AP值是Precision-Recall曲線下方的面積,然后再對所有類的AP取平均值,即可求得mAP。
本實驗訓(xùn)練模型參數(shù)選擇如表2所示,按照設(shè)定的參數(shù)值經(jīng)過大量迭代訓(xùn)練,最終使得檢測模型達到最佳效果。
表2 訓(xùn)練模型參數(shù)
圖9為該檢測模型經(jīng)過8 000次網(wǎng)絡(luò)迭代訓(xùn)練后的損失值變化曲線,由圖9可知該模型在2 000次迭代訓(xùn)練之后損失值漸趨平穩(wěn),經(jīng)過8 000次迭代后訓(xùn)練后損失值大概穩(wěn)定在0.95左右,處于較低水平,且參數(shù)收斂性好,因此訓(xùn)練取得了較為不錯的效果。
圖9 損失值變化曲線
本次實驗以汽車為檢測目標(biāo),將SSD改進前與改進后的實驗效果進行對比,實驗對比效果如圖10所示。
圖10中,圖10(a)和圖10(b)為采用原本SSD檢測汽車時的效果圖,圖10(c)和圖10(d)為將SSD改進后的檢測效果。圖10(a)中出現(xiàn)了重復(fù)框現(xiàn)象且右側(cè)小目標(biāo)出現(xiàn)漏檢現(xiàn)象,圖10(b)中也出現(xiàn)了漏檢現(xiàn)象。相比之下,圖10(c)和圖10(d)中對同等目標(biāo)檢測的準(zhǔn)確率要高相對較高,且沒有出現(xiàn)重復(fù)框現(xiàn)象,對小目標(biāo)檢測效果也相對較好。
圖10 SSD改進前后效果圖
由圖11(a)和圖11(b)相對比可知,大霧天氣可以對檢測率產(chǎn)生較大影響,但在此方法下仍舊可以將目標(biāo)識別;由圖11(c)和圖11(d)對比可知拍攝角度對檢測率影響并不大;圖11(e)和圖11(f)分別是從不同高度拍攝的兩張照片,檢測率相近。由圖11(g)和圖11(h)航拍的大型飛機和小型飛機相對比可知,小型飛機的準(zhǔn)確率在70%左右,雖然不比大型飛機的97%的準(zhǔn)確率,但所有目標(biāo)都檢測到,沒有發(fā)生漏檢和誤檢。該檢測方法對于平穩(wěn)拍攝下的、可視條件高的、目標(biāo)較大的物體檢測率較高,個別處于惡劣環(huán)境下的物體檢測率不高,但惡劣情況畢竟居于少數(shù),使得對于檢測模型影響有限。而且從實驗效果圖觀察可知,所有檢測物體并未發(fā)生重復(fù)框現(xiàn)象。
為了對模型進行直面與客觀的分析,分別對原版SSD、YOLOv2以及較為流行的R-FCN和Faster R-CNN網(wǎng)絡(luò)進行實驗,使用相同的訓(xùn)練數(shù)據(jù)集和訓(xùn)練方法進行訓(xùn)練,并從中抽取300張測試集進行測試,每種模型進行10次測試后取其平均值,最后通過平均精度mAP以及每張圖片的平均檢測時間進行性能對比,結(jié)果如表3所示。
圖11 實驗結(jié)果檢測圖
表3 模型性能對照表
從實驗性能對照表可知,在檢測速率方面YOLOv2算法檢測速率最高,每張圖片平均檢測時間達到21.62 ms,但精準(zhǔn)度方面表現(xiàn)太差,對于R-FCN和Faster R-CNN算法,檢測精度要略優(yōu)于改進的SSD,但R-FCN和Faster-RCNN的平均檢測時間分別是改進SSD的70.1倍和30.6倍。無法滿足無人機的實時性檢測。相比于原SSD,改進后的SSD精度由所提高,尤其對于小目標(biāo)檢測效果較好,檢測速率也處在較高水平,所以這種改進SSD的航拍目標(biāo)檢測方法可以很好地完成檢測任務(wù)。
提出一種基于改進SSD的無人機航拍目標(biāo)檢測方法,為了提高對于小目標(biāo)的檢測,將SSD網(wǎng)絡(luò)框架進行改進,在原網(wǎng)絡(luò)基礎(chǔ)上增加了特征層數(shù)量和各特征層的關(guān)聯(lián),融合各特征層特征。通過無人機在戶外航拍采集的數(shù)據(jù)集進行模型訓(xùn)練,實現(xiàn)了不同環(huán)境條件下不同目標(biāo)的精確檢測,并在檢測速度方面取得了很好的表現(xiàn),彌補了傳統(tǒng)檢測方法檢測精度、實時性、魯棒性等方面的不足。從實驗結(jié)果分析可知,相比于原版SSD,將SSD改進后對于小目標(biāo)檢測有著較好的效果,算法在檢測精度略遜于Faster R-CNN和R-FCN,但檢測速率快很多;和YOLO相比檢測速率相近但檢測精度遠高于YOLO算法,所以該方法是理想的無人機航拍目標(biāo)檢測方法。