張 雪, 賈克斌, 劉 鈞, 張 亮
(1.北京工業大學 信息學部,北京 100124;2.先進信息網絡北京實驗室,北京 100124;3.華云升達(北京)氣象科技有限公司,北京 102299)
云作為一種重要氣象因素,是水氣循環的中間環節,不同形態和數量的云常伴隨不同的天氣現象,因此云量的觀測對天氣預測具有一定的指導意義。云量檢測是檢測云體積的大小,用云體遮蔽天空視野成數的指標來衡量云量。準確分割云圖,獲取有效的云量信息,不僅能提升天氣預報的準確性,也為飛行保障、人工增雨等提供幫助[1]。
目前云圖來源有衛星遙感觀測得到的云圖和地基觀測得到的云圖,本研究針對從地面觀測得到的地基云圖,它有形狀、結構、紋理等精細的云體細節信息,能更有效地分割云圖、檢測云量,進而有效輔助局部區域內的天氣預測。近幾年,地基云圖的觀測主要靠人工目測,由觀測員根據自己的經驗對觀測到的云量進行判斷,但這個方法存在受主觀意識和情緒干擾、成本高等弊端,所以基于地基云圖的云量自動檢測方法逐漸發展起來,而云圖分割是實現云量自動化檢測的關鍵步驟。
近年來,不少學者提出了越來越多的云圖分割方法,最初提出基于閾值的分割方法,Yamashita等[2]通過定義天空指數SI和亮度指數BI,用SI和BI閾值將云和天空分開;周文君等[3]用全天空成像儀觀測云量,通過統計分析像素點紅藍比值,設定閾值小于0.62為晴空,閾值大于0.66為云體;Zhu等[4]提出一種局部閾值算法,根據不同區域的特征使用不同的閾值來區分云體和天空,提高了云圖分割精度。
隨著深度學習和卷積神經網絡的快速發展,越來越多的深度學習結合卷積神經網絡方法被用到地基云圖的檢測上。毋立芳等[5]提出一種基于超像素分析的全卷積網絡(Fully Convolutional Networks,FCN)和深度卷積神經網絡(Convolutional Neural Networks,CNN)結合的FCN-CNN云圖分割方法,該方法首先通過超像素分析實現云圖每個像素點近領域的聚類,然后將聚類結果輸入FCN-CNN,可以得到較精確的分割結果。沈慧想等[6]提出一種對稱式密集連接卷積神經網絡對云圖進行分割,該方法首先通過普通卷積提取云圖特征,然后經過密集連接塊和上采樣模塊處理特征圖,最后并聯融合網絡淺層和深層特征,實現云圖分割,該方法在一定程度上提高了地基云圖分割的精度,但是模型參數量太大,嚴重影響了訓練速度。Dev等[7]利用Encoder-Decoder架構,提出了一種基于深度學習的云圖分割網絡CloudSegNet,使云圖分割準確率達到了94%。
隨著卷積神經網絡在圖像分割領域發展得越來越成熟,也有不少卷積神經網絡用于云圖分割技術,通過對大量數據的學習,提取精細的云體特征,使網絡魯棒性更高、泛化能力更強,進而達到更佳的分割效果。但現有云圖分割網絡模型參數量較大,運算復雜度較高,導致訓練速度慢,難以實際部署。因此研究一種低參數量、低顯存占用的云圖分割技術,實現云圖的精準分割對研究氣候變化、天氣預測等氣象領域問題具有極大的實際應用價值。本文構建了標準GT地基云圖數據集HBMCD_GT,基于這一數據集,提出了一種基于地基云圖的輕量化分割網絡LGCSegNet(Lightweight Ground-Based Cloud Image Segmentation Network),可以在低運算量前提下更好地提取云體特征信息,實現對云圖的精確分割。
本文構建的云圖分割數據集HBMCD_GT是在HBMCD數據集[8]作為原圖片的基礎上進行構建的,具體構建步驟如圖1所示。

