徐少壯,鐘來星
(1.山東科技大學 測繪與空間信息學院,山東 青島 266590;2.山東科技大學 能源學院,山東 泰安 271000)
遙感技術的快速發展帶來了海量的數據,但是ISCCP(international satellite cloud climatology project)的研究表明[1],地表的年平均云覆蓋率超過66%,云層遮蓋了光學遙感影像的部分、甚至全部的地表信息,這不僅嚴重影像數據質量,甚至制約了進一步挖掘數據的潛力,對遙感影像后續處理也同樣是一個挑戰[2-3]。因此,對云的高精度定量化評估是一項很重要的工作。
云與地物在光譜、紋理特征方面存在較為明顯的區別,基于此許多學者實現了光學遙感影像云檢測。李微等[4]通過云與下墊面其他地物在可見光、近紅外譜段的差異,提取云覆蓋區域,但是該方法對于波長范圍受限的影像具有一定局限性。李超煒等[5]將分形維數、灰度共生矩陣等多個影像特征作為分類標準,通過輸入SVM實現云檢測,但是實驗結果與云覆蓋區域輪廓匹配程度較低。除此之外,圖像分割領域的傳統算法同樣適用于云檢測,比如最大類間分類法[6]、超像素分割法[7]、區域生長法[8-9]等。傳統算法對噪聲、目標像元的差異十分敏感,而高分辨率遙感影像往往伴隨一定的白噪聲[10],所以對高分辨率遙感影像進行云檢測具有一定的局限性。遙感影像語義分割是從計算機視覺中延伸出來并結合深度學習實現遙感影像分類、地物提取的技術,相比于傳統算法,深度學習具備更好的云檢測精度和可移植性。2015年,Olaf等[11]首次提出U-Net網絡結構,實現了顯微鏡細胞影像的高精度、高效率識別,在此基礎上,學者們將改進后的網絡結構應用于三維醫學影像分割[12]、多類別影像識別[13-15]等方面,為遙感影像云檢測提供了新的思路。陳洋等[16]通過卷積神經網絡實現了云檢測,在傳統池化模型的基礎上,針對云的特性提出了一種自適應模型,提高了訓練效率、檢測精度,但是云檢測結果輪廓識別精度較低,不能很好地保留碎云、薄云細節特征。裴亮等[17]基于改進的全卷積神經網絡實現了遙感影像云檢測,相比于全卷積神經網絡,該方法提高了訓練速度、云檢測精度和收斂效果,但是存在將雪誤判為云的情況。么嘉棋等[18]利用神經網絡SegNet實現ZY-3影像云檢測,改善了傳統算法對噪聲敏感的缺點,但是對于薄云、碎云存在一定程度的漏檢,需要進一步改善。張永宏等[19]結合U-Net以及殘差模塊實現了FY-4A影像云檢測,提高了對薄云、碎云的識別精度,但識別精度仍有進一步提升的空間。
針對傳統算法對高分辨率遙感影像噪聲敏感、深度學習算法檢測結果與人主觀感受不一致,碎云、薄云識別精度差等缺點,本文結合U-Net和 TTA(test time augmentation)算法進行云覆蓋區域提取,與現有算法相比,提高云檢測精度的同時,極大限度地保留了碎云、薄云的細節特征。首先,對影像進行預處理,包含數據標注、制作樣本集等步驟;其次,基于U-Net神經網絡結構提取云的典型特征、訓練檢測模型;最后,利用TTA算法處理待檢測影像,并送入U-Net檢測模型中實現云檢測。
1)神經網絡結構U-Net。U-Net作為一種用于圖像分割的網絡結構,相比于其他結構,它的優點在于簡單高效、模型參數少,僅使用少量影像訓練,就可以得到較高的檢測精度。整體上看,U-Net是收縮-擴展結構,收縮過程采用FCN的網絡結構[20],由卷積層、池化層組成,主要用于提取影像的典型特征;而擴展過程由卷積層、反卷積層(上采樣層)組成。U-Net在圖像分割領域首次使用反卷積層恢復特征圖和復制、剪切原始特征圖拼接的特征融合方式(圖1中間橫線連接步驟),其結構圖如圖1所示。

