(海軍裝備部 北京 100071)
近年來,無人機飛行成為了一種熱門的戶外活動,使用量逐年增加。但是無人機容易發生跌落、碰撞等安全事故,尤其是在人群和建筑物稠密的地方,存在較大的安全隱患。因此,無人機識別系統的搭載勢在必行。無人機識別系統中重要組成部分是圖像識別,其功能是將攝像頭捕捉到的圖像或視頻信息進行處理,從圖像或視頻中識別出無人機,從而實現對無人機的識別、監控和預警?;趫D像的無人機識別主要包括無人機圖像檢測(包含特征提?。┖蜔o人機分類。在圖像識別領域中,常用的特征提取方法有 HOG[1]、SIFT、Gabor[2]小波圖像紋理特征提取、高斯馬爾可夫隨機場(Gaussian Markov Random Field,GMRF)[3]遙感圖像特征提取等,結合后期的分類方法[4],取得了較好的識別率。目前,這些特征提取方法都是人工來完成的,所以存在如下問題:各類特征提取方法非常依賴具體的應用環境,算法要求的條件嚴格、魯棒性不好;復雜背景下多無人機特征提取困難等。
針對以上問題,隨著大數據、深度學習等技術的迅速發展,尤其是卷積神經網絡的廣泛應用,以及微軟亞洲研究院基于深度卷積神經網絡的計算機視覺系統,在ImageNet 1000挑戰中首次超越了人類識別的能力,圖像識別的精度取得了很大進步,目標檢測方法也采用深度神經網絡來完成。文獻[5]提出了基于卷積神經網絡的信息融合識別方法;文獻[6]提出了基于深度神經網絡的小尺度道路標示識別框架;文獻[7]提出了基于卷積神經網絡的無人機循跡方法;文獻[8]提出了基于稀疏貝葉斯分類器的汽車車型識別方法;文獻[9]提出了一種用于圖像目標識別的神經網絡及其車型識別方法;文獻[10]提出了基于模糊神經網絡的電力巡線無人機避障技術研究;文獻[11]提出了基于卷積神經網絡的城管案件圖像分類方法。這些方法是在傳統卷積神經網絡(Convolutional Neural Network,CNN)的基礎上,加入了形變處理層,最終學習的特征具有很強的判別力。推廣到特定物體的識別乃至場景識別,深度學習也有很多方案。由于無人機圖像信息量豐富,且無人機的飛行狀態多樣,因此識別難度較大。本文基于現有的理論,提出了一種基于深度卷積神經網絡的無人機識別方法。
2006 年,Hinton[12]等首次提出深度學習的概念,并開啟了深度學習的研究浪潮,其認為:多隱含層的人工神經網絡能夠更好地模擬人腦地思考過程,具有更加優異的學習能力,能夠對數據進行更本質的刻畫,從而提高可視化或分類的能力。卷積神經網絡CNN是深度學習中第一個真正多層結構學習算法,其在圖像識別領域優勢明顯。它利用感受野(Receptive field)、局部連接(Sparse Connectivity)等概念極大地減少了參數量,降低了網絡模型的復雜度,提高了訓練效率,且網絡對于平移、縮放的各種變形都具備高度不變性,具有良好的魯棒性和運算效率。在網絡輸入的是多維圖像時,圖像可以直接作為網絡輸入,避免了傳統識別算法中復雜的特征提取和數據重組過程。在二維圖像處理時也有較多優勢,如網絡自行抽取圖像特征包括顏色、紋理、形狀及圖像的拓撲結構。
在圖像識別任務中,一個典型的卷積神經網絡結構如圖1所示。根據不同的處理任務,開展設計網絡結構、初始化參數、定義損失函數以及設定超參等準備工作。將經過預處理后的訓練數據送入到網絡結構中,分別計算卷積層、降采樣層和全連接層等的前向結果,最后根據數據標簽及前向結果最小化損失函數,求解網絡模型參數。從圖1可以看出,卷積神經網絡與傳統深度神經網絡的最大區別就是卷積層和降采樣層替換了部分全連接層。

圖1 卷積神經網絡結構圖
在CNN的卷積層中,一個神經元只與部分鄰層神經元連接。在CNN的一個卷積層中,通常包含若干個特征平面(Feature Map),每個特征平面由一些矩形排列的神經元組成,同一特征平面的神經元共享權值,這里共享權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網絡的訓練過程中,卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網絡各層之間的連接,同時又降低了過擬合的風險。降采樣(Sub-Sampling)層也叫做池化(Pooling)層,通常有最大池化(Maximum Pooling)或平均池化(Average Pooling)兩種形式;降采樣可以看作一種特殊的卷積過程。卷積和降采樣大大降低特征的維數,減少了模型的參數,簡化了模型復雜度。
VGGNet是在2014年由Karen Simonyan和Andrew Zisserman實現的卷積神經網絡。它主要的貢獻是展示出網絡的深度是算法優良性能的關鍵部分。它們最好的網絡是包含了16個卷積/全連接層。網絡的結構非常一致,從頭到尾全部使用的是3×3的卷積和2×2的匯聚。VGGNet不足在于:耗費更多的計算資源,并且使用了更多的參數,導致較多的內存占用(140M左右)。其中,絕大多數的參數都是來自于第一個全連接層。
VGG是在從AlexNet(即CNN的基準模型之一)發展而來的網絡,可以把它看作是加深版的AlexNet,是卷積層加全連接層的組合。它在AlexNet基礎上,主要修改了兩個方面內容:1)在第一個卷積層使用了更小的濾波器尺寸和間隔(3×3);2)在整個圖片和multi-scale上訓練和測試圖片。VGG系列的結構如圖2所示。