圖1 HBMCD_GT數據集構建流程
HBMCD數據集中的圖片大多是白天云圖,會有很強的太陽光,嚴重干擾了云圖分割,因此為了構建標準的GT地基云圖數據集,主要有以下兩個步驟:① 訓練一個分割效果較好的分割網絡,輔助云圖分割;② 將云圖YCrCb的Y通道分量進行閾值分割后的結果與云圖分割的0-1圖像矩陣相與,再進行人工校準標注,最后得到精準的GT圖。
上述步驟①的流程如圖1(a)所示,選用分割效果表現出色的UNet作為預訓練網絡,用開源的分割數據集SWIMSEG[9]和SWINSEG[10]作為訓練數據,但是這兩個數據集中圖片數量都比較少,為了保證訓練網絡的性能,將上述兩個數據集進行數據擴增,用擴增后的數據來訓練UNet網絡,擴增前后數據如表1所示。

表1 數據集擴增前后數據量對比
標準GT地基云圖數據集構建步驟②的流程如圖1(b)所示,首先將HBMCD的原始圖片輸入預訓練網絡UNet,得到0-1圖像矩陣;接著將原始圖片在YCrCb顏色空間提取Y通道分量,然后利用閾值判斷太陽光和云體,大于閾值判斷為太陽光,小于閾值判斷為云體;最后將閾值判斷結果與0-1圖像矩陣相與,達到去除太陽光的目的,效果如圖2所示。

圖2 分割數據集制作步驟分割效果圖
為保證數據集的置信度,通過對分割圖逐張進行人工校準標注,最后形成標準的HBMCD_GT數據集。
將現有的開源云圖分割數據集與本文構建的數據集進行對比,如表2所示,SWIMSEG數據集是白天地基云圖的原圖和GT圖,而SWINSEG數據集是夜晚地基云圖的原圖和GT圖。以上兩個數據集中云圖的GT圖數量比較少,本文構建的數據集既包含白天云圖的GT圖也包含夜晚云圖的GT圖,圖片數量較多,為后續云量檢測提供了堅實的數據基礎。

表2 數據集比較
由于現有云圖分割方法分割效果不佳,無法解決太陽光干擾,并且網絡模型參數量和運算復雜度高,不便于實際部署應用,因此采用在語義分割上表現較好的Encoder-Decoder框架思想構建本文網絡模型LGCSegNet,網絡結構如圖3所示。圖片輸入網絡后,首先進入Encoder模塊,通過一層3×3卷積和最大池化層提取圖像淺層特征信息,然后通過特征提取單元和下采樣單元提取圖像深層特征。為了提升神經網絡特征提取的效果,在加深網絡深度的前提下保證網絡參數量盡可能小,通過重復4次Down-Conv達到目的,每個Down-Conv模塊由不同個數的特征提取單元和一個下采樣單元組成,經過4個Down-Conv模塊后,特征進入一個1×1的卷積;接著進入Decoder部分,該部分采用了4個Up-Conv的上采樣單元和1個final Up-Conv的上采樣單元,在Up-Conv上采樣單元中也使用了膨脹卷積,能有效降低參數量,避免特征損失。

