黃梓桐,阿里甫·庫爾班
1.新疆大學(xué) 軟件學(xué)院,烏魯木齊830046
2.新疆大學(xué) 軟件工程技術(shù)重點(diǎn)實(shí)驗(yàn)室,烏魯木齊830046
近年來,隨著攝影技術(shù)和航空技術(shù)的飛速發(fā)展,無人機(jī)已經(jīng)大量應(yīng)用在生活中的各個(gè)方面,比如:搶險(xiǎn)救災(zāi)、軍事偵察以及交通管制等[1],特別是在處理危險(xiǎn)事件的過程中,起著至關(guān)重要的作用。這使得無人機(jī)地面目標(biāo)檢測(cè)技術(shù)成為計(jì)算機(jī)視覺領(lǐng)域的重要研究方向。
傳統(tǒng)的目標(biāo)檢測(cè)算法首先需要手動(dòng)設(shè)計(jì)圖像特征如HOG[2](Histogram of Oriented Gradient)或SIFT[3](Scale-Invariant Feature Transform),然后使用支持向量機(jī)(Support Vector Machine,SVM)[4]或AdaBoost[5]進(jìn)行訓(xùn)練。這需要豐富的經(jīng)驗(yàn)和完整的先驗(yàn)知識(shí)。此外,以這種方式訓(xùn)練得到的檢測(cè)器大多數(shù)只在特定的環(huán)境中有效,因此它們的泛化能力比較差。隨著深度學(xué)習(xí)在圖像分類與識(shí)別領(lǐng)域的快速發(fā)展,使用卷積神經(jīng)網(wǎng)絡(luò)來進(jìn)行目標(biāo)檢測(cè)已經(jīng)成為研究熱點(diǎn)[6]。
目前,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要有兩種:基于候選區(qū)域的目標(biāo)檢測(cè)算法和基于回歸的檢測(cè)算法。其中基于候選區(qū)域的檢測(cè)算法屬于兩階段算法,首先根據(jù)不同的區(qū)域選擇算法(如BING[7])從圖像中選出很多個(gè)感興趣區(qū)域ROI(Region of Interest),然后通過卷積神經(jīng)網(wǎng)絡(luò)對(duì)感興趣區(qū)域進(jìn)行自動(dòng)特征提取,再進(jìn)行分類和檢測(cè)。2014年,Girshick等[8]提出R-CNN算法,該算法使用卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征,提高了檢測(cè)精度,但是其區(qū)域選擇算法使用的是selective search,對(duì)于一幅圖使用selective search選2 000個(gè)候選區(qū)域,這個(gè)過程本身就比較慢再加上這2 000個(gè)區(qū)域都要使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取就更慢了,同時(shí)這些區(qū)域還有很多重疊部分。此外,R-CNN也使用了SVM,導(dǎo)致算法訓(xùn)練和檢測(cè)效率較低。基于R-CNN的不足,2015年Girshick[9]提出Fast R-CNN,該算法將R-CNN中的圖像特征提取、目標(biāo)分類識(shí)別和定位三個(gè)獨(dú)立的模塊整合在一起,提高了檢測(cè)速度,但仍然無法滿足實(shí)時(shí)需求。同年,Ren等[10]提出Faster R-CNN,該算法去掉了selective search,并使用區(qū)域候選網(wǎng)絡(luò)(RPN)作為代替,使得檢測(cè)速度大幅度提升??梢钥闯?,以R-CNN家族為代表的基于候選區(qū)域的目標(biāo)檢測(cè)算法雖然精度很高,但是實(shí)時(shí)性比較差。而基于回歸的一階段檢測(cè)算法在速度方面更有優(yōu)勢(shì)。2016年,Redmon等[11]提出YOLO目標(biāo)檢測(cè)算法,該算法使用單個(gè)前饋神經(jīng)網(wǎng)絡(luò)直接預(yù)測(cè)對(duì)象的位置和類別,其速度明顯比二階段網(wǎng)絡(luò)快。2016年,Liu等[12]提出SSD算法,該算法融合了YOLO和Faster R-CNN的思想,使得該算法兼具YOLO的速度和Faster R-CNN的精度。2018年,Redmon等[13]提出YOLOv3算法,借鑒了SSD在不同特征圖上進(jìn)行預(yù)測(cè)的思想,并引入了殘差層和跳躍連接,其檢測(cè)速度和精度大幅度提升。
上述目標(biāo)檢測(cè)算法的提出,為無人機(jī)目標(biāo)檢測(cè)技術(shù)的實(shí)際應(yīng)用提供了更多的可能。目前,國內(nèi)外已經(jīng)有很有學(xué)者針對(duì)無人機(jī)目標(biāo)檢測(cè)進(jìn)行了研究。Gaszczak等[14]提出了一種基于多個(gè)分類器的車輛自動(dòng)檢測(cè)方法,并在熱圖像中進(jìn)行了二次確認(rèn)。Zhang等[15]通過對(duì)YOLOv3的卷積層進(jìn)行剪枝來學(xué)習(xí)高效的目標(biāo)檢測(cè)器,從而實(shí)現(xiàn)快速高效的無人機(jī)目標(biāo)檢測(cè)。李斌等[16]針對(duì)無人機(jī)目標(biāo)小且環(huán)境復(fù)雜的問題,提出一種基于深度表示的復(fù)雜場(chǎng)景無人機(jī)目標(biāo)檢測(cè)方法。姜尚潔等[1]搭建了小型無人機(jī)視頻采集平臺(tái),使用YOLO算法進(jìn)行車輛檢測(cè),實(shí)現(xiàn)了車輛的自動(dòng)檢測(cè),并優(yōu)化了檢測(cè)結(jié)果。裴偉等[17]針對(duì)無人機(jī)目標(biāo)檢測(cè)分辨率低、遮擋、小目標(biāo)漏檢、重復(fù)檢測(cè)、誤檢等精度低下問題,提出一種基于殘差網(wǎng)絡(luò)的航拍目標(biāo)檢測(cè)算法,修改了SSD的主干網(wǎng)絡(luò),并引入特征融合機(jī)制,在檢測(cè)的準(zhǔn)確性和實(shí)時(shí)性方面均具有不錯(cuò)的表現(xiàn)。但是上述算法在實(shí)時(shí)性和準(zhǔn)確性方面仍有較大的改進(jìn)空間。
本文主要針對(duì)無人機(jī)目標(biāo)檢測(cè)實(shí)時(shí)性的需求和現(xiàn)有模型檢測(cè)精度不高的問題,以SSD算法為基礎(chǔ),設(shè)計(jì)了輕量級(jí)的基準(zhǔn)網(wǎng)絡(luò)來滿足實(shí)時(shí)性要求,同時(shí)提出輕量級(jí)感受野模塊和上下文模塊來提高小目標(biāo)檢測(cè)精度。實(shí)驗(yàn)結(jié)果表明,該方法在無人機(jī)小目標(biāo)檢測(cè)任務(wù)中具有良好的檢測(cè)精度和實(shí)時(shí)性,可以更好地應(yīng)用到檢測(cè)服務(wù)中。
本文以SSD算法為基礎(chǔ),設(shè)計(jì)了一種輕量級(jí)的基準(zhǔn)網(wǎng)絡(luò),并加入了輕量級(jí)感受野模塊和上下文模塊來提高小目標(biāo)檢測(cè)的準(zhǔn)確性和實(shí)時(shí)性。算法的具體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 本文算法的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Network structure of proposed algorithm
近年來,卷積神經(jīng)網(wǎng)絡(luò)(CNN)已經(jīng)成為研究各種計(jì)算機(jī)視覺任務(wù)的主要手段,如圖像分類[18]、目標(biāo)檢測(cè)[19]和圖像分割[20]。大規(guī)模的數(shù)據(jù)集和高性能GPU使得CNN模型可以很大。例如在ImageNet圖像分類大賽中,從8層的AlexNet[18]模型已經(jīng)演變到100多層的ResNets[21]。雖然越深的網(wǎng)絡(luò)層次表示能力越強(qiáng)大,但是隨著網(wǎng)絡(luò)層數(shù)的加深,對(duì)計(jì)算資源的需求也在不斷變大。例如152層的ResNet具有超過6 000萬個(gè)參數(shù),VGG16[22]的模型大小有533 MB,VGG19更是達(dá)到了574 MB。而在資源受限的移動(dòng)設(shè)備上很難進(jìn)行這樣的計(jì)算,使其在實(shí)際應(yīng)用中使用是不現(xiàn)實(shí)的。綜上所述,本文基于SSD(Single-Shot Detector)設(shè)計(jì)了輕量級(jí)的骨干網(wǎng)絡(luò),目的是為了降低模型復(fù)雜度,減少計(jì)算量,從而提高無人機(jī)平臺(tái)下小目標(biāo)檢測(cè)的速度和精度。
本文提出的輕量級(jí)骨干網(wǎng)絡(luò)主要基于以下3點(diǎn)事實(shí):(1)SSD最初是在Pascal VOC和MS COCO數(shù)據(jù)集上進(jìn)行訓(xùn)練的,其中Pascal VOC有9 963張圖片和20種類別的待檢測(cè)目標(biāo),而MS COCO的圖像數(shù)量達(dá)到328 000張,包括了91類目標(biāo)。所以,深度網(wǎng)絡(luò)才能更好地進(jìn)行分類和檢測(cè)。而本文所用的數(shù)據(jù)只包含行人和車輛這兩個(gè)類別,且圖片數(shù)量相對(duì)較少,太深的網(wǎng)絡(luò)層數(shù)會(huì)使得模型很難訓(xùn)練,并且容易產(chǎn)生過擬合。(2)SSD用在每個(gè)特征圖上預(yù)先定義好的不同大小的默認(rèn)框來預(yù)測(cè)目標(biāo)的類別和得分,淺層特征圖用于檢測(cè)最小的物體,深層特征圖用于檢測(cè)相對(duì)較大的物體。與以上兩種數(shù)據(jù)集不同的是,無人機(jī)圖像中的行人和汽車都是小目標(biāo)。所以原始SSD的設(shè)置并不適合小目標(biāo)檢測(cè)。(3)傳統(tǒng)圖像中待檢測(cè)目標(biāo)較大且居于圖像中心位置,與背景差異明顯,而無人機(jī)圖像中待檢測(cè)目標(biāo)很小,圖像中包含多種物體,背景復(fù)雜,同時(shí)CNN所能提取到的小目標(biāo)特征很少。此外,原始SSD沒有很好地利用上下文信息,而大量實(shí)驗(yàn)證明[23-24],上下文信息能夠有效地提高小目標(biāo)檢測(cè)效果。
針對(duì)以上事實(shí),本文主要做了3點(diǎn)改進(jìn):(1)為了適應(yīng)小型移動(dòng)設(shè)備設(shè)計(jì)了輕量級(jí)的骨干網(wǎng)絡(luò),降低了訓(xùn)練難度和參數(shù)量。另外,只選擇了4個(gè)檢測(cè)層并為每個(gè)檢測(cè)層設(shè)置了恰當(dāng)?shù)哪J(rèn)框參數(shù)。(2)為了增強(qiáng)高分辨率特征圖對(duì)小目標(biāo)的特征表示能力,在Conv4后添加了輕量級(jí)感受野模塊(LRFB)。(3)為了進(jìn)一步提高小目標(biāo)的檢測(cè)能力,在Conv5后添加了上下文模塊(CIM)。
本文提出了如圖1所示的輕量級(jí)網(wǎng)絡(luò),網(wǎng)絡(luò)的詳細(xì)信息如下:
(1)骨干網(wǎng)絡(luò)。為了更適用于移動(dòng)設(shè)備,重新設(shè)計(jì)了卷積層的數(shù)量,僅僅使用6個(gè)卷積層,并且通道數(shù)最大為128。具體參數(shù)如表1所示。
表1 骨干網(wǎng)絡(luò)參數(shù)Table 1 Parameters of backbone network
(2)檢測(cè)層。選擇Conv3、LRFB、CIM和Conv6作為檢測(cè)層。其中感受野增強(qiáng)模塊(LRFB)和上下文模塊(CIM)分別追加在Conv4和Conv5后面。
(3)默認(rèn)框參數(shù)。為了使默認(rèn)框可以和待檢測(cè)目標(biāo)的大小更加吻合,對(duì)待檢測(cè)目標(biāo)的大小進(jìn)行了k-means聚類分析,設(shè)置了更加適合的默認(rèn)框。默認(rèn)框參數(shù)如表2所示。
表2 默認(rèn)框參數(shù)Table 2 Parameters of default boxes
感受野是卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖上的像素點(diǎn)在輸入圖片上映射的區(qū)域大小,其類似于人類的視覺系統(tǒng)。為了更好地提取特征信息,提出輕量級(jí)感受野模塊。文獻(xiàn)[25]模仿人類視覺系統(tǒng)中感受野的結(jié)構(gòu)探討了具有不同尺寸和偏心率的感受野對(duì)目標(biāo)的辨別力和魯棒性。實(shí)驗(yàn)證明,融合不同尺寸和偏心率的感受野,可以有效地提高目標(biāo)檢測(cè)精度,而且可以嵌入到主流的目標(biāo)檢測(cè)模型中。
受文獻(xiàn)[25]和Inception[26]結(jié)構(gòu)的啟發(fā),本文提出輕量級(jí)感受野模塊(LRFB),目的是為了在盡量減少網(wǎng)絡(luò)參數(shù)增加的前提下增強(qiáng)網(wǎng)絡(luò)對(duì)小目標(biāo)的特征表示能力。使用類似于Inception的多分支結(jié)構(gòu)和帶洞卷積來構(gòu)造感受野增強(qiáng)模塊,通過在每個(gè)分支設(shè)置不同尺寸的卷積核和擴(kuò)張率獲得不同尺寸的感受野,最終通過融合不同的感受野來獲得最終的特征。輕量級(jí)感受野模塊(LRFB)的結(jié)構(gòu)如圖2所示。其中帶洞卷積也稱膨脹卷積,最早在Deeplab[27]中提出,旨在不增加參數(shù)的情況下增大卷積層的感受野。3×3大小的卷積核,擴(kuò)張率(dilation)為1的空洞卷積操作等同于普通卷積。3×3大小的卷積核,擴(kuò)張率為2的空洞卷積操作,其感受野相當(dāng)于7×7的卷積核,但是參數(shù)數(shù)量不變。
圖2 輕量級(jí)感受野模塊(LRFB)Fig.2 Structural diagram of lightweight receptive field block(LRFB)
由于無人機(jī)航拍圖像中的行人和車輛較小,所以其特征不明顯,和背景差異較小。文獻(xiàn)[28-29]通過對(duì)VGG-16[22]提取的圖像特征進(jìn)行可視化,發(fā)現(xiàn)淺層特征圖包含更多的小目標(biāo)特征,所以淺層特征圖更適合作為小目標(biāo)的檢測(cè)層。淺層特征圖的分辨率高,包含更多的小目標(biāo)特征,但是卻缺少語義信息,不能充分地利用上下文信息來提高檢測(cè)效果。而上下文信息在常規(guī)圖像目標(biāo)檢測(cè)任務(wù)中起到了不錯(cuò)的效果[23],所以在無人機(jī)小目標(biāo)檢測(cè)任務(wù)中也引入上下文信息。
為了更準(zhǔn)確地檢測(cè)行人和車輛,設(shè)計(jì)上下文模塊(CIM)來引入上下文信息。通過反卷積操作,將分辨率低但語義信息豐富的特征圖進(jìn)行上采樣,然后和分辨率高但語義信息缺乏的特征圖進(jìn)行融合,最終形成高分辨率且語義信息豐富的上下文模塊。上下文模塊(CIM)的結(jié)構(gòu)如圖3所示。
圖3 上下文模塊(CIM)Fig.3 Structural diagram of context information module(CIM)
實(shí)驗(yàn)在CPU E5 2450 2.10 GHz,16 GB內(nèi)存,Ubuntu 16.04系統(tǒng)下搭建的Keras環(huán)境下進(jìn)行,顯卡為GeForce GTX1080TI,實(shí)驗(yàn)環(huán)境的配置參數(shù)如表3所示。
表3 實(shí)驗(yàn)環(huán)境配置參數(shù)Table 3 Experimental environment configuration parameters
實(shí)驗(yàn)使用的數(shù)據(jù)是使用大疆Mavic mini無人機(jī)拍攝的4 000張圖片。數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集,其中訓(xùn)練集包含3 500張圖片,每張圖片里的車輛和行人都使用圖像標(biāo)注軟件labelImg進(jìn)行了仔細(xì)標(biāo)注,所標(biāo)注的目標(biāo)數(shù)目如表4所示。圖4展示了部分實(shí)驗(yàn)數(shù)據(jù)。
圖4 無人機(jī)圖像數(shù)據(jù)示例Fig.4 Some samples from dataset
表4 數(shù)據(jù)標(biāo)注目標(biāo)數(shù)目Table 4 Statistical details of annotated dataset
首先分別使用目前比較受歡迎的主流目標(biāo)檢測(cè)算法和本文算法進(jìn)行實(shí)驗(yàn)對(duì)比。訓(xùn)練時(shí)圖片大小被設(shè)定為640 pixel×360 pixel,batch_size設(shè)置為12,final_epoch設(shè)置為100,steps_per_epoch也設(shè)置為100。初始學(xué)習(xí)率設(shè)置為0.001,訓(xùn)練時(shí)如果val_loss超過5個(gè)epoch沒有降低,則降低學(xué)習(xí)率,學(xué)習(xí)率最低設(shè)為0.000 01。對(duì)比結(jié)果如表5所示。與原始SSD相比,本文算法的mAP提高了12.32個(gè)百分點(diǎn),達(dá)到了86.21%,并且FPS達(dá)到了85。此外與YOLOv3相比,雖然FPS低于YOLOv3,但mAP高出其7.39個(gè)百分點(diǎn)。
表5 不同算法測(cè)試結(jié)果對(duì)比Table 5 Comparison of detection results of different algorithms
為了進(jìn)一步驗(yàn)證所提出方法的有效性,進(jìn)行了消融實(shí)驗(yàn)。消融實(shí)驗(yàn)設(shè)計(jì)了4個(gè)實(shí)驗(yàn)做對(duì)比分析。第一個(gè)實(shí)驗(yàn)為原始SSD;第二個(gè)實(shí)驗(yàn)為僅使用設(shè)計(jì)的輕量級(jí)主干網(wǎng)絡(luò)來進(jìn)行訓(xùn)練,不添加本文提出的任何模塊,網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示;第三個(gè)實(shí)驗(yàn)在第二個(gè)實(shí)驗(yàn)的基礎(chǔ)上,在Conv4后追加了輕量級(jí)感野模塊(LRFB),網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示;第四個(gè)實(shí)驗(yàn)在第三個(gè)實(shí)驗(yàn)的基礎(chǔ)上,加入了上下文模塊(CIM),實(shí)驗(yàn)結(jié)果如表6所示。
表6 消融實(shí)驗(yàn)Table 6 Ablation experiments
圖5 實(shí)驗(yàn)二網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 Network structure diagram of experiment two
圖6 實(shí)驗(yàn)三網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Network structure diagram of experiment three
從表6可以看出,實(shí)驗(yàn)二與原始SSD相比,mAP和FPS都得到了很大的提升。FPS的提升是由于和原始骨干網(wǎng)絡(luò)相比,設(shè)計(jì)的輕量級(jí)骨干網(wǎng)絡(luò)的通道數(shù)和卷積層數(shù)減少了,參數(shù)量更少,同時(shí)只使用了4個(gè)檢測(cè)層,比原始SSD少了2個(gè)檢測(cè)層。而mAP的提高主要是由于設(shè)置了恰當(dāng)?shù)哪J(rèn)框參數(shù),恰當(dāng)?shù)哪J(rèn)框可以更好地匹配到待檢測(cè)目標(biāo)。實(shí)驗(yàn)三在加入了輕量級(jí)感受野模塊后,mAP得到進(jìn)一步提升,但同時(shí)也由于LRFB的加入,使得FPS有所下降??梢钥闯?,最終在實(shí)驗(yàn)四加入CIM后,mAP達(dá)到了86.21%,此時(shí)FPS為85。損失函數(shù)的變化如圖7所示,從中可以看出,原始SSD在訓(xùn)練過程中損失函數(shù)波動(dòng)幅度較大,雖然最終達(dá)到收斂,但損失要明顯高于其他三個(gè)實(shí)驗(yàn)。而其他三個(gè)實(shí)驗(yàn),損失函數(shù)波動(dòng)幅度很小,其中效果最好的是實(shí)驗(yàn)四,其曲線下降得非常平滑,得到的訓(xùn)練效果也是最好的。以上實(shí)驗(yàn)很好地證明了本文所提方法的有效性,在mAP和FPS兩個(gè)方面都取得了不錯(cuò)的表現(xiàn)。
圖7 損失函數(shù)變化Fig.7 Curves of loss function change of ablation experiment
為進(jìn)一步驗(yàn)證本文算法在無人機(jī)圖像中行人和車輛檢測(cè)效果的提升,從測(cè)試集中選取3張圖片進(jìn)行測(cè)試,結(jié)果如圖8所示,本文算法在檢測(cè)到的行人和汽車的個(gè)數(shù)以及對(duì)目標(biāo)分類的準(zhǔn)確率兩個(gè)方面都要優(yōu)于傳統(tǒng)的SSD,尤其是在行人檢測(cè)上。
圖8 檢測(cè)效果對(duì)比Fig.8 Comparison of detection results
本文提出了一種實(shí)時(shí)高效的基于無人機(jī)的行人與車輛目標(biāo)檢測(cè)方法。一方面針對(duì)SSD算法模型過大、運(yùn)行內(nèi)存占用量過高、無法在無人機(jī)設(shè)備上運(yùn)行的問題,精心設(shè)計(jì)了輕量級(jí)的骨干網(wǎng)絡(luò)。另一方面,為了提升檢測(cè)精度,設(shè)計(jì)了每個(gè)檢測(cè)層的默認(rèn)框參數(shù),并引入輕量級(jí)感受野模塊和上下文模塊。實(shí)驗(yàn)結(jié)果表明,本文算法在無人機(jī)小目標(biāo)檢測(cè)任務(wù)中具有良好的檢測(cè)精度和實(shí)時(shí)性,可以更好地應(yīng)用到檢測(cè)服務(wù)中。