謝國波,何宇欽,林志毅,唐晶晶,文剛
(1.廣東工業(yè)大學 計算機學院,廣州 510060;2.云南電網(wǎng)有限責任公司電力科學研究院,昆明 650217)
光學遙感圖像是目前使用范圍最廣的衛(wèi)星遙感圖像,涉及到我們生活中的多個領域,如林業(yè)、城市規(guī)劃、農(nóng)業(yè)等方面[1]。但是因為云的存在,很多的地物信息無法獲取,且根據(jù)ISCCP組織所提供的地球云量數(shù)據(jù),地球上有將近一半的區(qū)域是時常被云所覆蓋的[2]。故而,針對光學衛(wèi)星圖像,如何準確將其中的云層檢測出來也是目前學者的一個重要研究方向。
針對云檢測算法的研究,目前主要可分為3類:閾值法、經(jīng)典機器學習方法和深度學習方法。其中閾值法主要是利用云的光譜特性結合閾值來進行云的分類,該類方法當中最為著名的莫過于Zhu等[3]提出的Fmask算法,幾乎利用所有的波段信息,使用超過20個閾值和動態(tài)閾值來判斷。但是閾值法具有很大的局限性,對噪聲較為敏感,魯棒性差。基于經(jīng)典機器學習的云檢測方法,主要是利用經(jīng)典機器學習的算法,通過一系列的方法對云的特征進行提取,如:灰度共生矩陣、分形維數(shù)、角二階矩陣等[4-6],然后使用支持向量機[7]、決策樹[8]、隨機森林[9]等分類器對這些特征進行分類,從而達到云檢測的目的。這些方法相比閾值法,其檢測的精度要高,但是計算量大,選取的特征直接關乎最終的結果。基于深度學習的云檢測方法,就是將深度語義分割的方法應用到云檢測上,一些優(yōu)秀的語義分割方法,如全卷積網(wǎng)絡[10]、UNet[11]、SegNet[12]等已被應用到云檢測上。張家強[13]將ResNet與UNet進行融合,將UNet中的卷積模塊都替換為殘差模塊,取得了93.33%的優(yōu)異結果。目前基于深度學習的云檢測算法中,大部分都是使用到了卷積,受卷積中感受野的影響,其關注的窗口信息是有限的。同時這些方法對薄云和碎云以及在不同下墊面的情況下的云檢測精度還有著進一步提升的空間。
目前Transformer[14]技術在語義分割方面也有著很好的表現(xiàn),其可以關注到全局信息,進而提高了特征提取的能力。Zheng等[15]提出的segmentation transformer(SETR)在編碼階段使用Transformer模塊代替CNN主干,并應用在語義分割方向上,證明了其在語義分割任務中的巨大潛力。Cao等[16]提出的Swin-UNet方法可以被看作是UNet和Transformer的混合模型,其結構簡單,但是具有很好的效果。目前Transformer已經(jīng)被應用到遙感圖像的檢測、分割等方面,但是并未被應用到遙感圖像的云檢測。
雖然Transformer可以提取豐富的語義信息,并具有優(yōu)秀的檢測精度,但是其在云檢測方向上并沒有相關的應用研究,并且目前云檢測方向上還存在以下的一些問題:針對復雜下墊面情況的云檢測的難度較大,整體的精度還有提升的空間;針對薄云以及碎云,在預測上會出現(xiàn)漏判以及錯判的情況,故需要對算法進行合理的改進;云邊緣信息復雜,其邊緣輪廓信息準確判斷的難度較高,且在檢測的數(shù)據(jù)中還存在數(shù)據(jù)不平衡的情況發(fā)生。基于上述問題,本文結合Transformer與UNet網(wǎng)絡模型,設計出一種針對遙感圖像云檢測網(wǎng)絡Cloud TransUnet,該網(wǎng)絡結構進行了編碼器卷積模塊的替換,增加了邊緣預測模塊以及損失函數(shù)的優(yōu)化。實驗結果表明,與當前存在的云檢測算法相比,Cloud TransUnet的參數(shù)量較少,在保證檢測速度的前提下,云檢測的精度、準確度等指標得到了一定的提升。
UNet是一種編碼-解碼的網(wǎng)絡架構,通過使用跳躍連接的思想,實現(xiàn)了特征的復用,在很大程度上減少了特征信息的丟失。同時,UNet的網(wǎng)絡架構較為簡單,比較適用于簡單、數(shù)據(jù)量少的圖像分割,而針對云分割任務來說,由于其多變的形狀和復雜的下墊面,單一的UNet網(wǎng)絡對此并不適用。受限制于其簡單的網(wǎng)絡結構,在訓練的過程中還存在較多特征信息丟失的情況,導致最終的檢測效果并不理想。
Transformer是一種基于自注意力機制的架構,不同于卷積網(wǎng)絡,其無法進行圖像的全局推理。Transformer具有挖掘長距離的依賴關系和支持并運算的特點,利用注意力機制來獲取全局的上下文信息,從而捕獲更強有力的特征信息,在計算機視覺領域受到了極大的歡迎。而Swin Transformer則解決了Transformer在圖像密集任務預測中計算量大的問題,通過將圖像劃分為一個個非重疊的塊,將自注意的計算限制在每一個小的窗口之中,大大降低了計算的復雜度,成為了適合各種視覺任務的通用骨干網(wǎng)絡。

