謝國波,何宇欽,林志毅,唐晶晶,文剛
(1.廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510060;2.云南電網(wǎng)有限責(zé)任公司電力科學(xué)研究院,昆明 650217)
光學(xué)遙感圖像是目前使用范圍最廣的衛(wèi)星遙感圖像,涉及到我們生活中的多個(gè)領(lǐng)域,如林業(yè)、城市規(guī)劃、農(nóng)業(yè)等方面[1]。但是因?yàn)樵频拇嬖?很多的地物信息無法獲取,且根據(jù)ISCCP組織所提供的地球云量數(shù)據(jù),地球上有將近一半的區(qū)域是時(shí)常被云所覆蓋的[2]。故而,針對光學(xué)衛(wèi)星圖像,如何準(zhǔn)確將其中的云層檢測出來也是目前學(xué)者的一個(gè)重要研究方向。
針對云檢測算法的研究,目前主要可分為3類:閾值法、經(jīng)典機(jī)器學(xué)習(xí)方法和深度學(xué)習(xí)方法。其中閾值法主要是利用云的光譜特性結(jié)合閾值來進(jìn)行云的分類,該類方法當(dāng)中最為著名的莫過于Zhu等[3]提出的Fmask算法,幾乎利用所有的波段信息,使用超過20個(gè)閾值和動(dòng)態(tài)閾值來判斷。但是閾值法具有很大的局限性,對噪聲較為敏感,魯棒性差?;诮?jīng)典機(jī)器學(xué)習(xí)的云檢測方法,主要是利用經(jīng)典機(jī)器學(xué)習(xí)的算法,通過一系列的方法對云的特征進(jìn)行提取,如:灰度共生矩陣、分形維數(shù)、角二階矩陣等[4-6],然后使用支持向量機(jī)[7]、決策樹[8]、隨機(jī)森林[9]等分類器對這些特征進(jìn)行分類,從而達(dá)到云檢測的目的。這些方法相比閾值法,其檢測的精度要高,但是計(jì)算量大,選取的特征直接關(guān)乎最終的結(jié)果?;谏疃葘W(xué)習(xí)的云檢測方法,就是將深度語義分割的方法應(yīng)用到云檢測上,一些優(yōu)秀的語義分割方法,如全卷積網(wǎng)絡(luò)[10]、UNet[11]、SegNet[12]等已被應(yīng)用到云檢測上。張家強(qiáng)[13]將ResNet與UNet進(jìn)行融合,將UNet中的卷積模塊都替換為殘差模塊,取得了93.33%的優(yōu)異結(jié)果。目前基于深度學(xué)習(xí)的云檢測算法中,大部分都是使用到了卷積,受卷積中感受野的影響,其關(guān)注的窗口信息是有限的。同時(shí)這些方法對薄云和碎云以及在不同下墊面的情況下的云檢測精度還有著進(jìn)一步提升的空間。
目前Transformer[14]技術(shù)在語義分割方面也有著很好的表現(xiàn),其可以關(guān)注到全局信息,進(jìn)而提高了特征提取的能力。Zheng等[15]提出的segmentation transformer(SETR)在編碼階段使用Transformer模塊代替CNN主干,并應(yīng)用在語義分割方向上,證明了其在語義分割任務(wù)中的巨大潛力。Cao等[16]提出的Swin-UNet方法可以被看作是UNet和Transformer的混合模型,其結(jié)構(gòu)簡單,但是具有很好的效果。目前Transformer已經(jīng)被應(yīng)用到遙感圖像的檢測、分割等方面,但是并未被應(yīng)用到遙感圖像的云檢測。
雖然Transformer可以提取豐富的語義信息,并具有優(yōu)秀的檢測精度,但是其在云檢測方向上并沒有相關(guān)的應(yīng)用研究,并且目前云檢測方向上還存在以下的一些問題:針對復(fù)雜下墊面情況的云檢測的難度較大,整體的精度還有提升的空間;針對薄云以及碎云,在預(yù)測上會(huì)出現(xiàn)漏判以及錯(cuò)判的情況,故需要對算法進(jìn)行合理的改進(jìn);云邊緣信息復(fù)雜,其邊緣輪廓信息準(zhǔn)確判斷的難度較高,且在檢測的數(shù)據(jù)中還存在數(shù)據(jù)不平衡的情況發(fā)生?;谏鲜鰡栴},本文結(jié)合Transformer與UNet網(wǎng)絡(luò)模型,設(shè)計(jì)出一種針對遙感圖像云檢測網(wǎng)絡(luò)Cloud TransUnet,該網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了編碼器卷積模塊的替換,增加了邊緣預(yù)測模塊以及損失函數(shù)的優(yōu)化。實(shí)驗(yàn)結(jié)果表明,與當(dāng)前存在的云檢測算法相比,Cloud TransUnet的參數(shù)量較少,在保證檢測速度的前提下,云檢測的精度、準(zhǔn)確度等指標(biāo)得到了一定的提升。
UNet是一種編碼-解碼的網(wǎng)絡(luò)架構(gòu),通過使用跳躍連接的思想,實(shí)現(xiàn)了特征的復(fù)用,在很大程度上減少了特征信息的丟失。同時(shí),UNet的網(wǎng)絡(luò)架構(gòu)較為簡單,比較適用于簡單、數(shù)據(jù)量少的圖像分割,而針對云分割任務(wù)來說,由于其多變的形狀和復(fù)雜的下墊面,單一的UNet網(wǎng)絡(luò)對此并不適用。受限制于其簡單的網(wǎng)絡(luò)結(jié)構(gòu),在訓(xùn)練的過程中還存在較多特征信息丟失的情況,導(dǎo)致最終的檢測效果并不理想。
Transformer是一種基于自注意力機(jī)制的架構(gòu),不同于卷積網(wǎng)絡(luò),其無法進(jìn)行圖像的全局推理。Transformer具有挖掘長距離的依賴關(guān)系和支持并運(yùn)算的特點(diǎn),利用注意力機(jī)制來獲取全局的上下文信息,從而捕獲更強(qiáng)有力的特征信息,在計(jì)算機(jī)視覺領(lǐng)域受到了極大的歡迎。而Swin Transformer則解決了Transformer在圖像密集任務(wù)預(yù)測中計(jì)算量大的問題,通過將圖像劃分為一個(gè)個(gè)非重疊的塊,將自注意的計(jì)算限制在每一個(gè)小的窗口之中,大大降低了計(jì)算的復(fù)雜度,成為了適合各種視覺任務(wù)的通用骨干網(wǎng)絡(luò)。
圖1 Swin Transformer主干網(wǎng)絡(luò)結(jié)構(gòu)圖
(1)
式中:Q(查詢)、K(鍵值)、V(值)是通過對輸入特征矩陣進(jìn)行線性變換所得到;dk表示向量的維度。
多頭自注意力機(jī)制是在總體參數(shù)量不變的情況下,將Q、K、V3個(gè)參數(shù)進(jìn)行有限次數(shù)的拆分,這種做法可以使得模型注意到不同位置上的不同子空間信息。有研究表明,頭的數(shù)量夠多時(shí),其最終的效果可以媲美卷積的特征提取效果[17]。
Swin Transformer通過窗口多頭注意力機(jī)制(W-MSA)來減少計(jì)算的復(fù)雜度,將特征圖劃分為一個(gè)個(gè)不重疊的窗口,只在窗口之中做自注意力計(jì)算。同時(shí),通過位移窗口的多頭自注意力機(jī)制[18](SW-MSA)來實(shí)現(xiàn)窗口之間的信息交互,并保證高效的計(jì)算效率。在Swin Transformer的每個(gè)模塊中的W-MSA和SW-MSA都是交替使用的,模塊是一個(gè)兩層的結(jié)構(gòu),如圖1所示,每一層輸入后都會(huì)進(jìn)行一次歸一化(layer normalization,LN)處理,這樣可以加速模型收斂且一定程度上緩解梯度消散的情況。第一層是進(jìn)行MSA計(jì)算,而第二層存在一個(gè)多層感知機(jī)(MLP)的計(jì)算。
在云檢測的過程中,為了給網(wǎng)絡(luò)提供精細(xì)的邊緣特征,本文使用一種簡單易實(shí)現(xiàn)的邊緣提取網(wǎng)絡(luò),其總體結(jié)構(gòu)如圖2所示,在編碼階段使用的是殘差結(jié)構(gòu)[19]進(jìn)行編碼,同時(shí)使用最大池化進(jìn)行下采樣,而解碼階段則是采用卷積和上采樣來完成圖像邊緣信息的提取,同時(shí)結(jié)合UNet中的跳躍連接的思想,加強(qiáng)特征信息的學(xué)習(xí)。圖2中的Resblock是殘差塊。值得注意的是,由于高分辨率特征有利于邊緣信息的提取,故該網(wǎng)絡(luò)值只將圖像下采樣到原始分辨率的1/8。
圖2 邊緣預(yù)測網(wǎng)絡(luò)
在訓(xùn)練的過程中,邊緣信息可以通過對云的真實(shí)標(biāo)簽值來獲取。云邊緣信息是指處于云和非云像素交界的像素點(diǎn),其余的像素點(diǎn)都是非邊緣信息,這就使得數(shù)據(jù)存在嚴(yán)重失衡的現(xiàn)象,云邊緣信息相對于整張圖像所占取的比例極少,從而影響云邊緣檢測的準(zhǔn)確率。因此,本文使用了一種針對數(shù)據(jù)失衡的損失函數(shù)generalized dice loss(GDL)[20]來解決這個(gè)問題。該方法通過對云的邊緣像素加權(quán)來檢測云的邊緣信息,云邊緣像素的數(shù)量越少則給予其越大的權(quán)重。
在上述研究的基礎(chǔ)上,本文結(jié)合Transformer 和UNet的網(wǎng)絡(luò)思想并加入邊緣特征的提取,設(shè)計(jì)了一個(gè)針對云檢測的網(wǎng)絡(luò)Cloud TransUnet。主要?jiǎng)?chuàng)新有以下3點(diǎn)。
1)為了提高網(wǎng)絡(luò)在復(fù)雜下墊面的檢測精度,以及減少對薄云、碎云的漏判和誤判,本文將UNet中的卷積模塊替換為Swin Transformer模塊,Swin Transformer可以更好地關(guān)注全局信息,不受感受野大小的限制,同時(shí)Swin Transformer的計(jì)算量較小,一定程度上可以提高網(wǎng)絡(luò)的整體效率。
2)為了加強(qiáng)對云邊緣信息的提取,設(shè)計(jì)一個(gè)簡單的邊緣檢測網(wǎng)絡(luò),來實(shí)現(xiàn)對云邊緣的檢測,并將其融合到網(wǎng)絡(luò)架構(gòu)之中,減少邊緣信息的丟失。
第一,相關(guān)法律規(guī)范過于分散,協(xié)調(diào)性、操作性較差。除《未成年人保護(hù)法》《預(yù)防未成年人犯罪法》之外,其他有關(guān)未成年人的法律分散在一些相關(guān)法律、法規(guī)之中。由于在這些法律中所占比例很小,其重要性常常被忽視(這些法律的具體實(shí)施部門并非專門的未成年人保護(hù)及犯罪預(yù)防部門);有關(guān)法律規(guī)范剛性不足,違反這些規(guī)范時(shí)要么缺乏法律后果規(guī)定,要么法律規(guī)范中規(guī)定的法律責(zé)任難以具體落實(shí),致使許多法條成為宣誓性條文;有些法律規(guī)范之間還存在著明顯的不協(xié)調(diào)之處。上述這些立法狀況嚴(yán)重影響了相關(guān)法律的有效實(shí)施。
3)為了加強(qiáng)對云像素特征信息的關(guān)注以及消除數(shù)據(jù)分布不均勻所帶來的影響,使用中值頻率平衡思想對損失函數(shù)進(jìn)行優(yōu)化。
Cloud TransUnet的結(jié)構(gòu)如圖3所示。
圖3 Cloud TransUnet 網(wǎng)絡(luò)結(jié)構(gòu)示意圖
階段 1(邊緣檢測網(wǎng)絡(luò)階段):將裁剪好的數(shù)據(jù)進(jìn)行歸一化,再經(jīng)過邊緣提取器進(jìn)行邊緣信息的提取,邊緣信息和原圖的分辨率大小是一致的,將邊緣信息和原圖進(jìn)行拼接處理,作為編碼階段的輸入。
階段2(編碼器階段):編碼器使用Swin Transformer作為主干,其示意圖如圖3所示,其中4個(gè)階段的Swin Transformer模塊的數(shù)量分別是2、2、10、4,每個(gè)階段的多頭注意力機(jī)制中感知頭的數(shù)量分別取2、4、8、16,其中C取值為64。由于Swin Transformer模塊并不會(huì)改變圖像的分辨率,故在每個(gè)階段最初都會(huì)進(jìn)行圖像分辨率的調(diào)整,使用PM(patch merging)對圖像進(jìn)行下采樣,同時(shí)增加通道數(shù),這樣可以很大程度上減少參數(shù)量,并增加網(wǎng)絡(luò)的非線性關(guān)系,使得編碼具有更好的表達(dá)能力。每個(gè)階段的輸出特征分辨率具有從小到大不同的接受域,使其可以提取不同大小的特征信息。
對于損失函數(shù)而言,使用最常見的交叉熵?fù)p失函數(shù)。但是,交叉熵?fù)p失函數(shù)是通過對所有像素的損失進(jìn)行求和來計(jì)算得到的,這樣的方式并不能考慮正負(fù)樣本之間存在的數(shù)據(jù)不平衡的關(guān)系。在本文中,一種使用交叉熵?fù)p失函數(shù)對數(shù)據(jù)進(jìn)行訓(xùn)練,一種使用改進(jìn)的損失函數(shù)進(jìn)行訓(xùn)練,改進(jìn)的損失函數(shù)是通過利用中值頻率平衡(median frequency balancing,MFB)來對每一類的損失進(jìn)行加權(quán)處理[21]。中值頻率權(quán)重是使用訓(xùn)練集中各個(gè)類別頻率的中位數(shù)與實(shí)際每個(gè)類別頻率的比值來決定的。改進(jìn)后的交叉熵?fù)p失函數(shù)如式(2)、式(3)所示。
(2)
(3)
本文的數(shù)據(jù)來自公開數(shù)據(jù)集95-Cloud[22-23],該數(shù)據(jù)集中存在75個(gè)訓(xùn)練集場景、20個(gè)測試集場景,來自Landsat 8 Collection 1 Level-1的衛(wèi)星數(shù)據(jù)。該數(shù)據(jù)集中包含4個(gè)通道的信息,分別是紅波段、綠波段、藍(lán)波段以及近紅外波段信息,其中的真實(shí)云標(biāo)簽都是通過人工提取的。95-Cloud中選擇了不同下墊面的圖像,包括土壤、植被、雪、冰、水等不同土地覆蓋類型的數(shù)據(jù),可以使得網(wǎng)絡(luò)訓(xùn)練結(jié)果具有良好的泛性。訓(xùn)練集分割后總塊數(shù)為34 701塊,但由于是衛(wèi)星圖像,將其中空的塊去除之后,還剩21 502塊。為了確保最終結(jié)果的真實(shí)性,將數(shù)據(jù)集按照8∶2的比例進(jìn)行切分,且其中每個(gè)場景也是按照這個(gè)比例進(jìn)行分割,確保測試集中的多樣性。最終訓(xùn)練集的數(shù)量為15 087,測試集的數(shù)量為6 415,每塊的大小為384×384×4。
Cloud TransUnet是在pytorch的基礎(chǔ)上實(shí)現(xiàn)的語義分割模型,本次實(shí)驗(yàn)運(yùn)行環(huán)境是NVIDIA RTX 3070ti GPU(顯存大小為8 GB)服務(wù)器,CPU為Intel(R) Core i7-11700 2.50 GHz,內(nèi)存大小為32 GB,操作系統(tǒng)為Windows10,編程語言為Python3.7。
本文中選取總體精度(ACC)、精確率(precision)、平均交并比(MIoU)、召回率(recall)、F1-score作為評價(jià)指標(biāo),以及包括模型大小(params)、計(jì)算量(flops)和FPS,對該模型進(jìn)行一個(gè)綜合的評判。其中ACC是表示預(yù)測正確像素占所有像素的比例;precision表示的是預(yù)測為云且真實(shí)為云的像素占真實(shí)為云像素的比例;recall表示預(yù)測為云且真實(shí)為云的像素占被預(yù)測為云像素的比例;F1-score是recall和precision之間的加權(quán)平均;FPS是指計(jì)算機(jī)每秒能處理的圖像數(shù)量;MIoU是語義分割算法中最常用的評價(jià)指標(biāo),也是本文中最主要的評價(jià)指標(biāo)。
1)消融實(shí)驗(yàn)。為了驗(yàn)證本文所使用的改進(jìn)方法針對云檢測來說是真實(shí)有用的,進(jìn)行一次消融實(shí)驗(yàn)。檢測結(jié)果如表1所示。
表1 消融實(shí)驗(yàn)對比結(jié)果
其中pre-edge表示的是添加了邊緣檢測網(wǎng)絡(luò)模塊;MFB表示使用了改進(jìn)的損失函數(shù)去對數(shù)據(jù)的不平衡進(jìn)行處理;Cloud TransUnet表示未添加邊緣檢測網(wǎng)絡(luò),并且損失函數(shù)使用的是交叉熵?fù)p失函數(shù)。實(shí)驗(yàn)過程中網(wǎng)絡(luò)模型的優(yōu)化器為Adam,學(xué)習(xí)率設(shè)置為0.001,共訓(xùn)練90個(gè)epoch。上表中總體精度的變化并不大,但對云的檢測精度提升了兩個(gè)點(diǎn)以上,可以看出使用MFB處理云和非云像素之間數(shù)據(jù)不平衡的能力較強(qiáng),可以有效地提高云的精確度,同時(shí)添加邊緣預(yù)測模塊,豐富了云的邊緣信息,使得云判更為準(zhǔn)確。方法中MIoU提升幅度較小的原因是本文網(wǎng)絡(luò)對于檢測云的精度已經(jīng)到了一個(gè)較高的水準(zhǔn),故而其改進(jìn)的方法提升不明顯。
2)云檢測方法對比分析。為了驗(yàn)證本文所提出方法Cloud TransUnet的有效性,選取目前已經(jīng)應(yīng)用在云檢測網(wǎng)絡(luò)上的語義分割網(wǎng)絡(luò)如UNet、SegNet、ResUnet,以及Swin-Unet這種純Transformer的網(wǎng)絡(luò)模型,將其應(yīng)用在云檢測,與本文的算法進(jìn)行實(shí)驗(yàn)對比。如圖4所示,在針對薄云的檢測中,前4種方法普遍存在誤判的情況,而本文算法對薄云的識別較為準(zhǔn)確,表現(xiàn)最佳;在碎云的檢測過程之中,圖像中存在較多的微小目標(biāo),其中UNet和Segnet存在較多微小目標(biāo)漏判的情況,而其余3種表現(xiàn)較為良好;在針對厚云的檢測之中,由于圖像的特征信息較為明顯,故整體上檢測較好,但是前4種對比方法在一些云邊緣上還存在誤判、檢測不準(zhǔn)確的問題,而Cloud TransUnet表現(xiàn)最好,沒有出現(xiàn)明顯的誤判和檢測不準(zhǔn)確的問題。在不同的下墊面情況下,如圖5所示,UNet在復(fù)雜的下墊面下,存在大量漏判的情況;Swin Unet存在一種像素感,這是由于在Swin Unet上采樣過程中丟失較多的細(xì)節(jié)信息所導(dǎo)致的,且每個(gè)圖像中都可以看出其在云邊緣存在大量誤判的情況;SegNet與ResUnet在針對荒地下墊面時(shí)也會(huì)出現(xiàn)大量誤判的情況,且這兩個(gè)方法在檢測薄云時(shí)極易出現(xiàn)誤判的現(xiàn)象;Cloud TransUnet在大部分情況下預(yù)測較為準(zhǔn)確,邊緣信息完善,通過圖像對比可以發(fā)現(xiàn),其誤判的情況發(fā)生較少,盡管存在部分漏判,但是總體而言表現(xiàn)最佳。
圖4 不同云種類對比結(jié)果(GT表示圖像真實(shí)云標(biāo)簽)
圖5 不同下墊面對比結(jié)果(GT表示圖像真實(shí)云標(biāo)簽)
從表2可以看出,UNet在各項(xiàng)指標(biāo)上表現(xiàn)均不佳,存在大量的誤判和漏判現(xiàn)象,但是由于其結(jié)構(gòu)簡單,在圖像的處理速度上具有一定的優(yōu)勢。而SegNet總體的準(zhǔn)確率不高,也存在一定的漏判和誤判的情況,并且在處理速度上也不具有優(yōu)勢。ResUnet模型的整體參數(shù)量較少,相比較UNet和SegNet而言,各項(xiàng)指標(biāo)有了一定程度的提升。Swin Unet在整體的精度上和SegNet、ResUnet相差不大,但是其召回率是所有模型中表現(xiàn)最好的,達(dá)到了0.963 1,說明該模型檢測結(jié)果中漏判的情況較少,但是其精確率和SegNet、ResUnet相比,卻有了明顯的下降,說明該模型中還存在較多誤判現(xiàn)象。Cloud TransUnet的總體精度達(dá)到了0.960 8,且云的精確率也達(dá)到了0.963 0,相對于其他4種方法都有較好的提升,雖然召回率相對于Swin-Unet來說略有損失,但是綜合召回率和精確率兩個(gè)指標(biāo)來看,其F1-score表現(xiàn)最佳,達(dá)到了0.956 4,同時(shí),其MIoU達(dá)到了0.923 9,相對于純Transformer模型Swin-Unet和目前針對云檢測表現(xiàn)較好的卷積模型ResUnet,其MIoU分別提升了1.03%和1.13%。同時(shí),Cloud TransUnet中模型的大小以及計(jì)算量相比其他算法而言相差并不大,且其FPS達(dá)到了107.69,在圖像的處理速度上具有一定的優(yōu)勢。綜上可以看出,本文所提出的Cloud TransUnet云檢測方法相比經(jīng)典的云檢測語義分割網(wǎng)絡(luò)和純Transformer語義分割網(wǎng)絡(luò),在性能上具有一定的提升。
表2 不同算法實(shí)驗(yàn)對比
本文所提出的Cloud TransUnet融合了Transformer和卷積思想,應(yīng)用于光學(xué)遙感圖像云檢測領(lǐng)域上Cloud TransUnet所使用的邊緣提取網(wǎng)絡(luò),提高了網(wǎng)絡(luò)對邊緣特征的提取能力,從實(shí)驗(yàn)結(jié)果中可以看出確實(shí)提高了云檢測的總體精度,并且在針對薄云和碎云方面也有很好的表現(xiàn)。Cloud TransUnet同時(shí)添加了針對訓(xùn)練批次中存在的數(shù)據(jù)不平衡等問題,通過使用中值頻率對損失函數(shù)加權(quán),來避免在訓(xùn)練過程中對非云像素的過度關(guān)注,可以更好地去學(xué)習(xí)云像素的特征信息從而提高精確率。實(shí)驗(yàn)結(jié)果表明,與目前較為優(yōu)秀的云檢測算法相比,Cloud TransUnet在檢測速度略微提升的同時(shí),其mIoU、總體精度、精確率等多個(gè)指標(biāo)也得到了一定提升,減少了誤判和漏判現(xiàn)象,可以較好地實(shí)現(xiàn)對自然場景下的云檢測。
但是Cloud TransUnet還是存在一些未能解決的問題,如對一些極小云的檢測并不準(zhǔn)確,存在漏檢的情況,且針對雪、冰原這種特殊下墊面,其精確率還有待提升。