圖2 VGG系列結構圖
多個小濾波器卷積層的組合比單一濾波器卷積層好。一層一層地重疊了3個3×3卷積層(層與層之間有非線性激活函數)。在這個排列下,第一個卷積層中的每個神經元都對輸入數據體有一個3×3的視野。第二個卷積層上的神經元對第一個卷積層有一個3×3的視野,也就是對輸入數據體有5×5的視野。同樣,在第三個卷積層上的神經元對第二個卷積層有3×3的視野,也就是對輸入數據體有7×7的視野。假設不采用這3個3×3的卷積層,而是使用一個單獨的有7×7感受野的卷積層,那么所有神經元的感受野也是7×7,但是存在一些缺點。首先,多個卷積層與非線性的激活層交替的結構,比單一卷積層的結構更能提取出深層更好的特征。其次,假設所有的數據有C個通道,那么單獨的7×7卷積層將會包含7×7×C=49C個參數,而3個3×3的卷積層的組合僅有個3×(3×3×C)=27C個參數。直觀說來,最好選擇帶有小濾波器的卷積層組合,而不是用一個帶有大濾波器的卷積層。前者可以表達出輸入數據中更多個強力特征,使用的參數也更少。唯一不足的是,在進行反向傳播時,中間卷積層可能會導致占用更多的內存。1×1 filter的作用是在不影響輸入輸出維數的情況下,對輸入線進行線性形變,然后通過Relu(Rectified Lineat Units,激活函數)進行非線性處理,增加網絡的非線性表達能力。Pooling:2×2,間隔s=2。這里使用的VGG16,總共16層,其結構如圖3所示。

圖3 VGG16網絡結構拓撲圖
VGG突出影響包括:一個大卷積核分解成連續多個小卷積核;減少參數,降低計算,增加深度;集成AlexNet結構的特點:簡單、有效;網絡改造的首選基礎網絡等。
通常采用網絡攝像頭對劃定區域進行監控。無人機識別流程如圖4所示,首先將網絡攝像頭輸出的視頻流送入到無人機識別系統中,經過圖像抓幀和預處理后,對圖像進行無人機檢測;然后將檢測到的無人機圖像抽取出來,對圖像特征進行提取,送入VGG16網絡;最后,在訓練好的后臺數據中識別出該圖像的無人機種類。可以將無人機的種類標識到原圖像中并顯示。

