楊 武,余華云,趙昕宇,何 勇,徐紅牛
(長江大學 計算機科學學院,湖北 荊州 434023)
近些年來,全球變暖導致極端天氣頻繁出現,各地區夏季高溫不斷打破歷史記錄,極端高溫天氣致使森林火災發生概率大大增加。森林火災不同于城市中發生的火災,不僅在形態上與之存在較大差異,而且其破壞力之大、影響力之廣都遠遠超過城市火災,同時它蔓延極快的特點導致往往人眼發現時就已經難以控制,因此建立起日常監控和預警對森林火災防治具有重要意義。
傳統的火災檢測一般使用紅外傳感器,利用溫差進行識別,但是這類檢測系統極易受到電磁和光兩方面的干擾。隨著機器學習和深度學習在圖像方面的應用和成功,越來越多的研究用計算機視覺來改進算法,提高檢測性能。Ming等[1]提出了一種基于支持向量機算法的火災探測方法,這種神經網絡模型在與自身相似的背景下實現了精確的火災探測,有效地降低了探測錯誤率。黃翰鵬等[2]針對傳統火災探測中靈敏度不高、響應慢的問題,結合模糊神經網絡(FNN)模型和溫度時序模型(TSM)的火災預警算法,取得了一定的效果。盧鵬等[3]使用MobileNet改進深度卷積神經網絡SSD的基礎卷積網絡并使用遷移學習在實時火焰檢測領域達到了較好的效果。張彬彬等[4]針對火災中小目標、多目標和邊緣模糊等導致的檢測精度下降問題,提出了 一種基于YOLOv3改進的火焰目標檢測算法,達到了火災檢測的實時性和高效性。王冠博等[5]為了解決火焰圖像檢測易被周圍環境影響等問題,通過K-Means聚類和注意力機制提出改進型YOLOv4火焰圖像實時檢測模型,使檢測性能有了較大的提升。目前大多數檢測算法針對室內或者城市火災,一些甚至只對火焰和煙霧中的一種提出檢測[6],而森林火災在發生初期對煙霧的檢測尤為重要,火焰和煙霧在形態與結構上與城市火災差異較大,檢測對象尺寸變化大,火焰和煙霧對森林火災檢測一樣重要。森林火災檢測設備(無人機、高山監控)性能一般較差,設計的森林火災檢測算法既要輕量易于部署,又要保證檢測效率。
YOLOv5[7]目前以其輕量、部署相對簡單、速度較快和準確率較高的特點在工業檢測方面占據重要地位,因此選擇在YOLOv5的基礎上針對森林火災存在的問題和特點進行改進。首先根據結構重參數化思想,對主干網絡的普通卷積塊和瓶頸結構進行改進,結合RepVGG(Re-param VGG)[8]、DBB(Diverse Branch Block)[9]和輕量化網絡思想[10-11]設計出RSBlock(Re-param Shuffle Block)代替原主干網絡,增強其特征提取能力,推理時利用參數轉換融合分支,保證性能提高的同時,無損壓縮模型。之后融合輕量級CoordAtt注意力機制[12]進一步提高檢測精度。同時考慮到低算力設備的實際需求,在Neck方面,根據空洞卷積和深度可分離卷積(Depthwise Separable Convolution,DSC)[13-15]的思想設計出輕量化的特征融合塊(Feature Enhancement Module,FEM)替換上采樣前的普通卷積,使用結構重參數化等輕量化思想設計出新的深度可分離卷積(Re-param Depthwise Separable Convolution,RDSC)和RSDWBlock(Re-param Shuffle Depthwise Block)對原網絡進行改進,進一步降低參數量,保證檢測速度并提高檢測精度。
YOLOv5官方代碼中有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x這4個版本,YOLOv5s(如圖1所示)是其中深度最小、特征圖的寬度最小的網絡,同時速度也最快,在工業檢測方面應用廣泛。YOLOv5模型自發表以來不斷更新,改進的模型基于6.2版本。