圖3 LGCSegNet網絡結構
在Encoder模塊中利用卷積層和池化層提取不同尺度的特征,其流程為:224×224的輸入圖像首先經過一個3×3卷積層和最大池化層得到112×112大小的圖像特征,然后再通過4個Down-Conv模塊,每個Down-Conv模塊的輸出特征大小是輸入該模塊特征的一半,最后經過一個1×1卷積得到7×7大小的特征。其中4個Down-Conv模塊構成了Encoder模塊特征提取的主要部分,而每個Down-Conv本質是由不同個數的特征提取單元和一個下采樣單元構成,所以特征提取單元和下采樣單元的設計是本文網絡設計的重要環節之一。
為了減少參數量,本文借鑒MobileNet[11]的設計思想,在特征提取單元中采用深度可分離卷積,其基本思想是把標準卷積分解成深度卷積(Depthwise Convolution,DWConv)和1×1逐點卷積(Pointwise Convolution),先用深度卷積實現每個卷積核對應一個輸入通道,然后再用1×1的逐點卷積來組合不同通道深度卷積輸出的信息,這個過程不僅可以有效減少參數計算量和模型大小,而且還保證了特征提取單元的寬度和深度。為了提取更多豐富的云體結構特征,在深度卷積中加入不同膨脹率的膨脹卷積(Dilated Convolution),使模型在同一層有不同的感受野,有效降低模型深度。本文還使用了跳躍連接提取殘差特征,最后,使用通道打亂方法打亂通道間信息,彌補了通道連接帶來的損失,接著利用一個全局平均池化和兩個全連接層對打亂后的通道進行整體特征提取,并將輸出結果與原通道特征圖進行逐元素相乘,實現通道權重分配,提升模型能力,這就是注意力機制(Attention)[12],特征提取單元模型設計如圖4所示。

圖4 特征提取單元模型
在下采樣單元中,首先通過一個1×1卷積整合通道間信息,然后同時經過3×3的平均池化和最大池化,提取局部區域的整體和輪廓信息,保留主要的特征信息,降低信息冗余,完成不同尺度特征的下采樣。接著將平均池化和最大池化的輸出分別經過一個1×1卷積后實現通道相連,增加通道寬度,下采樣單元網絡模型設計如圖5所示。

圖5 下采樣單元網絡模型
為了重現提取的特征,需要將Encoder模塊得到的特征經過上采樣單元還原到圖像原始尺寸,這個過程稱為Decoder。在本文中,使用了4個Up-Conv和1個final Up-Conv上采樣單元,為了減少模型參數量,在Up-Conv中,首先經過一個1×1卷積,再經過上采樣增大特征尺寸,最后通過一個深度卷積和膨脹率為1的膨脹卷積,如圖6(a)所示;而與Up-Conv結構相比final Up-Conv只是將深度卷積和膨脹卷積換成了普通的3×3卷積,如圖6(b)所示。由于深度卷積在減少參數量的同時可能會損失一些特征,所以采用concatenate方法將Encoder模塊與Decoder模塊具有相同尺度特征的通道進行合并,以實現更精細的圖像特征重現。

圖6 上采樣單元網絡模型
為了滿足實驗過程中快速處理數據的要求,本文實驗在實驗室GPU上進行,在處理器為Intel?Xeon?Silver 4114 CPU @2.20 GHz,運行內存為32 GB DDR4,顯卡為Nvidia GeForce RTX 2080的硬件環境下,搭建Ubuntu 18.04的操作系統,并在該操作系統上用Pytorch 1.4框架和Python 3.7搭建網絡,實現網絡的訓練、驗證和測試。
本文將HBMCD數據集中11000張圖片和本文構建的對應HBMCD_GT作為數據集,為了讓模型充分學習云圖特征,達到較好的實驗效果,將訓練集、驗證集、測試集按8∶1∶1的比例分開。網絡訓練批次batch_size設為32,訓練迭代次數epoch設為100,學習率為0.01,損失函數是交叉熵函數,優化器是Adam,為了避免實驗過擬合,在訓練時使用early stop,當迭代次數達到20次時,若驗證損失依然沒有減小,就停止訓練。
本文實驗評價指標是像素準確率(Pixel Accuracy,PA)、平均交并比(Mean Intersection over Union,MIoU),其計算公式為
(1)
(2)
式中:TP(True Positive)為被模型分類正確的正樣本;TN(True Negative)為被模型分類正確的負樣本;FN(False Negative)為被模型分類錯誤的正樣本;FP(False Positive)為被模型分類錯誤的負樣本;n為類別數。為了保證最終實驗結果的可信度,重復6次實驗并取其均值作為每個實驗指標的最終結果。
將網絡分割效果圖與原圖、GroundTruth真值圖進行對比,如圖7所示,本文所提出的模型LGCSegNet能分割出大部分的云體,只有一些與天空顏色相近的云體和絲縷狀云體難以被分割出來。