圖1 Swin Transformer主干網(wǎng)絡結構圖
(1)
式中:Q(查詢)、K(鍵值)、V(值)是通過對輸入特征矩陣進行線性變換所得到;dk表示向量的維度。
多頭自注意力機制是在總體參數(shù)量不變的情況下,將Q、K、V3個參數(shù)進行有限次數(shù)的拆分,這種做法可以使得模型注意到不同位置上的不同子空間信息。有研究表明,頭的數(shù)量夠多時,其最終的效果可以媲美卷積的特征提取效果[17]。
Swin Transformer通過窗口多頭注意力機制(W-MSA)來減少計算的復雜度,將特征圖劃分為一個個不重疊的窗口,只在窗口之中做自注意力計算。同時,通過位移窗口的多頭自注意力機制[18](SW-MSA)來實現(xiàn)窗口之間的信息交互,并保證高效的計算效率。在Swin Transformer的每個模塊中的W-MSA和SW-MSA都是交替使用的,模塊是一個兩層的結構,如圖1所示,每一層輸入后都會進行一次歸一化(layer normalization,LN)處理,這樣可以加速模型收斂且一定程度上緩解梯度消散的情況。第一層是進行MSA計算,而第二層存在一個多層感知機(MLP)的計算。
在云檢測的過程中,為了給網(wǎng)絡提供精細的邊緣特征,本文使用一種簡單易實現(xiàn)的邊緣提取網(wǎng)絡,其總體結構如圖2所示,在編碼階段使用的是殘差結構[19]進行編碼,同時使用最大池化進行下采樣,而解碼階段則是采用卷積和上采樣來完成圖像邊緣信息的提取,同時結合UNet中的跳躍連接的思想,加強特征信息的學習。圖2中的Resblock是殘差塊。值得注意的是,由于高分辨率特征有利于邊緣信息的提取,故該網(wǎng)絡值只將圖像下采樣到原始分辨率的1/8。