圖1 YOLOv5s結構Fig.1 Structure of YOLOv5s
模型由輸入(Input)、骨干網絡(Backbone)、頸部(Neck)、頭部(Head)和輸出(Out)組成。輸入端主要包括Mosaic數據增強、自適應錨框計算等預處理操作。骨干網絡主要由CBS卷積塊、C3結構和特征金字塔池化(SPPF)等組成,主要功能是不斷進行特征提取后再進行特征融合。頸部則使用類似路徑聚合網絡(Path Aggregation Network,PANet)[16]的網絡結構得到80 pixel×80 pixel×512 pixel、40 pixel× 40 pixel×512 pixel、20 pixel×20 pixel×512 pixel三種大小的特征圖,頭部則采用不同尺度的特征圖用于檢測。
由于現有的大多數火焰煙霧數據集收集的場景與野外環境差異很大,還沒有只包含森林火災的數據集,為了使模型對森林火災具有更強的針對性,從github、aistudio以及互聯網收集了由無人機、高山防火監控等設備拍攝的全球真實森林火災圖片,如 圖2所示。

圖2 數據集示例Fig.2 Dataset example
分析數據發現,數據集中存在大量根據火災視頻逐幀截取的圖片,相似度極高,因此使用結構相似度(Structural Similarity,SSIM)度量算法篩選相似度過高的圖片。該算法根據2張圖片的亮度對比(式(1))、對比度對比(式(2))、結構對比(式(3))得到式(4),進而得到一個0~1的值,越大則表示相似度越高,式中N表示圖片像素點總數,xi表示圖像像素值 ,C1、C2、C3為常數。

(1)

(2)


(3)
S(x,y)=f(l(x,y),c(x,y),s(x,y))=
初期收集到的4 712張圖片在處理過程中若 2張圖片SSIM相似度值大于0.85,則只保留其中 一張,經過處理后得到3 166張森林火災圖片。
同時為充分模擬野外監測場景,增強模型泛化能力,加入約10%的負樣本[17]。具體來說向數據集加入了300張不包含森林火災的圖片,其中包括易于和火焰混淆的秋季疊翠流金的森林、落日夕陽、銀寒月光和深山村落等圖片,如圖3所示。

圖3 數據集示例Fig.3 Dataset example
得到由3 466張不重復的圖片構成的森林火災數據集,其中大多數沒有標注或者標注粗糙,因此采用LabelImg對圖片重新進行矩形框標注并分為煙霧(smoke)和火焰(fire)兩個類別,如圖4所示。

圖4 標注示例Fig.4 Annotation example
多分支網絡結構(ResNet等)[18]早已被證明比單分支具有更好的性能,但是其推理速度較慢。RepVGG使用結構重參數化技術,將訓練階段的多分支結構在推理時水平融合成單分支,解耦訓練與推理的網絡結構,使得在推理時既有性能的提升,同時也保持了原來單分支的推理速度,其結構如圖5所示。

圖5 RepVGG結構Fig.5 Structure of RepVGG

卷積層公式為:
Conv(x)=W(x)+b。
(5)
BN層公式為:
(6)
卷積層和BN層融合:
(7)
將Conv_3×3(3×3的卷積)和Conv_1×1(1×1的卷積)在水平方向合并,其轉換思想是Conv_3×3中心值等同于Conv_1×1中心點的值,而中心點以外的其他權值為0,如圖6所示。

圖6 Conv_1×1 轉換為Conv_3×3Fig.6 Conv_1×1 to Conv_3×3
Indetity分支層先將其轉換為權重為1的Conv_1×1,再將Conv_1×1轉換成Conv_3×3即可。
以上操作將分支結構全都轉換成Conv_3×3,多個并行的Conv_3×3通過對應的權重(W)和偏置(b)相加,融合成一個Conv_3×3:
y=(W1+W2+W3)X+(b1+b2+b3)。
(8)
Inception網絡模塊(Inception Network Module)[19]表明多分支拓撲以及不同規模和復雜度的各種路徑的組合可以豐富提取的特征空間以提高性能,但是這種復雜的結構會嚴重降低推理速度。自重參數化結構被提出以來,根據Inception的思想,研究人員又提出多樣性分支模塊(Diverse Branch Block,DBB),它保持訓練時Inception的多分支微觀結構,推理時將DBB轉換為單個卷積,其結構如圖7所示。
DBB與RepVGG在重參數化方面的不同點在于多了不同尺寸卷積核在垂直方向的融合,即垂直方向Conv_1×1和Conv3_3的融合,將Conv_1×1記為F1,Conv3_3記為F2,則對于2個連續卷積,輸入I有:
O=(I×F1)×F2=I×F1×F2。
(9)