圖1 U-Net結構示意圖
(1)卷積層(convolotion layer)。由多個卷積單元組成,卷積單元在窗口影像上移動,通過點積,累加獲取影像深層次特征,并以特征矩陣的形式傳遞。單一卷積層僅能獲取影像淺層特征,多層結構可以通過淺層特征迭代獲取云的深層次、典型特征,并通過共享卷積核權值傳遞特征。
(2)池化層(pooling layer)。主要目的是減小卷積層所獲取的特征維度,減少訓練參數以提高模型訓練效率,進而防止過擬合現象出現。常用的池化模型分為平均池化、最大池化模型兩種。
(3)上采樣層(upsampling layer)。卷積層會提取影像的典型特征,同時將輸入影像轉換為更小的尺寸。上采樣層會將輸入轉換為更大的尺寸,將典型特征放大到原影像大小,使提取后的特征圖更能代表云標簽的特征。
(4)特征圖(characteristic map)。影像上每個像素判斷為云、背景的概率稱為特征圖。U-Net的創新之處在于:不僅通過先收縮、再擴張特征圖的方式獲取影像的典型特征,還在每個部分直接獲取U型結構對稱部分的特征圖(U型圖中間橫線部分),這種融合多張特征圖的方式最大限度保存了云的類別特征。
(5)Softmax層。主要目的是實現分類、歸一化處理,并評價神經網絡訓練是否收斂,達到最優訓練效果。本文采用Softmax分類指標、交叉熵作為損失函數。Softmax回歸模型是logistic回歸模型在多分類問題上的推廣,在多個案例中均取得了較好的效果。式(1)是Softmax值計算方法,Si為對應的Softmax值,當αi代表的值遠大αk時,Softmax值逼近1;當αi代表的值遠小于αk時,Softmax值逼近0,實現了輸入特征分類歸一化。
(1)
式中:T代表類別數,在二分類問題中取值為2;αi代表輸入向量中第i個元素;αk代表輸入權值向量中元素之和。
Softmax模型采用交叉熵作為損失函數,衡量神經網絡訓練效果,如式(2)所示。
(2)
式中:Pi是Softmax模型的輸出值Si中的第i個元素;yi是一個一維向量,以0、1的形式保存像素的標簽識別信息。通過觀察loss和精度,可以及時掌握神經網絡訓練效果,并通過調整相關參數提高訓練效率。
2)測試增強算法原理。測試增強(test time augmentation,TTA)是一種在機器學習中應用廣泛的技術[21],輸入經過裁剪、旋轉、映射壓縮等處理待檢測影像,增強其典型特征,以提高識別精度。盡管經過多輪訓練、多次迭代后,云檢測模型逐漸收斂,準確率趨于飽和,但是僅將待檢測影像輸入模型中,可能由于典型特征被局部泛化等原因引起云區域漏檢,所以對待檢測影像進行TTA處理是十分必要的。圖2是本文設計的TTA流程:①將待檢測影像經過旋轉、色彩映射等處理得到8張增強數據,將其與原影像依次輸入云檢測模型;②將云檢測模型輸出的特征概率圖執行步驟①中幾何操作的逆變換,恢復待檢測影像平面坐標;③對9張特征概率圖進行求和、平均運算,最終輸出云像元概率圖。

圖2 TTA技術流程圖
1)數據預處理。本文采用Tensorflow機器學習框架進行實驗。該框架是一款深度學習框架,它封裝了很多深度學習工具,如Estimator、Keras等,并提供了良好的可視化功能[22]。語義分割是在圖像分割領域下為解決多分類分割提出的概念,旨在通過深度學習高精度地提取多地物輪廓。語義分割神經網絡通過提取訓練集中的典型特征訓練模型,當經過多輪訓練模型測試達到飽和或較高的精度時停止訓練。其中,訓練集的大小、數量、是否涵蓋不同種類地物典型特征對訓練結果均有一定的影響。一般而言,需要對影像進行一定的預處理。預處理主要分為數據標注、影像分割、數據增廣三個部分。
(1)數據標注。數據標注的主要目的是為待訓練影像上每個像素劃分類別。以云檢測為例,借助Labelme等數據標注軟件[23],將遙感影像上云覆蓋區域勾勒矢量邊界,在生成的標簽文件中云覆蓋區域像素被劃分為1,其他區域被劃分背景像素,賦值為0。選取云量大于50%的高分一號、資源三號衛星全色影像作為實驗數據,依次標注影像,用于制作樣本庫。圖3為數據標注示意圖。

圖3 數據標注示意圖
(2)影像分割。影像分割的目的是為了選擇合適的影像大小,以便于神經網絡訓練。待分割大小取決于顯卡的配置、神經網絡的設置等參數,一般在64、128、256、512、1 024像素等數值中取值。本實驗選擇將影像分割為256像素×256像素的小塊,當整景不足以繼續分割時,舍棄這一部分影像。
(3)數據增廣。數據增廣的目的是為了增加訓練集的數量,便于神經網絡提取樣本庫主要特征。通過旋轉、加椒鹽噪聲、形態學變換等處理,將訓練集的數量級增大到較大的基數。本實驗中,通過自定義的數據增廣函數(如先隨機旋轉、添加白噪聲等處理),將樣本庫數量擴大至20 000張影像。
2)訓練神經網絡。在已經確定神經網絡結構基礎上,訓練神經網絡仍需確定一些重要參數,這些參數與實驗結果息息相關,有的依據經驗、有的需要經過反復測試才能確定最優值。本實驗將訓練集的0.75用于訓練模型,其余0.25用于驗證模型精度。batch_size確定為4,epoch為30。batch_size的取值往往為2的次方,取值取決于顯卡的性能、為每個訓練輪次投入的影像數量。epoch為訓練集整體投入神經網絡的輪數。隨著epoch的增加,準確率逐漸增大,直至其飽和,趨近于變化緩慢時,epoch取值為最佳,一般而言,初始值會偏大一點,當趨近于飽和時可手動取消訓練。圖4是訓練U-Net神經網絡過程中訓練模型時的損失值(train_loss)、準確率(train_accuracy),驗證模型精度時的損失值(val_loss)、準確率(val_accuracy)的變化線性圖。由圖4可知,訓練過程中loss持續下降,從0.25下降到0.095 8;精度持續上升,從0.897上升至0.963。驗證模型精度過程中loss持續緩慢下降,從0.219下降到0.177;精度持續上升,從0.912上升至0.937。