圖2 邊緣預測網(wǎng)絡
在訓練的過程中,邊緣信息可以通過對云的真實標簽值來獲取。云邊緣信息是指處于云和非云像素交界的像素點,其余的像素點都是非邊緣信息,這就使得數(shù)據(jù)存在嚴重失衡的現(xiàn)象,云邊緣信息相對于整張圖像所占取的比例極少,從而影響云邊緣檢測的準確率。因此,本文使用了一種針對數(shù)據(jù)失衡的損失函數(shù)generalized dice loss(GDL)[20]來解決這個問題。該方法通過對云的邊緣像素加權來檢測云的邊緣信息,云邊緣像素的數(shù)量越少則給予其越大的權重。
在上述研究的基礎上,本文結合Transformer 和UNet的網(wǎng)絡思想并加入邊緣特征的提取,設計了一個針對云檢測的網(wǎng)絡Cloud TransUnet。主要創(chuàng)新有以下3點。
1)為了提高網(wǎng)絡在復雜下墊面的檢測精度,以及減少對薄云、碎云的漏判和誤判,本文將UNet中的卷積模塊替換為Swin Transformer模塊,Swin Transformer可以更好地關注全局信息,不受感受野大小的限制,同時Swin Transformer的計算量較小,一定程度上可以提高網(wǎng)絡的整體效率。
2)為了加強對云邊緣信息的提取,設計一個簡單的邊緣檢測網(wǎng)絡,來實現(xiàn)對云邊緣的檢測,并將其融合到網(wǎng)絡架構之中,減少邊緣信息的丟失。
第一,相關法律規(guī)范過于分散,協(xié)調(diào)性、操作性較差。除《未成年人保護法》《預防未成年人犯罪法》之外,其他有關未成年人的法律分散在一些相關法律、法規(guī)之中。由于在這些法律中所占比例很小,其重要性常常被忽視(這些法律的具體實施部門并非專門的未成年人保護及犯罪預防部門);有關法律規(guī)范剛性不足,違反這些規(guī)范時要么缺乏法律后果規(guī)定,要么法律規(guī)范中規(guī)定的法律責任難以具體落實,致使許多法條成為宣誓性條文;有些法律規(guī)范之間還存在著明顯的不協(xié)調(diào)之處。上述這些立法狀況嚴重影響了相關法律的有效實施。
3)為了加強對云像素特征信息的關注以及消除數(shù)據(jù)分布不均勻所帶來的影響,使用中值頻率平衡思想對損失函數(shù)進行優(yōu)化。
Cloud TransUnet的結構如圖3所示。

圖3 Cloud TransUnet 網(wǎng)絡結構示意圖
階段 1(邊緣檢測網(wǎng)絡階段):將裁剪好的數(shù)據(jù)進行歸一化,再經(jīng)過邊緣提取器進行邊緣信息的提取,邊緣信息和原圖的分辨率大小是一致的,將邊緣信息和原圖進行拼接處理,作為編碼階段的輸入。
階段2(編碼器階段):編碼器使用Swin Transformer作為主干,其示意圖如圖3所示,其中4個階段的Swin Transformer模塊的數(shù)量分別是2、2、10、4,每個階段的多頭注意力機制中感知頭的數(shù)量分別取2、4、8、16,其中C取值為64。由于Swin Transformer模塊并不會改變圖像的分辨率,故在每個階段最初都會進行圖像分辨率的調(diào)整,使用PM(patch merging)對圖像進行下采樣,同時增加通道數(shù),這樣可以很大程度上減少參數(shù)量,并增加網(wǎng)絡的非線性關系,使得編碼具有更好的表達能力。每個階段的輸出特征分辨率具有從小到大不同的接受域,使其可以提取不同大小的特征信息。

對于損失函數(shù)而言,使用最常見的交叉熵損失函數(shù)。但是,交叉熵損失函數(shù)是通過對所有像素的損失進行求和來計算得到的,這樣的方式并不能考慮正負樣本之間存在的數(shù)據(jù)不平衡的關系。在本文中,一種使用交叉熵損失函數(shù)對數(shù)據(jù)進行訓練,一種使用改進的損失函數(shù)進行訓練,改進的損失函數(shù)是通過利用中值頻率平衡(median frequency balancing,MFB)來對每一類的損失進行加權處理[21]。中值頻率權重是使用訓練集中各個類別頻率的中位數(shù)與實際每個類別頻率的比值來決定的。改進后的交叉熵損失函數(shù)如式(2)、式(3)所示。
(2)
(3)

