(西北機電工程研究所 咸陽 712000)
隨著無人機和計算機視覺的快速發(fā)展,無人機航拍圖像在軍事和民用領(lǐng)域的應用越來越廣泛,如偵察搜索、地形勘探、空地協(xié)同等。由于背景復雜、干擾較多、目標所占像元數(shù)少、俯瞰視角造成目標特征不明顯,且拍攝過程中無人機自身的快速移動,與一般圖像相比,航拍目標檢測更為復雜。因為航拍圖像具有以上特點,很難人工提取到合適的目標特征,采用傳統(tǒng)檢測方法難以得到好的結(jié)果。近年來,隨著深度學習的快速發(fā)展,一系列基于卷積 神 經(jīng) 網(wǎng) 絡 的 網(wǎng) 絡 模 型 如 AlexNet[1],VGG[2],GoogLeNet[3]和 ResNet[4]等,克服了傳統(tǒng)的 SIFT 、HOG等特征存在的不足,顯著提升了目標檢測的準確率。因為深層網(wǎng)絡可以學到淺層網(wǎng)絡所學不到的高層特征,神經(jīng)網(wǎng)絡逐漸從AlexNet的5層卷積網(wǎng)絡發(fā)展到當前ResNet1001層卷積網(wǎng)絡。然而隨著網(wǎng)絡結(jié)構(gòu)的加深,在提高模型精度的同時帶來了巨大的計算量和參數(shù)量,如VGG16有133M參數(shù),占用了大量存儲空間和計算資源[5~6]。針對航拍目標檢測任務,受無人機自身硬件和功耗的限制,直接在其上部署這樣的深層網(wǎng)絡模型是不實際的,因此,對深度學習模型進行優(yōu)化和改進,使之適合無人機等嵌入式平臺部署是非常必要的。
本文在Single Shot Detector(SSD)[7]算法模型的基礎(chǔ)上,對特征提取網(wǎng)絡和損失函數(shù)進行了改進:采用寬殘差網(wǎng)絡(WRN)[8]代替VGG16,參數(shù)大小僅為2.7M;采用焦點損失函數(shù)[7]代替交叉熵損失構(gòu)造目標函數(shù),提高了困難樣本的檢測效果。
Single Shot Detector(SSD)是目前主流的檢測框架之一,是直接在特征提取網(wǎng)絡上進行卷積預測的端對端網(wǎng)絡模型[9]。SSD采用特征金字塔結(jié)構(gòu)進行檢測,以多層特征圖的組合作為最終分類和回歸的基礎(chǔ),傳遞給卷積預測層進行分類。由于SSD在多特征圖上提取特征,因此在多尺度檢測中具有很好的效果。
SSD使用VGG-16網(wǎng)絡作為其特征提取網(wǎng)絡。VGG網(wǎng)絡在遷移學習任務上的表現(xiàn)優(yōu)于ILS?VRC2014的冠軍googLeNet。VGG通過不斷使用小卷積濾波器來提高性能,進一步深化網(wǎng)絡結(jié)構(gòu),將Top-5的錯誤率降低到7.3%。但VGG的卷積參數(shù)量高達133M,需要大量的存儲空間,且網(wǎng)絡較深,不適合并行計算,導致訓練耗時長,資源消耗大,占用了整個SSD約80%的用時。SSD結(jié)構(gòu)框架如圖1所示。
為了獲得更快的訓練速度和運行速度,本文采用一種更適合并行計算的特征提取網(wǎng)絡——寬殘差網(wǎng)絡(Wide Residual Network,WRN)。WRN是一個改進的ResNet網(wǎng)絡,與VGG網(wǎng)絡的133M參數(shù)量相比,WRN只有2.8M,且在CIFAR-10和CI?FAR-100上的性能要好于VGG網(wǎng)絡。表1是WRN與VGG16和ResNet在CIFAR-10和CIFAR-100上的性能對比。
圖1 SSD結(jié)構(gòu)框架
表1 網(wǎng)絡性能對比
WRN是一個改進的ResNet網(wǎng)絡,ResNet增加了網(wǎng)絡的深度,而WRN增加了網(wǎng)絡的寬度。殘差模塊直接將低層特征圖xl映射到高層特征圖xl+1,假設(shè)原始網(wǎng)絡的映射關(guān)系為F(xl+ωl),則高層特征圖可以表示為
殘差模塊包括兩種殘差結(jié)構(gòu):Basic結(jié)構(gòu)包含兩個3×3卷積,卷積后面都跟BN及ReLU,如圖2(a)和(c);Bottleneck結(jié)構(gòu)包含兩個1×1卷積和一個3×3卷積,兩個1×1卷積分別用來降維和升維,如圖2(b)。
圖2 殘差模塊結(jié)構(gòu)
用B(3,3)表示圖2(a)中兩個3×3卷積核串聯(lián)的基本結(jié)構(gòu),圖2(c)和(d)表示W(wǎng)RN中使用的殘差結(jié)構(gòu)。與ResNet相比,WRN在原始的殘差模塊的基礎(chǔ)上加上了一個系數(shù)k,從而拓寬卷積核的個數(shù)。根據(jù)文獻[7],不僅降低了網(wǎng)絡層數(shù),同時還加快了計算速度,提高了性能。
表2 WRN16-k網(wǎng)絡結(jié)構(gòu)
k為殘差模塊中卷積核的倍數(shù),N為B(3,3)結(jié)構(gòu)的個數(shù),WRN16-k表示寬度為k的16層WRN網(wǎng)絡。本文采用表2中WRN16-4網(wǎng)絡代替最后一個全連接層,并在網(wǎng)絡的最后添加額外的卷積層,如表3所示。卷積層逐層減少,從而得到多尺度特征圖,后接的池化層用于降維。
表3 改進的WRN16-4網(wǎng)絡結(jié)構(gòu)
其中Conv3、Conv4、Conv5、Extra-Conv 和Avg-pool用來做預測,得到一系列相對于默認候選框的置信度得分和位置偏移量。最后,綜合這些得分信息和坐標偏移信息,得到目標所屬的類別以及對應的坐標。
SSD采用的交叉熵損失函數(shù)是訓練模型時最常用的損失函數(shù),定義如式(2)[11],通過數(shù)據(jù)增強和數(shù)據(jù)挖掘使正、負樣本保持1:3的比例。
文獻[6]認為,YOLO、SSD系列的One-stage算法不如RCNN系列的Two-stage算法的主要原因在于訓練期間存在前景—背景樣本嚴重不平衡(比例約為1:1000),可以通過重新構(gòu)造交叉熵損失來解決這類不平衡問題,從而降低樣本分配給檢測結(jié)果帶來的影響。
在訓練過程中,大部分樣本都是容易分類的,導致模型的結(jié)果更傾向于檢測易于分類的樣本,而忽略難以分類的樣本。為了提高檢測的準確率,本文采用焦點損失函數(shù)代替交叉熵損失函數(shù),將訓練更多地集中在一系列困難樣本上,防止大量負樣本在訓練過程中影響算法學習效果。
標準焦點損失函數(shù)(Focal Loss,F(xiàn)L)定義為[12]
文獻[7]提出焦點損失函數(shù)需要增加一個權(quán)重αt來降低易分樣本的權(quán)重,從而平衡正負樣本,更專注于訓練難以分類的負樣本,提高檢測精度。因此實際焦點損失函數(shù)為
本文訓練模型的目標函數(shù)結(jié)構(gòu)與SSD的目標函數(shù)一致,為置信度損失Lconf和坐標位置損失Lloc的加權(quán)和。置信度損失采用焦點損失計算得到,坐標位置損失通過預測框和真實框之間的L1范數(shù)計算得到。目標函數(shù)L(x,c,l,g)如下。
實驗平臺為Ubuntu16.04操作系統(tǒng),Intel Core i7-6700 CPU@2.60GHz,Nvidia GTX 950M。編程環(huán)境Python3.6.2+OpenCV3.4.0+Caffe,并在Nvidia Jetson TX2嵌入式平臺上進行了部署測試。
Jetson TX2[13~14]是基于 Nvidia Pascal架構(gòu)的嵌入式AI計算設(shè)備,外型小巧,性能強大,節(jié)能高效,具有多種標準硬件接口,易于集成到產(chǎn)品中,非常適合無人機、機器人、智能攝像機等智能終端設(shè)備。為了測試平臺性能,實驗開始前,先將基于Pascal VOC2007+2012 數(shù)據(jù)集訓練得到的 YOLOv3[15]模型部署在Jetson TX2上,通過其板載攝像頭拍攝視頻并實時進行檢測,檢測速率穩(wěn)定在4.3FPS。
本次實驗采用的是VisDrone2018-Det數(shù)據(jù)集[8]。VisDrone2018-Det數(shù)據(jù)集包含由無人機在不同位置、不同高度拍攝的7019張圖像,訓練集和驗證集分別包含6,471和548張圖像。數(shù)據(jù)集包含10類目標,分別為 pedestrian,person,car,van,bus,truck,motor,bicycle,awning-tricycle,tricycle。本文算法和SSD算法模型都在訓練集上進行訓練,并在驗證集上進行評價。部分測試結(jié)果如圖3和圖4所示。
圖3 VisDrone2018-Det數(shù)據(jù)集部分樣本測試結(jié)果(SSD(WRN))
圖4 VisDrone2018-Det數(shù)據(jù)集部分樣本測試結(jié)果(SSD)
實驗結(jié)果表明,SSD在所占像素較小、姿態(tài)較多的目標(如行人、騎自行車的人、騎摩托車的人)上出現(xiàn)了嚴重的漏檢和誤檢情況;對自頂向下角度拍攝圖像的檢測結(jié)果較差,各類目標都漏檢嚴重,說明算法對拍攝角度很敏感,魯棒性不好。而通過WRN多尺度特征提取和調(diào)整焦點損失函數(shù)權(quán)重,本文算法對航拍小目標的檢測準確率明顯提升,大大減少了漏檢和誤檢情況;并且WRN特征提取網(wǎng)絡降低了參數(shù)量,使模型更適合部署在無人機等嵌入式平臺上。
表4 VisDrone2018-Det數(shù)據(jù)集上的算法對比
本文提出了一種針對無人機航拍小目標的改進SSD算法,通過WRN寬殘差網(wǎng)絡提取目標的多尺度特征,降低模型的參數(shù)量;通過改進的目標函數(shù)提高對航拍小目標的檢測準確率。實驗結(jié)果表明:在Jetson TX2嵌入式平臺上,本文算法針對航拍數(shù)據(jù)集達到了0.76mAP,在檢測速度上達到16FPS,與SSD相比均有了顯著提升。如何在無人機自身硬件和功耗的限制條件下進一步提高檢測速率和準確率,滿足工程應用中的要求,將是下一步的研究方向。