圖4 訓練神經網絡過程中loss、精度的變化線性圖
如上所述,上述實驗實現了U-Net云檢測模型訓練,且保持了較高的云檢測訓練精度。在此基礎上,如何實現輸入影像云檢測較好的效果仍然是個難題。應用廣泛的方案為:①將整景影像讀入,創建一個與原始影像大小相同的空白圖像;②從遙感影像左上角開始,依次切割256像素×256像素影像送入模型中,并輸出對應的類別概率圖。但是該方案有一定概率在分塊間存在拼接痕跡,影響云檢測效果。因此,本文在步驟②的基礎上,每次分塊保持與上一次存在50%的重疊度,以減少拼接的影響,得到初步云檢測結果。
采用TTA技術提高云檢測精度。首先,依次將待檢測影像與對應的8張增強圖輸入U-Net云檢測模型;其次,依次獲取9張影像對應的云檢概率圖;最后,對9張特征概率圖求取每個像素的平均值,輸出最終云檢測結果,并進行著色。相比于傳統U-Net地物提取方案,本文所采用的設置一定重疊度、TTA技術能提高云檢測精度,使云覆蓋區域輪廓識別精度更高。
如圖5所示,本文方法在實現云檢測的同時避免了細小噪聲的干擾,并高精度地保留了云輪廓細節特征。高分辨率遙感影像具有豐富的紋理信息,但同時因為分辨率較高會帶有白噪聲,而Otsu等傳統算法對噪聲敏感,進行云檢測時會不可避免地受到噪聲的影響。圖5(b)中黃色圓框部分顯示Otsu云檢測確實受到了這些細小噪聲的影響,同時將下墊面與云近似的建筑物誤識別為云,本文方法避免了這一缺點,同時保證了較高的云檢測精度。

圖5 Otsu與U-Net結合TTA對比分析
如圖6所示,當輸入單景影像時,U-Net保持了較高的云檢測精度,且沒有將建筑物等與云灰度相近的地物誤識別為云,但是碎云、薄云存在一定的漏檢,這是因為從待檢測影像中提取的特征輸入模型時,由于角度、灰度映射關系等原因導致被忽視。在經過TTA處理后,云輪廓識別精度得到提高,與人主觀感受更為一致。在單景影像中經過TTA處理后,云檢測精度得以提升1%~2%,所提升的精度主要與云在影像中所占的比例有關,但不可否認的是,TTA提升精度的同時增加了計算所需的時間。

圖6 TTA處理前后對比
為了評價各算法云檢測精度,分別在多張影像上進行了云檢測,與人為勾勒的標準云圖進行對比分析,并計算出了各個指標的均值。包含以下三個評價指標:①OA為總體精度,以人為判斷的標準云圖為準,判斷各算法準確識別云的概率;②Dice_index為過分割系數,可以評價云檢測結果與標準圖之間邊緣是否相符,數量越大輪廓越吻合;③Jaccard_index為杰卡德系數,是圖像分割領域常用的評價分割效果的指標,是與人主觀感受比較一致的量化指標。上述指標不僅能準確判斷云識別精度,還可以評價云輪廓識別精度。如表1所示,綜合各個指標,U-Net結合TTA算法的云檢測精度高于傳統算法約5%。

表1 U-Net云檢測結果對比
針對傳統云檢測算法對高分辨率遙感影像噪聲敏感這一問題,本文提出一種U-Net結合TTA的方法。實驗結果表明,該方法檢測精度達到93.2%,高于Otsu等傳統算法約5%。相比于傳統算法、僅使用U-Net的方法,本文算法對薄云、碎云等不同類型的云均有很好的檢測效果,同時保留了云輪廓細節特征,與人的主觀感受更一致,具有更高的云檢測精度。
深度學習在遙感影像云檢測方面雖有較大優勢,但仍存在很大的改進空間,表現在以下兩個方面。①模型融合。自U-Net結構提出后,影像分割領域出現了各具優勢的新型結構,結合這些方法與U-Net模型的識別結構,可以兼具二者的優勢,提高模型識別精度。②結合云的更多特征。本文僅使用了云的紋理特征作為識別的標準,而遙感影像還具備豐富的光譜、空間等特征,值得進一步挖掘。