3.1.1 Backbone改進
將訓練階段中步長為2的下采樣Conv_3×3重參數化,替換成RepConv_3×3(如圖8所示),在推理時與原Conv_3×3在結構上一致,并且可以更好地解決模型退化問題,提高特征提取能力。

圖8 RepConv_3×3結構Fig.8 Structure of RepConv_3×3
分析圖1發現Backbone中大量的C3結構使用了較多殘差塊(圖1中Res),該結構會降低推理速度。利用重參數化思想對該結構進行改進,考慮到在Backbone中C3結構沒有下采樣功能和通道數的變化,設計帶殘差邊結構的RepConv_1×1和帶殘差邊結構的ResDBB,如圖9和圖10所示。

圖9 RepConv_1×1結構Fig.9 Structure of RepConv_1×1

圖10 ResDBB結構Fig.10 Structure of ResDBB
同時根據ShuffleNet提出的輕量化思想,引入通道分離(Channel Split)和通道重排(Channel Shuffle)操作,設計一種在Backbone中可重復迭代的輕量化高效特征提取塊RSBlock,如圖11所示。

圖11 RSBlock結構Fig.11 Structure of RSBlock
Channel Split將輸入的特征圖按通道分為 2組,其中一組不做任何處理保持恒等映射,另外一組經過2個具有相同輸入輸出通道數的卷積塊,這樣做的好處是只有一半的特征進行密集卷積操作,極大地減少了計算量和內存使用。之后使用Concat進行2組通道上的融合,使得輸出通道數不變,提高了特征的重復利用。最后再進行Channel Shuffle操作,對融合后的特征圖在通道上進行規則打亂,提高2組通道的信息交流。
在Backbone使用RSBlock代替原網絡中的C3結構,并重復迭代適當的數量以此構建新的特征提取網絡。
3.1.2 Neck改進
考慮到一般算法在實際部署時往往受到邊緣設備性能的影響,對模型的大小和檢測速度都有較高的要求,因此對Neck結構進行改進,使模型更加輕量化。如今大多數輕量化網絡不同程度上使用了DSC,它由一個逐通道卷積(Depthwise Convolution)和一個逐點卷積(Pointwise Convolution)組成,如 圖12所示。

圖12 DSC結構Fig.12 Structure of DSC
逐通道卷積即分組數為輸入通道數的組卷積,在普通卷積中一個卷積核跟所有通道進行卷積計算,而在逐通道卷積中,一個卷積核只負責一個通道,之后將所有卷積核的輸出再進行拼接得到最終輸出。
逐點卷積即分組數為1,卷積核大小為1的普通卷積,在DSC中負責改變輸出通道的數量和對逐通道卷積輸出的特征圖進行通道上的融合。
DSC的參數量遠遠低于普通卷積,但是低參數量是以犧牲一部分精度為代價,如何保持低參數量的同時提高卷積效率是大多數輕量化網絡優化的方向。
分析YOLOv5s的網絡結構發現,當特征圖經過Backbone不斷提取后通道數達到最大,但是Neck結構的上采樣階段分別需要其1/2和1/4的通道數,原來的網絡結構僅僅使用2個Conv1×1來保證通道數的持續減半(圖1中Neck結構的前面2個CBS),導致特征圖丟失了大量語義信息。多尺度空洞卷積通過不同擴張因子(dilation)的卷積聯合提取特征在語義分割領域取得了較大的成功[20],考慮到該結構的有效性,將空洞卷積和DSC結合起來設計如圖13所示的特征增強模塊。