本文的數(shù)據(jù)來自公開數(shù)據(jù)集95-Cloud[22-23],該數(shù)據(jù)集中存在75個訓練集場景、20個測試集場景,來自Landsat 8 Collection 1 Level-1的衛(wèi)星數(shù)據(jù)。該數(shù)據(jù)集中包含4個通道的信息,分別是紅波段、綠波段、藍波段以及近紅外波段信息,其中的真實云標簽都是通過人工提取的。95-Cloud中選擇了不同下墊面的圖像,包括土壤、植被、雪、冰、水等不同土地覆蓋類型的數(shù)據(jù),可以使得網(wǎng)絡訓練結果具有良好的泛性。訓練集分割后總塊數(shù)為34 701塊,但由于是衛(wèi)星圖像,將其中空的塊去除之后,還剩21 502塊。為了確保最終結果的真實性,將數(shù)據(jù)集按照8∶2的比例進行切分,且其中每個場景也是按照這個比例進行分割,確保測試集中的多樣性。最終訓練集的數(shù)量為15 087,測試集的數(shù)量為6 415,每塊的大小為384×384×4。
Cloud TransUnet是在pytorch的基礎上實現(xiàn)的語義分割模型,本次實驗運行環(huán)境是NVIDIA RTX 3070ti GPU(顯存大小為8 GB)服務器,CPU為Intel(R) Core i7-11700 2.50 GHz,內(nèi)存大小為32 GB,操作系統(tǒng)為Windows10,編程語言為Python3.7。
本文中選取總體精度(ACC)、精確率(precision)、平均交并比(MIoU)、召回率(recall)、F1-score作為評價指標,以及包括模型大小(params)、計算量(flops)和FPS,對該模型進行一個綜合的評判。其中ACC是表示預測正確像素占所有像素的比例;precision表示的是預測為云且真實為云的像素占真實為云像素的比例;recall表示預測為云且真實為云的像素占被預測為云像素的比例;F1-score是recall和precision之間的加權平均;FPS是指計算機每秒能處理的圖像數(shù)量;MIoU是語義分割算法中最常用的評價指標,也是本文中最主要的評價指標。
1)消融實驗。為了驗證本文所使用的改進方法針對云檢測來說是真實有用的,進行一次消融實驗。檢測結果如表1所示。

表1 消融實驗對比結果
其中pre-edge表示的是添加了邊緣檢測網(wǎng)絡模塊;MFB表示使用了改進的損失函數(shù)去對數(shù)據(jù)的不平衡進行處理;Cloud TransUnet表示未添加邊緣檢測網(wǎng)絡,并且損失函數(shù)使用的是交叉熵損失函數(shù)。實驗過程中網(wǎng)絡模型的優(yōu)化器為Adam,學習率設置為0.001,共訓練90個epoch。上表中總體精度的變化并不大,但對云的檢測精度提升了兩個點以上,可以看出使用MFB處理云和非云像素之間數(shù)據(jù)不平衡的能力較強,可以有效地提高云的精確度,同時添加邊緣預測模塊,豐富了云的邊緣信息,使得云判更為準確。方法中MIoU提升幅度較小的原因是本文網(wǎng)絡對于檢測云的精度已經(jīng)到了一個較高的水準,故而其改進的方法提升不明顯。
2)云檢測方法對比分析。為了驗證本文所提出方法Cloud TransUnet的有效性,選取目前已經(jīng)應用在云檢測網(wǎng)絡上的語義分割網(wǎng)絡如UNet、SegNet、ResUnet,以及Swin-Unet這種純Transformer的網(wǎng)絡模型,將其應用在云檢測,與本文的算法進行實驗對比。如圖4所示,在針對薄云的檢測中,前4種方法普遍存在誤判的情況,而本文算法對薄云的識別較為準確,表現(xiàn)最佳;在碎云的檢測過程之中,圖像中存在較多的微小目標,其中UNet和Segnet存在較多微小目標漏判的情況,而其余3種表現(xiàn)較為良好;在針對厚云的檢測之中,由于圖像的特征信息較為明顯,故整體上檢測較好,但是前4種對比方法在一些云邊緣上還存在誤判、檢測不準確的問題,而Cloud TransUnet表現(xiàn)最好,沒有出現(xiàn)明顯的誤判和檢測不準確的問題。在不同的下墊面情況下,如圖5所示,UNet在復雜的下墊面下,存在大量漏判的情況;Swin Unet存在一種像素感,這是由于在Swin Unet上采樣過程中丟失較多的細節(jié)信息所導致的,且每個圖像中都可以看出其在云邊緣存在大量誤判的情況;SegNet與ResUnet在針對荒地下墊面時也會出現(xiàn)大量誤判的情況,且這兩個方法在檢測薄云時極易出現(xiàn)誤判的現(xiàn)象;Cloud TransUnet在大部分情況下預測較為準確,邊緣信息完善,通過圖像對比可以發(fā)現(xiàn),其誤判的情況發(fā)生較少,盡管存在部分漏判,但是總體而言表現(xiàn)最佳。

