李亞飛,董紅斌
(哈爾濱工程大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150001)
遙感圖像分類就是依據(jù)遙感數(shù)據(jù)的各種信息,通過采用某種算法挖掘每類地物的獨(dú)有特征并將其分割為互不相交的子空間,進(jìn)而將各個(gè)像素劃分到對(duì)應(yīng)的子空間。但對(duì)于高分辨率的遙感圖像,地物的光譜特征越來越豐富,“同物異譜”和“異物同譜”現(xiàn)象更加明顯[1]。因此傳統(tǒng)的參數(shù)化方法如最小距離分類法(minimum distance classification,MDC)[2]、極大似然分類法(maximum likelihood classification,MLC)[3]等分類準(zhǔn)確度降低。而非參數(shù)化方法如支持向量機(jī)[4]、人工神經(jīng)網(wǎng)絡(luò) (artificial neural network,ANN)[5]、決策樹 (decision tree,DT)[6]等在高分辨率遙感影像分類中得到廣泛的應(yīng)用。然而這些算法都屬于淺層學(xué)習(xí)算法[7],很難有效地表達(dá)復(fù)雜函數(shù),缺少對(duì)復(fù)雜樣本的適應(yīng)性,并且分類器模型的參數(shù)無法估計(jì)或估計(jì)不準(zhǔn)確,導(dǎo)致分類效果不理想[8]。
2006年,加拿大多倫多大學(xué)教授,機(jī)器學(xué)習(xí)領(lǐng)域的泰斗Hinton[9]和他的學(xué)生Salakhutdinov在《科學(xué)》上發(fā)表了一篇文章,掀起了深度學(xué)習(xí)在學(xué)術(shù)界和工業(yè)界的浪潮。深度學(xué)習(xí)是通過建立一種類似人腦分層的模型結(jié)構(gòu),對(duì)輸入信息逐層進(jìn)行特征提取,層級(jí)越深,提取的特征越抽象復(fù)雜,稱為深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNN)[10]。如今,深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)的一個(gè)重要分支,已在圖像識(shí)別、語音識(shí)別和自然語言處理等領(lǐng)域取得了巨大的成功[11-13]。
目前,國(guó)內(nèi)將深度神經(jīng)網(wǎng)絡(luò)應(yīng)用到遙感圖像分類中的研究工作相對(duì)較少。因此,本文提出一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的遙感圖像分類方法。針對(duì)單源特征無法提供更多有效信息的問題,本文設(shè)計(jì)了一種多源多特征融合方法,該方法將遙感圖像的光譜特征、紋理特征、空間結(jié)構(gòu)特征等按空間維度以向量或矩陣的形式進(jìn)行融合,并以融合的特征訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)模型。實(shí)驗(yàn)結(jié)果表明:該融合方法能使CNN模型學(xué)習(xí)到更抽象、更具代表性的高層特征,有效提高了分類精度,獲得最優(yōu)的分類效果。
卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的一種典型模型,是一種多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。它主要由輸入層、卷積層、下采樣層(池化層)、全連接層和輸出層組成。如圖1所示。
圖 1 卷積神經(jīng)網(wǎng)絡(luò)示意Fig. 1 Schematic diagram of CNN
輸入層用于接收原始圖像,卷積層用于提取圖像的特征并減少噪聲的影響。假設(shè)輸入的原始圖像為,表示第i 層的特征圖,則。假設(shè)是第i層卷積層,則式中:表示第i層卷積核的權(quán)重;運(yùn)算符·表示與第層的特征圖進(jìn)行卷積操作;表示第i層的偏置向量;為非線性激活函數(shù),通常采用ReLU函數(shù),ReLU表達(dá)式為
下采樣層緊跟卷積層之后,基于圖像的局部相關(guān)性對(duì)特征圖進(jìn)行降維,同時(shí)保持特征的尺度不變性。假設(shè)為下采樣層特征圖,則
池化方式一般有兩種,最大池化(max pooling)和平均池化(mean pooling)。
經(jīng)過多個(gè)卷積層和下采樣層的交替連接,全連接層對(duì)提取的特征進(jìn)一步降維,最后輸出層依據(jù)全連接層提取的特征向量輸出樣本對(duì)應(yīng)的標(biāo)簽。
卷積神經(jīng)網(wǎng)絡(luò)分類過程主要是網(wǎng)絡(luò)的訓(xùn)練過程,相當(dāng)于人腦的學(xué)習(xí)過程。分為兩個(gè)階段,1)前向傳播,實(shí)現(xiàn)樣本從輸入層到輸出層的特征學(xué)習(xí);2)反向傳播,依據(jù)損失函數(shù)計(jì)算出輸出值與期望值之間的誤差,又稱為“殘差”[14],并根據(jù)梯度下降法調(diào)整網(wǎng)絡(luò)參數(shù)。目前CNN中使用廣泛的損失函數(shù)為交叉熵(cross-entropy,CE)損失函數(shù),其計(jì)算公式為
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練目標(biāo)是通過梯度下降法最小化網(wǎng)絡(luò)的損失函數(shù)。在整個(gè)訓(xùn)練過程中,經(jīng)過前向傳播計(jì)算損失值,然后通過梯度下降進(jìn)行反向傳播,逐層更新每一層的訓(xùn)練參數(shù)和。參數(shù)更新公式定義為
AlexNet網(wǎng)絡(luò)模型是由Alex Krizhevsky于2012年設(shè)計(jì)的一種深度卷積神經(jīng)網(wǎng)絡(luò)模型[15],鑒于該模型層數(shù)不是很深,并且有很好的分類性能,因此本文以AlexNet模型為基礎(chǔ),構(gòu)建了適用于遙感圖像分類的CNN模型,其模型結(jié)構(gòu)如圖2所示。
圖 2 本文模型示意Fig. 2 Schematic diagram of our model
與AlexNet的不同之處在于,設(shè)計(jì)的CNN模型去掉了一部分卷積層和池化層,原因在于池化層的主要作用是用來降維,而本文是對(duì)遙感圖像進(jìn)行像素級(jí)的分類,為了防止訓(xùn)練樣本在高層次的尺寸過小,只保留最后一層的池化層。3個(gè)卷積層參數(shù)設(shè)置為 32@3×3、64@2×2 和 64@2×2,步長(zhǎng)均為1。池化層采用大小為2×2,步長(zhǎng)為2的最大池化。兩個(gè)全連接層的節(jié)點(diǎn)個(gè)數(shù)分別設(shè)置為256和128,最后以Softmax層作為網(wǎng)絡(luò)的輸出層。整個(gè)網(wǎng)絡(luò)的學(xué)習(xí)率初始化為0.1,采用指數(shù)衰減法,衰減因子為0.1,權(quán)重衰減因子為0.98,Dropout參數(shù)訓(xùn)練時(shí)設(shè)置為0.5,測(cè)試時(shí)設(shè)置為1,采用Adam優(yōu)化算法。
目前大多數(shù)分類方法都是依據(jù)人工設(shè)計(jì)的單源特征來進(jìn)行分類,由于單源特征往往不能很好地反映出所有地物類別之間的差異,從而導(dǎo)致分類算法的泛化性能較差,針對(duì)此問題,本文設(shè)計(jì)了一種多源多特征融合的方法。為了更形象地說明本文的融合方法,給出了如圖3所示的流程圖。對(duì)于每一個(gè)像素點(diǎn),考慮了其周圍大小為的 鄰域像素,這有助于消除圖像的斑點(diǎn)噪聲。首先利用PCA對(duì)原始數(shù)據(jù)進(jìn)行變換,然后選擇幾乎包含所有波段95%以上信息的前3個(gè)主成分(PCA1、PCA2、PCA3)作為變換后的原始圖像。
圖 3 基于CNN模型的分類方法流程Fig. 3 Flowchart of the CNN-based classification approach
接著提取訓(xùn)練樣本對(duì)應(yīng)的光譜值組成一維光譜特征向量A,同時(shí)計(jì)算NDVI,組成一維特征向量B。
其次對(duì)每幅圖像計(jì)算灰度共生矩陣(gray level co-occurrence matrix,GLCM)[16],并基于 GLCM提取均值、方差、熵、角二階距、相關(guān)性、相異性、對(duì)比度和協(xié)同性共8種二階概率統(tǒng)計(jì)的紋理濾波,按照提取順序?qū)⑵浣M成紋理特征矩陣。
最后對(duì)圖像進(jìn)行K-T變換,提取亮度、綠度和濕度3個(gè)分量的數(shù)據(jù)組成特征矩陣D。
按照?qǐng)D3所描述的多源多特征融合方法,將A、B、C、D按照組成一個(gè)大小為9×13×3的特征融合矩陣,并將此矩陣輸入CNN中進(jìn)行特征學(xué)習(xí),最后進(jìn)行分類處理。
本文采用TensorFlow1.1.0開源框架,搭建環(huán)境為個(gè)人PC,操作系統(tǒng)為Ubuntu16.04,處理器為Intel(R) Core(TM) i5-4440 CPU@3.10 GHz,運(yùn)行內(nèi)存為8 GB。
研究區(qū)域選擇位于黑龍江省松嫩平原西部,烏裕爾河下游的扎龍濕地自然保護(hù)區(qū)(46°52′~47°32′N,123°47′~124°37′E)。根據(jù)該地區(qū)實(shí)際地物分布情況,分為耕地、草地、濕地、水域、居民區(qū)以及裸地共6類。本文使用2016年9月的Landsat-8衛(wèi)星遙感圖像,共選擇16 160個(gè)像素級(jí)訓(xùn)練樣本,其中每類地物中隨機(jī)選擇 1/4 的數(shù)據(jù)樣本作為驗(yàn)證集,剩余數(shù)據(jù)樣本作為訓(xùn)練集。
為了驗(yàn)證本文方法的有效性,實(shí)驗(yàn)將與其他文獻(xiàn)中的方法進(jìn)行對(duì)比,如SVM、NN、RF、DBN和CNN(Patch)。其中CNN(Patch)方法是一種基于區(qū)域塊的CNN模型,該模型是以像素點(diǎn)周圍5×5大小的鄰域塊作為單個(gè)樣本的輸入,可看作是為樣本加入了鄰域信息。除此之外,在本文方法的基礎(chǔ)上,又設(shè)計(jì)了另外兩種對(duì)比實(shí)驗(yàn)?zāi)P?,一種是只將光譜特征作為CNN的輸入(CNN(ST)),該模型是為了驗(yàn)證本文的多源多特征融合方法的有效性;另外一種是不采用PCA的多源多特征融合模型(CNN(SST)),該模型主要是為了驗(yàn)證PCA是否能夠縮短模型的訓(xùn)練時(shí)間,加快收斂速度。
表1展示了本文方法分類結(jié)果的混淆矩陣,由此可知,CNN(PCA)最終取得了97.83%的總體正確率,Kappa系數(shù)達(dá)到了0.973 6。對(duì)于單類地物,PA和UA都超過了90%,某些地物的分類精度達(dá)到了最優(yōu),例如水域和裸地,兩者的PA和UA都達(dá)到了99%以上。但是對(duì)于耕地類別來說,分類精度相對(duì)差一些,本文模型將其錯(cuò)分為濕地類別的樣本數(shù)量較多,分析原因是農(nóng)作物的光譜值范圍和濕地的光譜值范圍存在重疊,即所謂的“異物同譜”現(xiàn)象嚴(yán)重,導(dǎo)致模型難以有效區(qū)分耕地和濕地。
表 1 CNN(PCA)分類結(jié)果的混淆矩陣Table 1 Confusion matrix of CNN(PCA) classification results
表2展示了本文方法與其他分類方法的實(shí)驗(yàn)結(jié)果對(duì)比,從表中可知,本文方法取得了最優(yōu)的分類效果。相比于SVM、NN和RF,CNN(PCA)總體精度分別提高了約13.61%、9.34%和7.3%,Kappa系數(shù)提高了約20.42%、13.16%和10.02%,這說明CNN的分類效果要遠(yuǎn)遠(yuǎn)優(yōu)于淺層分類算法,這得益于CNN獨(dú)特的結(jié)構(gòu),如局部連接、權(quán)值共享、池化等。這些特點(diǎn)使得CNN擁有某種尺度的位移、尺度和形變不變性,其強(qiáng)大的學(xué)習(xí)能力和容錯(cuò)能力使得CNN能夠自動(dòng)學(xué)習(xí)到更抽象、更具代表性的特征,從而獲得更高的分類精度。而淺層分類算法卻不能在信息不充分或信息量少時(shí)從原始樣本中獲得更多更有用的信息。
同樣,相比于其他深度學(xué)習(xí)方法,CNN(PCA)的分類精度也要高于DBN和CNN(Patch)。分析原因是DBN采用的是無監(jiān)督的方式逐層訓(xùn)練網(wǎng)絡(luò),最后采用有監(jiān)督的方式進(jìn)行微調(diào),這種逐層訓(xùn)練方式使得網(wǎng)絡(luò)參數(shù)存在更大的隨機(jī)性,不利于網(wǎng)絡(luò)的整體優(yōu)化。而對(duì)于CNN(PCA),該方法雖然也是采用CNN模型,但是輸入的信息只考慮了樣本周圍的光譜信息,而沒有考慮圖像的紋理特征,恰恰紋理特征最能反映不同類別之間的差異,所以導(dǎo)致分類效果較差。從另一個(gè)方面也能說明這一點(diǎn),如本文設(shè)計(jì)的對(duì)比實(shí)驗(yàn)?zāi)P虲NN(ST)和CNN(SST),前者只考慮了樣本的光譜特征,而后者將光譜、紋理特征相融合,這使得CNN(SST)比CNN(ST)總體精度提高了約7.2%,Kappa系數(shù)提高了約5.29%。而且,CNN(SST)方法能有效改善CNN(ST)中嚴(yán)重的“椒鹽”現(xiàn)象,對(duì)比效果如圖4所示。
表 2 不同分類方法分類效果比較Table 2 Comparison of different classification methods
圖 4 分類效果對(duì)比Fig. 4 Comparison of classification results
圖5和圖6分別顯示了本文設(shè)計(jì)的對(duì)比模型關(guān)于訓(xùn)練時(shí)間和訓(xùn)練精度的對(duì)比結(jié)果。由圖5可知,采用PCA變換后,相比不使用PCA的CNN(SST)方法訓(xùn)練時(shí)間減少了約80%,不僅訓(xùn)練時(shí)間大幅度縮短,同時(shí)總體精度也相對(duì)提高了約3.49%。這與CNN模型本身的網(wǎng)絡(luò)結(jié)構(gòu)有關(guān),輸入的樣本信息維度越高,模型需要訓(xùn)練的參數(shù)個(gè)數(shù)就會(huì)呈幾何式增長(zhǎng),從而導(dǎo)致訓(xùn)練速度慢,訓(xùn)練時(shí)間長(zhǎng)。而由圖6可知,CNN(PCA)大約在迭代300步時(shí)模型性能趨于穩(wěn)定,而CNN(ST)和CNN(SST)分別在2 000步和1 100步以后才趨于穩(wěn)定,這說明PCA降維以后,模型收斂的速度更快,性能更好。原因是經(jīng)過PCA變換以后,使得類間差距增大,類內(nèi)差距縮小,同時(shí)能夠在一定程度上消除樣本中的噪聲信息,從而加快了模型收斂速度,提高了總體分類精度。圖7為CNN(PCA)方法的最終分類效果圖。
圖 5 不同方法性能對(duì)比Fig. 5 Performance comparison of different methods
圖 6 不同方法訓(xùn)練精度對(duì)比Fig. 6 Training accuracy comparison of different methods
圖 7 CNN(PCA)分類效果Fig. 7 Classification results of CNN(PCA)
本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的遙感圖像分類方法,并針對(duì)單源特征無法提供更多有用信息的問題,設(shè)計(jì)了一種多源多特征融合方法,該方法能夠有效融合遙感圖像的光譜特征、紋理特征和空間結(jié)構(gòu)特征。通過與SVM、NN、RF、DBN和CNN(Patch)等分類方法進(jìn)行比較,說明CNN的局部連接、權(quán)值共享和池化等獨(dú)特結(jié)構(gòu)使得它能夠自動(dòng)挖掘遙感圖像的空間分布規(guī)律,學(xué)習(xí)到遙感圖像更多更本質(zhì)的特征,從而獲得最優(yōu)的分類準(zhǔn)確率。此外,通過本文設(shè)計(jì)的對(duì)比模型CNN(ST)和CNN(SST),驗(yàn)證了本文設(shè)計(jì)的多源多特征融合方法能為CNN提供更多的有用信息,在加快模型收斂速度的同時(shí)進(jìn)一步提高了模型的分類精度。
雖然通過本文研究可以發(fā)現(xiàn)CNN分類方法能夠有效提高遙感圖像的分類精度,但是作為一種新的機(jī)器學(xué)習(xí)方法,仍然存在很多不完善的地方,主要體現(xiàn)在網(wǎng)絡(luò)模型的參數(shù)多、訓(xùn)練時(shí)間長(zhǎng);網(wǎng)絡(luò)模型的結(jié)構(gòu)設(shè)計(jì)沒有完善的理論支撐,只能通過反復(fù)實(shí)驗(yàn)來選取最優(yōu)參數(shù)。下一步,將以如何提高模型訓(xùn)練速度和尋找最優(yōu)參數(shù)作為研究的方向。