呂艷輝,方 亮
(沈陽理工大學,沈陽 110159)
伴隨著無人機技術(shù)的不斷進步,無人機的使用也日益普遍,包括災(zāi)難監(jiān)測、農(nóng)林地勢勘查、協(xié)同作戰(zhàn)等。無人機飛速發(fā)展[1]的同時,如何對空中目標進行檢測成為一個研究熱點[2]??罩心繕丝梢苑譃榇竽繕撕托∧繕耍竽繕酥T如山體、房屋,小目標如無人機、飛鳥等。通常小目標可見度較低、運動軌跡不規(guī)律,在空中很難被察覺,這些空中小目標對于無人機的飛行安全、空中環(huán)境監(jiān)測、無人機協(xié)同作戰(zhàn)等造成了很大的干擾,因此,對于空中小目標的檢測就顯得尤為重要??罩行∧繕嗽跈z測過程中容易受到外界環(huán)境的影響,從而導致檢測精度不高[3],甚至出現(xiàn)漏檢、錯檢的現(xiàn)象。因此,設(shè)計一個高效且實用的算法用于空中小目標的檢測具有非?,F(xiàn)實的意義。
小目標檢測作為目標檢測領(lǐng)域內(nèi)的一個難點[4],近年來受到越來越多研究者的關(guān)注。例如,文獻[5]提出了一種基于生成對抗網(wǎng)絡(luò)的模型,縮小了小尺度目標與大尺度目標在模型上的表現(xiàn)差距,提升檢測效果。文獻[6]在感受野的層面上提出了一種改進方法,解決了感受野和小目標特征匹配的問題,能夠提取出更多的小目標物體的特征。文獻[7]提出了過采樣方法以及復(fù)制粘貼的方法,對小目標數(shù)據(jù)集進行改進,使小目標預(yù)測的效果有所提升。文獻[8]針對較遠距離以及復(fù)雜背景的小目標檢測,提出了一種新的尺度匹配的方法,并可以應(yīng)用于其他類別的小目標檢測。文獻[9]列出了目前最新的小目標檢測數(shù)據(jù)集,并使用不同的算法進行了對比試驗,對小目標檢測的發(fā)展提供了新的方向。針對數(shù)據(jù)集,文獻[10]引入密度圖加入到目標檢測中,將圖片劃分為多個區(qū)域后再進行小目標的檢測。
現(xiàn)階段,目標檢測方法主要分為兩大類。一類是以單目標檢測器為主的目標檢測方法,以SSD(single shot multibox detector)系列為代表[11],這類檢測算法的特點是速度快,但檢測精度低。其中,SSD作為經(jīng)典的單目標檢測算法,其在特征圖上進行稠密采樣后,將得到的不同尺寸的特征圖送入到檢測層中同時進行分類和預(yù)測,因此,該模型的計算量較小,但容易出現(xiàn)漏檢、錯檢。另一類是以候選區(qū)域目標檢測器為主的檢測算法,以文獻[12]提出的R-CNN(regions with convolutinal neural network features)為代表,這類算法的特點是檢測精度高,但是實時性差。Faster-RCNN[13]屬于經(jīng)典的候選區(qū)域目標檢測器檢測方法,卷積層提取出特征信息后,與RPN(region proposal networks)共享,用來計算信息中含有待檢測物體的概率。該方法的檢測精度較高,但計算量很大。
上述兩類目標檢測方法各有其優(yōu)缺點,但是,針對空中小目標而言,仍然存在對其特征信息利用率不高、檢測精度低、漏檢等問題,鑒于此,本文針對空中小目標的特點,提出一種基于雙線性插值的單目標檢測算法(single target detection algorithm based on bilinear interpolation,STI)。首先,針對主干網(wǎng)絡(luò)進行設(shè)計,以VGG16 作為前置特征提取網(wǎng)絡(luò),得到不同尺寸的特征圖后,根據(jù)不同尺寸特征圖的特點,使用兩種不同的特征融合方法對特征圖進行處理。其次,使用聚類算法對算法的先驗框進行設(shè)計和計算,得到與空中小目標數(shù)據(jù)集目標框更加契合的尺寸和長寬比。最后,將多個尺度的特征圖送入檢測層實現(xiàn)空中小目標的檢測和分類。該算法能夠減少特征信息在融合過程中的丟失,加快模型的收斂速度,增加空中小目標的檢測精度,提升檢測效果,避免漏檢。
分析VGG16 的網(wǎng)絡(luò)結(jié)構(gòu),如圖1 所示。VGG16共有13 個卷積核為3×3 的卷積層,3 個全連接層,5個池化核為2×2池化層。VGG16的核心組件為卷積層和池化層。VGG16 用多卷積串聯(lián)的方式替換大尺寸卷積,擁有了更多的非線性變換,用卷積層和池化層堆疊的方式獲得了一個深層次的網(wǎng)絡(luò)結(jié)構(gòu),但同時也增加了計算量。
圖1 VGG16網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of VGG16
另外,VGG16 在對特征圖處理的同時,還伴隨著特征信息的丟失,導致網(wǎng)絡(luò)檢測的準確率不高。針對這些問題,本文設(shè)計了一種基于雙線性插值的主干網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 基于雙線性插值的主干網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Structure diagram of backbone network based on bilinear interpolation
首先,借鑒VGG16 的特點,拋棄所有的droupt層,并將全連接層替換為普通卷積層,再額外加入4個特征提取層進行特征信息的提取,即Conv8_2、Conv9_2、Conv10_2、Conv11_2。其次,為了增強特征圖之間的聯(lián)系,增加特征圖含有的特征信息的數(shù)量,將含有更多語義信息的高層特征圖與含有更多位置信息的低層特征圖進行融合,同時,根據(jù)特征圖通道數(shù)的特點,采用不同的特征融合方式,即高層融合模塊和低層融合模塊,增加特征信息數(shù)目的同時,減少算法的計算量,另外,在特征融合的過程中用雙線性插值法對特征圖上采樣,以增加特征信息的利用率,提高空中小目標檢測的精度。
在基于雙線性插值的主干網(wǎng)絡(luò)中,將輸入圖片的尺寸調(diào)整為300×300,對輸入信息采用自下而上的路徑進行卷積,在經(jīng)過卷積Conv3_3、Conv4_3、FC6、FC7、Conv8_2,Conv9_2,Conv10_2,Conv11_2時,輸出8個尺度不同的特征圖,分別經(jīng)過一個橫向通道卷積層的處理,再根據(jù)特點送入高層融合模塊和低層融合模塊內(nèi)進行特征融合,通過3×3 卷積的處理,得到6個特征圖,然后送入到檢測層中。
1.1.1 融合模塊
本文使用低層融合模塊和高層融合模塊兩種融合方法進行特征融合。在模型向前傳播的過程中,對特征圖進行判斷,根據(jù)不同深度的特征圖的尺度和結(jié)構(gòu)不同,實現(xiàn)不同特征圖之間的融合,其結(jié)構(gòu)圖分別如圖3、圖4所示。
圖3 低層融合模塊結(jié)構(gòu)圖Fig.3 Structure diagram of low-level fusion module
圖4 高層融合模塊結(jié)構(gòu)圖Fig.4 Structure diagram of high-level fusion module
在低層融合模塊中,對輸入進來的高層特征圖先進行上采樣處理,然后再與低層特征圖進行求和運算。高層特征融合模塊則是先將輸入進來的高層特征信息進行上采樣操作,然后再將低層的特征信息進行拼接運算,在拼接后還必須通過1×1 的卷積對特征圖進行降維處理,使得經(jīng)過拼接后的特征得以很好地融合。
經(jīng)過Conv4_3,F(xiàn)C6,F(xiàn)C7 提取出來的特征圖通道數(shù)較多,因此,采用低層融合模塊進行特征融合。雖然低層融合模塊的融合過程中會造成信息的丟失,但是新的特征圖是由兩個特征圖經(jīng)過特征融合得到的,所以融合后的特征圖仍然要比融合前的特征圖含有更多的特征信息。因為經(jīng)過Conv3_3,Conv8_2,Conv9_2,Conv10_2,Conv11_2 提取出來的特征圖的通道數(shù)比Conv4_3,F(xiàn)C6,F(xiàn)C7 提取出來的特征圖通道數(shù)少,所以,采用高層融合模塊的方式進行特征融合,最終得到的特征圖要比融合前的特征圖含有更多的特征信息。
雖然低層融合模塊和高層融合模塊都會增加特征圖的特征信息量,但是高層融合模塊在融合的過程中沒有信息的丟失,更有利于保存信息的完整性,性能要優(yōu)于低層融合模塊。但是,高層融合模塊的計算量要比低層融合模塊大。因此,根據(jù)不同特征圖的特點使用兩種不同的特征融合方式。
假設(shè)有兩路輸入的通道分別為t1,t2,...,tn,和w1,w2,…,wn,*為卷積,K為卷積核。則低層融合模塊單個輸出通道Z1如式(1)所示。
高層融合模塊單個輸出通道Z2如式(2)所示。
由式(1)和式(2)可知,低層融合模塊在對輸入通道處理的過程中相當于兩個輸入通道共用一個卷積核,而高層融合模塊則使用了兩種不同的卷積核,因此,高層融合模塊要比低層融合模塊的計算量大。對比單一的使用高層融合模塊,不僅可以增加檢測精度,還減少了模型的計算量,因此,設(shè)計兩種融合方式。
1.1.2 上采樣模塊
特征融合需要先修改高層特征圖的尺寸,因此,采用雙線性插值的方法對高層特征圖的尺寸進行修改。雙線性插值的上采樣方法的原理圖如下頁圖5所示。
圖5 雙線性插值原理圖Fig.5 Schematic diagram of bilinear interpolation
假定已經(jīng)知道函數(shù)f在Q11(x1,y1),Q12(x1,y2),Q21(x2,y1),Q22(x2,y2)這4 個點的數(shù)值,如果想要知道P(x,y)在函數(shù)f上的數(shù)值,首先在x方向上進行線性插值,得到f(R1),f(R2)如式(3)和式(4)所示。
然后在y方向進行線性插值,得到f(P)如式(5)所示。
將式(3)和式(4)的結(jié)果代入到式(5)中可以得到雙線性插值最后的結(jié)果f(x,y),也就是P(x,y),如式(6)所示。
使用雙線性插值方法進行上采樣雖然在一定程度上增加了計算量,但是特征圖在傳遞過程中保留了更多有用信息,減少了特征信息在傳遞過程中的丟失,保證了特征圖的灰度連續(xù)性,有利于空中小目標的檢測。
1.2.1 先驗框聚類
先驗框可以幫助算法檢測到圖片中是否含有待檢測物體。算法根據(jù)先驗框與待檢測目標的目標框之間的交并比,將先驗框歸類為待檢測目標框和背景。如果定義的先驗框尺寸、先驗框的長寬比與空中小目標數(shù)據(jù)集內(nèi)的目標框的尺寸、目標框的長寬比差別較大,會使大部分的先驗框被劃分為背景,導致檢測精度低,出現(xiàn)漏檢的現(xiàn)象。為了解決這種問題,本文算法對先驗框進行了重新設(shè)計和計算。收集空中小目標數(shù)據(jù)集中的每個目標框的長與寬的數(shù)值,將每個目標框的長寬比記作r,組成一個新的簇。對簇進行聚類,步驟如下:
1)在簇內(nèi)隨機選取Q個元素作為每個內(nèi)部簇的簇心,即O。
2)分別計算每個元素到隨機選取的點O的距離,用這個距離作為評價的指標。
3)分別計算每個元素與所有點O的距離,與哪一個簇心最近,就將這個元素分配到哪一個簇,形成Q個內(nèi)部簇。
4)在每個分配好的內(nèi)部簇,分別計算任意元素到其他所有元素的距離,然后求和,把距離和最小的元素當成新的簇心。
5)重復(fù)2)~4),當每個簇內(nèi)的最小的距離和不再發(fā)生變化或者算法執(zhí)行次數(shù)達到限制時,則停止計算。
考慮到空中小目標數(shù)據(jù)集的實用性,空中小目標數(shù)據(jù)集是在不同情境下進行采集并制作的,有的空中小目標的目標框在整個圖片上所占比例較小,有的所占比例較大,這就導致r的數(shù)值分布較為分散,影響聚類的準確率。因此,對于簇心的選取都來源于樣本中的數(shù)據(jù),可以減少樣本中極大值和極小值對于最后聚類結(jié)果的影響,提升聚類效果,增加聚類的準確率。聚類算法使用歐氏距離計算簇心和樣本點之間的距離。假定給定兩個數(shù)據(jù)樣本x(x1,x2,…,xi),y(y1,y2,…,yi),兩個樣本點之間的歐氏距離d(x,y)計算公式如式(7)所示。
新簇心到本簇內(nèi)其他樣本點的距離和Enew如式(8),舊簇心到本簇內(nèi)其他樣本點的距離和Eold如式(9),簇心更新的評價指標即新舊簇心的距離差Cost如式(10)所示。
若某一簇內(nèi)某一個樣本的Cost 值小于0,則表示這個樣本可以代替之前的簇心成為新的簇心,反之則不替換,進行下一步的計算。通過對簇的聚類,能夠求出最佳的先驗框的長與寬之比。
1.2.2 先驗框計算
先驗框的尺寸不僅會影響最后的檢測效果,還會影響到檢測精度。如果在設(shè)計過程中先驗框的尺寸和數(shù)據(jù)集的目標框尺寸差別較大,就會使整個樣本的正負比例失衡,導致檢測精度低,甚至出現(xiàn)漏檢、錯檢。為了解決這些問題,需要對每個輸入到檢測層的特征圖的先驗框尺寸進行計算。收集空中小目標數(shù)據(jù)集中的每個目標框的長與寬的數(shù)值,長與寬的乘積就是目標框的面積,將目標框的面積與原圖的面積比值記作S,由所有的S組成一個新的數(shù)組。對這個數(shù)組進行排序,找出S中的最小值和最大值,排序算法步驟如下:
1)在數(shù)組中隨機選取一個數(shù)作為一個初始數(shù)。
2)將數(shù)組中小于初始數(shù)的數(shù)據(jù)放到初始數(shù)的右邊,大于初始數(shù)的數(shù)據(jù)放到標準數(shù)的左邊,構(gòu)成兩個子數(shù)組。
3)對于初始數(shù)左、右兩邊的子數(shù)組重復(fù)進行步驟1)、步驟2),直到S全部有序或者每個子數(shù)組只存在一個數(shù)據(jù)為止。
數(shù)組S的第1 個數(shù)據(jù)和最后一個數(shù)據(jù)就是Smax和Smin的值。經(jīng)過對S的計算,得到Smin和Smax的數(shù)值后,再對每個特征圖的先驗框的尺寸Bk進行計算,如式(11)所示。
式中,m為輸入到檢測層的特征圖個數(shù),k∈[1,m]。經(jīng)計算,可得到輸出特征圖最合適的先驗框尺寸。
本文算法使用的數(shù)據(jù)集主要是通過無人機在不同的季節(jié),分別在校園、野外、公路等地點拍攝所得。通過對視頻每一幀的處理,得到大小不同的圖片總計13 000 張,訓練集、測試集、驗證集的比例是8 : 1 :1。訓練使用的學習率為0.000 1,批操作尺寸為16,訓練200個輪次。
本文算法采用查準率(precision)、查全率(recall)進行數(shù)據(jù)分析,計算量(FLOPs)、精度(Ap)、精度均值(map)作為評價指標。其中,Ap是單個類別的檢測精度,map是整個算法的平均檢測精度,F(xiàn)LOPs和map可以衡量整個算法的性能。
上述各指標的計算公式分別為式(12)~式(16)所示。
式中,TP為預(yù)測正確的正類數(shù);FN為預(yù)測錯誤的正類數(shù);FP為預(yù)測錯誤的負類數(shù);Ci為輸入通道數(shù),Co為輸出通道數(shù),k表示卷積的卷積核,W、H為特征圖寬、高;N為空中小目標的種類數(shù)。
將設(shè)計好的先驗框的尺寸和先驗框的長寬比加入到STI 算法的訓練過程中,分別對算法SSD、Faster-RCNN、STI 使用自主制作的空中小目標數(shù)據(jù)集在相同的實驗環(huán)境下進行訓練,得到各個算法的平均損失與訓練次數(shù)變化關(guān)系,如圖6~圖8所示。
圖6 SSD平均損失與訓練次數(shù)變化關(guān)系圖Fig.6 The change relationship diagram between the average loss and iterations of SSD
圖7 Faster-RCNN平均損失訓練次數(shù)變化關(guān)系圖Fig.7 The change relationship diagram between the average loss and iterations of Faster-RCNN
圖8 STI平均損失訓練次數(shù)變化關(guān)系圖Fig.8 The change relationship diagram between the average loss and iterations of STI
圖中,train loss 是指算法在訓練過程中,每經(jīng)過一個epoch 后的訓練損失。圖中3 種算法在訓練初期,平均損失下降的都比較快,訓練150 個epoch 后各自的平均損失幾乎不再發(fā)生明顯的變化,說明算法已經(jīng)收斂。但是可以看出,SSD 算法的收斂效果最差,后期仍然出現(xiàn)了很多的波動。STI 算法的收斂效果要優(yōu)于SSD,曲線圓滑,波動較小。此外,STI算法和Faster-RCNN 算法的收斂效果相差無幾。
2.4.1 性能對比
3 種算法經(jīng)過訓練后,分別針對鳥和無人機繪制其P-R曲線圖。算法SSD、Faster-RCNN、STI訓練后的P-R曲線圖如圖9~圖11所示。
圖9 SSD P-R曲線圖Fig.9 P-R curve of SSD
圖10 Faster-RCNN P-R 曲線圖Fig.10 P-R curve of Faster-RCNN
圖11 STI P-R曲線圖Fig.11 P-R curve of STI
圖中縱坐標為Precision,橫坐標為Recall,根據(jù)P-R 曲線圖可以計算出每個類別的檢測精度Ap,進而計算出每個算法的平均檢測精度map。計算量FLOPs的計算過程如下:給算法輸入一個300×300×3的數(shù)據(jù),計算這個數(shù)據(jù)每經(jīng)過一個特征層所產(chǎn)生的計算量,直到算法的所有特征層都完成了對這個數(shù)據(jù)的處理。將所有產(chǎn)生的計算量相加就是這個數(shù)據(jù)經(jīng)過算法處理一次所產(chǎn)生的計算量。3 種算法的FLOPs和map如表1所示。
表1 算法的map和FLOPs值Table 1 The map and FLOPs values of the algorithm
如表1所示,由于STI算法使用雙線性插值的上采樣方法以及特征融合模塊,所以,算法的計算量有所增加,但是特征融合模塊充分利用了多個尺度特征層的特征信息,增加了特征圖含有的信息量,并使用更加契合空中小目標數(shù)據(jù)集的先驗框進行訓練,所以,在精度上對比SSD 增加了10.29%,性能優(yōu)于SSD 算法。STI 算法在檢測精度上和Faster-RCNN算法持平,但是STI算法靈活地使用了兩種不同的特征融合方法,所以,STI 算法的計算量僅為Faster-RCNN 的1∕6,在計算量上要優(yōu)于Faster-RCNN。綜合算法的檢測精度和算法的計算量,STI算法的總體性能要強于SSD算法和Faster-RCNN算法。
2.4.2 檢測效果對比
為驗證STI 算法對于空中小目標的檢測更有優(yōu)勢,使用SSD 算法、Faster-RCNN 算法以及STI 算法對于同一張圖片進行檢測,檢測效果圖如圖12~下頁圖14所示。
圖12 SSD對于多個小目標檢結(jié)果Fig.12 The multiple small target detection results of SSD
圖13 Faster-RCNN對于多個小目標檢結(jié)果Fig.13 The multiple small target detection results of Faster-RCNN
圖14 STI對于多個小目標檢結(jié)果Fig.14 The multiple small target detection results of STI
如圖12~圖14所示,當空中出現(xiàn)多個小目標時,SSD僅能檢測到一個距離最近、體積較大目標,忽略了其他較遠距離、體積較小的空中小目標,并且還出現(xiàn)了漏檢的現(xiàn)象,檢測精度僅有0.73。STI算法則能夠檢測到所有的空中小目標,并且,對于同一個空中小目標的檢測精度遠遠高于SSD 算法。同樣,雖然Faster-RCNN 算法也能夠有效地檢測出這些小目標,但STI 算法的檢測框更加契合圖片中的空中小目標,檢測框完全貼合待檢測目標,沒有多余的背景或者覆蓋待檢測目標,檢測效果較好。而Faster-RCNN 的檢測框則包含了大量的背景,甚至有的檢測框還覆蓋了待檢測的目標,不利于空中小目標的檢測。因此,STI 算法的檢測效果要比Faster-RCNN 好。研究結(jié)果表明,STI算法基于雙線性插值的主干網(wǎng)絡(luò)結(jié)構(gòu)以及重新設(shè)計的先驗框,不僅提高了算法對于空中小目標的檢測精度,還提升了檢測效果,能夠有效地檢測出空中的小目標,減少了漏檢的情況。
本文提出的STI 算法,根據(jù)提取出來的特征圖通道數(shù)的不同,使用低層融合模塊和高層融合模塊兩種方法進行特征圖的融合,對比單一使用一種特征融合方法,不僅增加了特征圖含有的特征信息數(shù)量,還減少了算法的計算量。在特征融合過程中使用雙線性插值的上采樣方法,減少了融合過程中特征信息的丟失,提升了空中小目標的檢測精度。利用聚類算法設(shè)計了先驗框長寬比并重新計算了先驗框的尺寸,隨后應(yīng)用于訓練中,提升了檢測效果,減少了漏檢。實驗結(jié)果表明,STI 算法對于不易檢測的空中小目標以及當有多個目標存在時都能夠?qū)崿F(xiàn)精準地檢測,避免漏檢。