耿 文,孫 涵
(1.南京航空航天大學 計算機科學與技術(shù)學院/人工智能學院,江蘇 南京 211106;2.南京航空航天大學 模式分析與機器智能工信部重點實驗室,江蘇 南京 211106)
目前,無人機已經(jīng)被廣泛應用于商業(yè)和娛樂等領域,它在帶來極大便利的同時,也在威脅著個人隱私,甚至會威脅到民航的安全,因此對于無人機的檢測變得越來越重要。
目前的無人機檢測技術(shù)都是建立在通用目標檢測算法基礎之上的。起初,通用目標檢測算法采用滑動窗口的方式來預測目標的位置。隨著深度學習的崛起,這種自動從數(shù)據(jù)中學習特征表示的方式被廣泛應用到目標檢測中。R-CNN[1]和Fast R-CNN[2]通過區(qū)域建議生成來提取感興趣目標區(qū)域。之后,基于anchor的RPN[3]很快取代了區(qū)域建議生成這種方式。由此,anchor被廣泛應用于各種目標檢測應用中。目前主流的目標檢測算法,比如Faster R-CNN[3]、SSD[4]和YOLOv2[5]都依賴于一組預先定義的anchor。
盡管這些基于anchor的目標檢測算法取得了優(yōu)異的成績,但是仍然存在著一些問題:
(1)像文獻[3,6]中的目標檢測算法的性能與anchor的尺寸、長寬比和數(shù)量有著直接的關系。如果預先定義的anchor參數(shù)不合適,這會極大地影響目標檢測算法的性能。
(2)anchor的尺度和長寬比是固定的,因此目標檢測算法在處理形狀變換比較大的目標時依舊會遇到困難,特別是對于小目標。預先定義的anchor還限制了目標檢測算法的泛化能力[7]。
(3)基于anchor的目標檢測算法一般會采用密集anchor的方式來獲得比較高的召回率。比如特征金字塔網(wǎng)絡(FPN[8])有超過18萬個anchor,在訓練過程中,大部分的anchor都被標記為負樣本,這會加重正負樣本的不平衡性。
(4)在訓練時,需要計算所有anchor與真實框的IoU得分,過多的anchor會顯著增加計算量和內(nèi)存占用。
為了解決以上問題,最直接的辦法就是拋棄這些預先定義的anchor,采用anchor free的方法來檢測目標。一階段目標檢測算法YOLOv1[9]是最早的anchor free檢測方法,它是在每個網(wǎng)格上直接預測兩個候選邊界框的參數(shù)。目前,越來越多的anchor free檢測方法被提出。CornerNet[10]預測的是兩組角點(左上角和右下角)。ExtremeNet[11]是通過預測極值點和中心點來檢測目標的。FSAF[12]添加了兩個卷積層,這兩個卷積層分別負責anchor free方法的目標分類和邊界框回歸。FCOS[13]為了剔除遠離目標中心的低質(zhì)量檢測框,提出了中心度分支。
起初,R-CNN[1]和Fast R-CNN[2]通過區(qū)域建議生成方法來提取感興趣目標區(qū)域。接著,基于anchor的Region Proposal Network[3](RPN)很快取代了區(qū)域建議生成方法。由此,anchor被廣泛應用于各種目標檢測框架中。
目前基于anchor的檢測器主要分為兩類:兩階段和一階段。兩階段的目標檢測方法主要有Faster R-CNN[3]、SPP-Net[14]和HyperNet[15]。這些方法首先生成一系列的目標候選邊界框,然后使用卷積神經(jīng)網(wǎng)絡去分類這些目標。一階段的目標檢測方法主要有SSD[4]和YOLOv2[5]。與兩階段目標檢測方法相比較,一階段目標檢測方法直接將目標定位問題轉(zhuǎn)化為目標回歸問題。
為了改善anchor的能力,目前也有許多成功的嘗試。MetaAnchor[7]可以從任意預先定義的anchor中動態(tài)生成anchor函數(shù)。Guided-Anchoring[16]聯(lián)合預測目標中心位置以及不同位置上可能存在的目標尺度和長寬比,以此來動態(tài)地檢測目標。
解決anchor產(chǎn)生的問題最直接的辦法其實是拋棄這些預先定義的anchor,采用anchor free的方法。一階段目標檢測器YOLOv1[9]是最早的anchor free檢測方法。后來,anchor free的目標檢測算法逐漸分為兩類:基于關鍵點的和基于密集采樣的?;陉P鍵點的方法主要有CornerNet[10]和ExtremeNet[11]?;诿芗蓸拥姆椒ㄖ饕蠪SAF[12]和FCOS[13]。
最初對于小目標的檢測大都使用傳統(tǒng)方法。文獻[17]利用目標的高頻特性來檢測小目標;文獻[18]是基于卡爾曼濾波的小目標檢測與追蹤;文獻[19]中使用Difference of Gaussian(DoG)算法檢測小目標,然后使用卡爾曼濾波與粒子濾波結(jié)合的方式來追蹤小目標。
隨著深度學習的大熱,基于深度學習的小目標檢測算法得到了廣泛應用。2017年,陳江昀基于卷積神經(jīng)網(wǎng)絡CNN和超像素算法提出了一種新型的面向微小目標的檢測方法[20]。2018年,郭之先提出了一種改進的Faster R-CNN檢測算法[21]用來檢測交通場景中的小目標。
關于無人機檢測的算法可以分為傳統(tǒng)的方法和基于深度學習的方法。傳統(tǒng)方法中,文獻[22]利用卡爾曼模型來動態(tài)地檢測和跟蹤無人機。文獻[23]從無人機目標的移動性、空間性、振動性這三個方面建立了無人機檢測系統(tǒng)。
基于深度學習的方法中,文獻[24]結(jié)合CNN和運動補償來檢測視頻中的飛行目標。文獻[25]提出了一種基于卷積神經(jīng)網(wǎng)絡(CNNs)的學習網(wǎng)絡,實現(xiàn)了無人機目標的檢測。文獻[26]提出了兩種基于SSD的無人機檢測方法,一種方法利用ResNet網(wǎng)絡進行特征提取來檢測無人機,另一種方法是直接將SSD檢測到的無人機目標圖像送入到AlexNet網(wǎng)絡中進行微調(diào)。文獻[27]針對固定相機和運動相機,設計了兩種不同的方法來檢測視頻中的小型無人機。
受FSAF和FCOS的啟發(fā),該文提出了一種anchor free的無人機檢測方法。
首先,針對地對空拍攝的無人機目標大部分都是小尺度的情況,主干網(wǎng)絡要選取適合提取小目標特征的網(wǎng)絡,該文選取HRNet[28]作為主干網(wǎng)絡。HRNet網(wǎng)絡可以得到目標豐富的高分辨率特征表示,這對于網(wǎng)絡的分類和回歸是有益的。對應的,neck網(wǎng)絡由FPN變?yōu)榱薍RNet[28]作者提出的HRFPN,使得金字塔特征圖在下采樣的過程中保留更多的細粒度信息。
接著,采用逐像素的方式來預測感興趣區(qū)域,采用soft-NMS方法對邊界框進行排名。最后,對于置信度損失和回歸損失,分別采用Focal Loss損失和Smooth L1損失。Focal Loss損失關注困難樣本和平衡正負樣本數(shù)量。
如圖1所示,該網(wǎng)絡模型主要包括三個部分:主干網(wǎng)絡、HRFPN和head。
圖1 網(wǎng)絡結(jié)構(gòu)
對于主干網(wǎng)絡,放棄了常用的ResNet和ResNeXt,采用高分辨率網(wǎng)絡HRNet。HRNet由四個階段的子網(wǎng)絡組成,第一階段子網(wǎng)絡輸出高分辨率特征圖,然后每新增一個階段,該階段子網(wǎng)絡的輸出特征圖分辨率會降低2倍。為了得到目標豐富的高分辨率表示特征,該網(wǎng)絡將多分辨率子網(wǎng)并行連接,然后進行多次的多尺度融合,這樣使得每一個高分辨率到低分辨率的表示特征都從其他并行表示中反復接收信息。因此,預測的特征圖會更加具有細粒度的特征,在空間上的表示也更加精確。HRFPN代替?zhèn)鹘y(tǒng)的FPN,用來構(gòu)建一個多層次的特征金字塔圖。首先低分辨率的特征表示進行雙線性上采樣,然后將這些特征表示堆疊起來,最后通過多層次的平均池化進行下采樣獲得多層金字塔特征圖。head模塊包括分類和回歸分支。該模塊主要是在感興趣區(qū)域采用逐像素預測的方法來進行目標分類和回歸。
一般anchor free的目標檢測方法需要對特征圖從左到右從上到下進行掃描,然后每個像素點都預測一個分類結(jié)果和回歸邊界框的偏移量。對這些像素點劃分正負樣本的時候,一般的方法是如果像素點落在目標區(qū)域內(nèi),該像素點就是正樣本,否則為負樣本,但是考慮到目標真實邊界框邊緣的像素點都遠離目標中心,如果將這些像素點作為正樣本,對網(wǎng)絡模型的訓練會造成困難。尤其對于小目標來講,它的邊緣點與背景像素更為接近,這無疑增加了小目標檢測的困難度。綜上考慮,將目標真實邊界框中的邊緣附件的像素點作為負樣本,將落在目標中心附件的像素點作為正樣本,如圖2所示。
圖2 目標區(qū)域的正負樣本劃分
該文借鑒了Kong Tao、Sun Fuchun和Liu Huaping等人提出的“Object Fovea”思想,通過參數(shù)δ1來調(diào)節(jié)目標的寬和高,將真實邊界框的區(qū)域向目標中心收縮一些,收縮后的邊界框內(nèi)的像素點作為正樣本;通過參數(shù)δ2再次調(diào)節(jié)邊界框的寬和高,將邊界框向外擴展一些,擴展后的邊界框邊緣的像素點作為負樣本,處于兩個邊界框之間內(nèi)的像素點作為忽略樣本,不參與網(wǎng)絡分類和回歸。忽略樣本區(qū)域的存在增加了正負樣本之間的判別度,從而提高了網(wǎng)絡的性能。該文使用(x1,y1,x2,y2)表示目標的真實邊界框,也就是目標左上角和右下角的位置。目標邊界框的縮放公式如下所示:
(1)
由于該文采用了逐像素預測目標的方法,雖然能很好地提升網(wǎng)絡召回率,但是在逐像素預測的過程中會產(chǎn)生許多低質(zhì)量的預測邊界框。雖然用目標的中心區(qū)域作為正樣本區(qū)域已經(jīng)丟棄了一些遠離目標中心的低質(zhì)量邊界框,但是,正樣本區(qū)域的邊緣區(qū)域依舊還是會存在一些低質(zhì)量的邊界框?;诖?,該文借鑒了FCOS的centerness概念,提出利用中心度來衰減遠離目標中心的訓練像素點的置信度。中心度越大,表明像素點越靠近目標中心,反之,像素點離目標中心越遠。這樣中心度就可以抑制檢測到的低質(zhì)量的邊界框,并且中心度策略不會引入任何超參數(shù)。中心度計算公式如下:
(2)
其中,(tx1,ty1,tx2,ty2)是由式(3)計算出來的邊界框回歸的偏移量。網(wǎng)絡訓練時,中心度采用二元交叉熵損失(binary cross entropy)來約束中心度取值的范圍。中心度取值的范圍為(0,1)。中心度策略就是在每層預測特征圖上添加一個網(wǎng)絡分支,該網(wǎng)絡分支與分類并行,這就相當于給網(wǎng)絡模型添加了一個中心度損失。中心度損失會保證預測的邊界框盡可能地靠近目標中心。在訓練的過程中,約束中心度的值,使其接近于0。這樣在測試網(wǎng)絡模型的過程中,soft-NMS就可以更好地濾除遠離目標中心的低質(zhì)量邊界框,從而提高網(wǎng)絡模型檢測性能。
對目標區(qū)域進行正負樣本劃分后,采用多尺度策略,利用HRFPN網(wǎng)絡生成的多層金字塔特征圖來檢測不同尺度的目標。每個特征圖要預測的目標都有一個正樣本區(qū)域(感興趣區(qū)域),對每個正樣本區(qū)域進行逐像素預測。如圖3所示,預測由兩個分支網(wǎng)絡負責,一個分支網(wǎng)絡負責分類,另一個分支網(wǎng)絡負責邊界框回歸。
圖3 目標分類和回歸示意
負責邊界框回歸的分支網(wǎng)絡,將感興趣區(qū)域內(nèi)的像素坐標(x,y)映射到原始圖上的坐標,然后計算映射后的坐標與其所屬目標樣本的真實邊界框的偏移量。偏移量計算公式如下:
(3)
其中,2l是第l層金字塔特征圖的stride值,s應該選擇與目標邊框面積最接近的尺度。通過調(diào)整s,可以控制每個特征圖上覆蓋目標的尺度范圍。(tx1,ty1,tx2,ty2)的直觀含義可以參考圖4,這里(tx1,ty1,tx2,ty2)不再是簡單地衡量與邊界框四周的距離值,而是衡量與邊界框四周的偏移程度,使用log函數(shù)來計算這種偏移程度。
圖4 偏移量直觀含義
訓練損失包括置信損失和定位損失,損失定義如下:
(4)
置信損失Lcls采用的是Focal loss,定位損失Lloc采用的是Smooth L1損失。Npos是正樣本的數(shù)量,c={0,1}是來匹配預測的框與類別p的真實邊界框,如果c=1,預測框是正樣本,否則為負樣本。λ在實驗中為1用來平衡定位損失Lloc的權(quán)重。l代表預測框的參數(shù),g是標記框的參數(shù)。定位損失展開如下:
(5)
文中的anchor free的方法采用的是逐像素預測邊界框,將像素的位置(x,y)作為訓練樣本,直接對每個位置的目標邊界框進行歸一化處理。采用計算像素位置(x,y)與真實框(x1,y1,x2,y2)(左上角與右上角位置)的偏移量(tx1,ty1,tx2,ty2)的方法。偏移量計算如式(3)。
無人機數(shù)據(jù)采集與標注是進行實驗的基礎。如圖5所示,這些無人機圖像的采集主要有三個方面,一個是自己采集的被監(jiān)控攝像頭捕捉到的圖像,另外兩個是從文獻[29-30]收集到的圖像??偣?名學生花了近兩個月的時間來標記和重新標記這些無人機圖像,從而創(chuàng)建了一個包括32 237張圖像的無人機數(shù)據(jù)集。從圖5中可以看出,無人機(矩形標記框包圍的目標)的尺寸太小,人眼根本無法發(fā)現(xiàn)。因此,無人機檢測是一項具有挑戰(zhàn)性的任務。筆者設計的無人機數(shù)據(jù)集共有32 237張圖像,其中26 237張圖像作為訓練集,1 000張圖像作為驗證集,5 000張圖像作為測試集。
(a)自己采集的圖像
(b)文獻[29]中的圖像
(c)文獻[30]中的圖像
使用無人機數(shù)據(jù)集的訓練集來訓練網(wǎng)絡。在Py-
torch框架下,使用一塊1080的NVIDIA GPU進行實驗。實驗中,使用訓練好的FCOS網(wǎng)絡模型作為預訓練模型來訓練該文提出的網(wǎng)絡,然后在訓練集上微調(diào)網(wǎng)絡模型。為了定量和定性地分析比較網(wǎng)絡,所有網(wǎng)絡的基本參數(shù)設置如下:迭代次數(shù)為20 epochs,動量為0.9,權(quán)重衰減為0.000 1。網(wǎng)絡訓練的初始學習率為10-3。當網(wǎng)絡迭代到5 epochs、10 epochs和15 epochs時,學習率變?yōu)?0-4、10-5和10-6。
3.3.1 消融實驗
文中方法是基于FCOS網(wǎng)絡的,然后對基礎網(wǎng)絡FCOS采取了以下幾種策略:(1)基礎網(wǎng)絡使用中心區(qū)域思想回歸邊界框;(2)主干網(wǎng)絡由傳統(tǒng)的ResNet和ResNeXt變?yōu)镠RNet;(3)neck網(wǎng)絡也由傳統(tǒng)的FPN變?yōu)镠RFPN;(4)測試網(wǎng)絡模型時,由NMS策略變?yōu)閟oft-NMS策略。為了充分說明這幾種策略對網(wǎng)絡是有益的,該文進行了消融實驗,實驗結(jié)果如表1和表2所示。
可以發(fā)現(xiàn)采用soft-NMS策略后,AP提升了大約1.8個精度,AP50提升了大約0.7個精度,AP75提升了3.6個精度。對于AR的各個指標,除了ARmax=1沒有提升,其他均提升了大約5個精度。這個結(jié)果充分證明了檢測算法采用soft-NMS策略的有效性。
對于HRNet網(wǎng)絡,分別與FPN和HRFPN網(wǎng)絡組合使用,發(fā)現(xiàn)使用FPN后,網(wǎng)絡性能反而下降了,而使用HRFPN后,網(wǎng)絡性能指均有所提高。AP提升了大約2.5個精度,AP50提升了0.6個精度,AP75提升了0.6個精度,ARmax=1提升了4.8個精度,ARmax=10提升了1.1個精度,ARmax=100也提升了0.8個精度。這些充分證明了HRNet和HRFPN組合使用的有效性。
HRNet和HRFPN組合使用后,使用中心區(qū)域思想回歸邊界框,整體檢測性能有所提升,其中5個檢測指標有提升,只有AP50沒有提升,略微下降了一些。AP和AR這6個指標中,AP提升了大約0.8個精度,AP50稍微下降了0.4個精度,AP75提升了6.2個精度,ARmax=1提升了4.8個精度,ARmax=10提升了1.1個精度,ARmax=100也提升了0.8個精度。這些充分證明,使用中心區(qū)域思想回歸邊界框是非常有效的。
表1 關于AP的消融實驗
表2 關于AR的消融實驗
表3 目標檢測算法在無人機數(shù)據(jù)集上的AP結(jié)果
表4 目標檢測算法在無人機數(shù)據(jù)集上的AR結(jié)果
3.3.2 實驗對比
為了充分說明文中方法的優(yōu)越性,對基于anchor的經(jīng)典目標檢測算法以及anchor free的目標檢測算法也在無人機數(shù)據(jù)集上進行了實驗,實驗結(jié)果如表3和表4所示。
基于anchor的目標檢測方法,對經(jīng)典的兩階段目標檢測算法Faster R-CNN、Cascade R-CNN和一階段目標檢測算法SSD進行了復現(xiàn)。對于anchor free的目標檢測算法,對FSAF和FCOS進行了復現(xiàn)。測試時,這些目標檢測算法均采用了soft-NMS策略。從表3和表4中可以發(fā)現(xiàn),文中方法的表現(xiàn)是最優(yōu)異的,僅僅是AP50的結(jié)果略低于基于ResNet-r101-FPN的FCOS算法。對于AP、AP75、ARmax=1、ARmax=10和ARmax=100,文中方法相比于對應的第二名的算法分別提高了1.6、1.1、1.4、1.6和2.1個精度,這些結(jié)果充分證明了文中方法的優(yōu)越性。
提出了一種anchor free的無人機檢測方法,該方法完全避免了與anchor相關的計算和超參數(shù)。針對無人機大部分都是小目標的情況,提出使用HRNet網(wǎng)絡作為主干網(wǎng)絡來獲得具有豐富細粒度信息的特征。相應的,HRFPN代替?zhèn)鹘y(tǒng)的FPN來生成多層金字塔特征圖。相比較于其他基于anchor和anchor free的目標檢測方法,該方法對于無人機檢測獲得了更好的表現(xiàn),具體表現(xiàn)為:相比較于基于anchor的目標檢測器,該方法更加具有魯棒性,可以自適應地預測目標邊界框,相比較于其他的anchor free的目標檢測器,該方法獲得了更好的精確率和召回率。另外,該方法也可以用來檢測其他小目標,而不僅僅是無人機。