周海龍,柴需楷,張金童,彭思卿,楊陽(yáng),趙驍翊,武義軒,姜瑜,王珂,尹偉男,白曉樂(lè),李志亮,鄭逢杰,陳興峰
(1.航天工程大學(xué)航天信息學(xué)院,北京101416;2.中國(guó)科學(xué)院空天信息創(chuàng)新研究院,北京100094)
遙感技術(shù)在近幾十年高速發(fā)展,海量的遙感數(shù)據(jù)已經(jīng)基本滿足了人們對(duì)于地表成像的各種需求,高空間分辨率、高光譜、熱紅外、合成孔徑雷達(dá)等多類數(shù)據(jù)服務(wù)于國(guó)土調(diào)查、地質(zhì)災(zāi)害、海洋研究、農(nóng)業(yè)監(jiān)測(cè)、退耕還林、氣象環(huán)境變化等多個(gè)領(lǐng)域,遙感在其中發(fā)揮了巨大的作用[1-6]。伴隨著計(jì)算機(jī)技術(shù)的發(fā)展,遙感與計(jì)算機(jī)被連接在一起,目前遙感圖像解譯分為人工、計(jì)算機(jī)自動(dòng)、人機(jī)結(jié)合三種方式,自從深度學(xué)習(xí)技術(shù)在圖像、語(yǔ)音識(shí)別領(lǐng)域取得突破進(jìn)展之后,遙感圖像目標(biāo)分類也越來(lái)越多的使用深度學(xué)習(xí)方法[7-9]。當(dāng)前識(shí)別的方法得到較多關(guān)注和應(yīng)用的有U-net[10-12]、Yolo[13-15]等,這些方法設(shè)計(jì)了復(fù)雜的深度學(xué)習(xí)模型架構(gòu)??偨Y(jié)來(lái)看,都是基于一些基礎(chǔ)的模型架構(gòu)進(jìn)行利用,這些基礎(chǔ)模型對(duì)遙感目標(biāo)分類的敏感性準(zhǔn)確度有何差異?本文針對(duì)遙感圖像分類識(shí)別應(yīng)用進(jìn)行了多種方法的實(shí)驗(yàn)研究,旨在分析比較各種算法的性能與優(yōu)劣,為基礎(chǔ)機(jī)器學(xué)習(xí)的使用選擇以及遙感目標(biāo)分類的復(fù)雜深度學(xué)習(xí)架構(gòu)設(shè)計(jì)提供參考。
對(duì)比實(shí)驗(yàn)使用已標(biāo)注的光學(xué)遙感圖像數(shù)據(jù)集,構(gòu)建了3種深度學(xué)習(xí)基礎(chǔ)模型架構(gòu):全連接神經(jīng)網(wǎng)絡(luò)(Full Connected Neural Network, FCNN)、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)、隨機(jī)森林(Random Forest, RF)。通過(guò)遙感分類的混淆矩陣給出總體精度,對(duì)不同的模型進(jìn)行評(píng)價(jià)。
全連接神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)由輸入層、隱藏層、輸出層構(gòu)成,全連接的含義即為隱藏層中各節(jié)點(diǎn)都與上一層的所有節(jié)點(diǎn)連接,其基本網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
圖1 全連接神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
神經(jīng)網(wǎng)絡(luò)思路來(lái)源于人的神經(jīng)細(xì)胞,整個(gè)網(wǎng)絡(luò)的運(yùn)行是由一個(gè)神經(jīng)元的輸出作為下一個(gè)神經(jīng)元的輸入層層傳導(dǎo)的。類似于人的神經(jīng)細(xì)胞,會(huì)響應(yīng)刺激并將反應(yīng)結(jié)果表現(xiàn)在人體動(dòng)作上,神經(jīng)網(wǎng)絡(luò)會(huì)對(duì)輸入數(shù)據(jù)進(jìn)行處理即進(jìn)行一個(gè)線性運(yùn)算,之后再通過(guò)激活函數(shù)做個(gè)非線性運(yùn)算,這個(gè)過(guò)程相當(dāng)于神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行更深層次的理解,而后通過(guò)一層層的神經(jīng)元處理傳導(dǎo),整個(gè)神經(jīng)網(wǎng)絡(luò)都對(duì)輸入數(shù)據(jù)有了響應(yīng),最后經(jīng)過(guò)輸出層,全連接神經(jīng)網(wǎng)絡(luò)將處理后的結(jié)果傳遞出來(lái)。
FCNN 是將一維向量數(shù)據(jù)作為輸入,整個(gè)網(wǎng)絡(luò)僅僅處理數(shù)據(jù)。CNN 在此基礎(chǔ)上加入了神經(jīng)網(wǎng)絡(luò)對(duì)于空間結(jié)構(gòu)的學(xué)習(xí),引入了卷積核的概念。CNN 的輸入數(shù)據(jù)是二維的,卷積核會(huì)對(duì)二維數(shù)據(jù)進(jìn)行逐塊處理,如圖2 所示,類似于人看報(bào)紙一塊塊閱讀之后提煉主要信息,卷積核處理完之后會(huì)得到更加簡(jiǎn)單的附有空間信息的數(shù)據(jù)。CNN 的網(wǎng)絡(luò)結(jié)構(gòu)包含輸入層、卷積層、最大池化層、全連接層和輸出層,卷積層和最大池化層利用卷積核對(duì)二維數(shù)據(jù)進(jìn)行空間信息的提取,之后轉(zhuǎn)換成一維向量再利用FCNN 的原理處理得到結(jié)果。
圖2 卷積核工作示意圖
隨機(jī)森林的基礎(chǔ)為決策樹,決策樹基本形式如圖3 所示。隨機(jī)森林顧名思義是由許多決策樹共同構(gòu)成的,它們擁有某種方式的隨機(jī)性,并且隨機(jī)森林的每一棵決策樹之間是沒(méi)有關(guān)聯(lián)的,隨機(jī)森林中決策樹的每個(gè)內(nèi)部的節(jié)點(diǎn)代表對(duì)一類屬性進(jìn)行“測(cè)試”,每個(gè)分支代表測(cè)試后結(jié)果,每一個(gè)葉子節(jié)點(diǎn)代表一個(gè)類標(biāo)簽。在形成森林之后,當(dāng)有輸入時(shí),所有決策樹都進(jìn)行判斷選擇最適合本決策樹分類要求的類標(biāo)簽,最終所有決策樹會(huì)投票表決,得票多的成為最終的輸出結(jié)果。單棵決策樹的分類能力很弱,利用多棵不相關(guān)的樹組合增強(qiáng)結(jié)果可信度,隨機(jī)森林通過(guò)這種方式提高樣本類型預(yù)測(cè)的準(zhǔn)確性。
圖3 決策樹基本形式
光學(xué)遙感圖像從遙感圖像描述數(shù)據(jù)集Remote Sensing Image Captioning Data Set (RSICD)[16]獲取。數(shù)據(jù)集RSICD 從Google 地球,百度地圖,MapABC,天地圖等收集了1 萬(wàn)多張高分辨率遙感圖像,該數(shù)據(jù)集具有較高的類內(nèi)多樣性和較低的類間差異性,適合用于深度學(xué)習(xí)模型對(duì)比。目標(biāo)分類的標(biāo)注信息來(lái)自于圖像的文件名。
所有光學(xué)遙感樣本均是高寬為224 像素的RGB圖像,并分為測(cè)試集與訓(xùn)練集用于模型的訓(xùn)練與檢測(cè)。從其中共選取了8 類典型地表目標(biāo),具體樣本歸類和數(shù)據(jù)集情況如表1 所示。
表1 光學(xué)遙感圖像樣本數(shù)據(jù)集介紹
Python 的TensorFlow 庫(kù) 與sklearn 庫(kù) 提 供 了FCNN、CNN、RF 的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置與網(wǎng)絡(luò)訓(xùn)練測(cè)試模塊,選擇用Python 對(duì)三個(gè)算法進(jìn)行訓(xùn)練。程序主要有三塊內(nèi)容,分別為輸入、網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置和輸出。由于Python 的TensorFlow 庫(kù)與sklearn 庫(kù)不能直接將RGB 的三波段圖像作為FCNN、CNN、RF 的輸入,所以將選擇的圖像數(shù)據(jù)在輸入神經(jīng)網(wǎng)絡(luò)之前由RGB格式的圖像轉(zhuǎn)換為單波段灰度圖像,方便之后三種機(jī)器學(xué)習(xí)的數(shù)據(jù)讀入。三個(gè)算法網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置完成之后將進(jìn)行數(shù)據(jù)的訓(xùn)練,設(shè)定的訓(xùn)練樣本數(shù)與測(cè)試樣本數(shù)約為8:1。最終的結(jié)果將分別呈現(xiàn)三個(gè)算法的精度與混淆矩陣。
三種機(jī)器學(xué)習(xí)基礎(chǔ)模型的設(shè)計(jì)開發(fā)情況如下。
基于Python 的TensorFlow 庫(kù)對(duì)FCNN 的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行設(shè)置與測(cè)試。FCNN 的網(wǎng)絡(luò)結(jié)構(gòu)包含三部分:輸入、隱藏層、輸出。FCNN 的輸入需要的是一維向量,因此將單波段的灰度圖像由二維矩陣轉(zhuǎn)換到一維向量,輸入為長(zhǎng)度是50176 的一維向量。隱藏層中設(shè)置了6 個(gè)全連接層,神經(jīng)元個(gè)數(shù)按照遞減的形式設(shè)置,輸出時(shí)的神經(jīng)元個(gè)數(shù)為8 個(gè),對(duì)應(yīng)所分的8 類目標(biāo),其激活函數(shù)為‘softmax’,其余全連接層的激活函數(shù)為‘relu’。
具體的FCNN 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置如表2 所示,網(wǎng)絡(luò)結(jié)構(gòu)示意圖見(jiàn)圖4。
圖4 FCNN 網(wǎng)絡(luò)結(jié)構(gòu)示意圖
表2 FCNN 結(jié)構(gòu)設(shè)置
基于Python 的TensorFlow 庫(kù)對(duì)CNN 的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行設(shè)置與測(cè)試。CNN 的輸入是圖像對(duì)應(yīng)的224×224 的二維數(shù)據(jù),其隱藏層包含了四部分,即卷積層、最大池化層、折疊層、全連接層。使用兩個(gè)卷積層和兩個(gè)最大池化層用于對(duì)二維數(shù)據(jù)進(jìn)行處理提取圖像重要空間信息,而后選擇使用折疊層將二維數(shù)據(jù)轉(zhuǎn)化成一維向量,再經(jīng)過(guò)兩個(gè)全連接層后輸出8 個(gè)神經(jīng)元節(jié)點(diǎn)對(duì)應(yīng)8 類目標(biāo),兩個(gè)全連接層的激活函數(shù)均為‘Relu’。具體的網(wǎng)絡(luò)結(jié)構(gòu)如表3 所示,網(wǎng)絡(luò)結(jié)構(gòu)示意圖見(jiàn)圖5。
表3 CNN 結(jié)構(gòu)設(shè)置
圖5 CNN 網(wǎng)絡(luò)結(jié)構(gòu)示意圖
使用Python 平臺(tái)的sklearn 庫(kù)對(duì)RF 的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行設(shè)置與測(cè)試。Sklearn 庫(kù)中的randomforest 函數(shù)集成了隨機(jī)森林的主要結(jié)構(gòu),只需對(duì)RF 樹的數(shù)量與深度進(jìn)行設(shè)置就可以得出結(jié)果,經(jīng)過(guò)嘗試之后選擇樹的數(shù)量為3000,樹的深度為1000。袋外數(shù)據(jù)為未用于測(cè)試的輸入圖像數(shù)據(jù),為提高精度,選擇引入袋外數(shù)據(jù)。具體的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置如表4 所示,網(wǎng)絡(luò)結(jié)構(gòu)示意圖見(jiàn)圖6。
表4 RF 結(jié)構(gòu)設(shè)置
圖6 RF 網(wǎng)絡(luò)結(jié)構(gòu)示意圖
基于Python 平臺(tái)的TensorFlow 庫(kù)設(shè)計(jì)開發(fā)FCNN、CNN 分類 器,基 于Python 平臺(tái)的Sklearn 庫(kù)設(shè)計(jì)開發(fā)RF 分類器。3 個(gè)網(wǎng)絡(luò)結(jié)構(gòu)在相同配置下進(jìn)行測(cè)試訓(xùn)練,具體開發(fā)運(yùn)行環(huán)境如表5 所示:
表5 深度學(xué)習(xí)模型開發(fā)運(yùn)行軟硬件環(huán)境
混淆矩陣是在圖像精度評(píng)價(jià)過(guò)程中常用的一種可視化方式,其為二維矩陣,每一列代表了實(shí)際應(yīng)該獲取的信息,每一列數(shù)據(jù)總和為該類目標(biāo)的測(cè)試集數(shù)量,每一行代表了模型預(yù)測(cè)獲取的信息,每一行數(shù)據(jù)總和為預(yù)測(cè)的該類目標(biāo)數(shù)量。矩陣對(duì)角線上的數(shù)值為對(duì)應(yīng)目標(biāo)正確分類的數(shù)量?;煜仃嚳梢灾庇^看出每一類目標(biāo)的分類效果并利于分析影響分類精度的原因。利用混淆矩陣計(jì)算分類精度的公式如式1 所示。
式中:P為分類精度,i和j分別為行數(shù)與列數(shù),L為需要計(jì)算的混淆矩陣,n 為混淆矩陣的維度。
利用上述網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置得到FCNN、CNN、RF 的混淆矩陣分別如表6、表7、表8 所示。
表6 FCNN 混淆矩陣
表7 CNN 混淆矩陣
表8 RF 混淆矩陣
meadow sparseres idential stadium 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 24 0 0 1 39 0 0 0 23
根據(jù)混淆矩陣可以分析出,最容易被錯(cuò)分的為desert 和bareland 類,如圖7(a)、圖7(b)所示,錯(cuò)分原因?yàn)閮深愒谡w的色調(diào)形狀接近,紋理上都沒(méi)有太大的起伏,導(dǎo)致特征提取結(jié)果相似,使得精度較低。beach 類是效果較好的,如圖7(c)所示,從影像可以看出,這一類有清晰的分界線,沙灘與大海的界限清晰,梯度下降明顯,便于特征提取,因此此類別精度高。類似于人,機(jī)器分類的時(shí)候也需要有明顯的特征才能給出滿意的效果。影響分類精度的不僅僅是算法,數(shù)據(jù)集的分類效果也對(duì)精度有一定影響。(圖7(a)(b)(c),見(jiàn)中間彩頁(yè))
由混淆矩陣結(jié)合式1 可以得到FCNN、CNN、RF的分類精度分別為62.2%;89.1%;80%,可見(jiàn)CNN 的精度是這三類中精度最高的。結(jié)合網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置分析,F(xiàn)CNN 與RF 網(wǎng)絡(luò)的輸入是一維數(shù)據(jù),而CNN的數(shù)據(jù)就是對(duì)應(yīng)圖像的二維數(shù)據(jù),將二維數(shù)據(jù)轉(zhuǎn)換到一維數(shù)據(jù)會(huì)丟失圖像一些空間信息,因此CNN 相比于FCNN 與RF 更能反映圖像的真實(shí)空間信息,所以CNN會(huì)得到更高的精度。
深度學(xué)習(xí)等算法已經(jīng)融入到各行各業(yè),不同的算法各自展現(xiàn)著不同的優(yōu)勢(shì),其發(fā)展離不開基礎(chǔ)的機(jī)器學(xué)習(xí)算法,基礎(chǔ)的機(jī)器學(xué)習(xí)算法經(jīng)過(guò)不斷的開發(fā)與新思想的注入,衍生出新的算法。為研究基礎(chǔ)的機(jī)器學(xué)習(xí)算法對(duì)于目標(biāo)的識(shí)別精度如何,本文基于Python平臺(tái)的TensorFlow庫(kù)與sklearn庫(kù)對(duì)FCNN、CNN 和RF 三種基礎(chǔ)機(jī)器學(xué)習(xí)算法進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì),并利用一組光學(xué)圖像進(jìn)行訓(xùn)練與測(cè)試,最終根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)與混淆矩陣分析得出結(jié)論:CNN對(duì)于光學(xué)圖像的識(shí)別精度最高。CNN通過(guò)卷積核對(duì)二維圖像進(jìn)行特征提取,而FCNN和RF在輸入的時(shí)候已經(jīng)把圖像轉(zhuǎn)換成一維向量,不利于二維信息的提取,因此CNN作為目標(biāo)識(shí)別和分類的基礎(chǔ)型機(jī)器學(xué)習(xí)模型是合理的。
遙感目標(biāo)分類和識(shí)別的深度學(xué)習(xí)方法發(fā)源自通用的圖像識(shí)別領(lǐng)域,對(duì)于遙感的定量化信息使用不足,甚至在光譜、量化等級(jí)方面有所損失,圖像數(shù)據(jù)被壓縮會(huì)降低分類精度,相反引入附加數(shù)據(jù)或許能夠提高目標(biāo)識(shí)別精度。相信未來(lái)定量遙感和深度學(xué)習(xí)的結(jié)合,有助于提高遙感目標(biāo)分類精度。