圖13 特征增強模塊Fig.13 Feature enhancement module
為減少參數量,FEM結構使用了1個標準卷積和3個不同擴張率的逐通道卷積提取不同尺度的特征,之后再進行通道上的堆疊,最后使用一個標準卷積達到不同尺度特征的融合。使用FEM替換原Neck中最初的2個CBS。
為進一步減輕網絡,使用結構重參數化對DSC進行改進,將DSC中逐通道卷積替換為分組數為輸入通道數的ResDBB(如圖10所示),逐點卷積則替換為RepConv_1×1(如圖9所示)。為緩解分組卷積組與組之間缺乏信息交流,在逐點卷積的后面引入Channel Shuffle操作,同時在非線性激活函數方面選擇對硬件更為友好的H-Swish(Hard Swish),并以此構建RDSC,如圖14所示,并使用RDSC替換原網絡中Neck結構的Conv_3×3。

圖14 RDSC結構Fig.14 Structure of RDSC
為進一步降低參數量,提高檢測速度,將DSC思想引入Neck中的C3結構,因此提出RSDWBlock結構替換Neck中的C3結構,如圖15所示。

圖15 RSDWBlock結構Fig.15 Structure of RSDWBlock
考慮到Neck結構主要功能是特征融合,因此相對于Backbone中的RSBlock,在左側分支增加1個RepConv_1×1。右側分支中DW_ResDBB是分組數等于輸入通道數的ResDBB模塊,同時在最后新增 1個RepConv_1×1,作用是調整輸出的通道數,使之滿足下一層網絡輸入要求。
以往的視覺注意力機制SENet(Squeeze-and-Excitation Networks)[21]、CBAM(Convolutional Block Attention Module)[22]對每個通道使用全局平均池化,該操作雖然能提取每個通道的全局信息,但是丟失了目標非常重要的位置信息。CA為解決信息丟失問題,分別對水平方向、垂直方向進行全局平均池化,在2個方向上同時關注感興趣的地方,準確地定位出目標對象的位置,其結構如圖16所示。

圖16 CA結構Fig.16 Structure of CA
具體來說,先使用(H,1)和(1,W)的池化核沿著水平坐標和垂直坐標方向對每個通道進行編碼,則高度為h的第c個通道:
(10)
同理,寬度為w的第c個通道:
(11)
以此得到2個不同方向的特征圖。之后再級聯2個特征圖,使用一個Conv_1×1進行C/r比例的下采樣,經過批處理和非線性激活函數進行F1變換:
f=δ(F1([zh,zw]))。
(12)
使用split函數將不同方向的特征圖切分開,再使用2個Conv_1×1將特征圖恢復到輸入時的通道數:
(13)
經過sigmoid函數后得到2個方向的注意力權重,最終依次乘以原始輸入得到最終的結果:
(14)
經過多次實驗,將CA注意力機制加在Backbone中SPPF結構的前一層效果較好,達到了速度和精度的最優平衡,如圖17所示。

圖17 改進后的YOLOv5s 結構Fig.17 Improved YOLOv5s network structure
實驗所用的服務器環境為:CPU為Intel(R) Xeon(R) Platinum 8255C,GPU為NVIDIA RTX 2080Ti,顯存為11 GB,操作系統為Ubuntu 20.04,編譯環境為Python3.8+PyTorch1.10.0+Cuda11.3。
訓練參數中,優化器選擇為隨機梯度下降(SGD),初始學習率設置為0.01,循環學習率為 0.01,動量為0.937,權重衰減系數為0.000 5。考慮到改進后的網絡結構發生了較大變化,官方提供的預訓練模型已無法使用,因此將迭代次數設置為300,不使用預訓練權重重新開始訓練,同時批尺寸設置為32,輸入圖片為640 pixel×640 pixel,同時啟動Mosaic數據增強[23],隨機對4張圖片進行縮放、平移、左右翻轉和色彩變換等處理后再進行拼接,并將其增強概率設置為0.6。Mosaic數據增強雖然會極大豐富訓練樣本數量、增強模型泛化能力,但是其拼接操作會使小目標變得更小,導致模型泛化能力衰退,因此以一定的概率進行Mosaic數據增強既可以豐富樣本,又不至于丟失小目標的檢測能力。
將自建的3 466張森林火災數據集按照8∶1∶1的比例隨機劃分為訓練集、驗證集和測試集,最后得到2 772張訓練集,驗證集、測試集分別為347張。
實驗結果采用精確度(P)、召回率(R)、平均準確度(mAP@0.5)等作為評價標準,具體計算如下:

