房龍巖,郭杰,劉佳佳
(1.皖北煤電集團有限責任公司,安徽宿州 234002;2.安徽恒源煤電股份有限公司,安徽宿州 234002)
遙感是地球資源變化監(jiān)測與管理過程中不可或缺的技術手段,然而,在衛(wèi)星獲取影像的過程中并不是每天都是晴空萬里,往往伴隨著大量云霧的遮擋,以至于影像部分區(qū)域信息丟失,給后續(xù)的遙感影像分析解譯帶來了困難[1-2]。所以,云檢測對于光學衛(wèi)星遙感具有重要意義。
在近些年來,學者們研究了多種云檢測方法。其可以分為兩類:基于波段閾值方法[3]與基于深度學習的云檢測方法[4]。
傳統(tǒng)的云檢測方法有文獻[3]提出了FMask算法,通過設定波段閾值來實現(xiàn)Landsat影像的云檢測。然而國產高分辨率衛(wèi)星的波段數(shù)少缺少熱紅外波段,難以通過光譜信息來進行云檢測,所以文獻[5]中基于多時相云在紅外波段的反射特性的云檢測方法不適合國產衛(wèi)星的云檢測。隨著深度學習的發(fā)展,語義分割技術的不斷進步,其也逐漸應用于云檢測上來。文獻[6]將雙重注意機制模型與全卷積神經網絡模型相對比,發(fā)現(xiàn)雙重注意力機制模型用于云檢測更為準確。文獻[7]對Unet網絡結構進行改進,編碼器與殘差結構相結合,提高了模型的泛化能力,比傳統(tǒng)的Unet模型檢測精度更優(yōu)。文獻[8]解碼器不僅在Unet模型的編碼器中引入殘差模塊,而且在解碼器中融入密集連接模塊,可以很好地檢測出大量薄量的薄云碎云。
基于上述研究,本文提出一種基于改進的DLinkNet模型的國產高分辨率衛(wèi)星云檢測方法。在原始DLinkNet的基礎上,使用拆分注意力網絡ResNeSt作為backbone替換原始的ResNet,并對損失函數(shù)進行加權,只使用交叉熵損失作為損失函數(shù),最后使用條件隨機場進行后處理,在國產衛(wèi)星的云檢測方面,較原始的DLinkNet網絡結構有明顯提高。
1.1.1 DLinkNeSt網絡模型
DLinkNet模型[9]是在LinkNet模型的基礎上,在編碼器與解碼器之間添加了空洞卷積模塊(dilate block),增大了對特征圖的感受野,感受野越大,能夠捕獲原始圖像上的圖像特征就越多[10]。
在DLinkNet模型的基礎上,受到SENet[11]、SKNet[12]兩大注意力機制,ResNeXt[13]及ResNeSt[14]兩個backbone的啟發(fā),本文提出了包含拆分注意力機制網絡的DLinkNeSt模型,其模型結構如圖1所示。
圖1 DLinkNeSt網絡結構
DLinkNeSt結構沿用了DLinkNet模型的編碼解碼思想,拆分注意力殘差模塊為在通道維進行拆分成多個模塊化的小組,分別通過注意力模塊,最后合并得到特征圖,可以更好地檢測影像的深度特征。
中間的DBlock結構如圖2所示。其中箭頭內的數(shù)字表示擴張率(dilated rate)。即分別使用擴張率為1、2、4、8、16的空洞卷積結構級聯(lián),以達到在不改變特征圖分辨率的情況下,增大感受野。
圖2 DBlock結構
1.1.2 殘差模塊
DLinkNet中使用的殘差模塊為ResNet,將原始輸入與輸出相加,使模型在反向傳播過程中減少了梯度爆炸與消散的現(xiàn)象,可以訓練出更深的網絡結構。其模型結構如圖3所示,公式可描述為:
圖3 ResNet-Block
然而,本文所使用的殘差模塊為ResNeSt-Block,其模型結構如圖4所示。ResNeSt又被稱為拆分注意力網絡,借鑒了ResNeXt的使用拆分合并采用組卷積,將Multi-path結構轉換為統(tǒng)一操作。借鑒了SENet結構的通道注意力模塊,及SKNet的特征圖注意力(Feature-map Attention)。
圖4 ResNeSt Block結構
1.1.3 加權的損失函數(shù)
這里采用的損失函數(shù)是在DLinkNet的損失函數(shù)基礎上,使用加權的方式測試各為多少權重可以達到最好的效果。
DLinkNet的損失函數(shù)如下,其中公式(7)為最后的損失函數(shù)。
公式中GT表示標簽影像,P表示預測影像,N為批大小,W表示影像的寬度,H為高度,gtij為在i,j位置的像素值,pij為在i,j位置的像素值。
在此,對Dice與BCE兩個損失函數(shù)進行加權操作。加權的DBLoss數(shù)學表達式如下:
其中λ與γ之比為DBLoss的權值。
條件隨機場最早由Lafferty等[15]在最大熵模型及馬爾科夫模型的基礎上提出來的一種無向概率圖模型,用于標注和分割有序數(shù)據(jù)的條件概率模型。條件隨機場如圖5所示。
圖5 條件隨機場
條件隨機場符合吉布斯分布:
式(9)中,Z(X)表示歸一化常數(shù),如公式;C為所有基團c的集合;ψ為基團c的勢函數(shù);Yc={Yi,i∈c},Yi為像素i的類別標簽。
其中,y所對應的Gibbs能量函數(shù)為:
首先,使用訓練出來的模型對原始影像進行預測,其次,將原始影像與預測出來的標簽輸入條件隨機場中,使用原始影像上的像素作為X,預測出來的標簽作為Y,得到經過后處理的云檢測標簽結果。
這里選取的指標為平均交并比(mIou)、召回率(recall)以及準確率(precision)。其計算方式如下:
公式中的A表示原本為云預測為云的數(shù)量,B表示原本為云預測為非云的數(shù)量,C表示原本為非云錯預測為非云的數(shù)量,三個指標越高表示精度越高。
本文的試驗均在ubantu16.04,CUDA 10.1,NVIDIA UNIX 64核的PyTorch 1.2.0深度學習框架下進行。
訓練之前,首先經過預處理,進行影像數(shù)據(jù)的擴充,方法有:色彩抖動、水平翻轉、垂直翻轉、隨機裁剪、旋轉等。預處理的目的是擴充數(shù)據(jù)量,對數(shù)據(jù)進行增廣,防止過擬合,提高模型的泛化能力。
參數(shù)設置。隨機裁剪的大小為512×512,batchsize為4,使用的優(yōu)化器為Adam,初始學習率為0.001,自動調整學習率,每次調整變?yōu)樵瓉淼?/2,直到損失值7次不再下降為止。
分別設置DiceLoss與BCELoss的比值分別為1:1、1:0、0:1進行測試的DlinkNeSt模型在測試集上的精度指標,如表1所示。從表1中可以看出,只使用Dice損失的精度最小。其中0:1表示,只是用BCE損失。發(fā)現(xiàn)只用BCE損失得到的模型平均交并比與準確率都達到最高。
表1 損失函數(shù)權值對模型精度的影響
試驗分別使用DLinkNet50、DLinkNeSt50及BCEDLinkNeSt50(即只是用BCE損失函數(shù)的DLinkNeSt)進行測試。選取的評價指標為平均交并比(mIoU)、召回率(recall)及精確率(precision)對模型進行評價。訓練集上的評價指標結果如表2所示。
表2 訓練集上的不同模型評價結果
?
在測試集上的評價指標結果如表3所示。
表3 測試集上的不同模型評價結果
從表2中可以看出,在訓練集上,本文算法除召回率上略小于DLinkNeSt50算法,精確率及交并比均為最大。從表3中可以看出,在測試集上,本文算法除在精確率上略小于DLinkNeSt50算法,召回率及交并比均為最大。盡管有兩項指標沒有達到最優(yōu),但是仍然大大優(yōu)于原始的DLinkNet50算法。
對測試集上的原始影像預測,預測策略為先將原始影像按照順序裁切為512×512大小的影像,然后使用訓練好的云檢測模型進行預測,最后將云檢測結果按照裁切的順序進行拼接。從云檢測結果對比圖中,將圖6的結果a1到f1對比,發(fā)現(xiàn)紅色橢圓框中的云e1與f1均檢測出了原始云的位置,并且f1還將該處云的范圍還原出來。將圖6中的a2到f2進行對比,發(fā)現(xiàn)紅色矩形框中的薄云,DLinkNet預測精度較差,BCE-DLinkNeSt算法預測精度較高,CRF-BCE-DLinkNeSt算法在BCEDLinkNeSt的基礎上保持了薄云的邊緣。所以BCEDLinkNeSt50不論是定性判斷,還是通過指標定量分析,均優(yōu)于DLinkNet50與DLinkNeSt50。
圖6 云檢測結果對比圖
針對國產部分衛(wèi)星影像不能使用傳統(tǒng)的基于閾值的方法檢測云,以及當前深度學習算法檢測云的精度低,誤檢率高的問題,本文提出了基于改進的DLinkNet模型的國產衛(wèi)星影像云檢測方法。本文的主要創(chuàng)新點如下:
(1)在原始的DLinkNet50的基礎上,使用ResNeSt模型替換原始的ResNet模型作為編碼器結構,從而可以提取到更多的語義信息。
(2)損失函數(shù)上,對BCELoss與DiceLoss加權,提出了BCE-DLinkNeSt云檢測算法。
(3)對原始的BCE-DLinkNet進行后處理,提出CRF-BCEDLinkNeSt算法,從而更好地保留了云邊緣。
使用人工勾云樣本,發(fā)現(xiàn)本方法在云檢測方面優(yōu)于原始的結構,提高了云檢測的精度,可以輔助人工勾云使用。