楊志鋼,黎明,李泳江
哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150001
遙感技術(shù)的不斷發(fā)展使得從遙感圖像中對特定目標(biāo)進行檢測的需求與日俱增。相比于傳統(tǒng)手工提取特征的方法,深度學(xué)習(xí)方法利用卷積神經(jīng)網(wǎng) 絡(luò)(convolutional neural networks,CNN) 自動學(xué)習(xí)圖像特征,通過不斷迭代訓(xùn)練大量的數(shù)據(jù)樣本,挖掘其中的有效信息[1],以此規(guī)避傳統(tǒng)目標(biāo)檢測方法中的缺點,能夠有效提高目標(biāo)檢測的精度和速度。
目前遙感圖像領(lǐng)域中的目標(biāo)檢測方法大多是由通用目標(biāo)檢測方法改進而成的,大體分為2 類:兩階段檢測方法和單階段檢測方法。前者的代表是R-CNN 及其延伸[2?5],它們通過主干網(wǎng)絡(luò)對圖像提取特征后,先生成錨點和對象建議,再對建議進一步地分類、回歸和優(yōu)化邊界框;后者的代表是YOLO 系列[6?8]、SSD[9]和RetinaNet[10],它們不再生成區(qū)域建議,而是直接從特征圖預(yù)測邊界框并區(qū)分具體類別。這些方法雖然在通用數(shù)據(jù)集上取得了很好的成績,但直接應(yīng)用于遙感圖像時往往效果不佳,原因在于遙感圖像目標(biāo)多數(shù)具有尺度多樣、排布密集、背景復(fù)雜等特點,這些方法當(dāng)中的主干網(wǎng)絡(luò)[11?14]很難在這樣的環(huán)境中準(zhǔn)確提取特征,致使學(xué)習(xí)到錯誤的分類和回歸信息。Lin 等[15]提出FPN 用以解決目標(biāo)特征難以分辨的問題,通過在主干網(wǎng)絡(luò)中構(gòu)建由上到下的特征金字塔和橫向連接結(jié)構(gòu)增強多尺度特征的傳播,大幅提升了檢測精度。隨后研究人員在此基礎(chǔ)上做了一些改進[16?19]以適應(yīng)遙感圖像目標(biāo)檢測的特點,但這些改進方法普遍是對單一類別目標(biāo)進行檢測,且在場景復(fù)雜或目標(biāo)較為密集時檢測性能有所下降。
基于此背景,本文提出一種基于multi-FPN 的遙感圖像目標(biāo)檢測方法。首先,該方法使用殘差網(wǎng)絡(luò)ResNet-50 作為主干網(wǎng)絡(luò),在FPN 橫向連接的基礎(chǔ)上加入跨層連接結(jié)構(gòu),進一步地加強特征的融合和重用;其次,改變上采樣金字塔的輸出層級,采用{P3,P4,P5,P6,P7}層級輸出多尺度特征圖,有利于特征的傳播;最后,特征金字塔的上采樣過程采用了雙線性插值法替代原來的最鄰近插值法,使得特征縮放后的誤差更小,預(yù)測框坐標(biāo)的回歸更準(zhǔn)確。
基于multi-FPN 的遙感圖像目標(biāo)檢測方法的總體框架如圖1 所示。主要由特征提取網(wǎng)絡(luò)和兩階段檢測網(wǎng)絡(luò)2 部分組成。具體來說,經(jīng)過預(yù)處理的圖片首先輸入進特征提取網(wǎng)絡(luò)中,通過主干網(wǎng)絡(luò)和multi-FPN 可以為每個輸入圖像生成多尺度特征融合的特征圖;然后從區(qū)域提案網(wǎng)絡(luò)(region proposal network,RPN)中 獲得輪流提案,為下一階段提供高質(zhì)量的區(qū)域提案;最后,在二次檢測階段利用2 個全連接層(fully connected layer,fc)對提案進行位置回歸和類別預(yù)測,得到最終結(jié)果。
圖1 基于multi-FPN 的方法總體框架
1.1.1 主干網(wǎng)絡(luò)
深度CNN 的出現(xiàn)使得圖像分類和目標(biāo)檢測取得了一系列突破,網(wǎng)絡(luò)將從低到高層的特征和檢測器以端到端的方式進行融合,并通過特征網(wǎng)絡(luò)層的加深來取得更好的檢測效果。目標(biāo)檢測中基于深度CNN 的主干網(wǎng)絡(luò)是用來提取特征的結(jié)構(gòu),本文選擇采用殘差網(wǎng)絡(luò)ResNet-50 作為主干網(wǎng)絡(luò),利用多組殘差單元,在提取特征的同時有效避免了梯度爆炸或梯度消失的發(fā)生。原始的ResNet-50 在圖像分類時可以實現(xiàn)1 000 種目標(biāo)類別細(xì)分,但應(yīng)用于目標(biāo)檢測后要根據(jù)數(shù)據(jù)集的類別進行輸出項調(diào)整。比如本文在NWPU VHR-10 數(shù)據(jù)集上進行實驗,共有10 類待檢目標(biāo),所以主干網(wǎng)絡(luò)的輸出節(jié)點數(shù)設(shè)置為11,即10 個前景目標(biāo)和1 個背景類別。
1.1.2 FPN
目標(biāo)檢測中的主干網(wǎng)絡(luò)雖然可以利用卷積操作有效提取特征,但在原始圖像經(jīng)過CNN 下采樣一定倍數(shù)后,有一些小像素物體會在最后一層特征圖上消失,導(dǎo)致后續(xù)檢測網(wǎng)絡(luò)無法檢測出該目標(biāo),除此之外,還會遇到同一目標(biāo)尺度有大有小、特征難以準(zhǔn)確學(xué)習(xí)等情況。為了能讓大尺寸物體和小尺寸物體的特征都被有效提取并輸入進檢測網(wǎng)絡(luò)中,研究人員在主干網(wǎng)絡(luò)的基礎(chǔ)上,增加了FPN 的結(jié)構(gòu),如圖2 所示。FPN 包括3 部分:下采樣金字塔、上采樣金字塔和橫向連接。具體而言,下采樣金字塔由ResNet-50 網(wǎng)絡(luò)的部分結(jié)構(gòu)組成,每層最后一個殘差結(jié)構(gòu)的特征激活輸出表示為{C2,C3,C4,C5}。上采樣金字塔可以有效結(jié)合低、中、高層不同尺度的特征,方法是對高階特征圖進行多次上采樣,同時將該特征橫向連接至對應(yīng)下采樣金字塔中的前一層特征,二者進行相加操作,使高層特征得到加強。圖2 中以P4 為例展示了橫向連接的細(xì)節(jié),可以看到上采樣金字塔中的P5 特征做步長為2 的最鄰近上采樣,同時對應(yīng)下采樣金字塔中的C4 層特征經(jīng)過1×1 的卷積,使其和后一層的特征圖通道數(shù)保持相同,然后與上采樣后的特征圖像素加合,并使用3×3 的卷積層消除上采樣的混疊效應(yīng)。P6 是P5 進行一次最大池化產(chǎn)生的層,隨著訓(xùn)練次數(shù)的增加不斷迭代融合,直到生成精細(xì)化的特征圖。
圖2 FPN 結(jié)構(gòu)
1.1.3 multi-FPN
FPN 是融合多層次信息的一種有效的多尺度方法,在通用目標(biāo)檢測任務(wù)中取得了不錯的效果,但值得注意的是,遙感圖像中的目標(biāo)尺度差異過大,且復(fù)雜多變的背景會對前景目標(biāo)特征的分辨產(chǎn)生較強的干擾,尤其是存在一些類目標(biāo)的物體,比如海岸邊的集裝箱與停泊船只目標(biāo)的特征相似,給特征提取工作帶來了很大的困難。因此,通過FPN 獲得的特征信息可能不足以很好地區(qū)分這些目標(biāo)。為了解決此問題,本章對特征金字塔的網(wǎng)絡(luò)結(jié)構(gòu)進行了優(yōu)化,提出了跨層連接,改變了上采樣金字塔的輸出層級,進一步增強特征的傳播和高、中、低層特征的融合,并使用雙線性插值法替代原本的最鄰近插值法,使得特征上采樣效果更好,經(jīng)過改進的FPN 結(jié)構(gòu)如圖3 所示。
圖3 multi-FPN 結(jié)構(gòu)
主干網(wǎng)絡(luò)仍然選擇ResNet-50,在下采樣金字塔中,多層特征映射{C2,C3,C4,C5}保持不變,對應(yīng)每個卷積塊的最后一層,步長為{4、8、16、32}像素,C5 是ResNet-50 最頂層的輸出,其通過一個1×1 的卷積層,將通道數(shù)轉(zhuǎn)為256,得到上采樣金字塔的P5。P5 層首先經(jīng)過2 次下采樣,步長為2,分別得到P6、P7 層;其次經(jīng)過橫向連接和跨層連接,依次得到P4、P3 層;最后輸出{P3,P4,P5,P6,P7}多層特征圖。橫向連接和跨層連接的細(xì)節(jié)如圖3 中所示。例如,為了得到P4,首先需要對C4 使用1×1 的卷積操作,以減少C4 通道的數(shù)量;其次對之前的所有層(P7、P6、P5)進行雙線性插值上采樣,接著使用concat 操作(數(shù)組間的相加)來合并它們,最后利用3×3 的卷積以消除特征混疊,同時減少通道數(shù)量。通過層層迭代,輸出了多尺度的特征圖。通過實驗發(fā)現(xiàn),橫向連接可以保證有效利用底層定位的細(xì)細(xì)節(jié)信息,跨層連接能夠進一步加強多層次特征的融合,同時,更深的P6、P7 卷積層可以獲得更多的語義信息,有助于復(fù)雜環(huán)境下的目標(biāo)特征獲取。另外,F(xiàn)PN 在上采樣時使用了最鄰近插值算法,過程如下:假設(shè)原始特征圖像素大小為w1×h1,上采樣后像素大小為w2×h2,上采樣特征圖中有1 像素點 (x2,y2),則對應(yīng)于原始特征圖上的像素點位置 (x1,y1)為
由于像素值x1、y1必須為整數(shù),所以計算中出現(xiàn)小數(shù)時需要四舍五入,這樣會造成特征圖像素的不連續(xù)性,且多次上采樣后精度缺失嚴(yán)重。本文使用雙線性插值算法對上采樣過程進行改進,過程如下:假設(shè)想得到上采樣圖像像素點對應(yīng)在原圖中的位置P(x,y),離該位置最近的4 個像素點值分別為Q11(x1,y1)、Q12(x2,y2)、Q22(x3,y3)、Q21(x4,y4),如圖4 所示。
圖4 雙線性插值算法示意
P的像素值與鄰近像素點的距離相關(guān),距離越近的點像素值影響越大,計算過程如下:
1)根據(jù)Q11(x1,y1) 和Q22(x3,y3)的像素值計算得到R1(x,y1)位置的像素值。
2)根據(jù)Q12和Q22的像素值計算得到R2(x,y2)位置的像素值。
3)由R1 和R2 的像素值計算得到最終結(jié)果P(x,y)。
兩階段檢測網(wǎng)絡(luò)的結(jié)構(gòu)和損失函數(shù)與Faster R-CNN 模型相同,利用提取的特征對目標(biāo)進行分類和定位。特征圖首先輸入進RPN 中,在錨點的基礎(chǔ)上做前景和背景的二分類、邊界框回歸以及后處理,得到建議特征圖;其次將建議特征圖輸入RoI pooling 層裁剪成固定大??;最后利用2 個全連接層進行第2 次檢測,包括具體類別劃分、邊界框回歸和后處理,得到最終的檢測結(jié)果。
本文在公開光學(xué)遙感數(shù)據(jù)集NWPU VHR-10[20]上進行實驗,該數(shù)據(jù)集總共800 張超高分辨率光學(xué)遙感圖像,每張像素大小約為800×1 000,包含從Google Earth 和Vaihingen 數(shù)據(jù)集中裁剪收集的籃球場、船只、飛機、儲油罐、田徑場、棒球場、車輛、網(wǎng)球場、橋梁、碼頭10 類目標(biāo)類別,由航拍圖像判讀專家手動注釋成水平標(biāo)注框加標(biāo)簽的形式,如(xmin,ymin,xmax,ymax,label)。本文實驗使用其中的正樣例圖像集,每幅圖像中至少存在1 個待檢測的目標(biāo),共計650 張圖,大約有3 775個標(biāo)注目標(biāo),該數(shù)據(jù)集經(jīng)圖像增強后相比于同類水平標(biāo)注數(shù)據(jù)集類別和目標(biāo)數(shù)目都多,在遙感圖像數(shù)據(jù)中具有代表性。本文實驗中訓(xùn)練、測試所用到的硬件設(shè)備和開發(fā)環(huán)境如下:硬件設(shè)備:CPU:Intel(R) Xeon(R) Gold 6 128 3.40 GHz;GPU:Nvidia Tesla P100 16 GB RAM;系統(tǒng)配置:Ubuntu 16.04,Anaconda 3-5.2,CUDA 9.0;開發(fā)環(huán)境:Python 3.6,Tensorflow 1.12,Keras 2.2.4。
本文方法使用的網(wǎng)絡(luò)模型深度較深,而NWPU VHR-10 中的正樣例圖像集僅包含650 張圖片,即使裁剪后數(shù)量依然不足。故本章實驗使用了模型預(yù)訓(xùn)練和圖像數(shù)據(jù)增強的策略。使用ImageNet 分類預(yù)訓(xùn)練的Resnet-50 模型初始化網(wǎng)絡(luò),再移植到數(shù)據(jù)量有限的NWPU VHR-10 上進行微調(diào),數(shù)據(jù)增強方面使用了隨機圖像翻轉(zhuǎn)、隨機剪裁、角度旋轉(zhuǎn)、顏色抖動等操作。本文實驗隨機抽取圖片劃分訓(xùn)練集、驗證集和測試集,比例為6∶2∶2。實驗基于TensorFlow 框架進行,為了加快訓(xùn)練、驗證和測試的速度,采用TFRecord格式輸入數(shù)據(jù)。實驗參數(shù)方面,根據(jù)對NWPU VHR-10 數(shù)據(jù)集中待檢測目標(biāo)的實際尺寸和寬高比率進行統(tǒng)計分析,設(shè)置RPN 中{P2,P3,P4,P5,P6}的錨點框區(qū)域大小為{252,502,1002,2252,4002}像素,錨點框?qū)捀弑葹閧1,1/22,1/3,3,1/4,4,1/5,5}。
本文中的性能評估標(biāo)準(zhǔn)使用單一類別平均精度(average precision,AP)和各類別精度均值(mean average precision,mAP),能夠相對客觀地評價檢測時所有類別的平均好壞程度,值越大,表示目標(biāo)檢測模型的性能越好,衡量速度采用的是測試1 張圖片所用的平均時間,這也是目標(biāo)檢測領(lǐng)域的通用標(biāo)準(zhǔn)。
本文做了一系列的對比實驗,以驗證multi-FPN 方法的有效性。表1 總結(jié)了所用方法在不同結(jié)構(gòu)組合下的檢測結(jié)果,主要關(guān)注評價的是橫向連接、跨層連接、不同的輸出層級以及上采樣的方式所帶來的影響。表2 中結(jié)構(gòu)統(tǒng)一采用ResNet-50作為主干網(wǎng)絡(luò),檢測網(wǎng)絡(luò)部分相同??梢钥吹紽PN 的檢測精度約為86.61%,測試單張圖片的時間為0.32 s。當(dāng)FPN 去掉橫向連接結(jié)構(gòu)時,如組合1 去掉了1×1 的卷積側(cè)連接,這種僅靠多次上、下采樣輸出的特征圖盡管仍然具有很強的語義信息,但位置信息變得不再精確,mAP 較FPN 下降了約12 %,由此看出,主干網(wǎng)絡(luò)的各層通過橫向連接連接到自頂向下的特征金字塔,可以傳遞出更精確的特征位置。組合2 與組合1 對比以及組合3 與FPN 的對比,可以看到跨層連接結(jié)構(gòu)對最終檢測精度的提高幅度約為2%,說明使用跨層連接有助于多尺度目標(biāo)特征進一步地重用和傳播。組合4 改變了特征圖的輸出層級,mAP 較組合3 上升了約1%,可見CNN 的更深層可以獲得更多的語義信息,有助于遙感圖像中復(fù)雜環(huán)境下的目標(biāo)特征獲取。組合5 使用了雙線性插值算法替代了原來的最近鄰插值算法,精度上升了約2%,且檢測速度沒有明顯變化,故選擇組合5 作為本文最終改進的遙感圖像目標(biāo)檢測方法。
表1 本文方法在不同結(jié)構(gòu)組合下的檢測結(jié)果
表2 不同方法檢測性能對比 %
表2 顯示了不同方法在NWPU VHR-10 數(shù)據(jù)集上的性能對比。本文實驗對比了NWPU VHR-10 數(shù)據(jù)集的基準(zhǔn)方法RICNN 以及具有代表性的檢測方法Faster R-CNN、YOLO v2 和SSD,從表2可以看到,本文方法在大部分類別上面都達到了最高精度,mAP 達到91.92%,由此證明基于multi-FPN 的目標(biāo)檢測方法在遙感圖像中表現(xiàn)優(yōu)異。相比于同樣使用ResNet-50 做主干網(wǎng)絡(luò)的Faster RCNN,本方法在車輛、船只、儲油罐等尺寸較小的目標(biāo)上AP 有了不小的提升,說明multi-FPN 策略有效提升了小目標(biāo)的檢測精度;對于碼頭、籃球場、網(wǎng)球場等相對較大的目標(biāo)精度也有所提升,表明了更深的卷積層輸出對目標(biāo)檢測的重要性。
如圖5 以熱力圖的形式顯示了multi-FPN 的各層輸出特征圖{P3,P4,P5,P6,P7},可以看到,對于示例圖中復(fù)雜背景下的船只小目標(biāo),較低層的P4 特征圖能夠很好地區(qū)分出礁石、海浪和船只特征的不同,以此層作為兩階段檢測網(wǎng)絡(luò)的輸入,對于檢測精度的提升較為明顯。圖6 展示了測試集中的部分檢測結(jié)果示例。
圖5 multi-FPN 輸出特征圖示例
圖6 測試集部分檢測結(jié)果示例
本文主要從特征提取的角度對目標(biāo)檢測方法進行了研究,提出了一種基于multi-FPN 的遙感圖像目標(biāo)檢測方法。一方面,在FPN 網(wǎng)絡(luò)模型的基礎(chǔ)上加入跨層連接結(jié)構(gòu),通過改變由上到下金字塔的輸出層級,保證了面對遙感圖像復(fù)雜背景的環(huán)境下依然能夠有效地提取出目標(biāo)特征,進一步地增強了特征的融合和傳播;另一方面,采用雙線性插值法替代原本的最鄰近插值法,減少特征上采樣的失真,進而提升了檢測精度。結(jié)構(gòu)和方法對比實驗結(jié)果表明,本方法在檢測精度上超越了目前普遍在用的目標(biāo)檢測方法,在公開遙感圖像數(shù)據(jù)集NWPU VHR-10 上mAP 達到91.92%。