王浩桐,郭中華,2+
1.寧夏大學(xué) 物理與電子電氣工程學(xué)院,銀川750021
2.寧夏大學(xué) 沙漠信息智能感知重點實驗室,銀川750021
目標(biāo)檢測是計算機視覺領(lǐng)域的基本任務(wù)之一,其中飛機遙感圖像目標(biāo)檢測具有重要的研究價值和應(yīng)用價值。在軍用領(lǐng)域,實時檢測敵方飛機位置能夠使我軍時刻掌握敵軍飛機的動態(tài);在民用領(lǐng)域,實時檢測地面飛機的位置信息對交通及物資調(diào)用等具有重要意義。因此,如何在復(fù)雜背景條件下的遙感圖像中實現(xiàn)對飛機目標(biāo)高精度實時檢測成為了極具挑戰(zhàn)的課題[1]。
飛機遙感圖像目標(biāo)檢測的核心任務(wù)是判斷遙感圖像中是否存在飛機目標(biāo)并對其進(jìn)行檢測、特征提取、分類和定位。由于遙感觀測平臺存在一定的特殊性,導(dǎo)致飛機遙感圖像時常會包含復(fù)雜的地物背景,同時飛機遙感目標(biāo)的尺寸、類型、姿態(tài)也往往具有不確定性。在飛機目標(biāo)檢測領(lǐng)域,傳統(tǒng)的飛機目標(biāo)檢測算法,如邊緣提取法和圓周頻率濾波法,檢測結(jié)果極易受到人工設(shè)計部分的干擾且檢測過程過于繁瑣,并不適用于遙感圖像的飛機目標(biāo)檢測[2]?,F(xiàn)今,得益于硬件GPU的高性能計算,基于深度學(xué)習(xí)的目標(biāo)檢測模型被廣泛應(yīng)用于遙感圖像領(lǐng)域?;诰矸e神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[3]的目標(biāo)檢測算法主要分為兩類:一類是雙階段目標(biāo)檢測算法,如Fast R-CNN[4]、Faster R-CNN[5]等;另一類是單階段目標(biāo)檢測算法,如YOLO(you only look once)[6]、SSD(single shot multibox detector)[7]等。但以上算法常用于檢測日常生活中的通用物體,對尺度大小不一和背景復(fù)雜的遙感圖像難以進(jìn)行有效的飛機目標(biāo)檢測。如果直接將現(xiàn)有的深度學(xué)習(xí)目標(biāo)檢測算法應(yīng)用到遙感影像上進(jìn)行飛機目標(biāo)檢測,顯然不能取得與自然光學(xué)圖像下相同的檢測精度。基于此,大量學(xué)者對以上深度學(xué)習(xí)目標(biāo)檢測算法進(jìn)行改進(jìn),將其運用于遙感影像中的飛機檢測[8]。文獻(xiàn)[9]采用改進(jìn)錨框?qū)捀弑鹊姆椒▉砀淤N合遙感飛機的實際尺寸,雖然這種方式可以一定程度上提高錨框匹配到真實目標(biāo)的概率,但是忽略了不同檢測層之間錨框鋪設(shè)密度不同的問題。由于飛機遙感圖像存在密集和小尺度的現(xiàn)象存在,錨框鋪設(shè)密度的不同會導(dǎo)致不同尺度的錨框匹配到真實目標(biāo)的數(shù)量差距較大,同時也不利于對小尺度目標(biāo)的檢測。文獻(xiàn)[10]采用錨框與真實目標(biāo)的交并比大于閾值的方式來判定是否為正樣本,此種方法和SSD 算法中的錨框匹配策略是一致的,但這種匹配策略會容易發(fā)生不同尺度錨框匹配到真實目標(biāo)的數(shù)量差距過大的情況。數(shù)量差距過大會不利于網(wǎng)絡(luò)的有效訓(xùn)練,導(dǎo)致檢測精度降低。
針對以上問題并結(jié)合SSD 算法的特點,本文提出了一種改進(jìn)的SSD 目標(biāo)檢測算法(anchor match design single shot multibox detector,AMDSSD)。本文的主要工作包括以下三點:(1)用改進(jìn)以后的深度殘差網(wǎng)絡(luò)(deep residual network,ResNet)[11]替換SSD算法中的VGG(visual geometry group)[12]特征提取網(wǎng)絡(luò),并且額外增加一個包含兩種尺度的特征層用以對極小尺度遙感目標(biāo)的檢測[13]。(2)結(jié)合飛機遙感圖像的特點,重新設(shè)計SSD算法中的錨框尺度、錨框比例。而后對特征層進(jìn)行錨框尺度密集化操作,使得每一個特征層的錨框鋪設(shè)密度基本一致。(3)在正負(fù)錨框樣本的判別過程中重新設(shè)計錨框匹配策略,使得不同尺度正樣本錨框數(shù)量趨向于總體正樣本平均值。一定程度上用以解決不同尺度正樣本錨框數(shù)分布不均勻的問題。
SSD 目標(biāo)檢測算法是Liu 等在2016 年提出的一種目標(biāo)檢測算法。這是一種端對端的單階段目標(biāo)檢測算法,相比Faster R-CNN 其檢測效率更高,相比YOLO 其檢測精度更高。該算法的優(yōu)勢主要有三方面:其一,采用多種尺度特征進(jìn)行目標(biāo)檢測。Conv4_3、FC7 層在原圖上的感受野較小主要用于檢測較小目標(biāo)物體;而Conv8_2、Conv9_2、Conv10_2、Conv11_2在原圖上的感受野較大主要用來檢測較大目標(biāo)物體。其二,設(shè)置不同高寬比例的錨框用于更好地匹配目標(biāo)。其三,使用了多種數(shù)據(jù)增強的方法,包括水平翻轉(zhuǎn)、裁剪、放大和縮小等。主要目的是為了使得該算法對輸入的不同大小和不同形狀的目標(biāo)具有更好的魯棒性。本文以輸入尺寸為300×300 的SSD 網(wǎng)絡(luò)為例,如圖1所示。
圖1 SSD算法網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Framework diagram of SSD algorithm
由于飛機遙感圖像存在目標(biāo)尺寸小且數(shù)目繁多的情況,給目標(biāo)的分類與定位帶來了挑戰(zhàn)。在SSD算法中主要負(fù)責(zé)檢測小型目標(biāo)的是下采樣倍數(shù)為8的Conv4_3層,一些尺度在8個像素左右的極小尺度目標(biāo)受限于網(wǎng)絡(luò)結(jié)構(gòu)的原因基本不可能被檢測到。同時SSD最初是被用來檢測通用物體的目標(biāo)檢測算法,對于飛機這一固定的目標(biāo),原算法的一系列錨框設(shè)計體系顯然已經(jīng)不適合。最后,SSD算法中的錨框匹配策略容易發(fā)生不同尺度正樣本錨框數(shù)量差距過大的情況,這是不利于網(wǎng)絡(luò)整體訓(xùn)練的。
為解決以上問題,以SSD目標(biāo)檢測算法為基礎(chǔ),本文提出了一種用于飛機遙感圖像的目標(biāo)檢測算法AMDSSD,該算法相比SSD算法有以下三個改進(jìn)點,在增加少量訓(xùn)練參數(shù)的情況下,既可以提升算法的檢測精度,又可以保留SSD算法的實時檢測性。
ResNet 是一種用于特征提取的卷積神經(jīng)網(wǎng)絡(luò)。因為其具有高效性和實用性廣泛用于計算機視覺目標(biāo)檢測領(lǐng)域。從以往的經(jīng)驗來看,網(wǎng)絡(luò)的深度對模型的性能至關(guān)重要,因此當(dāng)模型更深時理論上可以取得更好的結(jié)果。研究表明,一味地追求網(wǎng)絡(luò)深度,網(wǎng)絡(luò)準(zhǔn)確度會出現(xiàn)飽和,甚至出現(xiàn)下降,這種現(xiàn)象被稱為網(wǎng)絡(luò)退化。
ResNet 提出了殘差結(jié)構(gòu)來解決網(wǎng)絡(luò)退化的問題,殘差結(jié)構(gòu)如圖2(a)所示。
圖2 殘差結(jié)構(gòu)Fig.2 Residual structure
在殘差結(jié)構(gòu)中,當(dāng)輸入為x時,其學(xué)習(xí)到的原始特征記為H(x),殘差特征記為F(x),則網(wǎng)絡(luò)學(xué)習(xí)到的殘差特征可以表示為:
和原始特征H(x)相比,深度殘差網(wǎng)絡(luò)更容易學(xué)習(xí)到殘差特征F(x),當(dāng)F(x)為0 時,由殘差結(jié)構(gòu)組成的網(wǎng)絡(luò)層僅僅只是做到了恒等映射,至少網(wǎng)絡(luò)的性能不會因?qū)訑?shù)變深而下降。但實際上殘差特征F(x)不會為0,殘差結(jié)構(gòu)會在輸入特征基礎(chǔ)上學(xué)習(xí)到新的特征,從而擁有更好的性能[14]。由文獻(xiàn)[10]可知,ResNet101 與VGG16 兩種特征提取網(wǎng)絡(luò)以Faster R-CNN作為目標(biāo)檢測算法的成績?nèi)绫?所示。
表1 不同特征提取網(wǎng)絡(luò)在PASCAL VOC 2007/2012上的檢測結(jié)果Table 1 Test results of different feature extraction networks on PASCAL VOC 2007/2012
本文改進(jìn)后的殘差結(jié)構(gòu)如圖2(b)所示,相比原殘差結(jié)構(gòu)增加了批量歸一化(batch normalization,BN)[15]和Leaky-ReLU[16]。BN的作用是為了對輸出特征層進(jìn)行歸一化處理,加快網(wǎng)絡(luò)的收斂速度,同時也能一定程度上解決梯度爆炸或者梯度消失導(dǎo)致網(wǎng)絡(luò)無法訓(xùn)練的問題。ReLU 激活函數(shù)的特點是當(dāng)輸入小于0 時,輸出結(jié)果恒為0。這樣的結(jié)果會導(dǎo)致網(wǎng)絡(luò)可能會丟失一部分特征信息,個別情況下會導(dǎo)致對應(yīng)權(quán)重?zé)o法更新從而無法學(xué)習(xí)到有效的特征。而Leaky-ReLU 激活函數(shù)即使在輸入小于0 時,仍然會有不為0的輸出,使得模型能夠持續(xù)更新權(quán)重和學(xué)習(xí)特征。
通過以上分析可知,ResNet 相比SSD 算法中的骨架網(wǎng)絡(luò)(VGG16)有著更好的特征提取能力。在模型大小與計算量方面,ResNet50 在分類精度方面與ResNet101 相差不多的情況下,計算量遠(yuǎn)小于后者。因此在改進(jìn)的過程中,首先將SSD 原本的骨架網(wǎng)絡(luò)VGG16替換為網(wǎng)絡(luò)層數(shù)相對更深且計算量相對較低的ResNet50。為了讓ResNet50網(wǎng)絡(luò)適合作為SSD算法的骨架網(wǎng)絡(luò),現(xiàn)對ResNet50網(wǎng)絡(luò)進(jìn)行部分調(diào)整,刪除和添加一些層作為網(wǎng)絡(luò)輸出的特征層。
在SSD 算法中有6 個尺度和通道數(shù)都不相同的輸出特征層。為了與SSD算法的輸出特征層相匹配,對于輸入尺寸為300×300×3的ResNet50,對Conv4_x的第一個殘差結(jié)構(gòu)進(jìn)行修改,將短路連接(shortcut connection)上的卷積核的步長由2修改為1,Conv4_x的輸出就變成了38×38×1 024。將其作為SSD 算法中的第二個輸出特征層(Feature map 2),與修改前的輸出結(jié)果(38×38×512)相比,可以發(fā)現(xiàn)輸出特征層的通道數(shù)增加了一倍,得益于殘差結(jié)構(gòu)的優(yōu)點,輸出特征層可以學(xué)習(xí)到的特征信息量變得更豐富,改進(jìn)后的Conv4_x結(jié)構(gòu)如圖3(a)所示,BlockX(X:2、3、4、5、6)由圖2(b)組成。當(dāng)輸入尺寸為300×300×3 時,Conv5_x 的特征輸出層尺寸和SSD 算法的第三個特征輸出層尺寸不一致,故刪除ResNet50 網(wǎng)絡(luò)里Conv4_x之后的層結(jié)構(gòu),額外設(shè)計了5個輸出特征層Feature map(3~7)。在每次縮小輸出特征層尺寸前使用1×1 的卷積核重新聚合前層的特征信息并調(diào)整通道數(shù),之后用3×3 的卷積核縮小輸出特征層的尺寸,循環(huán)此操作達(dá)到多尺度輸出特征層的結(jié)果。在飛機遙感圖像中時常會出現(xiàn)一些尺度極小的飛機目標(biāo),負(fù)責(zé)檢測小型目標(biāo)的Feature map 2層的下采樣倍數(shù)為8,會導(dǎo)致一些極小目標(biāo)無法被網(wǎng)絡(luò)檢測出來從而導(dǎo)致檢測精度降低。例如面積為8×8 像素的飛機目標(biāo)通過下采樣倍數(shù)為8的網(wǎng)絡(luò)時,目標(biāo)的特征信息可能只會保留1到2個像素,想要在特征信息如此少的情況下進(jìn)行目標(biāo)檢測無疑是很困難的。為了提高極小目標(biāo)的特征信息提取量,額外添加一個下采樣倍數(shù)為4的輸出特征層(Feature map 1)用以檢測極小的飛機目標(biāo)。
Feature map(1~7)是改進(jìn)后的殘差模塊與額外添加層的輸出結(jié)果,因而可以在保證模型訓(xùn)練收斂的同時使特征提取網(wǎng)絡(luò)具有更好的語義抽象能力。改進(jìn)以后的ResNet50 如圖3(b)所示,改進(jìn)后的網(wǎng)絡(luò)整體結(jié)構(gòu)如圖3(c)所示。
圖3 ResNet50替換VGG16的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 Network structure diagram after ResNet50 replaces VGG16
錨框尺度大小和比例是否合適直接影響著檢測精度的高低,其中錨框尺度大小關(guān)聯(lián)著各特征層實際感受野的大小。據(jù)文獻(xiàn)[17]可知,在理論感受野的區(qū)域中并不是每一個像素都對輸出單元有相同的貢獻(xiàn)。實際上,理論感受野中的像素對輸出單元的貢獻(xiàn)是一個高斯分布,即感受野中心區(qū)域部分貢獻(xiàn)較大,越往邊緣貢獻(xiàn)越小。文獻(xiàn)[17]還使用了CamVid(Cambridge-driving labeled video database)數(shù)據(jù)集訓(xùn)練了一個用于分割任務(wù)的卷積模型,作者嘗試從輸出映射的中心像素向網(wǎng)絡(luò)反向傳播一個梯度,并將所有其他梯度設(shè)置為0,然后檢查應(yīng)用于輸入層的梯度。這個模型包括4個下采樣操作,每個操作的步長為2。由于這些下采樣操作,輸出是輸入大小的1/16。對于該模型,頂層卷積層單元的理論感受野為505×505。在訓(xùn)練開始時有效感受野僅得到直徑為100的一部分。然而在訓(xùn)練的過程中,有效感受野會有一定的增加,在訓(xùn)練的最后階段有效感受野的直徑達(dá)到了150,理論感受野的變化如圖4所示。經(jīng)過計算,有效感受野約占理論感受野的20%~30%。
圖4 有效感受野變化示意圖Fig.4 Schematic diagram of effective receptive field
鑒于理論感受野的每一個像素會有不同的輸出貢獻(xiàn),為了使之輸出貢獻(xiàn)最大化,即神經(jīng)元將有更多的路徑來傳播更加有效的信息。將從最后一層的中心像素的梯度傳播回所有可能的路徑,使得模型的梯度有更大的幅度。由以上內(nèi)容分析可知,將錨框尺度大小設(shè)置為理論感受野大小的20%~30%,不僅有利于網(wǎng)絡(luò)正向傳播計算損失,還可以增大反向傳播的梯度回傳和加速損失函數(shù)快速收斂,從而間接提高網(wǎng)絡(luò)的檢測精度。
錨框的寬高比例關(guān)聯(lián)著檢測目標(biāo)的實際尺寸,據(jù)文獻(xiàn)[18]可知,常見不同型號的飛機長寬比約為0.6~1.6。除Feature map 1 以外,將錨框的寬高比設(shè)置為Feature map 1 識別的目標(biāo)尺度極小,因此錨框?qū)捀咴O(shè)置為比例僅為1。由于特征提取網(wǎng)絡(luò)被更換為改進(jìn)后的ResNet50,網(wǎng)絡(luò)的各個特征層的理論感受野也發(fā)生了變化,理論感受野計算公式如式(2):
其中,lk-1為第k-1 層對應(yīng)的理論感受野大小,fk為第k層的卷積核大小或者是池化層的池化尺寸大小。由式(2)可計算出特征提取網(wǎng)絡(luò)被更換后的各特征層的理論感受野。而后根據(jù)各特測層的錨框尺度和下采樣倍數(shù)可計算出錨框的鋪設(shè)密度,這里用d表示錨框的鋪設(shè)密度,c和p分別表示錨框尺度和下采樣倍數(shù)(錨框鋪設(shè)步長)。錨框的鋪設(shè)密度計算公式如式(3):
經(jīng)過式(2)和式(3)的計算可得到重新設(shè)計以后的錨框相關(guān)信息,如表2所示。
表2 錨框的相關(guān)信息Table 2 Information about anchor frame
由表2分析可知,負(fù)責(zé)檢測小尺度目標(biāo)的Feature map 1的鋪設(shè)密度與其他各層存在明顯差異,這種差異會導(dǎo)致不同尺度的錨框匹配到真實目標(biāo)的數(shù)量差距較大,不利于對小尺度目標(biāo)的檢測。同時Feature map 1 錨框尺度為8 對應(yīng)的鋪設(shè)密度過低,造成該尺度的錨框匹配到正樣本數(shù)量過少。為解決以上問題,本文受文獻(xiàn)[19]的啟發(fā),在此基礎(chǔ)上設(shè)計了一種錨框密集化的操作。該方法可以提高Feature map1錨框的鋪設(shè)密度,能夠讓特征層上1個特征像素點關(guān)聯(lián)多個錨框從而提高該尺度正樣本錨框的數(shù)量。具體操作如圖5所示,其中正六邊形在原圖上經(jīng)過的每一個像素區(qū)域表示輸出圖像1 個特征像素點在原圖上的理論感受野范圍,示意圖上的錨框僅代表錨框鋪設(shè)的位置,不表示具體錨框大小。
圖5 錨框密集化示意圖Fig.5 Schematic diagram of anchor frame densification
通過對比錨框密集化前后的示意圖可以發(fā)現(xiàn),F(xiàn)eature map 1 上尺度大小為8 的錨框鋪設(shè)密度增加了2 倍,由最開始的1 個特征像素點關(guān)聯(lián)1 個錨框變化到關(guān)聯(lián)4個錨框。另外,F(xiàn)eature map 7雖然錨框鋪設(shè)密度低,但是該層是用來檢測超大型目標(biāo)的檢測層,在實際的飛機遙感圖像中很少會有數(shù)量多且體型特別大的飛機目標(biāo),因此不做錨框密集化操作,用以減少不必要的訓(xùn)練參數(shù),提高網(wǎng)絡(luò)的檢測速度。
SSD 算法中采用錨框與真實目標(biāo)的交并比大于閾值的方式來判定是否為正樣本錨框,這種錨框匹配策略會容易發(fā)生不同尺度錨框匹配到真實目標(biāo)的數(shù)量差距過大的情況,這種差距過大的情況不利于網(wǎng)絡(luò)的有效訓(xùn)練。如圖6所示,其中較大和較小的矩形框代表不同尺度的錨框。
圖6 錨框策略匹配前的結(jié)果Fig.6 Results before anchor box strategy matching
如果錨框的鋪設(shè)密度相等或者非常接近,那么每一種接近錨框尺度的飛機目標(biāo)更容易被匹配到相應(yīng)尺度的錨框,同時被匹配到的錨框數(shù)目基本一致。2.2 節(jié)已經(jīng)對網(wǎng)絡(luò)做了相應(yīng)的密集化操作,因此滿足上述條件。由圖6可知,兩張圖片各自有且僅有兩種尺度的飛機目標(biāo),每一個飛機目標(biāo)被3個錨框成功匹配到。對于圖6(a),較大尺度的飛機一共有3個正樣本錨框,較小尺度的飛機一共有9 個正樣本錨框。對于圖6(b),較大尺度的飛機一共有3個正樣本錨框,較小尺度的飛機一共有30個正樣本錨框。不同尺度錨框匹配到真實目標(biāo)數(shù)量差距的情況如圖6所示。
這里用N代表正樣本錨框的數(shù)量,L代表錨框尺度的種類,M代表錨框匹配到不同尺度目標(biāo)數(shù)目的平均值,用D代表不同尺度正樣本錨框數(shù)與M的差值,M的計算公式如下:
由式(4)計算及相關(guān)統(tǒng)計所得結(jié)果如表3所示。
表3 統(tǒng)計信息Table 3 Statistical information
由表3分析可知,圖6(a)和圖6(b)不同尺度的正樣本錨框個數(shù)相差很大,即使和平均值M相比差距依然很大。假設(shè)訓(xùn)練集有1 000 張類似圖6(b)正樣本錨框數(shù)量差距很大的飛機遙感圖像,經(jīng)過統(tǒng)計,有30 000個較小尺度和3 000個較大尺度總計33 000個正樣本錨框。極端情況下,模型的學(xué)習(xí)策略只需要返回一個用來學(xué)習(xí)較小尺度的正樣本錨框的學(xué)習(xí)器,同時在這個過程中少學(xué)習(xí)甚至完全不學(xué)習(xí)較大尺度的正樣本錨框,那么學(xué)習(xí)器就可以達(dá)到將近90%的檢測精度。然而這種高檢測精度的學(xué)習(xí)器往往沒有價值,因為它只能對較小尺度的飛機目標(biāo)進(jìn)行目標(biāo)檢測。在現(xiàn)實情況中,飛機遙感圖像中會存在多種尺度的飛機目標(biāo),并不是只存在較小尺度的飛機目標(biāo)。因此在模型的訓(xùn)練過程中,如果時常發(fā)生類似于以上的這種情況,那么勢必會造成模型的學(xué)習(xí)器更加偏向正樣本錨框數(shù)較大的那一方,導(dǎo)致模型對多種尺度的飛機目標(biāo)不能進(jìn)行有效的學(xué)習(xí),也降低了模型目標(biāo)檢測的魯棒性。
為了解決以上問題,本文受文獻(xiàn)[20]的啟發(fā),在此基礎(chǔ)上提出了一種錨框的策略匹配方法,一定程度上使得正樣本錨框的數(shù)量趨向于總體正樣本錨框平均值,用以提高訓(xùn)練的有效性,增強模型目標(biāo)檢測的魯棒性,具體方法如下。
相應(yīng)尺度差值D為正值的正樣本錨框數(shù)目不變,相應(yīng)尺度差值D為負(fù)值的正樣本錨框數(shù)目增加F。F的計算公式如下(如果F的計算結(jié)果不是整數(shù),將F通過一個向上取整操作得到最終結(jié)果):
通過式(5)計算可得,圖6(a)和圖6(b)紅色尺度的正樣本錨框數(shù)分別需要增加3 個和5 個,在使用SSD算法的錨框匹配策略基礎(chǔ)上(SSD算法中閾值為0.5),通過每次降低0.05的閾值循環(huán)來提高該尺度對應(yīng)的正樣本錨框數(shù),直至大于或等于F+N(不同尺度)。經(jīng)過錨框策略匹配后的結(jié)果如圖7所示。
圖7 錨框策略匹配后的結(jié)果Fig.7 Results after anchor box strategy matching
通過對比圖6和圖7可以發(fā)現(xiàn),紅色尺度的飛機目標(biāo)明顯被匹配到了更多的正樣本錨框。經(jīng)過增加后的正樣本錨框數(shù)量為6 和8,明顯更加趨向于總體正樣本錨框數(shù)平均值6.0和16.5。
在實際情況中,不同尺度的正樣本錨框數(shù)一般不會存在非常大的差距。類似圖6(b)這樣的個例在訓(xùn)練集中的占比其實是較低的。為了考慮更一般的情況,本文隨機選取了500 張飛機遙感圖像,統(tǒng)計了錨框策略匹配前后的平均值,如圖8所示。
由圖8(a)和表2 可知,飛機目標(biāo)的尺寸是連續(xù)的,錨框的尺寸是非連續(xù)的。在錨框尺寸接近或者等于飛機目標(biāo)尺寸時易被錨框匹配到。相反,在錨框尺寸遠(yuǎn)離飛機目標(biāo)尺寸時不易被錨框匹配到。例如圖8(a)藍(lán)色實線的波峰段的附近正好就處在相應(yīng)錨框尺度大小的附近,波谷段的情況則正好相反。對比圖8(a)和圖8(b)可以發(fā)現(xiàn),藍(lán)色實線的波谷段明顯趨向于灰色虛線,說明了不同尺度的正樣本錨框數(shù)更加趨向于總體正樣本錨框數(shù)均值,也證明了錨框策略匹配在更一般的情況下也會有較好的表現(xiàn)。
圖8 匹配前后的平均值Fig.8 Average value before and after matching
在模型的訓(xùn)練過程中,模型會將增加后的正樣本錨框納入到總體正樣本錨框中。此時不同尺度的正樣本錨框數(shù)的占比會更加均衡化,模型的學(xué)習(xí)器對待不同尺度的飛機目標(biāo)的注意力也會更加平等,一定程度上提高了模型訓(xùn)練的有效性,增加了模型目標(biāo)檢測的魯棒性,避免訓(xùn)練出高精度但是無意義的學(xué)習(xí)器。
針對模型訓(xùn)練過程中遙感圖像正、負(fù)樣本劃分不平衡的問題,本文將使用聚焦分類損失函數(shù)(focal classification loss)[21]對模型進(jìn)行優(yōu)化訓(xùn)練,具體表示為:
式中,N表示與真實框相匹配的候選框的個數(shù),x代表輸入圖像,c代表目標(biāo)類別,p代表預(yù)測類別概率,l代表候選框,g代表真實的標(biāo)簽框,a為兩者的權(quán)重。Lfl(x,c,p)和Lloc(x,l,g)分別為聚焦分類損失和邊界框回歸損失,其中Lloc(x,l,g)借鑒SSD 算法中的邊界框回歸函數(shù),表示為:
式(6)中的Lfl(x,c,p)結(jié)合聚焦分類損失函數(shù)采用交叉熵計算損失,表示為:
為了評估本文提出的AMDSSD算法檢測性能情況,采用兩個不同的數(shù)據(jù)集進(jìn)行飛機遙感圖像實驗,包括西北工業(yè)大學(xué)標(biāo)注的航天遙感圖像和谷歌衛(wèi)星影像共計2 146 張。各數(shù)據(jù)集包含尺寸大小不同的圖片并且按照7∶3 的比例來劃分訓(xùn)練集和驗證集。隨機選取1 502張作為訓(xùn)練集,644張作為測試集,并根據(jù)Pascal VOC 2012 的格式進(jìn)行標(biāo)注。此外,依據(jù)數(shù)據(jù)集對目標(biāo)大小劃分的標(biāo)準(zhǔn)(Small object: area <322;322<Medium object:area <962;Big object:area >962)對采集的遙感數(shù)據(jù)進(jìn)行劃分,由于一些飛機在小分辨率的情況下只有極少的像素個數(shù),已很難通過人眼確定是否為飛機,因此,僅對像素個數(shù)超過6 個的目標(biāo)進(jìn)行劃分。圖9為本文數(shù)據(jù)集的樣本示例,從左到右面積類型分別為Small object、Medium object、Big object。
圖9 本文數(shù)據(jù)集的樣本示例Fig.9 Sample examples of dataset in this paper
本文的實驗環(huán)境選用Pytorch 開源框架進(jìn)行訓(xùn)練、測試,基于ubuntu16.04操作系統(tǒng),CPU為Intel Core i9-9900K,3.60 GHz,顯卡為NVIDIA GTX2080。編譯環(huán)境為torch-1.6、torchvision-0.7,cuda10.1、python 3.6語言編程。
對于飛機這單一種類的遙感圖像,本文采用精度均值(average precision,AP)和每秒幀率(frames per second,F(xiàn)PS)作為算法的評價標(biāo)準(zhǔn)。可以根據(jù)準(zhǔn)確率(Precision)和召回率(Recall)制成一條曲線,在0到1 范圍內(nèi)繪制的曲線與坐標(biāo)之間的面積即為精度均值(AP),可表示為AP=∫01p(r)dr,準(zhǔn)確率與召回率的定義式如下[22]:
式中,TP為正樣本中的正例,F(xiàn)P為負(fù)樣本中的正例,F(xiàn)N為負(fù)樣本中的負(fù)例。此外,F(xiàn)PS 決定了算法的效率,其數(shù)值的大小反映了檢測速度的快慢。
為了初步評估改進(jìn)后SSD 算法的性能,本文選取了測試集中三張具有代表性的圖片,并使用幾種經(jīng)典目標(biāo)檢測算法和改進(jìn)后的算法進(jìn)行橫向結(jié)果比較。比較結(jié)果如圖10 所示,其中三張具有代表性的圖片如圖10(a)所示。第一張圖片是不同于一般遙感圖像光照的沙塵天氣下的飛機目標(biāo);第二張圖片是飛機密集分布且存在較小尺度的情況;第三張圖片是同時包含飛機密集分布和極小尺度飛機遙感圖像目標(biāo)的情況。
根據(jù)圖10 幾種經(jīng)典目標(biāo)檢測算法檢測結(jié)果可知,對于圖10(a)中的第一張圖片,由于受到不同于一般遙感圖像光照的影響,除了本文算法AMDSSD和Faster-RCNN+特征金字塔網(wǎng)絡(luò)(feature pyramid networks,F(xiàn)PN[23])以外,YOLO v3[24]和SSD 算法均有不同程度漏檢的情況發(fā)生。分析可知,這主要是由于算法的魯棒性不夠,導(dǎo)致檢測結(jié)果容易受到光照、沙塵等因素的影響。對于圖10(a)中的第二張圖片,除AMDSSD 算法以外,其余算法都存在漏檢的情況發(fā)生。分析可知,其余算法都是針對自然場景設(shè)計的目標(biāo)檢測算法,不能很好地應(yīng)對遙感圖像尺度小且密集的特點。而AMDSSD針對遙感飛機目標(biāo)的特點設(shè)計了一套用于檢測遙感飛機目標(biāo)的錨框體系,使得該算法更適合于飛機目標(biāo)的檢測,從而一定程度上提升檢測精度。對于圖10(a)中的第三張圖片,由于飛機遙感目標(biāo)存在尺寸極小且密集的情況,包括本文算法在內(nèi),4種算法均不能正確檢測出全部目標(biāo)。顯然,AMDSSD 算法雖然沒有全部檢測出飛機目標(biāo),但檢測結(jié)果明顯優(yōu)于其他3 種算法。分析可知,AMDSSD 算法增加了一個用于檢測極小尺寸的Feature map 1,該層用以解決下采樣倍數(shù)過大導(dǎo)致特征層丟失了極小目標(biāo)信息的問題,同時錨框的鋪設(shè)密度相近和錨框的策略匹配方法可以一定程度上幫助網(wǎng)絡(luò)更加有效地訓(xùn)練,提高目標(biāo)檢測的魯棒性。
為了進(jìn)一步評估改進(jìn)后SSD 算法的性能,本文使用3.2 節(jié)的評價標(biāo)準(zhǔn)計算得到了該算法的檢測精度與檢測速度,并與另外幾種經(jīng)典的目標(biāo)檢測算法進(jìn)行橫向結(jié)果對比。對比結(jié)果如圖11和表4所示。
表4 不同算法在飛機遙感圖像上的AP和FPSTable 4 AP and FPS of different algorithms on aircraft remote sensing images
圖11 幾種經(jīng)典目標(biāo)檢測算法的PR曲線Fig.11 PR curves of several classic target detection algorithms
從表4 中的實驗結(jié)果可以看出,本文所提出的AMDSSD 算法在精度均值(AP)的指標(biāo)上優(yōu)于YOLO、YOLO v2、YOLO v3、SSD 和DSSD 算法。從檢測精度上看,當(dāng)IOU=0.50 且area(面積類型)為all時,AMDSSD 算法相比SSD 算法提高了2.43 個百分點,相比YOLO、YOLO v2、YOLO v3、DSSD和Faster-RCNN+FPN分別提高了12.90個百分點、6.79個百分點、3.01 個百分點、1.60 個百分點和-0.20 個百分點。當(dāng)IOU=0.50:0.95 且area=small 時,改進(jìn)SSD 算法的精度均值為41.36%,較改進(jìn)前提升了1.71個百分點,且改進(jìn)后的SSD算法對小型目標(biāo)的檢測精度相比其他算法提升幅度較為明顯,證明改進(jìn)后的SSD 算法對小型目標(biāo)檢測較有優(yōu)勢。從檢測速度上看,改進(jìn)后SSD 的檢測速度和改進(jìn)前相比沒有太大的變化,和其他單階段目標(biāo)檢測算法相比仍然可以滿足實時檢測的需求。
此外,精度均值(AP)通常根據(jù)不同的IOU(intersection over union)閾值進(jìn)行評估,IOU 閾值越高,對應(yīng)的邊框回歸就越準(zhǔn)確。圖11為IOU=0.50和IOU=0.70 時各目標(biāo)檢測算法的PR 曲線(由于YOLO 和YOLO v2 檢測精度較低,沒有繪制在PR 曲線里)。從檢測結(jié)果可以看出,本文改進(jìn)的SSD算法Precision和Recall 兩個性能指標(biāo)均優(yōu)于其他算法,即AMDSSD 算法對目標(biāo)位置的回歸能力優(yōu)于其他算法。另外,本文算法和Faster-RCNN+FPN相比,精度均值(AP)雖有-0.20個百分點的差值,但是后者的檢測速度明顯慢于AMDSSD 算法,基本不能滿足實時檢測的需求。實驗結(jié)果表明本文提出的AMDSSD算法可以在滿足實時檢測性的同時有效提高各種復(fù)雜背景下飛機遙感圖像的目標(biāo)檢測精度。
3.4.1 骨架網(wǎng)絡(luò)替換的消融實驗
為探究骨架網(wǎng)絡(luò)替換對SSD算法檢測結(jié)果(AP)產(chǎn)生的影響,本文分別設(shè)置兩組模型對照:一組為SSD;二組為骨架網(wǎng)絡(luò)被替換為ResNet50(改)的SSD,其余設(shè)置均與SSD模型相同。實驗結(jié)果如表5所示,SSD+ResNet50 的對照組相比一組AP 值提升了0.62個百分點。
表5 骨架網(wǎng)絡(luò)替換的消融實驗結(jié)果Table 5 Ablation experiment results of skeleton network replacement
實驗證明,骨架網(wǎng)絡(luò)的替換有效地增強了模型特征提取能力。ResNet50(改)幫助模型更加有效學(xué)習(xí)飛機遙感圖像的特征,一定程度上提升了網(wǎng)絡(luò)對飛機遙感目標(biāo)檢測的精度均值。
3.4.2 錨框密集化與錨框策略匹配的消融實驗
本文所改進(jìn)的錨框密集化和錨框策略匹配是有利于AP 值提升的一種方法,為探究其如何對AP 值產(chǎn)生影響,本文分別設(shè)置3組模型對照:一組為SSD+ResNet50(改),二組為SSD+ResNet50(改)+錨框密集,三組為SSD+ResNet50(改)+錨框密集+錨框策略匹配,其余設(shè)置均與SSD模型相同。實驗結(jié)果如表6所示,三組相比一組和二組AP值提升了1.79個百分點和0.57個百分點[27]。
表6 錨框密集化與錨框策略匹配的消融實驗結(jié)果Table 6 Results of ablation experiments matching anchor frame densification and anchor frame strategy
本文中錨框密集化主要用來解決尺度極小的遙感目標(biāo)正樣本錨框數(shù)偏少的問題。實驗證明,錨框密集化可以通過增加錨框鋪設(shè)的密度來增加小尺度的錨框匹配到真實目標(biāo)的數(shù)量,以此來提升模型對飛機遙感目標(biāo)的AP值。錨框策略匹配通過式(5)來平衡不同尺度的正樣本錨框數(shù)量,使之趨向于總體正樣本錨框數(shù),減少模型訓(xùn)練會偏向某一方的可能。實驗證明,這種錨框策略匹配方法一定程度上增加了網(wǎng)絡(luò)的魯棒性,提升了對飛機遙感目標(biāo)的AP值。
3.4.3 各改進(jìn)對模型實時檢測性的影響
對于基于深度學(xué)習(xí)的目標(biāo)檢測算法,絕大部分都是由卷積層和全連接層組成。卷積層通常占據(jù)了算法實時檢測性的主導(dǎo)位置,因為卷積層往往是網(wǎng)絡(luò)中最耗時的部分,當(dāng)然還有全連接層(全連接層可以看成特殊的卷積層)。很多時候,卷積層和全連接層的計算時間會占用80%到95%的網(wǎng)格總體計算時間,因此本文著重從卷積層的參數(shù)量來分析各改進(jìn)對模型實時檢測性的影響。
本文改進(jìn)后的算法較改進(jìn)前一共有三個改進(jìn)點,分別是骨架網(wǎng)絡(luò)的替換、錨框密集化和錨框的策略匹配。其中錨框的策略匹配并沒有增加額外的卷積層,因此對模型的檢測速度基本不會有影響。
在骨架網(wǎng)絡(luò)的替換中,改進(jìn)后的ResNet50 和改進(jìn)之前相比,額外增加的卷積層主要來自圖3(b)虛線框內(nèi)添加的結(jié)構(gòu)。經(jīng)過計算,SSD算法中的骨架網(wǎng)絡(luò)(VGG16)具有26 102 468 個參數(shù),改進(jìn)后的Res-Net50具有18 342 744個參數(shù)。得益于殘差結(jié)構(gòu)的優(yōu)勢,后者的參數(shù)量不僅明顯少于前者,還有著更好的語義抽象能力和特征提取能力。顯然在模型的特征提取階段,骨架網(wǎng)絡(luò)的替換有助于提高模型的檢測速度。
對比圖1和圖3(c)可以發(fā)現(xiàn),模型預(yù)測階段的輸入由6 個特征層變?yōu)? 個特征層,其余部分沒有變化,因此該階段額外增加的卷積層參數(shù)主要集中在新添加的特征層上(Feature map 1)。該層在特征提取階段也有額外的卷積層參數(shù),但是數(shù)量占比太小基本不會影響模型的檢測速度,因此著重分析Feature map 1在模型預(yù)測階段對檢測速度的影響。
Feature map 1 是尺寸75×75,下采樣倍數(shù)為4 的特征層。在2.2 節(jié)中,本文對Feature map 1 上尺度大小為8的錨框鋪設(shè)密度增加了2倍。經(jīng)過計算,該層需要生成28 125 個錨框和增加230 400 個卷積層參數(shù)。對于生成的每一個錨框,模型都會通過相應(yīng)的卷積層來計算出預(yù)測結(jié)果,F(xiàn)eature map 1的加入勢必會增加模型卷積層的參數(shù)量和計算量,從而影響模型的檢測速度。從實驗結(jié)果來看,改進(jìn)后與改進(jìn)前相比FPS有一定的降低,這樣的實驗結(jié)果與以上的分析是符合的。雖然FPS有降低,但是在檢測精度和檢測速度方面有著更好的平衡性,與其他單階段目標(biāo)檢測算法相比仍然可以滿足實時檢測的需求。
在不同場景下且area=all,AMDSSD 算法對遙感圖像數(shù)據(jù)集的部分檢測結(jié)果如圖12 所示,在復(fù)雜背景、光照不同、小尺度且密集分布的遙感目標(biāo)、背景污染、極小尺度且密集和曝光背景的情況下,該算法均可以精確地檢測出相關(guān)的目標(biāo)物體,證明了本文改進(jìn)后的AMDSSD可以在不同場景下且面積類型為all的條件下均有較好的檢測效果。
圖12 AMDSSD在不同場景下的部分檢測結(jié)果Fig.12 Some test results of AMDSSD in different scenarios
本文提出了一種基于SSD的錨框尺度密集化和錨框策略匹配目標(biāo)檢測算法(AMDSSD),旨在增加少量訓(xùn)練參數(shù)且保留算法實時檢測性的情況下提高算法對復(fù)雜場景下多尺度遙感圖像目標(biāo)檢測的精度。改進(jìn)后的算法使用改進(jìn)以后的ResNet50作為特征提取網(wǎng)絡(luò),并且額外增加一個包含兩種尺度的特征層用以提升對小尺度目標(biāo)的檢測效果。結(jié)合飛機遙感圖像的特點,重新設(shè)計了一套適用于飛機遙感圖像的錨框體系,在此基礎(chǔ)上還增加了錨框鋪設(shè)密集化和錨框策略匹配的方法。從實驗結(jié)果來看,改進(jìn)后的SSD對不同場景下不同面積類型的飛機遙感目標(biāo)均有較好的檢測效果,證明了改進(jìn)后的算法在檢測精度和魯棒性上要優(yōu)于SSD算法。對比其他幾種經(jīng)典的目標(biāo)檢測算法,改進(jìn)后的算法在檢測精度和檢測速度方面有著更好的平衡性。在以后的研究學(xué)習(xí)中,希望進(jìn)一步提高目標(biāo)檢測精度的同時依然可以保留算法的實時檢測性,力求得到一種高精度且高效率的目標(biāo)檢測算法。