張卓然,張 倩,宋 智,何 嘉
(1.成都信息工程大學(xué)計(jì)算機(jī)學(xué)院,四川成都 610225;2.活躍網(wǎng)絡(luò)(成都)有限公司,四川成都 610000;3.四川省氣象探測(cè)數(shù)據(jù)中心,四川成都 610072)
從戶外活動(dòng)到工業(yè)生產(chǎn),天氣在人類活動(dòng)中起著十分重要的作用。如在霧、雪、暴雨、沙塵暴等極端天氣條件下,會(huì)出現(xiàn)模糊、光滑、濕潤(rùn)的道路情況,導(dǎo)致交通堵塞甚至造成交通事故。通過(guò)對(duì)天氣現(xiàn)象的實(shí)時(shí)監(jiān)控并結(jié)合交通信息,可以有效地避免這些情況的產(chǎn)生。此外,不同的天氣現(xiàn)象也極大地影響著農(nóng)業(yè)生產(chǎn),準(zhǔn)確地對(duì)天氣現(xiàn)象進(jìn)行識(shí)別,有助于保障農(nóng)作物的生長(zhǎng)。
在傳統(tǒng)的天氣識(shí)別中,主要是依靠各種傳感器和人工采集結(jié)果來(lái)測(cè)量溫度、濕度和天氣狀況。由于傳感器成本普遍較高,又需要定期進(jìn)行人工維護(hù),導(dǎo)致不能大范圍地布置傳感器,從而使部分區(qū)域的天氣預(yù)報(bào)不準(zhǔn)確。
隨著深度學(xué)習(xí)的發(fā)展和攝像頭的普及,通過(guò)獲得天氣圖像來(lái)進(jìn)行天氣識(shí)別將成為計(jì)算機(jī)視覺(jué)一個(gè)重要的應(yīng)用。近年來(lái),Lu 等[1]采集并創(chuàng)建了一個(gè)基于晴天和陰天的天氣數(shù)據(jù)集,通過(guò)分別提取天空、陰影、反射、對(duì)比度和模糊5 個(gè)天氣特征,提出協(xié)作學(xué)習(xí)框架進(jìn)行天氣分類。Song 等[2]通過(guò)提取圖片本身的特征并結(jié)合K-NN 算法實(shí)現(xiàn)了對(duì)晴天、雨天、霧天和雪天的識(shí)別。上述方法均是采用機(jī)器學(xué)習(xí),未能準(zhǔn)確地學(xué)習(xí)天氣圖像的特征,對(duì)天氣現(xiàn)象的識(shí)別效果不夠理想。
自2012年AlexNet[3]在ImageNet 大規(guī)模視覺(jué)識(shí)別挑戰(zhàn)賽取得成功以來(lái),卷積神經(jīng)網(wǎng)絡(luò)(CNN)被廣泛應(yīng)用到天氣現(xiàn)象識(shí)別領(lǐng)域。Lin 等[4]提出一種面向多類別天氣識(shí)別的區(qū)域選擇和并發(fā)模型的深度學(xué)習(xí)框架,但該方法性能開(kāi)銷過(guò)大、時(shí)效性差且平均準(zhǔn)確率低。Zhao 等[5]提出一種基于CNN-RNN 的多類別天氣識(shí)別方法,但該方法需要大規(guī)模的數(shù)據(jù)集作為支持,且只能在高端GPU 上進(jìn)行訓(xùn)練,計(jì)算代價(jià)非常昂貴。Wang等[6]提出一種基于輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)的天氣識(shí)別方案,該方案雖然節(jié)省模型的內(nèi)存開(kāi)銷,但降低了天氣識(shí)別的準(zhǔn)確度。Tan 等[7]通過(guò)一種三通道卷積神經(jīng)網(wǎng)絡(luò)對(duì)常見(jiàn)的6 種天氣現(xiàn)象進(jìn)行有效識(shí)別,但只考慮了少數(shù)的天氣類別。此外,Xiao 等[8]在VGG16 的基礎(chǔ)上提出一種針對(duì)11 種天氣現(xiàn)象的網(wǎng)絡(luò)MeteCNN,然而在個(gè)別類別識(shí)別率較低,沒(méi)有達(dá)到很好的效果。
上述方法雖然運(yùn)用了不同的CNN 模型,但都忽視了圖像的全局信息,隨著網(wǎng)絡(luò)的加深會(huì)產(chǎn)生梯度消失的問(wèn)題,同時(shí)感受野在一定程度上受局限。2021年研究人員提出一個(gè)適用于圖像分類的Transformer 模型ViT[9],并在ImageNet 數(shù)據(jù)集獲得了出色的結(jié)果。相比于CNN 模型的平移不變性、局部敏感性和特征之間依賴關(guān)系差,Transformer 模型的自注意力(self-attention,SA)不受局部相互作用的限制,可以根據(jù)不同的任務(wù)目標(biāo)學(xué)習(xí)最合適的歸納偏置[10]。
針對(duì)以上問(wèn)題,本文嘗試將視覺(jué)Transformer 應(yīng)用到天氣現(xiàn)象識(shí)別領(lǐng)域,選取一種利用滑動(dòng)窗口操作、具有層級(jí)設(shè)計(jì)的Swin Transformer 網(wǎng)絡(luò)結(jié)構(gòu)[11]作為基礎(chǔ)網(wǎng)絡(luò),并在其基礎(chǔ)上加入殘差結(jié)構(gòu)和先進(jìn)的優(yōu)化器來(lái)增強(qiáng)模型的學(xué)習(xí)能力。實(shí)驗(yàn)結(jié)果表明,本文方法與其他識(shí)別方法相比具有更高的識(shí)別精度。
本文提出一種基于殘差結(jié)構(gòu)的Swin-Transformer網(wǎng)絡(luò)模型用于天氣圖像的識(shí)別,該模型由圖像塊分割層、線性嵌入層、圖像塊合并層、殘差窗口自注意力塊(residual swin transformer block,RSTB)、歸一化層(layer norm,LN)、自適應(yīng)平均池化層、全連接層組成。網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1(a)所示。
圖1 基于殘差Swin Transformer的天氣圖像識(shí)別網(wǎng)絡(luò)結(jié)構(gòu)
模型首先通過(guò)圖像塊分割層將輸入的RGB 天氣圖片劃分為多個(gè)不重疊的patch,每個(gè)patch 的大小為4×4,特征維度為4×4×3=48,經(jīng)過(guò)4 個(gè)階段構(gòu)建不同大小的特征圖。其中只有第1 階段通過(guò)線性嵌入層將特征投影到任意維度C,后3 個(gè)階段通過(guò)圖像塊合并層進(jìn)行下采樣,使特征圖的寬和高縮小一半,通道數(shù)擴(kuò)大1 倍。接著,使用RSTB 模塊進(jìn)行特征變換,這個(gè)模塊由一個(gè)殘差結(jié)構(gòu)連接不同數(shù)目的窗口自注意力塊(swin transformer block,STB)模塊構(gòu)成。最后,經(jīng)過(guò)一個(gè)歸一化層、一個(gè)自適應(yīng)平均池化層和一個(gè)全連接層后輸出天氣圖像的類別。
窗口自注意力塊由1 個(gè)多頭自注意力機(jī)制(multihead self-attention,MSA)和1 層多層感知機(jī)(multi-layer perceptron,MLP)組成,在MSA 和MLP 之間需要應(yīng)用一個(gè)LN 層,之后應(yīng)用一個(gè)殘差連接。MSA 擁有兩種不同的結(jié)構(gòu):窗口多頭自注意力機(jī)制(windows multihead self-attention,W-MSA);移動(dòng)窗口多頭自注意力機(jī)制(shifted windows multi-head self-attention,SW-MSA)。
如圖2(a)所示,MSA 在計(jì)算過(guò)程中需要對(duì)特征圖中的每個(gè)像素進(jìn)行運(yùn)算,這種操作增加了整個(gè)模型的計(jì)算量。W-MSA 模塊將特征圖按照大小為M×M將大小為H×W的圖像劃分成多個(gè)窗口,然后單獨(dú)對(duì)每個(gè)窗口進(jìn)行自注意力計(jì)算,從而減少模型的計(jì)算量。MSA 和W-MSA 的計(jì)算復(fù)雜度如下:
圖2 移動(dòng)窗口重組示意圖
Ω(MSA)=4HWC2+2(HW)2C
Ω(W-MSA)=4HWC2+2M2HWC
由于單一使用W-MSA 會(huì)出現(xiàn)不同窗口之間缺乏信息交互,這限制了模型的能力。因此,需要在W-MSA之后引入SW-MSA 進(jìn)行跨窗口連接,同時(shí)可以保持非重疊窗口的高效計(jì)算,SW-MSA 的跨窗口連接重組如圖2所示。首先,將W-MSA 的4 個(gè)窗口通過(guò)滑動(dòng)窗口變?yōu)镾W-MSA 的9 個(gè)窗口,且這9 個(gè)窗口大小不一致。為方便后續(xù)計(jì)算需要將SW-MSA 的9 個(gè)窗口重新整合成與原W-MSA 窗口大小一致的4 個(gè)窗口,再使用掩膜Mask隔絕不同區(qū)域的信息,最后將窗口還原。
故STB 模塊必須成對(duì)使用,第1 個(gè)模塊使用WMSA,第2 個(gè)模塊使用SW-MSA,2 個(gè)連續(xù)的STB 模塊如圖2(b)所示。
在天氣識(shí)別任務(wù)中,為使網(wǎng)絡(luò)獲取更多有用信息,就需要對(duì)特征進(jìn)行充分的提取和利用。在之前的研究中,天氣識(shí)別任務(wù)通常使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別,而卷積神經(jīng)網(wǎng)絡(luò)通常使用殘差連接[12]和稠密連接[13]提高網(wǎng)絡(luò)性能,減少因模塊堆疊、網(wǎng)絡(luò)過(guò)深而造成的模型退化問(wèn)題。由式(1)可知,W-MSA 計(jì)算復(fù)雜度與通道數(shù)成正比關(guān)系,而稠密連接使用過(guò)多會(huì)極大地增加通道數(shù)。故本文將在STB 模塊堆疊之間引入殘差連接,并將改進(jìn)后的堆疊STB 模塊稱為RSTB,其結(jié)構(gòu)如圖1(b)所示。
根據(jù)上述數(shù)據(jù)可知,路面竣工后空隙率、穩(wěn)定度和流值均滿足規(guī)范要求,面層結(jié)構(gòu)為灌入式半柔性面層,且與基層結(jié)合很好。說(shuō)明該半柔性路面施工技術(shù)的應(yīng)用,能有效保證路面施工質(zhì)量要求。
模型訓(xùn)練中需要使用損失函數(shù)來(lái)衡量模型的效果,進(jìn)而改進(jìn)模型參數(shù)的質(zhì)量。本文使用的損失函數(shù)是交叉熵(CrossEntropy),主要用于度量?jī)蓚€(gè)概率分布之間的差異性,值總是大于等于0。其值越接近于0,就代表兩個(gè)分布越相似。其數(shù)學(xué)公式:
式中:N代表樣本總數(shù),M代表類別的數(shù)量;yic代表符號(hào)函數(shù)(0 或1),如果樣本i的真實(shí)類別等于c則取1,否則取0;pic代表樣本i屬于類別c的預(yù)測(cè)概率。
Ranger 優(yōu)化器[14]結(jié)合了RAdam[15]和Lookahead[16]兩種優(yōu)化器。RAdam 為優(yōu)化器的初期訓(xùn)練提供最好的基礎(chǔ),用一個(gè)動(dòng)態(tài)整流器調(diào)整Adam 的自適應(yīng)動(dòng)量,并有效地提供一種基于當(dāng)前數(shù)據(jù)集的自動(dòng)訓(xùn)練預(yù)熱機(jī)制,以確保訓(xùn)練邁出扎實(shí)的第一步。Lookahead 的靈感來(lái)自對(duì)深度神經(jīng)網(wǎng)絡(luò)損失曲面的理解,并為在整個(gè)訓(xùn)練過(guò)程中進(jìn)行健壯和穩(wěn)定的探索提供突破。本文選擇的Ranger 優(yōu)化器將兩者結(jié)合起來(lái),這樣可以獲得更高的精度。
模型訓(xùn)練和測(cè)試所使用的數(shù)據(jù)集來(lái)自文獻(xiàn)[8]所開(kāi)源的天氣現(xiàn)象數(shù)據(jù)集。該數(shù)據(jù)集包含6877 張具有代表性和獨(dú)特的天氣現(xiàn)象圖像,每張圖像的大小不定,被分為11 種常見(jiàn)的天氣現(xiàn)象,如圖3所示。其中,數(shù)據(jù)集由露水(700 張)、霧/霾(855 張)、霜(475 張)、雨凇(639 張)、冰雹(592 張)、閃電(378 張)、雨(527張)、彩虹(238 張)、霧凇(1160 張)、沙塵暴(692 張)和雪(621 張)組成。
圖3 數(shù)據(jù)集展示
為方便算法的訓(xùn)練和驗(yàn)證,在訓(xùn)練前先把圖像順序打亂,然后按8 ∶1 ∶1 的比例分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,它們之間不會(huì)出現(xiàn)重復(fù)的圖像。
由于視覺(jué)Transformer 網(wǎng)絡(luò)十分依賴數(shù)據(jù)量,為抑制模型學(xué)習(xí)過(guò)程中因數(shù)據(jù)量過(guò)少而造成的過(guò)擬合問(wèn)題,本文算法在模型訓(xùn)練過(guò)程中對(duì)訓(xùn)練圖像進(jìn)行一系列的數(shù)據(jù)增強(qiáng)處理。包括:將天氣圖片調(diào)整為256×256后對(duì)圖像進(jìn)行隨機(jī)裁剪到224×224、水平翻轉(zhuǎn)、水平移動(dòng)和Cutout 方法,原始圖像經(jīng)過(guò)數(shù)據(jù)增強(qiáng)后的效果如圖4所示。采用這種方法圖像會(huì)在形態(tài)上發(fā)生變化,模型在學(xué)習(xí)過(guò)程中不會(huì)使用任意兩張相同的圖像,這有利于抑制過(guò)擬合,提高模型的魯棒性和泛化能力。
圖4 數(shù)據(jù)增強(qiáng)展示
實(shí)驗(yàn)在DELL Precision 7920 塔式工作站開(kāi)展,配置為:CPU:Intel(R)Xeon(R)Silver 4210,125 GB內(nèi)存,GPU:NVIDIA TITAN RTX,24 GB 顯存,Ubuntu 16.04 LTS 64 位操作系統(tǒng),Python3.8,PyTorch1.10.2。
使用加入殘差結(jié)構(gòu)的Swin Transformer 網(wǎng)絡(luò)進(jìn)行訓(xùn)練,采用遷移學(xué)習(xí)的方法,將Swin Transformer 網(wǎng)絡(luò)在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練的權(quán)重遷移到改進(jìn)模型。為能正確識(shí)別出數(shù)據(jù)集中的所有類別,將模型最后的FC 層改為11 個(gè)輸出,預(yù)訓(xùn)練模型的所有層均設(shè)置為可訓(xùn)練。訓(xùn)練過(guò)程使用Ranger 優(yōu)化器,初始學(xué)習(xí)率為3×10-5,將單次訓(xùn)練所取樣本數(shù)設(shè)為64 張圖片,共訓(xùn)練的迭代次數(shù)為300 個(gè)。最終,選擇驗(yàn)證集上正確率最高的模型進(jìn)行測(cè)試實(shí)驗(yàn),并重復(fù)實(shí)驗(yàn)10 次,將10 次的平均值作為模型最終結(jié)果。
對(duì)于一個(gè)多分類任務(wù),可以將每一種類別樣本預(yù)測(cè)結(jié)果分為4 種:TN(True Negative),表示把負(fù)樣本正確地預(yù)測(cè)為負(fù)樣本;FN(False Negative),表示把正樣本錯(cuò)誤地預(yù)測(cè)為負(fù)樣本;TP(True Positive),表示把正樣本正確地預(yù)測(cè)為正樣本;FP(False Positive),表示把負(fù)樣本錯(cuò)誤地預(yù)測(cè)為負(fù)樣本。針對(duì)模型效果的評(píng)價(jià),本文采用以下評(píng)價(jià)指標(biāo)。
準(zhǔn)確率P(Precision)指在被判定為正的樣本中,實(shí)際上為正樣本所占的比例。公式如下:
召回率R(Recall)指原本為正的樣本中被判定為正的樣本所占的比例。公式如下:
F1分?jǐn)?shù)(F1-measure)指準(zhǔn)確率P 和召回率R 的調(diào)和平均值。公式如下:
正確率Acc(Accuracy)指所有樣本中分類結(jié)果正確的樣本所占的比例。公式如下:
宏觀準(zhǔn)確率ma_P(macro-average of Precision)指各類別準(zhǔn)確率的平均值,公式如下:
宏觀召回率ma_R(macro-average of Recall),指各類別召回率的平均值,公式如下:
宏觀F1分?jǐn)?shù)ma_F1(macro-average of F1score)指各類別F1分?jǐn)?shù)的平均值,公式如下:
上述評(píng)價(jià)指標(biāo)的值都在0~1。準(zhǔn)確率、正確率、召回率和它們的宏觀平均值越高,代表模型的分類性能越好。
4.4.1 Swin Transformer 選擇實(shí)驗(yàn)
由于Swin Transformer 提出4 個(gè)網(wǎng)絡(luò)模型,即Swin-T、Swin-S、Swin-B、Swin-L,為更好地建立適合本文數(shù)據(jù)集的分類模型并從模型部署和性能方面考慮,本文分別使用Swin-T、Swin-S、Swin-B 來(lái)構(gòu)建天氣識(shí)別模型,并從中選出一個(gè)正確率最高的模型來(lái)做實(shí)驗(yàn)的基礎(chǔ)模型。實(shí)驗(yàn)結(jié)果如表1所示,從表1 可以看出Swin-B 具有更好的精度優(yōu)勢(shì)。
表1 Swin Transformer 模型選擇實(shí)驗(yàn)
4.4.2 殘差模塊嵌入實(shí)驗(yàn)
為驗(yàn)證在堆疊STB 模塊之間加入殘差結(jié)構(gòu)的有效性,對(duì)原Swin-B 模型和加入殘差結(jié)構(gòu)的Swin-B 模型進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表2所示。從表2 可以看出,加入殘差結(jié)構(gòu)的Swin-B 模型相對(duì)原模型的正確率顯著提高。
表2 殘差模塊的消融實(shí)驗(yàn)
4.4.3 優(yōu)化器對(duì)比實(shí)驗(yàn)
由于優(yōu)化器在深度學(xué)習(xí)過(guò)程中扮演著重要的角色,本文設(shè)計(jì)了基于殘差Swin-B 模型的5 個(gè)優(yōu)化器對(duì)比實(shí)驗(yàn),使用的優(yōu)化器分別為SGD、RMSprop、Radam、AdamW、Ranger,結(jié)果如表3所示。由表3 可知,在殘差Swin-B 模型的基礎(chǔ)上使用Ranger 優(yōu)化器可以使識(shí)別結(jié)果達(dá)到0.936的正確率,同時(shí),進(jìn)一步證明了該優(yōu)化器的優(yōu)點(diǎn)。
表3 優(yōu)化器對(duì)比實(shí)驗(yàn)
4.4.4 本文方法與其他模型對(duì)比實(shí)驗(yàn)
表4 顯示了本文方法與一些主流模型的性能對(duì)比。在WEAPD 數(shù)據(jù)集上,總體分類最佳結(jié)構(gòu)是本文方法,正確率為93.64%。同時(shí),該模型的宏觀準(zhǔn)確率、宏觀召回率和宏觀F1分?jǐn)?shù)為94%左右,均超過(guò)其他模型。
表4 本文方法與其他模型結(jié)果對(duì)比
4.4.5 方法結(jié)果
本文方法的評(píng)價(jià)指標(biāo)結(jié)果如表5所示,實(shí)現(xiàn)了對(duì)11 種天氣現(xiàn)象的有效分類,特別是對(duì)冰雹、雷暴、沙塵暴、雪這些極端天氣能夠準(zhǔn)確識(shí)別。
表5 本文方法的分類性能展示
為進(jìn)一步證明殘差Swin Transformer 模型對(duì)天氣現(xiàn)象分類的性能,使用混淆矩陣來(lái)說(shuō)明分類精度,如圖5所示。
圖5 本文模型的混淆矩陣
本文嘗試將視覺(jué)Transformer 應(yīng)用到天氣圖像識(shí)別領(lǐng)域,并提出一個(gè)基于殘差結(jié)構(gòu)的Swin Transformer模型,該模型可以很好地學(xué)習(xí)天氣現(xiàn)象的特征。實(shí)驗(yàn)結(jié)果表明,本文所提出的模型對(duì)天氣現(xiàn)象識(shí)別是有效的,且能避免因主觀誤差造成的錯(cuò)誤,優(yōu)于多數(shù)深度學(xué)習(xí)方法。雖然天氣圖像存在相似性、復(fù)雜性等問(wèn)題,但總體來(lái)說(shuō),殘差Swin Transformer 模型的識(shí)別正確率達(dá)93.6%,能夠滿足日常生活的需要。因此,本文所提出的模型可以廣泛應(yīng)用于天氣現(xiàn)象的日常觀測(cè),也可為環(huán)境監(jiān)測(cè)、農(nóng)業(yè)和交通運(yùn)輸提供天氣指導(dǎo),特別在天氣變化和預(yù)報(bào)方面。
由于本文是在Swin-B 模型的基礎(chǔ)上加入殘差結(jié)構(gòu),Swin-B 網(wǎng)絡(luò)模型參數(shù)較多,對(duì)計(jì)算機(jī)的性能要求較高,這對(duì)天氣識(shí)別模型的時(shí)效性提出了挑戰(zhàn)。后期研究中將考慮使用知識(shí)蒸餾、網(wǎng)絡(luò)剪枝等思想對(duì)模型進(jìn)行優(yōu)化,在保證網(wǎng)絡(luò)性能不變的情況下,提高時(shí)效性,實(shí)現(xiàn)一個(gè)輕量級(jí)天氣識(shí)別模型。