丁鵬程 于進勇 王 超 柳向陽
(海軍航空大學 煙臺 264001)
近年來,得益于深度學習在特征提取中取到的巨大成就,目標檢測作為計算機視覺的主要部分得到了迅猛的發(fā)展。不同于傳統(tǒng)目標檢測中人工提取特征,深度學習特征自提取可以有效克服傳統(tǒng)方法對設計者經(jīng)驗的要求,對環(huán)境光影的影響有較好的抑制作用,對目標檢測的發(fā)展起了重要的推動作用。如今,深度學習在目標檢測中主要分化出以Fast R-CNN[1],F(xiàn)aster R-CNN[2]為代表的兩階段檢測網(wǎng)絡和以 YOLO[3],SSD[4]為代表的單階段檢測網(wǎng)絡。前者先劃分候選區(qū)域進行特征提取,之后進行分類和回歸定位,后者采取端對端的形式直接進行分類和回歸。比較而言,以Faster R-CNN為代表的兩階段目標檢測檢測精度更高,本文也將此網(wǎng)絡作為研究重點。
將深度學習的高精度檢測引入無人機視覺定位,是未來發(fā)展的趨勢。將基于深度學習的目標檢測網(wǎng)絡替代無人機視覺定位中的圖像處理模塊,檢測出目標在像素坐標系中的位置,經(jīng)過投影轉(zhuǎn)換可以得到無人機的位置信息。為了使目標檢測網(wǎng)絡更好的應用在無人機視覺定位,本文根據(jù)無人機視覺定位的特點,將研究重點放在提高網(wǎng)絡精度,特別是小目標檢測的精度,之后根據(jù)無人機實時性的特點,研究提高網(wǎng)絡速度的方法。
為了讓Faster R-CNN更加適應無人機視覺定位的要求,加入Inception改善網(wǎng)絡結構,通過設計級聯(lián)R-CNN,語義級聯(lián)以及級聯(lián)激活函數(shù),提出了級聯(lián)卷積網(wǎng)絡,可以明顯提高網(wǎng)絡的檢測精度,特別是小目標的檢測精度。選定飛行實驗區(qū)域,制作自己的數(shù)據(jù)集UVNLD(UAV Vision Navigation Location Dataset),通過投影關系進行坐標轉(zhuǎn)換得到無人機的位置信息,提出了一整套無人機視覺定位算法,并驗證了算法的可行性。
Faster R-CNN引入RPN(Region Proposal Networks)網(wǎng)絡,使區(qū)域提取、分類、回歸等任務共用卷積特征,實現(xiàn)特征共享。RPN采用全卷積層來代替全連接層,可以使網(wǎng)絡不受輸入圖片大小的限制。卷積在特征層上利用k個不同的矩形框進行區(qū)域提取,可以同時輸出所有矩形框的特征,如圖1。分類層用于判斷該區(qū)域為前景還是后景,回歸層預測區(qū)域的中心,并得到對應的坐標[x,y,w,h]。
圖1 RPN結構
當網(wǎng)絡進行目標檢測時,為了提高網(wǎng)絡的魯棒性,必須同時考慮小目標和大目標的情況。根據(jù)GoogleNet[5]等相關研究,當圖像中既有大目標信息,又有小目標信息時,可以控制大小不同的卷積核進行特征提取,即Inception結構。這里,我們設計如圖2所示的Inception結構。
在檢測精度上,當網(wǎng)絡學習大目標時,卷積網(wǎng)絡需要足夠大的感受野,我們將Faster R-CNN中的5×5卷積核替換成兩個3×3卷積核,使感受野略有增加。在小目標學習過程中,1×1卷積核可以增加網(wǎng)絡的非線性,在保留上一層感受野的同時,減慢輸出特征感受野的增長,有利于小尺度目標的捕捉。
圖2 Inception結構
在網(wǎng)絡計算速度上,3×3網(wǎng)絡的引入可以使每個過程的參數(shù)從25降低到18。而設置步長為2的1×1網(wǎng)絡,可以使網(wǎng)絡的特征圖變?yōu)樵瓉淼囊话?,顯著減低了網(wǎng)絡的計算量。
目標檢測網(wǎng)絡的評價函數(shù)IoU(Intersection-over-union)是指模型產(chǎn)生的目標窗口與原來標記窗口的交疊率,即檢測結果(Detection Result)與真實標記(Ground Truth)的交集比上它們的并集,表達式如下:
雙階段檢測網(wǎng)絡,如R-CNN[6]、R-FCN[7]等,都會對提取的候選區(qū)域進行分類和回歸。分類過程中,每個候選區(qū)域都會根據(jù)事先設定的IoU的值分為正樣本和負樣本。回歸任務中,網(wǎng)絡不斷地向正樣本的邊界框回歸。所以,一個好的IoU的設定,對網(wǎng)絡的訓練和驗證具有重大影響。
圖3 不同IoU的網(wǎng)絡表現(xiàn)
如圖3所示,橫軸是候選區(qū)域的IoU,縱軸是經(jīng)過回歸訓練后得到的新的IoU,不同的線條代表不同的IoU訓練出來的檢測器。整體來看,三條曲線趨勢表明IoU越高,檢測器的回歸性能越好。在0.55~0.6之間,IoU為0.5的檢測器性能最佳,在0.6~0.75和0.75以上區(qū)間,分別是IoU為0.6和0.7的檢測器性能最佳??梢钥闯?,當候選區(qū)域自身的IoU值與訓練的IoU值相近時,檢測器的性能最佳。傳統(tǒng)的目標檢測網(wǎng)絡,通常采用一個固定的IoU設定值,如當IoU為0.5時,大于0.5的都會被認作是正樣本,但是網(wǎng)絡對于0.6~0.95的候選區(qū)域表現(xiàn)較差。提高IoU為0.7,雖然對于0.75以上的候選區(qū)域變現(xiàn)較好,但是0.7的IoU值會導致正樣本的數(shù)量急劇減少,網(wǎng)絡訓練時過擬合嚴重,最終檢測結果反而不如0.5的設定值。
為了解決以上問題,我們采用級聯(lián)R-CNN網(wǎng)絡結構[8]。由圖3可知,網(wǎng)絡經(jīng)過訓練,IoU的值會增加。與圖4(a)Faster R-CNN相比,我們將多個不同的檢測器根據(jù)IoU的值串聯(lián)起來,如圖4(b)。本文,我們設定了IoU分別是0.5,0.6和0.7的三個級聯(lián)檢測器,每個檢測器的輸入源自上一層檢測器邊界框回歸后的結果。
圖4 級聯(lián)R-CNN網(wǎng)絡結構
通過這種設定,網(wǎng)絡可以充分利用各類正樣本的圖像信息,一定程度上可以減少正樣本的浪費和流失,使得檢測網(wǎng)絡適應各種目標的檢測情況,提高網(wǎng)絡的檢測精度。
通過上述改進,可以提高網(wǎng)絡整體的檢測精度,但是,針對小目標這種特殊任務,網(wǎng)絡的檢測效果提升不明顯。通常,為了更好地識別大小不同的物體,特征圖像金字塔[9]是一個常見方法。低層圖像的特征語義信息比較少,但是位置信息準確,高層的特征語義信息豐富,通過多尺度融合,可以更好地表達圖像信息。
圖5 幾種特征融合
特征圖像金字塔如圖5(a)所示,將圖像化成不同大小尺寸,對每一個尺寸的圖像生成各自的特征并進行預測。雖然可以保證特征提取的完備性,但是時間成本太大[10],實用性差。圖 5(b)是利用卷積網(wǎng)絡自身的特性,對圖像進行卷積和池化處理,生成不同尺度的特征圖,通過高層的語義網(wǎng)絡進行預測[11]。傳統(tǒng)的 SPP Net[12],F(xiàn)ast R-CNN[1]和 Faster R-CNN[2]也都采用這種方式。通過這種方式,網(wǎng)絡速度快,內(nèi)存占用小。但是由于忽略了低層網(wǎng)絡的細節(jié)信息,網(wǎng)絡精度有待提高。融合了不同特征層語義信息的網(wǎng)絡框架[4]被提了出來,如圖5(c)。但是,因為網(wǎng)絡中大部分都是低層網(wǎng)絡提供的信息,網(wǎng)絡的弱特征太多,導致網(wǎng)絡的魯棒性差。
基于上述原因,我們借鑒Lin等[13]思路,采用如圖5(d)所示的特征金字塔網(wǎng)絡(Feature Pyramid Network),將自底向上和自頂向下的路徑進行橫向信息融合。比如,將第四層采用1×1卷積層的上采樣操作結果與第二層降維操作的結果相加,經(jīng)過3×3卷積操作后輸入到第五層網(wǎng)絡進行分類和回歸。通過將高分辨率、低語義信息的低層特征和低分辨率、高語義信息的高層特征融合,每一層特征圖都可以根據(jù)分辨率的不同分別做對應分辨率大小的目標檢測,同時這種連接幾乎不會增加網(wǎng)絡額外的時間和計算量,只是在基礎網(wǎng)絡上增加了跨層連接。
為了更好地將網(wǎng)絡用在無人機視覺定位,必須要考慮網(wǎng)絡的實時性問題。ReLU[14]自提出以來,由于可以有效緩解梯度消失、計算方便快捷等原因迅速成為最常用的激活函數(shù)。但也存在著成對現(xiàn)象,即低層卷積層的濾波器存在著嚴重的負相關性,隨著網(wǎng)絡變深,負相關性減弱[15]。所以,在網(wǎng)絡的前半部分,ReLU會在訓練過程中抵消部分負響應,造成卷積核冗余。
為了解決這個問題,借鑒Hong等[16]研究,引入級聯(lián)激活函數(shù)C.ReLU(Concatenated Rectified Linear Units)。定義:
則
為了抵消成對現(xiàn)象,根據(jù)C.ReLU構造如圖6所示結構。將輸出通道減少一半,通過將激活函數(shù)額外做一次取反,等價于將輸入相位旋轉(zhuǎn)180°,從而實現(xiàn)原來的輸出總量,在不改變精度的情況下減少一半的運算量。
無人機對獲取的圖像檢測目標,根據(jù)目標實際位置和圖像中的位置,經(jīng)過投影關系和坐標轉(zhuǎn)換獲得無人機位置信息。根據(jù)像素坐標系(u ,v ),圖像坐標系相機坐標系(xc,yc,zc),可得經(jīng)典無人機投影變換方程為
其中,(u0,v0)是圖像坐標系原點在像素坐標系中的坐標。 f為焦距,fu=f/dx,fv=f/dy。三維正交旋轉(zhuǎn)矩陣R和平移變換向量t為世界坐標系中的點到相機坐標系的變換矩陣。
圖6 C.ReLU結構
然而現(xiàn)實中,攝像機鏡頭存在嚴重的畸變,尤在遠離圖像中心處,像差比較明顯。為了提高計算精度,需要考慮無人機鏡頭畸變。本文根據(jù)張正友標定算法[17],運用萊文貝格-馬夸特方法[18]解決多參數(shù)非線性系統(tǒng)優(yōu)化問題,從而確定相機參數(shù)和畸變系數(shù),實現(xiàn)畸變矯正、圖像校正和最終三維信息恢復。
圖7 無人機視覺定位算法流程圖
通過將級聯(lián)卷積網(wǎng)絡的目標檢測融入到視覺投影,代替?zhèn)鹘y(tǒng)圖像處理模塊,可以得到無人機的位置信息[19]。本文中,無人機通過識別已知位置信息的目標得到無人機自身位置信息。該算法流程圖如圖7所示。
1)無人機在高空飛行時,對地面圖像進行采集。
2)將當前拍攝圖像經(jīng)過張正友標定算法進行圖像校正和三維信息恢復。
3)將校正后的圖像輸入級聯(lián)卷積網(wǎng)絡。
4)級聯(lián)卷積網(wǎng)絡將檢測到的目標分類,并以方框框出的形式標注出目標在圖像中的位置,同時得到方框四個頂點像素坐標。
5)根據(jù)四個頂點的像素坐標,得到目標中心在圖像中的坐標。
6)利用投影轉(zhuǎn)換和已知目標的位置信息,可以得到無人機自身位置信息。
以煙臺市芝罘區(qū)為中心的海邊區(qū)域作為研究對象,采用無人機進行數(shù)據(jù)采集。為了提高模型的適應性和魯棒性,采集了10類特征比較明顯的目標在不同觀測角度和飛行高度下的圖像,通過旋轉(zhuǎn)、調(diào)整亮度、加入噪聲等方法擴大樣本,模仿Pascal voc2007數(shù)據(jù)集的構造過程,得到自己的數(shù)據(jù)集UVNLD。UVNLD數(shù)據(jù)集包括10類目標的正樣本,每類2000幅。其中訓練樣本每類1000幅,測試樣本每類1000幅,共計20000幅。
在64位的ubuntu14.04系統(tǒng),安裝了CUDA 8.0,cuDNN 5.0和python 2.7的環(huán)境下,我們選用caffe框架訓練本文網(wǎng)絡模型。CPU為Intel(R)Core(TM)i7-6770K@4.00GHz×8,GPU為NVIDIA GTX1080,8G內(nèi)存。
5.2.1 幾種網(wǎng)絡精度對比
表1是為了驗證本文所提級聯(lián)卷積網(wǎng)絡在目標檢測中的性能,進行的幾組在數(shù)據(jù)集UVNLD的檢測結果。其中,R表示加入了級聯(lián)R-CNN的網(wǎng)絡,F(xiàn)表示加入了語義級聯(lián)的網(wǎng)絡,級聯(lián)卷積網(wǎng)絡則是本文提出的目標檢測網(wǎng)絡,通過在Faster R-CNN基礎上修改網(wǎng)絡Inception結構,引入級聯(lián)R-CNN和語義級聯(lián)的網(wǎng)絡。這里,檢測任務的評價指標是AP(Average Precision),定義如下:
其中R為召回率,P為精度。
分別訓練和測試四種網(wǎng)絡,得到UVNLD數(shù)據(jù)庫的測試結果,見表1。我們可以看出,通過加入級聯(lián) R-CNN,無論是 AP50,AP75還是 AP,網(wǎng)絡精度都得到了明顯的提高。這種級聯(lián)檢測器比單獨檢測器效果好的多,此外,經(jīng)過多個檢測器后,候選區(qū)域的IoU也會提高,可以增加高IoU區(qū)域的正樣本數(shù)量,對于網(wǎng)絡的過擬合有明顯抑制作用,確保網(wǎng)絡在高IoU檢測器區(qū)間的精度。進一步對比APS和APM可以看出,語義級聯(lián)對小目標的檢測提升明顯,通過增加上下文信息,融合高層底層語義信息后,增加了特征映射的分辨率,即在更高層的特征上可以獲得更多與小目標相關的有用信息。
通過上述改進,級聯(lián)卷積網(wǎng)絡可以顯著提高網(wǎng)絡檢測小目標的精度,整體精度更是達到了87.9%。部分檢測結果如圖8所示,所得邊界框與真實邊界框平均誤差為2,滿足了網(wǎng)絡的設計要求。
表1 幾種網(wǎng)絡精度
5.2.2 級聯(lián)激活函數(shù)對速度的影響
通過上述方法,網(wǎng)絡的精度有了極大的提到。但是,無人機視覺定位除了滿足精度要求,還要保證網(wǎng)絡的實時性。本文測試了兩種傳統(tǒng)Faster-RCNN以及是否使用了級聯(lián)激活函數(shù)的級聯(lián)卷積網(wǎng)絡。這里評判標準ms是指網(wǎng)絡檢測運行的平均時間,以毫秒為計。
表2 不同高度下無人機定位精度
加深網(wǎng)絡層數(shù),對網(wǎng)絡的精度有很大提升,但也會導致網(wǎng)絡檢測速度的大幅下降,見表2。僅僅是將卷積子網(wǎng)絡從VGG16改為ResNet101,網(wǎng)絡速度就有了明顯的下降。在網(wǎng)絡結構中,通過引入Inception結構等,可以一定程度降低網(wǎng)絡運行時間,但是網(wǎng)絡的速度依舊遠不達要求。
引入級聯(lián)激活函數(shù)后,每層網(wǎng)絡都可以減少一半的計算量,特別是隨著網(wǎng)絡層數(shù)的增加,對卷積網(wǎng)絡指數(shù)級參數(shù)增加有了極大的抑制,效果明顯,降低了網(wǎng)絡對硬件的要求。
為了檢驗目標檢測網(wǎng)絡應用于無人機視覺定位的效果,我們在UVNLD數(shù)據(jù)集上又增加了驗證集圖片,在保證無人機特定高度下,收集相機拍攝角度分別為45°,60°,90°的圖片若干張,同時記錄無人機的當前實際位置信息。根據(jù)上述步驟,將驗證集圖片導入,對比網(wǎng)絡求取的無人機位置信息與預先記錄的無人機實際位置信息,得到表3。
圖8 部分檢測結果圖
表3結果表明,通過引入目標檢測網(wǎng)絡代替?zhèn)鹘y(tǒng)的圖像處理模塊,進行無人機視覺定位,基本可以實現(xiàn)無人機定位誤差在0.3m以內(nèi),滿足無人機視覺定位的需求。特別是當無人機相機垂直角度采集數(shù)據(jù)時,網(wǎng)絡正確檢測的區(qū)域準確率更是達到了91.1%,定位誤差縮小到0.22m,滿足無人機視覺定位的要求。
表3 不同高度下無人機定位精度
無人機在相機不同高低角對正確區(qū)域檢測率和無人機定位誤差的影響,主要體現(xiàn)在相機非垂直拍攝時,目標在圖像會有一定的投影誤差。高低角越低,投影誤差越明顯,目標檢測框誤差也會越大,進而影響無人機的定位誤差。適當提高無人機拍攝高度,可以一定程度上減小投影誤差的影響,從而提高無人機定位結果。
本文在Faster R-CNN網(wǎng)絡的基礎上,通過引入Inception結構,設計級聯(lián)R-CNN,語義級聯(lián)和級聯(lián)激活函數(shù),提出了級聯(lián)卷積網(wǎng)絡,既可以提高網(wǎng)絡在各個候選區(qū)域的檢測精度,又可以重點解決小目標檢測問題,對網(wǎng)絡的整體檢測精度有了較大的提升。經(jīng)過在煙臺當?shù)財?shù)據(jù)采集并自建數(shù)據(jù)庫學習,級聯(lián)卷積網(wǎng)絡對圖像的目標檢測精度穩(wěn)定在87.9%。將此網(wǎng)絡引入無人機視覺定位,代替?zhèn)鹘y(tǒng)圖像處理模塊,在考慮相機畸變的情況下,設計了一整套無人機視覺定位算法。試飛實驗表明,無人機視覺定位誤差穩(wěn)定在0.3m以內(nèi),滿足無人機視覺定位的要求。