YOLOv5s及其改進點的消融實驗如表1所示,Backbone改進相對于原始的準確度即mAP@0.5提高了2.0%,雖然訓練權重大幅增加了,但是推理權重相對于原始減小了1.6 MB,這是重參數化模型訓練和推理解耦的特點。同時推理時間也有減少,分析原因是Backbone改進中僅僅對一半的通道數進行密集卷積操作(ResBlock),同時轉換成推理結構后卷積塊迭代的數量也相比原網絡少,提高了檢測速度。添加CA注意力機制后,準確度也有相對的提高,但略微降低了檢測速度,同時推理權重也有少量增加。經過Neck部分的改進,由于使用了DSC結構,推理權重下降至原來的76%,最后至10.5 MB,但是推理時間有少量增加,基本恢復到原始網絡,分析原因是由于FEM增加了網絡復雜度,同時DSC對于內存訪問量較高,頻繁的內存訪問影響了檢測效率,但是基本保持了原YOLOv5s推理速度快的優點。推理權重的減少對于邊緣設備的部署更加友好,并且準確度提高了0.8%。改進后的重參數化YOLOv5s和原YOLOv5s訓練階段的檢測框損失值和精確度對比如圖18所示。

表1 消融實驗結果

(a)檢測框損失 (b)mAP@0.5
為更好體現改進后的算法優勢,將改進后的重參數化YOLOv5s和主流的輕量級目標檢測網絡在同一訓練集上進行實驗對比,結果如表2所示。由表中數據可知,改進后的YOLOv5s的精度均高于其他網絡,同時推理權重也較小,檢測速度雖然不及YOLOX-Tiny和YOLOv7-Tiny,但亦滿足實時檢測的要求,保持了輕量化網絡的特點。

表2 網絡對比結果
改進后的YOLOv5s和原YOLOv5s選取訓練和驗證集以外的圖片進行測試,同時檢測參數保持一致,具體結果如圖19所示,左邊為改進后YOLOv5s的檢測結果。圖19(a)中只有火焰,但是右圖將白光誤檢成煙霧,左圖沒有發生誤檢情況,同時對火焰的檢測效果好于右圖。圖19(b)屬于白天火焰不可見,僅有煙霧的情況,兩邊都能將煙霧準確地檢測出來,但左圖對煙霧檢測的置信度較高。圖19(c)屬于夜間發生森林火災的情況,兩邊都取得了不錯的檢測效果,但是左邊對于煙霧和火焰檢測的置信度均高于右邊。圖19(d)屬于受樹木遮擋的情況,這在森林火災中非常常見,對于這種情況,左邊能很好地檢測出火焰的輪廓,右邊檢測情況則稍差一些。


針對目前森林日常巡檢困難,巡檢設備性能受限、檢測算法無法達到速度和精度的平衡,提出一種改進的重參數化YOLOv5s的森林火災檢測算法。主要結論如下:基于公開的數據集和互聯網圖片制作了一個針對性強的森林火災數據集,同時為增加模型魯棒性,還加入了10%的背景圖片,提高模型的泛化能力。根據重參數化和輕量化網絡的思想對YOLOv5s進行改進,提出RSBlock和RSDWBlock 兩種瓶頸結構代替原網絡中的C3模塊,使用RepConv和RDSC進行下采樣并用FEM特征增強來代替Neck中的Conv_1×1,增強多尺度特征融合,同時在主干網絡中加入了輕量化的CA注意力機制。通過上述改進,模型參數量下降至原來的76%,精確度提高了4.0%,檢測速度也符合實時檢測的要求。經過消融實驗和對比實驗,改進后的重參數化YOLOv5s具有相對較高的檢測精度,在輕量化方面也具有優勢,對日常森林監控和巡檢具有一定的意義。森林火災檢測環境復雜、對象尺度變化大,復雜環境下火焰煙霧目標容易發生漏檢,下一步工作將針對多尺度復雜環境中的火焰煙霧進行視頻多幀分析檢測。