(海軍裝備部 北京 100071)
近年來,無人機飛行成為了一種熱門的戶外活動,使用量逐年增加。但是無人機容易發(fā)生跌落、碰撞等安全事故,尤其是在人群和建筑物稠密的地方,存在較大的安全隱患。因此,無人機識別系統(tǒng)的搭載勢在必行。無人機識別系統(tǒng)中重要組成部分是圖像識別,其功能是將攝像頭捕捉到的圖像或視頻信息進行處理,從圖像或視頻中識別出無人機,從而實現(xiàn)對無人機的識別、監(jiān)控和預警。基于圖像的無人機識別主要包括無人機圖像檢測(包含特征提?。┖蜔o人機分類。在圖像識別領域中,常用的特征提取方法有 HOG[1]、SIFT、Gabor[2]小波圖像紋理特征提取、高斯馬爾可夫隨機場(Gaussian Markov Random Field,GMRF)[3]遙感圖像特征提取等,結(jié)合后期的分類方法[4],取得了較好的識別率。目前,這些特征提取方法都是人工來完成的,所以存在如下問題:各類特征提取方法非常依賴具體的應用環(huán)境,算法要求的條件嚴格、魯棒性不好;復雜背景下多無人機特征提取困難等。
針對以上問題,隨著大數(shù)據(jù)、深度學習等技術的迅速發(fā)展,尤其是卷積神經(jīng)網(wǎng)絡的廣泛應用,以及微軟亞洲研究院基于深度卷積神經(jīng)網(wǎng)絡的計算機視覺系統(tǒng),在ImageNet 1000挑戰(zhàn)中首次超越了人類識別的能力,圖像識別的精度取得了很大進步,目標檢測方法也采用深度神經(jīng)網(wǎng)絡來完成。文獻[5]提出了基于卷積神經(jīng)網(wǎng)絡的信息融合識別方法;文獻[6]提出了基于深度神經(jīng)網(wǎng)絡的小尺度道路標示識別框架;文獻[7]提出了基于卷積神經(jīng)網(wǎng)絡的無人機循跡方法;文獻[8]提出了基于稀疏貝葉斯分類器的汽車車型識別方法;文獻[9]提出了一種用于圖像目標識別的神經(jīng)網(wǎng)絡及其車型識別方法;文獻[10]提出了基于模糊神經(jīng)網(wǎng)絡的電力巡線無人機避障技術研究;文獻[11]提出了基于卷積神經(jīng)網(wǎng)絡的城管案件圖像分類方法。這些方法是在傳統(tǒng)卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)的基礎上,加入了形變處理層,最終學習的特征具有很強的判別力。推廣到特定物體的識別乃至場景識別,深度學習也有很多方案。由于無人機圖像信息量豐富,且無人機的飛行狀態(tài)多樣,因此識別難度較大。本文基于現(xiàn)有的理論,提出了一種基于深度卷積神經(jīng)網(wǎng)絡的無人機識別方法。
2006 年,Hinton[12]等首次提出深度學習的概念,并開啟了深度學習的研究浪潮,其認為:多隱含層的人工神經(jīng)網(wǎng)絡能夠更好地模擬人腦地思考過程,具有更加優(yōu)異的學習能力,能夠?qū)?shù)據(jù)進行更本質(zhì)的刻畫,從而提高可視化或分類的能力。卷積神經(jīng)網(wǎng)絡CNN是深度學習中第一個真正多層結(jié)構(gòu)學習算法,其在圖像識別領域優(yōu)勢明顯。它利用感受野(Receptive field)、局部連接(Sparse Connectivity)等概念極大地減少了參數(shù)量,降低了網(wǎng)絡模型的復雜度,提高了訓練效率,且網(wǎng)絡對于平移、縮放的各種變形都具備高度不變性,具有良好的魯棒性和運算效率。在網(wǎng)絡輸入的是多維圖像時,圖像可以直接作為網(wǎng)絡輸入,避免了傳統(tǒng)識別算法中復雜的特征提取和數(shù)據(jù)重組過程。在二維圖像處理時也有較多優(yōu)勢,如網(wǎng)絡自行抽取圖像特征包括顏色、紋理、形狀及圖像的拓撲結(jié)構(gòu)。
在圖像識別任務中,一個典型的卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)如圖1所示。根據(jù)不同的處理任務,開展設計網(wǎng)絡結(jié)構(gòu)、初始化參數(shù)、定義損失函數(shù)以及設定超參等準備工作。將經(jīng)過預處理后的訓練數(shù)據(jù)送入到網(wǎng)絡結(jié)構(gòu)中,分別計算卷積層、降采樣層和全連接層等的前向結(jié)果,最后根據(jù)數(shù)據(jù)標簽及前向結(jié)果最小化損失函數(shù),求解網(wǎng)絡模型參數(shù)。從圖1可以看出,卷積神經(jīng)網(wǎng)絡與傳統(tǒng)深度神經(jīng)網(wǎng)絡的最大區(qū)別就是卷積層和降采樣層替換了部分全連接層。
圖1 卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)圖
在CNN的卷積層中,一個神經(jīng)元只與部分鄰層神經(jīng)元連接。在CNN的一個卷積層中,通常包含若干個特征平面(Feature Map),每個特征平面由一些矩形排列的神經(jīng)元組成,同一特征平面的神經(jīng)元共享權(quán)值,這里共享權(quán)值就是卷積核。卷積核一般以隨機小數(shù)矩陣的形式初始化,在網(wǎng)絡的訓練過程中,卷積核將學習得到合理的權(quán)值。共享權(quán)值(卷積核)帶來的直接好處是減少網(wǎng)絡各層之間的連接,同時又降低了過擬合的風險。降采樣(Sub-Sampling)層也叫做池化(Pooling)層,通常有最大池化(Maximum Pooling)或平均池化(Average Pooling)兩種形式;降采樣可以看作一種特殊的卷積過程。卷積和降采樣大大降低特征的維數(shù),減少了模型的參數(shù),簡化了模型復雜度。
VGGNet是在2014年由Karen Simonyan和Andrew Zisserman實現(xiàn)的卷積神經(jīng)網(wǎng)絡。它主要的貢獻是展示出網(wǎng)絡的深度是算法優(yōu)良性能的關鍵部分。它們最好的網(wǎng)絡是包含了16個卷積/全連接層。網(wǎng)絡的結(jié)構(gòu)非常一致,從頭到尾全部使用的是3×3的卷積和2×2的匯聚。VGGNet不足在于:耗費更多的計算資源,并且使用了更多的參數(shù),導致較多的內(nèi)存占用(140M左右)。其中,絕大多數(shù)的參數(shù)都是來自于第一個全連接層。
VGG是在從AlexNet(即CNN的基準模型之一)發(fā)展而來的網(wǎng)絡,可以把它看作是加深版的AlexNet,是卷積層加全連接層的組合。它在AlexNet基礎上,主要修改了兩個方面內(nèi)容:1)在第一個卷積層使用了更小的濾波器尺寸和間隔(3×3);2)在整個圖片和multi-scale上訓練和測試圖片。VGG系列的結(jié)構(gòu)如圖2所示。
圖2 VGG系列結(jié)構(gòu)圖
多個小濾波器卷積層的組合比單一濾波器卷積層好。一層一層地重疊了3個3×3卷積層(層與層之間有非線性激活函數(shù))。在這個排列下,第一個卷積層中的每個神經(jīng)元都對輸入數(shù)據(jù)體有一個3×3的視野。第二個卷積層上的神經(jīng)元對第一個卷積層有一個3×3的視野,也就是對輸入數(shù)據(jù)體有5×5的視野。同樣,在第三個卷積層上的神經(jīng)元對第二個卷積層有3×3的視野,也就是對輸入數(shù)據(jù)體有7×7的視野。假設不采用這3個3×3的卷積層,而是使用一個單獨的有7×7感受野的卷積層,那么所有神經(jīng)元的感受野也是7×7,但是存在一些缺點。首先,多個卷積層與非線性的激活層交替的結(jié)構(gòu),比單一卷積層的結(jié)構(gòu)更能提取出深層更好的特征。其次,假設所有的數(shù)據(jù)有C個通道,那么單獨的7×7卷積層將會包含7×7×C=49C個參數(shù),而3個3×3的卷積層的組合僅有個3×(3×3×C)=27C個參數(shù)。直觀說來,最好選擇帶有小濾波器的卷積層組合,而不是用一個帶有大濾波器的卷積層。前者可以表達出輸入數(shù)據(jù)中更多個強力特征,使用的參數(shù)也更少。唯一不足的是,在進行反向傳播時,中間卷積層可能會導致占用更多的內(nèi)存。1×1 filter的作用是在不影響輸入輸出維數(shù)的情況下,對輸入線進行線性形變,然后通過Relu(Rectified Lineat Units,激活函數(shù))進行非線性處理,增加網(wǎng)絡的非線性表達能力。Pooling:2×2,間隔s=2。這里使用的VGG16,總共16層,其結(jié)構(gòu)如圖3所示。
圖3 VGG16網(wǎng)絡結(jié)構(gòu)拓撲圖
VGG突出影響包括:一個大卷積核分解成連續(xù)多個小卷積核;減少參數(shù),降低計算,增加深度;集成AlexNet結(jié)構(gòu)的特點:簡單、有效;網(wǎng)絡改造的首選基礎網(wǎng)絡等。
通常采用網(wǎng)絡攝像頭對劃定區(qū)域進行監(jiān)控。無人機識別流程如圖4所示,首先將網(wǎng)絡攝像頭輸出的視頻流送入到無人機識別系統(tǒng)中,經(jīng)過圖像抓幀和預處理后,對圖像進行無人機檢測;然后將檢測到的無人機圖像抽取出來,對圖像特征進行提取,送入VGG16網(wǎng)絡;最后,在訓練好的后臺數(shù)據(jù)中識別出該圖像的無人機種類??梢詫o人機的種類標識到原圖像中并顯示。
圖4 無人機識別流程圖
Caffe是一套開源軟件框架,內(nèi)部提供了一套基本的編程、模板框架,用以實現(xiàn)GPU并行架構(gòu)下的深度卷積神經(jīng)網(wǎng)絡、深度學習(Deep Learning)等算法;按照該框架,可以定義多種類型的卷積神經(jīng)網(wǎng)絡結(jié)構(gòu),且可以在此框架下增加新代碼、設計新算法。該框架的優(yōu)點在于運算速度快、簡單、友好。本文設計的無人機識別系統(tǒng)中深度學習算法就是基于Caffe框架實現(xiàn)的。
Caffe框架具有三個基本原子結(jié)構(gòu),分別是Blobs、Layers和Nets。Blob是用于存儲數(shù)據(jù)的對象,同時Caffe中各種數(shù)據(jù)(圖像輸入、模型參數(shù))都是以Blob的形式在網(wǎng)絡中傳輸?shù)?。Blob還能在CPU和GPU之間進行同步以支持CPU/GPU的混合運算。Layer是網(wǎng)絡的次級單元,也是能在外部進行調(diào)整的最小網(wǎng)絡結(jié)構(gòu)單元。一般來說,都讓同一層的神經(jīng)元具備相同性質(zhì),因此也就沒有必要提供對神經(jīng)元的操作。Net即一個完整的包含輸入層、隱藏層、輸出層的深度網(wǎng)絡,在Caffe中一般是一個卷積神經(jīng)網(wǎng)絡,通過定義不同類型Layer,并用Blob將不同的Layer連接起來,就能產(chǎn)生一個Net。為了減少算法代碼的編寫負擔,這里選擇在Caffe框架下對VGG16網(wǎng)絡進行Fine-tuning(微調(diào)),即使用已用于其它目標、預訓練好模型的權(quán)重或部分權(quán)重,作為初始值開始訓練其它數(shù)據(jù)集。
3.3.1 無人機檢測
圖像經(jīng)過預處理后,使用SSD算法對處理后圖像做無人機目標檢測。SSD算法的主網(wǎng)絡結(jié)構(gòu)是VGG16。采用VGG16前面的5層網(wǎng)絡,然后利用atrous算法將fc6和fc7層轉(zhuǎn)化成兩個卷積層,另外再增加了3個卷積層和一個均值池化層,不同層次的feature map(特征平面)分別用于default box(缺省窗口)的偏移和不同類別得分的預測,最終通過非極大值抑制的方法得到最終的檢測結(jié)果。
通過以下公式確定default box的大小:
其中,Smin取值0.2,Smax取值0.9,m為feature map的個數(shù)。
取橫縱比為ar={1'2'3'},則每個defaultbox寬和高計算公式如下:
SSD算法最大的貢獻就是提出了多尺度feature map預測的方法,相比YOLO算法能夠?qū)Σ煌叨鹊奈矬w具有更好的魯棒性,相比R-CNN系列,拋棄了Region Proposal的過程,計算速度更快。
經(jīng)過SSD之后,確定了無人機在圖片中的位置,并生成bounding box,無人機檢測效果如圖5所示。
3.3.2 無人機分類
通過無人機檢測后,將檢測到的無人機圖片送入VGG16模型進行特征提取,然后通過Softmax算法,對該特征向量進行預測,得出該無人機的分類類別。在最后一個全連接層中,我們選擇輸出的是一個5維特征向量[x1'x2'x3'x4'x5],通過如下公式計算出每一個元素對應的概率值。然后選出一個最大的Si作為該無人機為第i類的概率。
圖5 無人機檢測效果圖
CNN本質(zhì)上是一種輸入到輸出的映射。由于該映射比較復雜,人為規(guī)定的精確數(shù)學模型不能夠滿足實際需求。因此,只需要把海量已知數(shù)據(jù)對設定好的網(wǎng)絡模型進行訓練,網(wǎng)絡就能夠得到這種符合需求的映射。訓練與驗證是網(wǎng)絡模型調(diào)優(yōu)的重要階段,其核心是誤差反向傳播(Back Propagation,BP)算法,分為前向計算和后向傳導。訓練階段需要BP算法的完整流程,而驗證階段只需要BP算法的前向計算階段。VGG16網(wǎng)絡模型是整個無人機識別系統(tǒng)的核心部分,它不僅僅完成特征提取任務,還涉及網(wǎng)絡訓練與驗證階段,用于獲取能提取較好區(qū)分性的無人機特征的網(wǎng)絡模型參數(shù)。網(wǎng)絡訓練具體流程如圖6所示。
圖6 網(wǎng)絡訓練流程示意圖
數(shù)據(jù)集包括訓練集和驗證集,其中訓練集有1350張無人機圖片,驗證集有283張無人機圖片。將訓練集分為3類無人機,分別為固定翼、四旋翼和直升機,驗證集也相應的有這三類無人機圖片。
訓練過程采用Caffe框架,選擇在已訓練好的模型基礎上做微調(diào)。訓練的批尺寸定為20,學習率初始化為0.001,驗證的迭代次數(shù)定為60,每隔10次迭代驗證1次。權(quán)重損失初始化為0.0005,每驗證10次保存一次模型。最大迭代為500次。經(jīng)過多次訓練迭代之后選擇了最優(yōu)模型準確率達到83%。最后在驗證集上做測試,測試結(jié)果如表1所示。
表1 測試結(jié)果
從表1可以看出,固定翼的識別率是比較樂觀的,其他機型的識別率普遍較低,這是由于訓練集中固定翼圖片相對于其他機型較多的原因。無人機識別效果如圖7所示。
圖7 無人機識別效果圖
本文針對無人機飛行監(jiān)控問題,提出了基于深度卷積神經(jīng)網(wǎng)絡的無人機識別系統(tǒng)實現(xiàn)方案,能夠?qū)崟r檢測無人機的位置,識別無人機的種類,識別率較高。深度卷積神經(jīng)網(wǎng)絡的特征提取方法比傳統(tǒng)手工特征提取方法更加簡單、效果也更好,但是深度卷積神經(jīng)網(wǎng)絡對數(shù)據(jù)集的依賴性很大。只有數(shù)據(jù)集的規(guī)模達到要求的參數(shù)規(guī)模才能提取足夠多的特征供神經(jīng)網(wǎng)絡學習。所以下一步工作是收集更多的無人機數(shù)據(jù),提高無人機識別準確率。