圖4 無人機識別流程圖
Caffe是一套開源軟件框架,內部提供了一套基本的編程、模板框架,用以實現GPU并行架構下的深度卷積神經網絡、深度學習(Deep Learning)等算法;按照該框架,可以定義多種類型的卷積神經網絡結構,且可以在此框架下增加新代碼、設計新算法。該框架的優點在于運算速度快、簡單、友好。本文設計的無人機識別系統中深度學習算法就是基于Caffe框架實現的。
Caffe框架具有三個基本原子結構,分別是Blobs、Layers和Nets。Blob是用于存儲數據的對象,同時Caffe中各種數據(圖像輸入、模型參數)都是以Blob的形式在網絡中傳輸的。Blob還能在CPU和GPU之間進行同步以支持CPU/GPU的混合運算。Layer是網絡的次級單元,也是能在外部進行調整的最小網絡結構單元。一般來說,都讓同一層的神經元具備相同性質,因此也就沒有必要提供對神經元的操作。Net即一個完整的包含輸入層、隱藏層、輸出層的深度網絡,在Caffe中一般是一個卷積神經網絡,通過定義不同類型Layer,并用Blob將不同的Layer連接起來,就能產生一個Net。為了減少算法代碼的編寫負擔,這里選擇在Caffe框架下對VGG16網絡進行Fine-tuning(微調),即使用已用于其它目標、預訓練好模型的權重或部分權重,作為初始值開始訓練其它數據集。
3.3.1 無人機檢測
圖像經過預處理后,使用SSD算法對處理后圖像做無人機目標檢測。SSD算法的主網絡結構是VGG16。采用VGG16前面的5層網絡,然后利用atrous算法將fc6和fc7層轉化成兩個卷積層,另外再增加了3個卷積層和一個均值池化層,不同層次的feature map(特征平面)分別用于default box(缺省窗口)的偏移和不同類別得分的預測,最終通過非極大值抑制的方法得到最終的檢測結果。
通過以下公式確定default box的大?。?/p>

其中,Smin取值0.2,Smax取值0.9,m為feature map的個數。
取橫縱比為ar={1'2'3'},則每個defaultbox寬和高計算公式如下:

SSD算法最大的貢獻就是提出了多尺度feature map預測的方法,相比YOLO算法能夠對不同尺度的物體具有更好的魯棒性,相比R-CNN系列,拋棄了Region Proposal的過程,計算速度更快。
經過SSD之后,確定了無人機在圖片中的位置,并生成bounding box,無人機檢測效果如圖5所示。
3.3.2 無人機分類
通過無人機檢測后,將檢測到的無人機圖片送入VGG16模型進行特征提取,然后通過Softmax算法,對該特征向量進行預測,得出該無人機的分類類別。在最后一個全連接層中,我們選擇輸出的是一個5維特征向量[x1'x2'x3'x4'x5],通過如下公式計算出每一個元素對應的概率值。然后選出一個最大的Si作為該無人機為第i類的概率。


圖5 無人機檢測效果圖
CNN本質上是一種輸入到輸出的映射。由于該映射比較復雜,人為規定的精確數學模型不能夠滿足實際需求。因此,只需要把海量已知數據對設定好的網絡模型進行訓練,網絡就能夠得到這種符合需求的映射。訓練與驗證是網絡模型調優的重要階段,其核心是誤差反向傳播(Back Propagation,BP)算法,分為前向計算和后向傳導。訓練階段需要BP算法的完整流程,而驗證階段只需要BP算法的前向計算階段。VGG16網絡模型是整個無人機識別系統的核心部分,它不僅僅完成特征提取任務,還涉及網絡訓練與驗證階段,用于獲取能提取較好區分性的無人機特征的網絡模型參數。網絡訓練具體流程如圖6所示。

圖6 網絡訓練流程示意圖
數據集包括訓練集和驗證集,其中訓練集有1350張無人機圖片,驗證集有283張無人機圖片。將訓練集分為3類無人機,分別為固定翼、四旋翼和直升機,驗證集也相應的有這三類無人機圖片。
訓練過程采用Caffe框架,選擇在已訓練好的模型基礎上做微調。訓練的批尺寸定為20,學習率初始化為0.001,驗證的迭代次數定為60,每隔10次迭代驗證1次。權重損失初始化為0.0005,每驗證10次保存一次模型。最大迭代為500次。經過多次訓練迭代之后選擇了最優模型準確率達到83%。最后在驗證集上做測試,測試結果如表1所示。

表1 測試結果
從表1可以看出,固定翼的識別率是比較樂觀的,其他機型的識別率普遍較低,這是由于訓練集中固定翼圖片相對于其他機型較多的原因。無人機識別效果如圖7所示。

圖7 無人機識別效果圖
本文針對無人機飛行監控問題,提出了基于深度卷積神經網絡的無人機識別系統實現方案,能夠實時檢測無人機的位置,識別無人機的種類,識別率較高。深度卷積神經網絡的特征提取方法比傳統手工特征提取方法更加簡單、效果也更好,但是深度卷積神經網絡對數據集的依賴性很大。只有數據集的規模達到要求的參數規模才能提取足夠多的特征供神經網絡學習。所以下一步工作是收集更多的無人機數據,提高無人機識別準確率。