圖4 不同云種類對比結果(GT表示圖像真實云標簽)

圖5 不同下墊面對比結果(GT表示圖像真實云標簽)
從表2可以看出,UNet在各項指標上表現(xiàn)均不佳,存在大量的誤判和漏判現(xiàn)象,但是由于其結構簡單,在圖像的處理速度上具有一定的優(yōu)勢。而SegNet總體的準確率不高,也存在一定的漏判和誤判的情況,并且在處理速度上也不具有優(yōu)勢。ResUnet模型的整體參數(shù)量較少,相比較UNet和SegNet而言,各項指標有了一定程度的提升。Swin Unet在整體的精度上和SegNet、ResUnet相差不大,但是其召回率是所有模型中表現(xiàn)最好的,達到了0.963 1,說明該模型檢測結果中漏判的情況較少,但是其精確率和SegNet、ResUnet相比,卻有了明顯的下降,說明該模型中還存在較多誤判現(xiàn)象。Cloud TransUnet的總體精度達到了0.960 8,且云的精確率也達到了0.963 0,相對于其他4種方法都有較好的提升,雖然召回率相對于Swin-Unet來說略有損失,但是綜合召回率和精確率兩個指標來看,其F1-score表現(xiàn)最佳,達到了0.956 4,同時,其MIoU達到了0.923 9,相對于純Transformer模型Swin-Unet和目前針對云檢測表現(xiàn)較好的卷積模型ResUnet,其MIoU分別提升了1.03%和1.13%。同時,Cloud TransUnet中模型的大小以及計算量相比其他算法而言相差并不大,且其FPS達到了107.69,在圖像的處理速度上具有一定的優(yōu)勢。綜上可以看出,本文所提出的Cloud TransUnet云檢測方法相比經(jīng)典的云檢測語義分割網(wǎng)絡和純Transformer語義分割網(wǎng)絡,在性能上具有一定的提升。

表2 不同算法實驗對比
本文所提出的Cloud TransUnet融合了Transformer和卷積思想,應用于光學遙感圖像云檢測領域上Cloud TransUnet所使用的邊緣提取網(wǎng)絡,提高了網(wǎng)絡對邊緣特征的提取能力,從實驗結果中可以看出確實提高了云檢測的總體精度,并且在針對薄云和碎云方面也有很好的表現(xiàn)。Cloud TransUnet同時添加了針對訓練批次中存在的數(shù)據(jù)不平衡等問題,通過使用中值頻率對損失函數(shù)加權,來避免在訓練過程中對非云像素的過度關注,可以更好地去學習云像素的特征信息從而提高精確率。實驗結果表明,與目前較為優(yōu)秀的云檢測算法相比,Cloud TransUnet在檢測速度略微提升的同時,其mIoU、總體精度、精確率等多個指標也得到了一定提升,減少了誤判和漏判現(xiàn)象,可以較好地實現(xiàn)對自然場景下的云檢測。
但是Cloud TransUnet還是存在一些未能解決的問題,如對一些極小云的檢測并不準確,存在漏檢的情況,且針對雪、冰原這種特殊下墊面,其精確率還有待提升。