圖7 網絡云圖分割結果
為了證明本文模型LGCSegNet在地基云圖上較優的分割效果,將本文模型和幾種在語義分割上表現優秀的經典網絡進行對比,主要對比指標是像素準確率和平均交并比,對比實驗結果如表3所示。

表3 網絡性能比較 單位:%
從表3中可以看出,RefineNet、DeepLab-V3、PSPNet和SegNet網絡的分割準確率和平均交并比遠小于LGCSegNet網絡;雖然經典的分割網絡UNet和FCN的分割準確率只比LGCSegNet網絡低1%左右,但是其平均交并比低于LGCSegNet網絡近3%,所以本文提出的模型LGCSegNet具有最高的分割準確率和平均交并比,也證明了模型LGCSegNet有較優的分割效果。
接著將上述的幾種網絡在參數量、運算量和單張圖像預測耗時上進行對比,結果如表4所示,其中運算量是網絡模型的浮點運算次數,也就是網絡模型的時間復雜度,它決定了模型的預測時間,時間復雜度越大,模型預測的時間就越長。
從表4中可以看出,除了本文網絡LGCSegNet,其他網絡的參數量都在10.00 MB以上,運算量都在10.000 GB以上,單張圖像的預測時間均在2.900 s以上,而LGCSegNet網絡的參數量和運算量跟其他網絡相比都很小,參數量只有0.31 MB,運算量只有0.108 GB,單張圖像預測的時間也只達到了2.742 s,相比其他網絡模型,本文網絡模型參數量較少,時間復雜度較低,進一步減少了模型預測時間,達到了網絡輕量化的目的。由此證明,本文提出的LGCSegNet模型不僅能精準分割云圖,而且只用了較低的參數量和時間復雜度,占用較低的顯存,耗費較少的預測時間,為實際部署應用奠定了良好的基礎。

表4 幾種網絡模型的輕量化對比
最后將在云圖分割任務上表現較好的網絡FCN、UNet和LGCSegNet在模型訓練Loss(網絡輸出與真實標簽之間的誤差)上進行對比,Loss收斂情況如圖8所示,從圖8中可以看出,對比3條Loss曲線收斂情況,本文模型LGCSegNet的收斂效果最好,進一步證明LGCSegNet網絡性能較優,在地基云圖分割任務上具有較好的表現。

圖8 LGCSegNet、UNet和FCN網絡Loss對比
實現云量的自動化精準觀測可以有效減小由氣象觀測員主觀因素影響帶來的識別誤差,節約人力成本。為了解決現有云圖分割網絡效果不佳、顯存占用高等問題,本文利用“Encoder-Decoder”網絡模型框架,結合不同層次特征通道合并思想,設計并構建了一個輕量化的地基云圖分割網絡模型LGCSegNet。該網絡能精確提取云圖特征,在一定程度上避免了特征的邊界損失,將本文模型與經典的語義分割網絡模型進行對比實驗,本文模型可以使分割準確率達到96.83%,平均交并比達到86.00%,在輕量化方面,該網絡不僅能提升云圖分割準確率,而且能大量降低參數量、運算復雜度和顯存占用,為云圖分割的實際應用提供了較大可能。大量的實驗數據證明本文構建的網絡模型能在輕量化的前提下實現高準確率的分割效果,可以為后續的天氣預報等領域的研究提供有效依據。本文雖然實現了云圖的分割,但沒有涉及云圖分類的問題,后續可以實現云圖分割與云圖分類的聯合檢測,進一步提高分割和分類準確率。