盧涵宇*,胡超,張濤2,卞林3,袁詠儀4,郭彩
(1.貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院, 貴州貴陽550025;2.貴州力創(chuàng)科技發(fā)展有限公司, 貴州貴陽550018;3.貴州信鴿科技有限公司, 貴州貴陽550025;4.貴州六盤水三力達(dá)科技有限公司, 貴州六盤水553001)
近年來,隨著遙感技術(shù)的發(fā)展,高分辨率遙感影像(high resolution remote sensing images, HRRSI)獲取難度降低,對應(yīng)遙感影像所反映地面的場景、細(xì)節(jié)也越來越豐富,各類場景間的相似性也隨之增大,使得遙感影像場景分類的難度也越來越大。諸多研究者對遙感影像分類問題付出了大量的時間和精力。
傳統(tǒng)的分類算法,如貝葉斯模型、SVM、KNN等分類方法,無法對遙感影像進(jìn)行準(zhǔn)確地分類。隨著2012年深度學(xué)習(xí)算法Alex Net[1]贏得圖像分類比賽ILSVRC冠軍,深度學(xué)習(xí)開始受到學(xué)術(shù)界的廣泛關(guān)注,伴隨著GPU的普及,各類優(yōu)秀的圖像分類算法如VGGNet[2]、GoogLeNet[3]、ResNet[4]等得到快速地發(fā)展,同時也促進(jìn)了遙感影像場景分類的發(fā)展。黨宇等[5]基于面向?qū)ο蟮膱D斑分類體系,通過微調(diào)Alex Net模型實現(xiàn)了對地表覆蓋分類圖斑的評價。王鑫等[6]提出一種基于深度卷積神經(jīng)網(wǎng)絡(luò)和多核學(xué)習(xí)的遙感影像分類方法,解決了深度學(xué)習(xí)的遙感影像分類方法不能有效融合多種深度特征及分類器參數(shù)選擇困難等難題。陳斌等[7]通過基于遷移學(xué)習(xí)的中分辨率遙感影像自動分類方法解決了傳統(tǒng)基于像素的中分辨率遙感影像分類過程存在椒鹽噪聲的問題,結(jié)果表明深度學(xué)習(xí)分類方法能夠有效抑制地物在分類過程中出現(xiàn)的像元混分現(xiàn)象。2017年,SABOUR等[8]提出膠囊網(wǎng)絡(luò)(capsule networks,CapsNet)的網(wǎng)絡(luò)結(jié)構(gòu),由于CapsNet在訓(xùn)練過程中能夠有效提取圖像中的特征為多維向量,所以對比CNN需要大量的訓(xùn)練樣本而言具有明顯的優(yōu)勢。LI等[9]通過CNN, CapsNet, SMDTR-CNN, SMDTR-CapsNet進(jìn)行多種變化和多場景類的HSRRS圖像分類對比,結(jié)果表明SMDTR-CNN具有高達(dá)95 %的整體精度,CapsNet在遙感影像的場景分類中表現(xiàn)良好。張文豪[10]通過CapsNet網(wǎng)絡(luò)解決了CNN無法對高光譜影像內(nèi)部數(shù)據(jù)的空間層次關(guān)系做出正確判斷的問題。郝子煜等[11]對比了CapsNet與GoogLeNet在手指語識別任務(wù)中的表現(xiàn),結(jié)果表明在添加了噪聲的條件下,CapsNet模型優(yōu)于GoogLeNet模型,其平均識別率達(dá)到了95.4 %。
目前,遙感影像數(shù)據(jù)集的樣本整體偏少,加上遙感影像的空間信息比較豐富,利用神經(jīng)網(wǎng)絡(luò)進(jìn)行場景分類過程中,難以取得很高的分類識別精度;雖然CapsNet還處于發(fā)展階段,研究人員將其用于遙感影像場景分類的案例還比較少,但在前人的研究中CapsNet能夠在圖像分類中具有良好的分類準(zhǔn)確度,同時,CapsNet在訓(xùn)練過程中能夠提取圖像中的特征為多維向量,在數(shù)據(jù)較少的情況下進(jìn)行分類仍然擁有較高分類精度,所以本文以城市區(qū)域高分辨率遙感影像作為數(shù)據(jù)集,將CapsNet應(yīng)用于該數(shù)據(jù)集的場景分類中,為下一步深度學(xué)習(xí)打下基礎(chǔ)。
當(dāng)前基于計算機(jī)圖像分類的方法主要采用卷積神經(jīng)網(wǎng)絡(luò)分類方法,其發(fā)展于1998年LECUN等[12]提出的LeNet-5模型,一個完整的卷積神經(jīng)網(wǎng)絡(luò)通常包括輸入層、卷積層、池化層和全連接層。隨著GPU與深度學(xué)習(xí)框架的發(fā)展,無數(shù)學(xué)者經(jīng)研究發(fā)現(xiàn),通過增加網(wǎng)絡(luò)層數(shù)、改變激活函數(shù)、增加反向傳播等方法改進(jìn)網(wǎng)絡(luò)能夠解決現(xiàn)實中面臨的很多問題,致使卷積神經(jīng)網(wǎng)絡(luò)得到快速地發(fā)展。
在經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)中,當(dāng)需要模型輸出質(zhì)量偏好的解決辦法就是通過增加模型的訓(xùn)練深度或者增加神經(jīng)元的個數(shù),使得網(wǎng)絡(luò)層次更深或者寬度更寬,就容易產(chǎn)生以下問題:首先是網(wǎng)絡(luò)訓(xùn)練參數(shù)過多,使訓(xùn)練過程容易產(chǎn)生過擬合;其次是網(wǎng)絡(luò)設(shè)置越大,參數(shù)越多,導(dǎo)致計算量越大,難以訓(xùn)練;最后是網(wǎng)絡(luò)越深,越難以對模型進(jìn)行優(yōu)化。
SZEGEDY等[13]提出了GoogLeNet (InceptionV3)模型解決了以上的缺陷,InceptionV3共有46層,由11個Inception模塊組成,Inception模塊中將較大的二維卷積拆分為較小的一維卷積,模型的參數(shù)變少,同時模型能夠處理更多、更豐富的空間特征,增加特征的多樣性。其中InceptionV3對Inception模塊進(jìn)行了優(yōu)化,具有三種不同的結(jié)構(gòu),如圖1所示。
(a)35×35結(jié)構(gòu)
(b) 17×17結(jié)構(gòu)
(c) 8×8結(jié)構(gòu)
GoogLeNet模型層數(shù)及復(fù)雜度都很高,利用數(shù)據(jù)集從頭開始訓(xùn)練,需要龐大的標(biāo)注數(shù)據(jù)集和大量的訓(xùn)練時間,由于本實驗數(shù)據(jù)集數(shù)據(jù)并不龐大,其結(jié)果僅用于對比CapsNet訓(xùn)練結(jié)果,因此,遷移學(xué)習(xí)成為此次對比實驗的首選,通過將訓(xùn)練好的InceptionV3模型的權(quán)值和參數(shù)運(yùn)用到本實驗數(shù)據(jù)集,并微調(diào)參數(shù)使得模型能夠適應(yīng)本數(shù)據(jù)集,進(jìn)而節(jié)省大量的訓(xùn)練時間。
在卷積神經(jīng)網(wǎng)絡(luò)中,由于其自身的特性能夠?qū)嫶蟮臄?shù)據(jù)特征進(jìn)行不斷地降維,并通過池化過程對網(wǎng)絡(luò)進(jìn)行加速,使得卷積神經(jīng)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)大圖像數(shù)據(jù)的機(jī)器分類成為可能。正因如此,在使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練過程中,由于池化過程是對特征圖進(jìn)行抽樣,從而導(dǎo)致圖像中的一些有效信息損失,所以文獻(xiàn)[8]為解決圖像分類過程中將數(shù)據(jù)進(jìn)行丟棄的問題,提出了CapsNet網(wǎng)絡(luò),CapsNet用向量替換卷積神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元以保持特征之間的空間關(guān)系,解決了卷積神經(jīng)網(wǎng)絡(luò)由于池化過程所失去的一些細(xì)節(jié)信息,從而導(dǎo)致分類結(jié)果不準(zhǔn)確的問題。
1.2.1 CapsNet網(wǎng)絡(luò)模型
CapsNet由多個膠囊組成,膠囊對輸入的數(shù)據(jù)進(jìn)行一些非常復(fù)雜的內(nèi)部運(yùn)算,然后將運(yùn)算結(jié)果封裝為一個包含了豐富特征信息(例如:對象位置,大小,傾斜狀態(tài)、形變等)的向量;低層輸出的參數(shù)到達(dá)高層膠囊后,會變?yōu)閷斎雽嶓w的狀態(tài)預(yù)測,當(dāng)預(yù)測結(jié)果一致時,則輸出這一層的結(jié)果。
圖2顯示了Hinton膠囊網(wǎng)絡(luò)的架構(gòu),第一層是一個具有256層,卷積核大小為9×9,激活函數(shù)采用Relu函數(shù)的卷積層,使得膠囊網(wǎng)絡(luò)能夠?qū)D像的基本信息進(jìn)行獲取,傳遞到高層神經(jīng)元中去;第二層是PrimaryCaps層,該層中B1和B2取決于輸入圖像的大小,每個膠囊的大小為D1×D2,其計算結(jié)果基于B1和B2,F(xiàn)表示主膠囊中的維數(shù),E1和E2分別表示PrimaryCaps和DigitCaps(digit capsule)中膠囊的輸出矢量大小,C表示最終判別的種類數(shù)量。網(wǎng)絡(luò)中從PrimaryCaps和DigitCaps是全連接的,不像卷積神經(jīng)網(wǎng)絡(luò)是標(biāo)量與標(biāo)量的連接,此層的連接是向量與向量的連接,通過動態(tài)路由算法迭代計算后輸出。DigitCaps到最終的輸出,其長度表示其表征的內(nèi)容出現(xiàn)的概率,和經(jīng)典神經(jīng)網(wǎng)絡(luò)不同的是最后的結(jié)果是取輸出向量的L2范數(shù),而不是輸出的概率總和為1。
圖2 CapsNet結(jié)構(gòu)Fig.2 CapsNet structure
1.2.2 膠囊層
CapsNet 是一個三層的淺層網(wǎng)絡(luò),由一層卷積層和兩層膠囊層組成[10]。卷積層的作用是提取輸入實體的特征;將獲取的特征圖傳遞至后續(xù)的膠囊層中,其工作流程見圖3。
由圖2和圖3可以得出CapsNet的全連接層的輸入為結(jié)合了耦合系數(shù)的線性加權(quán)求和,其計算公式如下:
(1)
其中:
(2)
(3)
(4)
vj=squash(sj),
(5)
即:
(6)
式(6),表示通過膠囊輸出的向量經(jīng)Squash進(jìn)行擠壓,使其結(jié)果v趨近于[0,1]之間,用于評價分類結(jié)果的好與壞,即用于預(yù)測分類結(jié)果的概率。
本次實驗采用的高分辨率遙感影像數(shù)據(jù)集是通過收集來自AID、UCMerced_Land數(shù)據(jù)集和通過谷歌地球截取的部分區(qū)域場景圖所構(gòu)成的用于城市區(qū)域的場景分類國家數(shù)據(jù)庫,包括高架橋,橋梁,裸地,耕地,森林,商業(yè)區(qū),居民區(qū),池塘,機(jī)場與河流;并統(tǒng)一大小為128×128,3通道像素的圖像,其中數(shù)據(jù)集的實例如圖4所示,所選數(shù)據(jù)集中存在相似性,所以在進(jìn)行城市區(qū)域場景分類中變得難以實現(xiàn)。
(a) 河流
(b) 耕地
(c) 高架橋
(d) 橋梁
(e) 商業(yè)區(qū)
(f) 裸地
(g) 森林
(h) 池塘
(i) 機(jī)場
(j)居民區(qū)
為了檢驗CapsNet的性能,利用TensorFlow開源架構(gòu)設(shè)計和實現(xiàn)深度神經(jīng)網(wǎng)絡(luò)GoogLeNet與之作對比,并對數(shù)據(jù)集進(jìn)行擴(kuò)充處理,使得數(shù)據(jù)在處理過程中能夠具有多樣性和較大的數(shù)據(jù)樣本,其增強(qiáng)內(nèi)容包括:圖像歸一化、旋轉(zhuǎn)、反轉(zhuǎn)、色相的調(diào)整。
本實驗配置:采用ADM2600X處理器,核心3.6 GHz,一塊GTX1660TI GPU,操作系統(tǒng)為Win10,采用TensorFlow1.11開源深度學(xué)習(xí)框架作為實驗環(huán)境??紤]到模型間存在差異,所以為了使得訓(xùn)練效果能夠比較直觀對比,統(tǒng)一設(shè)置模型的學(xué)習(xí)率為0.01;數(shù)據(jù)集按照8∶1∶1隨機(jī)分為訓(xùn)練集、驗證集、測試集。
實驗中HSRRS圖像數(shù)據(jù)集與ImageNet圖像數(shù)據(jù)集之間存在差異,如果直接采用InceptionV3所獲取的特征數(shù)據(jù)做分類,難以得到讓人滿意的結(jié)果[14],所以在InceptionV3獲取的特征數(shù)據(jù)后加入特征融合層,能夠得到更加多樣化的特征顯示[15]。具體場景分類的過程如圖5所示。
圖5 GoogLeNet分類框架Fig.5 GoogLeNet classification framework
GoogLeNet模型訓(xùn)練過程的訓(xùn)練損失和驗證集準(zhǔn)確率變化如圖6所示。此模型訓(xùn)練時間為5 h,經(jīng)過200個Epoch后Loss下降到0.013 5左右。為了解模型的分類能力,通過驗證集對模型進(jìn)行了分類測試,經(jīng)過200個Epoch后準(zhǔn)確率達(dá)到96.74 %。然后使用測試集對GoogLeNet模型進(jìn)行測試,得到最終的分類精度為95.9 %。說明通過增強(qiáng)數(shù)據(jù)集后進(jìn)行遷移學(xué)習(xí)能夠取得良好的分類效果。
(a) 訓(xùn)練損失
(b) 驗證集準(zhǔn)確率
圖6 GoogLeNet的訓(xùn)練損失、驗證集準(zhǔn)確率
Fig.6 Variations in loss in training and accuracy in validation epoch of GoogLeNet
圖7顯示了城市區(qū)域中遙感影像數(shù)據(jù)集分類的CapsNet架構(gòu)。該體系結(jié)構(gòu)可以分為兩個主要層:
① 卷積層包括卷積(卷積核3×3,步長為1,采用SAME填充模式),激活函數(shù)(采用Relu)和最大池化層(核為2×2,步長為2)。這里采用最大池化層的目的有兩個,一是目前CapsNet還不能支持大尺寸圖像數(shù)據(jù)集的分類,通過池化層對輸入圖像的特征圖進(jìn)行壓縮;二是能夠簡化網(wǎng)絡(luò)計算的復(fù)雜度并保留輸入圖像的有用的特征信息。
② 膠囊層,包括PrimaryCaps層、DigitCaps層、全連接層。膠囊層的功能類似于CNN中的完全連接層,但它可以獲得向量而不是標(biāo)量。
圖7 CapsNet分類框架Fig.7 CapsNet classification framework
CapsNet模型訓(xùn)練過程的訓(xùn)練損失和驗證集準(zhǔn)確率變化如圖8所示。此模型訓(xùn)練時間為3 d,經(jīng)過200個Epoch后Loss下降到0.02。為了解模型的分類能力,通過驗證集對模型進(jìn)行了分類測試,經(jīng)過200個Epoch后準(zhǔn)確率達(dá)到94.64 %。至此,上述數(shù)據(jù)表明該訓(xùn)練和測試的CapsNet模型適用于城市區(qū)域的場景分類。然后使用測試集對CapsNet模型進(jìn)行測試,得到最終的分類精度為92.6 %。說明CapsNet應(yīng)用于城市區(qū)域內(nèi)遙感影像分類能夠取得較好的分類效果。
(a) 訓(xùn)練損失
(b) 驗證集準(zhǔn)確率
圖8 CapsNet的訓(xùn)練損失、驗證集準(zhǔn)確率
Fig.8 Variations in loss in training and accuracy in validation epoch of CapsNet
本文通過將CapsNet應(yīng)用于城市遙感影像場景分類中,并于GoogLeNet進(jìn)行對比實驗發(fā)現(xiàn),對數(shù)據(jù)集進(jìn)行擴(kuò)充后,利用預(yù)訓(xùn)練 InceptionV3 模型在遙感影像數(shù)據(jù)集上進(jìn)行遷移識別訓(xùn)練,取得了較好的分類準(zhǔn)確率。實驗結(jié)果顯示模型在測試集上最終的準(zhǔn)確率為95.9 %,同時,在CapsNet模型上測試集的準(zhǔn)確率為92.6 %,具有較高的分類準(zhǔn)確率,說明深度神經(jīng)網(wǎng)絡(luò)能夠較好地區(qū)分城市區(qū)域內(nèi)的場景問題;對比后發(fā)現(xiàn)將數(shù)據(jù)集應(yīng)用于僅三層的淺層CapsNet網(wǎng)絡(luò)就能夠擁有較高的分類準(zhǔn)確率,并達(dá)到和GoogLeNet擁有接近的分類準(zhǔn)確率,說明CapsNet在遙感影像場景分類中具有巨大的發(fā)展?jié)摿Α?/p>