吳云華,張澤中,華 冰,陳志明
(南京航空航天大學 航天學院,南京 210016)
根據(jù)國際衛(wèi)星氣候?qū)W計劃所提供的數(shù)據(jù)顯示,全球范圍的云層覆蓋面積可達到50%以上.由于可見光無法穿透云層,因此在可見光遙感影像中,云層是最主要的干擾源.被云層所遮蓋的遙感圖像將丟失重要的觀測信息,并且還將帶來不必要的計算資源浪費.因此,遙感圖像進行云層檢測,保留云量較少的圖像,提高遙感圖像的利用率及處理速度,提升地標自主導航的效率.
遙感圖像的云層檢測可以被看成是圖像分析的二值(二類)分割任務.侯舒維等[1]將云層檢測方法按照基礎理論和研究思路的不同分為:1)基于云紋理和空間特征的方法;2)物理方法;3)模式識別方法;4)綜合優(yōu)化方法.其中,物理方法(即多光譜閾值法)是研究時間最長、最為經(jīng)典的方法.該方法通過云層對不同波長的反射率構造閾值進行云層檢測[2],包括多光譜閾值法[3],多通道閾值法[4]以及動態(tài)閾值法等.基于云紋理與空間特征法也屬于閾值法的一種,其依據(jù)的信息是圖像的空間信息,如Deering等[5]所提出的用于海洋背景云檢測的空間變化檢測法.近幾年,模式識別隨著計算機科學的大力發(fā)展而異軍突起,給遙感圖像云檢測提供了一個有效的途徑,具體實現(xiàn)包括人工神經(jīng)網(wǎng)絡、支持向量機(SVM)、聚類等.如陳剛等[6]使用ASTER衛(wèi)星影像,綜合運用紋理分析和支持向量機的方法來檢測云層,取得了不錯的效果,但使用該方法必須結合可見光影像和紅外波段影像,在微小衛(wèi)星上不容易普及.陳鵬等[7]定義了多種灰度特征、頻率特征和紋理特征,選擇無監(jiān)督分類器(k-均值:k-means)和有監(jiān)督分類器(SVM)進行分類,使得子圖的分類準確度達到了95%.周雪珺等[8]則提出了一種基于灰度特性的算法,實現(xiàn)了遙感圖像高效自動的云分類及云檢測.在100幅典型水域遙感圖像的實驗測試結果表明:正確云分類判別率達到97%,誤判率小于4%.但使用灰度特性也存在一定的缺陷,由于云層的灰度特性與冰雪及高亮的建筑等有相近之處,且云層的灰度與陽光的照射角度、云的形態(tài)等都有較大關系,在實際應用中,該方法的云檢測準確度十分依賴于背景地物,難以推廣.也有學者將人工神經(jīng)網(wǎng)絡用于云檢測,如Jang等[9]討論了多層感知器神經(jīng)網(wǎng)絡,將該算法用于SPOT VEGETATION系統(tǒng),證明其具有較好的魯棒性.文獻[9]的研究為本文的研究提供了很好的方向,但多層感知器神經(jīng)網(wǎng)絡作為基礎的幾種神經(jīng)網(wǎng)絡之一已被更為先進的網(wǎng)絡所替代,在實際應用中已鮮有所聞.
人工神經(jīng)網(wǎng)絡的發(fā)展在最近幾年迎來了高潮,其中卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)因其對圖像特征提取和分類的優(yōu)異能力,被大量應用于機視覺中.本文提出一種基于卷積神經(jīng)網(wǎng)絡的云檢測與分類方法,首先將衛(wèi)星所拍攝到的較大尺寸遙感圖像分割成數(shù)百張小尺寸子圖,再使用訓練好的卷積神經(jīng)網(wǎng)絡對這些子圖進行特征提取與分類,得到網(wǎng)絡對于子圖是否有云層覆蓋的預測. 綜合所有子圖的預測結果,可以靈活計算出原始遙感圖像的云層覆蓋區(qū)域、云層覆蓋比例、云層類型等信息.由于借助了GPU并行計算技術,卷積神經(jīng)網(wǎng)絡對云層檢測速度基本滿足實時性要求.
在遙感圖像中,云圖和地物的形態(tài)是千變?nèi)f化的,如果使用人工設計圖像特征的方法,必須針對不同類型的地物來設計不同的特征.例如,在設計好以海洋為背景的遙感圖像云層檢測方法后,在以雪地或城市為背景的遙感圖像上不一定適用.卷積神經(jīng)網(wǎng)絡很好地解決了該問題,它不需要人為設計圖片特征,只需要構建相應的訓練集并訓練網(wǎng)絡,就可以達到良好的分類效果.使用卷積神經(jīng)網(wǎng)絡的特征提取和分類能力是本算法的關鍵所在,算法流程如圖1所示.
圖1 云層檢測流程
首先將拍攝所得到的原始遙感圖像進行分割成若干個200×200的RGB三色通道子圖,再依次將子圖送入網(wǎng)絡中進行判斷是否被云層覆蓋,并將每一幅子圖的云層覆蓋情況列入統(tǒng)計,當完成所有子圖的檢測之后,綜合統(tǒng)計信息從而得到原始圖像中云層的覆蓋區(qū)域以及覆蓋占比.
卷積神經(jīng)網(wǎng)絡是人工神經(jīng)網(wǎng)絡的一種. 20世紀60年代在研究貓的視覺皮層局部敏感和方向選擇的神經(jīng)元時,提出了“感受野”這一概念. 80年代,以“感受野”為基礎,首次提出了神經(jīng)認知機,并實現(xiàn)了卷積神經(jīng)網(wǎng)絡[10]. 90年代,LeCun等[11]在對手寫數(shù)字識別的研究中,提出了通過梯度反向傳播的方式訓練卷積神經(jīng)網(wǎng)絡,成為了現(xiàn)代卷積神經(jīng)網(wǎng)絡的雛形.
卷積神經(jīng)網(wǎng)絡中主要包含卷積層、池化層、全連接層和激活函數(shù)等幾個部分.其中卷積層是網(wǎng)絡中最重要的組成部分,完成卷積運算,其公式為
g(x,y)=f(x,y)*w(i,j)=
式中:f(x,y)為輸入圖像像素坐標(x,y)點的灰度值;w(i,j)為卷積核.卷積運算實際上是一個權重模板與其所覆蓋的像素值進行加權運算,得到卷積核在該點的響應值.不同權值的卷積核與圖像進行卷積運算起到不同的作用[12].卷積核通常在訓練初始階段隨機生成,在訓練過程中通過反向傳播算法自動學習.池化層在早期也被稱為下采樣層,它也是卷積神經(jīng)網(wǎng)絡的重要組成部分,其作用是提取圖像在卷積過程中所產(chǎn)生的主要信息,減少信息量并提高效率.全連接層一般只放在卷積神經(jīng)網(wǎng)絡的末尾,其每一個結點都與上一層的所有結點相連,所有的結點由一些帶權重的值連接起來,組成圖像的特征向量,最后在輸出層完成圖像分類.激活函數(shù)扮演著非常重要的角色,它本質(zhì)上是一個非線性變換函數(shù),將神經(jīng)網(wǎng)絡的輸入進行非線性函數(shù)變換,將其限定在一定的范圍內(nèi)輸出.在卷積神經(jīng)網(wǎng)絡中,它可以增強網(wǎng)絡的非線性表達能力,使得數(shù)據(jù)的處理更加高效.圖2給出了經(jīng)典的卷積神經(jīng)網(wǎng)絡LeNet-5的結構,該網(wǎng)絡被用于手寫字符的分類,并取得了良好的效果.
圖2 LeNet-5網(wǎng)絡結構
在上述的幾種卷積神經(jīng)網(wǎng)絡的組成部分中,卷積層是主要的特征提取部件,通常使用多個卷積核來提取特征,當卷積核數(shù)目大于3時,所提取到的特征就不能使用單張2D圖片來進行展示,隨著卷積層數(shù)的加深,越來越多的深層特征將被發(fā)掘與學習.但卷積層的數(shù)目也不是越多越好,卷積層數(shù)目過多首先會導致整個網(wǎng)絡變得過于復雜,訓練與測試時長都會增加很多.其次,卷積層達到一定數(shù)目后,性能很難再有提升,并且還有下降的可能.目前學界對于每一個卷積層應該有多少卷積核,一共應該有多少個卷積層都沒有相應的理論支撐.因此往往要根據(jù)具體情況去設計許多合適的參數(shù),并不斷試驗選擇最優(yōu)的組合.
本文針對遙感圖像的云層檢測問題,對網(wǎng)絡的卷積層數(shù)目,每個卷積層的卷積核個數(shù)以及池化層參數(shù)進行了多輪篩選,并進行了多次測試,最終使用測試效果最好的參數(shù)組合搭建了如圖3所示的遙感圖像云層監(jiān)測網(wǎng)絡模型,該模型的結構以及部分參數(shù)見表1.
針對遙感圖像云層檢測的卷積神經(jīng)網(wǎng)絡共包含兩個大模塊,分別為特征提取模塊與模式分類模塊.特征提取模塊中又包含4個卷積模塊以及4個全連接層,每個卷積模塊由一個卷積層和一個池化層組成.
圖3 遙感圖像云層檢測模型
表1 CNN模型的結構及參數(shù)信息
在卷積層內(nèi),使用5×5大小的卷積核在與上一層相連接的局部感受野上滑動,進行卷積運算,提取圖片特征信息,并通過激活函數(shù)形成該卷積核的特征圖.本模型中使用的激活函數(shù)為修正線性單元激活函數(shù)(Rectified linear unit,ReLU)f(x)=max(0,x).ReLU函數(shù)相比于其他函數(shù),能夠有效緩解梯度彌散問題,可以直接以監(jiān)督的方式訓練深層網(wǎng)絡.
池化層中使用2×2的核,并采用最大值池化特性,這樣可以在降低數(shù)據(jù)量的同時又保留了激活值最大的圖像特征,使網(wǎng)絡具有更高的魯棒性.
全連接層中使用了Dropout技術,即在訓練過程中隨機將一部分連接的節(jié)點斷開,能夠起到提升系統(tǒng)魯棒性的作用,在本模型中前3個全連接層都設置了50%的Dropout概率.
卷積神經(jīng)網(wǎng)絡的學習過程屬于有導師學習,其通過學習大量的帶有標簽的圖像數(shù)據(jù),提取出從簡單到復雜,從局部到全局的深度特征,形成一種端到端的學習結構和映射關系,最終實現(xiàn)模式分類的目標[13].網(wǎng)絡的訓練過程分為前向傳播和反向傳播兩個階段,其訓練流程如圖4所示.
圖中,前向傳播是數(shù)據(jù)由低層次向高層次傳播的階段.反向傳播則是當前向傳播得出的結果與預期不相符時,將誤差從高層次向底層次進行傳播訓練的階段.完成一次前向傳播后,根據(jù)神經(jīng)網(wǎng)絡預測值與真實標簽值可以構造交叉熵損失函數(shù),對于二分類問題常使用Binary cross-entropy,其公式為:
圖4 網(wǎng)絡訓練流程
mt=μ×mt-1+(1-μ)×gt,
θt+1=θt+Δθt.
μ=0.9,v=0.999,ε=10-8.
卷積神經(jīng)網(wǎng)絡的性能不僅取決于網(wǎng)絡的設計和優(yōu)化算法的選擇,訓練圖像集也扮演著重要的角色.選擇Landsat衛(wèi)星的遙感圖像數(shù)據(jù)來構建訓練圖像庫(數(shù)據(jù)來源于中國科學院計算機網(wǎng)絡信息中心地理空間數(shù)據(jù)云平臺(http://www.gscloud.cn)).從1999—2003年的全球合成數(shù)據(jù)中篩選出數(shù)十張5 000×5 000左右分辨率的遙感圖像,選取其中4張作為最后的測試數(shù)據(jù),其余圖像作為訓練集.訓練集圖像中包含了海洋、沙漠、城市、農(nóng)田、雪地、森林、草地等地貌,也包含了各式各樣的云層,部分訓練集原始圖像如圖5所示.
圖5 部分訓練集原始圖像
將原始5 000×5 000訓練集圖像分割為200×200分辨率的RGB三色通道子圖,并人工判別是否被云層覆蓋,最終生成訓練集圖像12 839張,其中無云覆蓋圖像7 610張,有云覆蓋圖像5 229張,并隨機抽取10%的圖像作為驗證集,部分訓練集子圖如圖6所示.驗證集圖像不會參與網(wǎng)絡訓練,但每一步訓練完成后都會使用驗證集來檢驗網(wǎng)絡的性能,得到網(wǎng)絡對于驗證集的預測精度和loss.
圖6 部分訓練集子圖
網(wǎng)絡模型的搭建、訓練和測試使用的硬件平臺為CPU(Intel Core i7-4770,內(nèi)存:12 G)+GPU(NVIDIA GTX 1070Ti,內(nèi)存:8 G).
在網(wǎng)絡搭建過程中,已經(jīng)完成了對卷積神經(jīng)網(wǎng)絡的基礎參數(shù)設定,除此之外訓練中還有若干超參數(shù)需要進行選擇,例如:學習率、學習次數(shù)、每組圖像數(shù)、樣本擴充等.經(jīng)過多次實驗及驗證,選擇如表2所示的超參數(shù)能夠達到較好的學習效果.
表2 模型訓練的超參數(shù)設定
樣本擴充是指,當訓練數(shù)據(jù)有限時,可以通過數(shù)據(jù)增強將原有的數(shù)據(jù)生成新的數(shù)據(jù)來擴大訓練集.在這里本文使用了將原圖像進行隨機旋轉(zhuǎn)、隨機寬度縮放、隨機高度縮放、隨機水平鏡像的方法,并將所有圖像信息歸一化為0~1的數(shù)值.經(jīng)過樣本擴充后訓練集的圖像數(shù)目可以達到原來的3倍,能夠使網(wǎng)絡模型有更好的泛化性,避免過擬合情況的出現(xiàn).
網(wǎng)絡訓練開始后,實時觀察網(wǎng)絡對于訓練集和驗證集的預測精度以及l(fā)oss的變化,如圖7所示.
圖7 網(wǎng)絡訓練中性能的變化
圖7(a)、(b)分別展示了在30次學習過程中網(wǎng)絡對于訓練集圖像的預測精度和loss,可以看出網(wǎng)絡對于訓練集圖像能夠很快的降低loss并提高預測的精度,而且過程較為平穩(wěn).圖7(c)、(d)展示了網(wǎng)絡對于驗證集圖像的預測精度和loss,由于驗證集圖像沒有參與網(wǎng)絡訓練,更能真實的反映出網(wǎng)絡的泛化能力,所以在前幾次學習中網(wǎng)絡的預測精度并不高,10次學習之后,網(wǎng)絡對于驗證集圖像的預測精度就可達到95%,并逐漸穩(wěn)定至98%左右,loss的變化也更為曲折,最終在0.06左右徘徊.
為了更好地對比和檢驗網(wǎng)絡的性能,使用5個較為著名的卷積神經(jīng)網(wǎng)絡模型和相同的訓練集來進行遷移學習的訓練.遷移學習(transfer-learning)在卷積神經(jīng)網(wǎng)絡中特指一個在數(shù)據(jù)集上訓練好的卷積神經(jīng)網(wǎng)絡模型通過簡單的調(diào)整快速移動到另外一個數(shù)據(jù)集上.這5種常用遷移學習模型分別為VGG16[15]、VGG19、ResNet50[16]、Inception-V3[17]和Xception.其中VGG16與VGG19均為牛津大學所提出的深度網(wǎng)絡,其特點是使用較小的卷積核進行堆疊以達到由于大卷積核的效果.ResNet50為深度殘差網(wǎng)絡,其特點是通過使用多個有參層來學習輸入輸出之間的殘差,以達到更好的效果.Inception-V3和Xception均為谷歌公司所提出的深度網(wǎng)絡,后者是前者的改進,并且其結構基于ResNet,具有良好的性能.這些模型都是在ImageNet[18]圖像分類競賽中獲得過優(yōu)異成績的復雜模型,其參數(shù)經(jīng)過數(shù)千萬張分類圖片的訓練,具有強大的圖像特征提取能力.
使用這些模型時,保留模型的卷積神經(jīng)網(wǎng)絡部分,使模型的輸出為bottleneck向量,再將bottleneck向量送入自己所設計的全連接層即可完成分類任務.這里的bottleneck向量實際就是一個1 024維的向量,包含了前端網(wǎng)絡對于圖像特征的提取,后端的分類任務只需在這個bottleneck向量上進行即可.因此,網(wǎng)絡的訓練過程也只在bottleneck向量產(chǎn)生之后的部分,使用遷移學習模型構造的網(wǎng)絡結構如圖8所示.
圖8中遷移學習模型對應于上述的5種模型,全連接層部分均使用兩層結構,節(jié)點數(shù)分別為1 024和1,全連接層后接入與自建神經(jīng)網(wǎng)絡相同的分類模塊即可,模型的訓練參數(shù)設置相同與自建網(wǎng)絡類似.
圖8 使用遷移學習模型構造的網(wǎng)絡結構
測試圖像數(shù)據(jù)使用Landsat衛(wèi)星所拍攝的遙感圖像,為了檢驗模型對場景類型的魯棒性,選擇4張場景不同的原始遙感圖像,如圖9所示.將圖片進行分割得到200×200像素的子圖,并人工統(tǒng)計是否有云覆蓋,得到的統(tǒng)計結果見表3.
圖9 測試所使用的4幅高分辨率原始遙感圖像
表3 人工判別測試數(shù)據(jù)統(tǒng)計
將測試圖像送入訓練好的自建神經(jīng)網(wǎng)絡中,得到卷積神經(jīng)網(wǎng)絡對圖像是否有云層覆蓋的預測,預測結果見表4.
表4 網(wǎng)絡模型測試結果統(tǒng)計
表4中誤判數(shù)是指模型將無云覆蓋圖像判別為有云覆蓋的張數(shù),漏判數(shù)是指模型將有云覆蓋圖像判別為無云覆蓋圖像的張數(shù).為了評價模型的性能,定義以下幾個評價參數(shù)為:
正確率C1=
經(jīng)過計算可以得到模型對于測試樣本的評價參數(shù)值見表5.
表5 模型評價參數(shù)
表5可以看出,模型對于有云圖像的檢測正確率為95.3%,對于無云圖像的檢測正確率為97.8%.總體的誤判率為2.58%,漏判率為0.90%,各項指標都達到了較高的水準,尤其是對于高分辨率遙感圖像.能在如此大數(shù)據(jù)量的情況下取得這么高的檢測精度,再次說明了卷積神經(jīng)網(wǎng)絡對于云層檢測問題的優(yōu)勢以及模型優(yōu)異的魯棒性.
取4張測試樣本原圖中較小的2號圖像,將圖像中被模型判別為有云層覆蓋的區(qū)域加上陰影,如圖10所示.
圖10 云層覆蓋檢測結果
從圖10可以看出,云層檢測的效果良好,覆蓋到了幾乎所有原始圖像中的云層區(qū)域.并且對于無云的區(qū)域,不存在誤判的情況,說明使用卷積神經(jīng)網(wǎng)絡進行云層檢測有非常高的精度,并且隨著訓練集數(shù)據(jù)的完善,檢測精度會進一步提高.將相同的測試圖像依次送入5個遷移學習模型中,可以得到遷移學習模型對于測試圖像的預測結果,對比自建卷積神經(jīng)網(wǎng)絡模型的結果見表6.
表6 幾種模型的預測精度對比
從表6得到的統(tǒng)計數(shù)據(jù)可以看出,自建卷積神經(jīng)網(wǎng)絡模型相較于遷移學習模型在云層檢測問題中具有一定的優(yōu)勢,誤判數(shù)和漏判數(shù)更低,模型的精度也更高.由于自建卷積神經(jīng)網(wǎng)絡模型的深度小于5個經(jīng)典模型,結構更加精簡、參數(shù)更少.如表6所示,在使用相同的測試集圖像時,耗時也更短,只需要19 s左右,而經(jīng)典模型中耗時最短的VGG16也需要25 s以上,Inception-V3模型更是達到了70 s以上,自建模型優(yōu)勢更加明顯.
總的來說,與目前現(xiàn)有的算法相比較,本文所提出的基于卷積神經(jīng)網(wǎng)絡的遙感圖像云層自主檢測方法有效解決了高分辨率遙感圖像云層分布、占比的自主檢測.與文獻[6]相比,本文方法僅需要可見光波段影像即可實現(xiàn)云層區(qū)域的檢測,更適合在微小衛(wèi)星中推廣.與文獻[8]所采用的基于灰度特性的算法相比,本文方法使用了卷積神經(jīng)網(wǎng)絡來進行圖像特征的提取與分類,可以提取到更深層次的圖像特征,因此在進行分類時具有更強的魯棒性.在實際任務中還可以根據(jù)遙感圖像背景的不同來選擇對應的訓練集,使得算法不僅適用于水域遙感圖像,也適用于背景更為復雜的情況,同時保持較高的檢測精度和更低的誤判率.
1)采用卷積神經(jīng)網(wǎng)絡技術,實現(xiàn)了遙感圖像云層檢測的自主性.
2)借助并行運算技術和精簡的網(wǎng)絡結構,提高了高分辨率遙感圖像的云層覆蓋檢測速度,滿足在軌實時應用的需求.
3)以Landsat遙感圖像為例,實現(xiàn)了遙感圖像有云層覆蓋檢測率為95.3%、無云層覆蓋檢測率為97.8%的識別精度,誤判率和漏判率分別為2.58%和0.90%,檢測精度優(yōu)于傳統(tǒng)方法.