王 港,陳金勇,高 峰,吳金亮
(中國(guó)電子科技集團(tuán)公司航天信息應(yīng)用技術(shù)重點(diǎn)實(shí)驗(yàn)室,河北 石家莊 050081)
遙感是在不直接接觸研究目標(biāo)或現(xiàn)象的情況下,利用記錄裝置觀測(cè)或獲取目標(biāo)或現(xiàn)象的某些特征信息的一門科學(xué)和技術(shù)。遙感已被廣泛應(yīng)用于環(huán)境檢測(cè)、資源探測(cè)、生態(tài)研究、測(cè)繪制圖和軍事指揮等眾多領(lǐng)域[1]。目標(biāo)檢測(cè)作為遙感圖像處理的一個(gè)重要部分,具有覆蓋范圍廣、作用距離遠(yuǎn)和執(zhí)行效率高等方面的優(yōu)點(diǎn),在軍事和民用領(lǐng)域都有重要的意義和價(jià)值。
深度學(xué)習(xí)是近年來在大數(shù)據(jù)環(huán)境下興起的一門機(jī)器學(xué)習(xí)技術(shù),由于其具備海量數(shù)據(jù)的學(xué)習(xí)能力和高度的特征抽象能力,在諸多圖像應(yīng)用領(lǐng)域都取得了革命性的成功[2]。自2014年開始,基于深度學(xué)習(xí)(主要是卷積神經(jīng)網(wǎng)絡(luò)(CNN)[3])的目標(biāo)檢測(cè)識(shí)別在自然圖像應(yīng)用中取得了巨大突破。例如,以R-CNN(Region with CNN Features)方法為代表的結(jié)合通用候選區(qū)域算法和CNN分類的目標(biāo)識(shí)別框架(R-CNN[4]、SPP-NET(Spatial Pyramid Pooling Net)[5]、Fast R-CNN(Fast Region with CNN Features)方法[6]、Faster R-CNN(Faster Region with CNN Features)方法[7])。其候選區(qū)域采用Selective Search[8]、EdgeBox[9]或BING特征[10]等通用目標(biāo)候選方法。但這些算法都需要大量的學(xué)習(xí)樣本用于預(yù)測(cè)準(zhǔn)確的回歸位置,且大多設(shè)計(jì)為針對(duì)圖像中占比大的目標(biāo),對(duì)于“大范圍、小目標(biāo)”的遙感識(shí)別效果并不理想。
大型深度卷積神經(jīng)網(wǎng)絡(luò)在遙感影像分類、目標(biāo)檢測(cè)識(shí)別等研究方面都表現(xiàn)出了良好的性能。但是,并沒有一個(gè)清晰的解釋來說明深度學(xué)習(xí)網(wǎng)絡(luò)表現(xiàn)優(yōu)良的原因,這樣就沒有技術(shù)來支撐改善網(wǎng)絡(luò)結(jié)構(gòu),同時(shí)無法從科學(xué)角度去分析模型的內(nèi)部操作。針對(duì)上述問題在圖像處理領(lǐng)域,2014年D.Zeiler開始提出利用反卷積可視化技術(shù)來洞察中間特征層和分類器操作,并顯示了改善網(wǎng)絡(luò)的分類性能提高情況[13];2015年Yosinski可視化了網(wǎng)絡(luò)如何響應(yīng)輸入圖像的過程,從而解釋網(wǎng)絡(luò)分類的特征變化情況[14];2017年Brian Chu等人通過可視化深度殘差網(wǎng)絡(luò)中間特征層,從經(jīng)驗(yàn)分析角度了解了殘差結(jié)構(gòu)在整個(gè)網(wǎng)絡(luò)中的顯著作用[15];2017年Luisa M Zintgraf等人可視化深度網(wǎng)絡(luò)模型,并指出了圖像中哪些部分為分類貢獻(xiàn)哪些部分干擾分類情況[16]。但是,并沒有出現(xiàn)應(yīng)用可視化技術(shù)對(duì)遙感影像目標(biāo)在深度卷積網(wǎng)絡(luò)模型的成像特性的研究[17]。
針對(duì)遙感影像目標(biāo)檢測(cè)的具體情況,本文設(shè)計(jì)了基于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型的遙感影像目標(biāo)檢測(cè)算法。本文通過谷歌地圖建立了圖像目標(biāo)樣本庫(kù);為解決輸入圖像巨大難以處理的問題,本文對(duì)檢測(cè)輸入的遙感影像進(jìn)行分塊處理[18],進(jìn)行了RPN優(yōu)化,方便了并行化處理。在建立的模型上,進(jìn)行逐層的特征圖可視化操作,應(yīng)用卷積正向可視化技術(shù)和反卷積可視化技術(shù),實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)特征的可視化描述,將深度學(xué)習(xí)網(wǎng)絡(luò)模型逐漸從“黑盒”中拉出來,從而指導(dǎo)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)。
本文總體算法流程如1所示,首先對(duì)輸入的寬幅遙感影像進(jìn)行分塊操作,然后通過公共卷積層(卷積層1)后,分2條路線進(jìn)行。路線1為Faster R-CNN框架分類過程,將所選區(qū)域進(jìn)行分類處理,給出類別概率;路線2為區(qū)域建議網(wǎng)絡(luò)(RPN)過程,通過滑窗及后續(xù)網(wǎng)絡(luò)[19],給出包含目標(biāo)的準(zhǔn)確區(qū)域建議。路線1和路線2配合,得到被檢測(cè)影像包含的目標(biāo)及其具體位置。
圖1 算法流程
深度學(xué)習(xí)的所有算法都建立在大量數(shù)據(jù)的基礎(chǔ)上,算法都是在大量有效數(shù)據(jù)上進(jìn)行特征和規(guī)律學(xué)習(xí)。遙感影像數(shù)量很多,但是包含有特定類別、且分辨率一致的影像數(shù)據(jù)并不夠多。本文中建立了高分辨率遙感影像的典型目標(biāo)樣本庫(kù),通過這個(gè)樣本庫(kù)進(jìn)行典型目標(biāo)的學(xué)習(xí)和檢測(cè)。
本文搜集的典型目標(biāo)包括:艦船、飛機(jī)和機(jī)場(chǎng)3種。搜集包含目標(biāo)的樣本,主要按照由大到小的范圍進(jìn)行搜集,比如艦船樣本,即按照“國(guó)家—港口—艦船”的思路進(jìn)行搜集。其余2種樣本搜集思路與艦船類似。
搜集的高分辨率遙感影像數(shù)據(jù)分辨率在0.5 m左右,搜集到的粗樣本數(shù)據(jù)再進(jìn)行細(xì)加工。Faster R-CNN訓(xùn)練的樣本數(shù)據(jù)一般要求在1 000*1 000像素左右,故制作細(xì)樣本時(shí),也將樣本大小選定在1 000*1 000左右。每一幅細(xì)樣本中包含1~5個(gè)目標(biāo)。典型樣本實(shí)例如2所示,圖2(a)為艦船樣本示例,圖2(b)為機(jī)場(chǎng)樣本示例,圖2(c)為飛機(jī)樣本示例。
圖2 樣本示例
本文采用的模型為Faster R-CNN,其本質(zhì)為RPN結(jié)合Fast R-CNN,其中RPN作為區(qū)域建議的部分而Fast R-CNN作為主體分類結(jié)構(gòu)存在,二者共享VGG16網(wǎng)絡(luò)模型的卷積結(jié)構(gòu),從而減少計(jì)算。同時(shí),F(xiàn)ast R-CNN檢測(cè)網(wǎng)絡(luò)不再采用Selective Search區(qū)域建議方法。具體Fast R-CNN結(jié)構(gòu),參見文獻(xiàn)[6]。
基于Faster R-CNN的目標(biāo)檢測(cè)主要包括2個(gè)步驟:訓(xùn)練和檢測(cè)。其中訓(xùn)練過程,RPN和Fast R-CNN都可以進(jìn)行端到端訓(xùn)練。在反向傳播中,采用隨機(jī)梯度下降法,結(jié)合損失函數(shù)進(jìn)行網(wǎng)絡(luò)參數(shù)調(diào)節(jié)。同時(shí),隨機(jī)采樣正樣本和負(fù)樣本的比例為1∶1。
2.2.1 網(wǎng)絡(luò)訓(xùn)練
RPN和Fast R-CNN部分都可以獨(dú)立地進(jìn)行訓(xùn)練學(xué)習(xí),但是這樣它們的卷積部分就會(huì)不同。本文設(shè)計(jì)一種訓(xùn)練方法,使得RPN和Fast R-CNN可以共享卷積層,而非獨(dú)立訓(xùn)練。本文采用4階段訓(xùn)練算法,通過選擇性優(yōu)化,實(shí)現(xiàn)了卷積層的共享。具體步驟如下:
① 按照文獻(xiàn)[7]介紹RPN的方法,對(duì)RPN進(jìn)行訓(xùn)練。網(wǎng)絡(luò)初始化采用ImageNet預(yù)訓(xùn)練模型,微調(diào)訓(xùn)練采用端到端的訓(xùn)練流程。
② 使用步驟①訓(xùn)練好的RPN輸出區(qū)域建議,訓(xùn)練獨(dú)立的Fast R-CNN目標(biāo)檢測(cè)網(wǎng)絡(luò)。到此時(shí),2個(gè)網(wǎng)絡(luò)還沒有共享卷積層。
③ 使用步驟②得到的Fast R-CNN檢測(cè)網(wǎng)絡(luò)初始化RPN訓(xùn)練,訓(xùn)練RPN時(shí),保持卷積層不變,調(diào)節(jié)RPN獨(dú)有網(wǎng)絡(luò)部分的參數(shù)。
④ 保證共享的卷積層不變,訓(xùn)練Fast R-CNN檢測(cè)網(wǎng)絡(luò),只調(diào)整Fast R-CNN的全連接層。
這樣,既訓(xùn)練了2個(gè)網(wǎng)絡(luò)共享的卷積層,也分別調(diào)整了2個(gè)網(wǎng)絡(luò)各自的獨(dú)立部分。
2.2.2 目標(biāo)檢測(cè)
本文中寬幅遙感影像檢測(cè),在輸入到檢測(cè)網(wǎng)絡(luò)前,需要先對(duì)其進(jìn)行分塊,針對(duì)每一塊進(jìn)行目標(biāo)檢測(cè),再將檢測(cè)結(jié)果匯總到原圖中來。
具體分塊檢測(cè)方法如下:
① 從坐標(biāo)原點(diǎn)開始對(duì)寬幅遙感影像進(jìn)行分塊,分塊采取交疊方式進(jìn)行;
② 將分塊送入RPN網(wǎng)絡(luò),得到區(qū)域建議,并匯總到原圖中,坐標(biāo)轉(zhuǎn)化公式為:
③ 對(duì)全圖進(jìn)行非極大值抑制操作,濾除交疊建議區(qū)域;
④ 將每一個(gè)去除交疊的分塊I(i,j)輸入到檢測(cè)網(wǎng)絡(luò),檢測(cè)網(wǎng)絡(luò)給出類別和位置。
其中,n表示本塊中檢測(cè)到的第n個(gè)目標(biāo)。X、Y表示目標(biāo)的全局坐標(biāo),x、y表示目標(biāo)在分塊中的局部坐標(biāo)。
本文通過標(biāo)準(zhǔn)的全監(jiān)督卷積神經(jīng)網(wǎng)絡(luò)模型將輸入的二維圖像映射為一個(gè)表示類別概率的可能性向量。每一層都包括了擁有不同卷積核的卷積層(Convnet)、校正的線性函數(shù)單元(Relu)和最大池化層(Max Pooling)。理解卷積神經(jīng)網(wǎng)絡(luò)的具體操作就需要顯示每一層卷積的操作結(jié)果以及反向解譯每一層的特征激活函數(shù)。本文通過卷積層操作,顯示每一次處理后的特征圖以觀察由原始輸入到分類概率的特征抽象過程;同時(shí)將這些激活值反向映射到輸入的像素空間中去,從而顯示出什么樣的原始輸入模式可以引發(fā)特征圖中的激活函數(shù)。
卷積神經(jīng)網(wǎng)絡(luò)的輸入為二維圖像,經(jīng)過層層卷積算子處理,得到抽象特征。本文將其每層得到的特征圖加以顯示,以分析其特征提取過程??稍诨ヂ?lián)網(wǎng)點(diǎn)擊(http:∥ethereon.github.io/netscope/#/gist/dc5003de6943ea5a6b8b),查看VGG16詳細(xì)結(jié)構(gòu),從“conv1”、“conv2”到“conv4”,本文將每層的輸出進(jìn)行顯示。艦船、機(jī)場(chǎng)和飛機(jī)目標(biāo)的卷積特征抽象過程如圖3所示,為了節(jié)約篇幅,每層僅選取其中一個(gè)卷積核作為顯示樣例。
分析特征圖樣例可知,從conv1、conv2學(xué)習(xí)到的特征基本上是直線、邊緣等低層特征;conv3則開始稍微變得復(fù)雜,學(xué)習(xí)到的是紋理特征,比如上面的一些網(wǎng)格紋理、布局特征;conv4學(xué)習(xí)到的則是比較有區(qū)別性的特征,學(xué)習(xí)到的則是完整的,具有辨別性關(guān)鍵特征,比如艦船的艦身輪廓。總地來說,通過CNN學(xué)習(xí)后,本文學(xué)習(xí)到的特征是具有辨別性的特征,比如要本文區(qū)分飛機(jī)和建筑物,那么通過CNN學(xué)習(xí)后,背景部位的激活度基本很少,本文通過可視化就可以看到本文提取到的特征忽視了背景,而是把關(guān)鍵的信息給提取出來了。信息逐漸變少,但是更加聚焦于分類的核心特征。
圖3 卷積特征示例
為了檢測(cè)所采用的神經(jīng)網(wǎng)絡(luò),本文將反卷積網(wǎng)絡(luò)貼于每一個(gè)網(wǎng)絡(luò)層之后,從而提供一個(gè)持續(xù)的返回到輸入像素空間的路徑,具體示意圖如4所示。開始,一張圖輸入到整個(gè)卷積網(wǎng)絡(luò)中去,計(jì)算得到每一層提取的特征。為了檢測(cè)某個(gè)激活函數(shù),本文設(shè)置同層的其他激活函數(shù)為0,將特征圖通過設(shè)計(jì)的反卷積網(wǎng)絡(luò)。然后相繼進(jìn)行上池化、校正、濾波來重建此激活函數(shù)對(duì)輸入像素空間的影像。
圖4 反卷積可視化流程
上池化:在卷積神經(jīng)網(wǎng)絡(luò)中,最大池化操作是不可逆的,本文通過記錄其最大池化值位置來近似獲得可逆操作結(jié)果。在反卷積網(wǎng)絡(luò)中,上池化操作使用上述記錄的位置來確定最大值的位置,從而模擬本層的原始結(jié)構(gòu)。圖4底部為這一操作過程。
校正操作:卷積神經(jīng)網(wǎng)絡(luò)使用relu非線性處理單元來確保激活有用信息并保證所有信息都是正的。為了獲得每一層有效的特征重建結(jié)果,本文將重建信息輸入通過relu非線性處理單元。
濾波單元:卷積神經(jīng)網(wǎng)絡(luò)使用已學(xué)習(xí)到的濾波器來從上一層處理得到特征圖。為了可逆這一過程,反卷積神經(jīng)網(wǎng)絡(luò)使用了相同卷積濾波器的轉(zhuǎn)置。這樣在保證有用信息存在的基礎(chǔ)上,得到了合理的特征信息。
特征可視化:在VGG16模型上,本文采用上述反卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征激活值的可視化處理。本文模型訓(xùn)練完畢后的特征可視化結(jié)果如圖5所示,每行第1幅為經(jīng)過重新設(shè)置大小的原始影像,第2幅為conv2卷積層反卷積可視化的結(jié)果,第3幅為conv5卷積層反卷積可視化結(jié)果。本文選擇單個(gè)最強(qiáng)激活值作為反卷積可視化的結(jié)果。
觀察越來越深的卷積層可視化的變化,本文發(fā)現(xiàn),卷積神經(jīng)網(wǎng)絡(luò)具有良好的特征抽象作用,在特征提取的淺層階段,獲得的是對(duì)全圖的輪廓、紋理等特征的提取,隨著卷積層的加深以及具體分類任務(wù)的約束和監(jiān)督,最終獲得的是目標(biāo)的抽象特征提取,聚焦于目標(biāo)并且去除了背景的干擾作用。
圖5 反卷積特征可視化示例
利用從Google Earth上獲取的0.5 m分辨率的光學(xué)遙感圖像進(jìn)行實(shí)驗(yàn),包括艦船、機(jī)場(chǎng)和飛機(jī)3種目標(biāo)。其中艦船樣本500幅,飛機(jī)樣本300幅,機(jī)場(chǎng)樣本118幅。隨機(jī)從帶有標(biāo)簽的數(shù)據(jù)集中選出艦船樣本300幅,飛機(jī)樣本200幅,機(jī)場(chǎng)樣本90幅,作為訓(xùn)練樣本;其余作為測(cè)試樣本,訓(xùn)練樣本與測(cè)試樣本不重復(fù)。
本算法在Python3.5上進(jìn)行編寫,采用TensorFlow深度學(xué)習(xí)開源庫(kù)作為模型構(gòu)建基礎(chǔ)[20]。計(jì)算機(jī)為聯(lián)想Think Station P900,至強(qiáng)E2630 v3(雙路),顯卡為英偉達(dá)Quadro M6000 24G。本本算法訓(xùn)練和測(cè)試以及特征可視化顯示均是在GPU加速下完成。
由于輸入的檢測(cè)影像大小不一,本文在輸入的第一步對(duì)其進(jìn)行了尺度歸一,以1 000*1 000作為標(biāo)準(zhǔn)輸入大?。粚?duì)卷積特征圖進(jìn)行滑窗處理時(shí),以10像素作為滑窗步幅;訓(xùn)練時(shí)學(xué)習(xí)率為0.001,學(xué)習(xí)動(dòng)量為0.9,權(quán)重衰退率為0.000 5,迭代次數(shù)為3 000。
本文采用了3種典型目標(biāo)作為測(cè)試對(duì)象,分別是艦船、機(jī)場(chǎng)和飛機(jī),并對(duì)分塊后的遙感影像進(jìn)行了準(zhǔn)確率測(cè)試,分塊后平均檢測(cè)時(shí)間為0.2 s。具體結(jié)果如表1所示。
表1 分塊遙感影像目標(biāo)檢測(cè)統(tǒng)計(jì)數(shù)據(jù)
樣本名稱測(cè)試樣本數(shù)準(zhǔn)確樣本數(shù)準(zhǔn)確率/%艦船20019296機(jī)場(chǎng)2828100飛機(jī)1009090
傳統(tǒng)算法遙感影像目標(biāo)檢測(cè)的準(zhǔn)確率一般在80%左右。由表1可知,本文方法對(duì)于高分辨率遙感影像目標(biāo)檢測(cè)準(zhǔn)確率更高。
深度學(xué)習(xí)網(wǎng)絡(luò)模型往往被看作“黑箱”進(jìn)行操作,雖然取得了很好的實(shí)踐效果,但是缺乏相應(yīng)的分析工具,本文提出針對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行逐層特征可視化,并利用反卷積網(wǎng)絡(luò)進(jìn)行激活函數(shù)的像素空間映射,從而可以直觀地觀察其特征抽象過程。
卷積特征可視化后,可以分析得到前幾層卷積可以提取得到直線、點(diǎn)和紋理等特征,到conv4卷積層的時(shí)候,提取得到的是目標(biāo)的形態(tài)和輪廓特征,更像是人對(duì)目標(biāo)事物的記憶理解情況,conv5得到的基本是散點(diǎn),說明此時(shí)特征提取已經(jīng)抽象化為專門用于分類等任務(wù)的特殊向量了。
反卷積特征可視化是將最大激活值通過反卷積操作,映射回像素空間,從而分析特征提取的過程。反卷積可視化后,可以分析得到每層激活部門在原圖中的位置和權(quán)值。淺層卷積層反卷積后,全圖依然為紋理等特征,背景也同時(shí)被特征提取了,但是從conv4開始,特征開始聚焦于目標(biāo)的局部和整體,背景得到有效抑制。此時(shí),深度卷積網(wǎng)絡(luò)特征提取具有很好的抽象性和區(qū)分性。
同時(shí),特征可視化分析可以輔助神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)工作,避免過擬合,提高網(wǎng)絡(luò)的泛化性能。當(dāng)特征在卷積最深層之前已經(jīng)出現(xiàn)抽象特征散點(diǎn)化,則所設(shè)計(jì)網(wǎng)絡(luò)可能太深,需要減少卷積網(wǎng)絡(luò)層;當(dāng)反卷積可視化后,未出現(xiàn)激活部分為目標(biāo)整體或局部的情況,則說明特征提取或全連接分類出現(xiàn)設(shè)計(jì)問題,出現(xiàn)欠擬合狀態(tài),此時(shí)應(yīng)該考慮重新設(shè)計(jì)網(wǎng)絡(luò),逐層分析特征提取過程。
本文提出了一種基于深度學(xué)習(xí)模型(Faster R-CNN)的高分辨率遙感影像目標(biāo)檢測(cè)方法。針對(duì)高分辨率遙感影像內(nèi)容豐富、尺度大等問題,將計(jì)算機(jī)視覺領(lǐng)域目標(biāo)檢測(cè)的模型通過寬幅遙感影像分塊、RPN優(yōu)化等多處改進(jìn)應(yīng)用于遙感影像處理領(lǐng)域。
同時(shí),本文設(shè)計(jì)了針對(duì)深度卷積網(wǎng)絡(luò)模型的特征可視化方法,通過正向卷積特征可視化和反卷積特征可視化方法,展示了深度卷積神經(jīng)網(wǎng)絡(luò)的特征提取和特征抽象過程,分析了各個(gè)卷積層的不同作用,并且分析了可視化對(duì)深度卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)的指導(dǎo)作用。為接下來設(shè)計(jì)更適合遙感影像處理深度網(wǎng)絡(luò)模型提供技術(shù)支持,同時(shí)推動(dòng)深度學(xué)習(xí)在遙感領(lǐng)域的應(yīng)用。