關鍵詞:YOLOv8;CBAM注意力機制;森林火災檢測
0 引言(Introduction)
隨著全球天氣持續(xù)變暖,高溫、干旱、大風等極端天氣呈現(xiàn)多發(fā)并發(fā)態(tài)勢,導致全球范圍內森林火災頻繁爆發(fā)。據(jù)統(tǒng)計,2022年前10個月,我國共發(fā)生森林火災648起[1]。為有效監(jiān)測和防范森林火災,近年來基于深度學習的目標檢測技術逐漸成為研究熱點?,F(xiàn)階段,傳統(tǒng)的森林火災檢測算法在精確性和實時性方面存在諸多挑戰(zhàn),尤其是受限于火焰和煙霧圖像分辨率較低和不同場景因素的影響。
當前,YOLOv8在目標檢測領域的表現(xiàn)出色,但在復雜場景下,特別是在森林火災檢測中,其性能仍有不足,包括分辨率低、易受環(huán)境影響等。針對以上問題,本文提出一種新的算法模型YOLOv8,并在改進算法的基礎上加入了CBAM 注意力機制[2]。通過實驗數(shù)據(jù)對比,驗證了與原始算法相比,改進之后的算法具有更高的檢測精度。
1 相關研究(Related research)
近年來,研究者將深度學習和機器學習應用于圖像領域,取得了較好的成果,搭建了一些預測模型。黃翰鵬等[3]提出一種新型FNN-TSM火災預警算法,將模糊神經(jīng)網(wǎng)絡模型和溫度時序模型結合,有效解決了傳統(tǒng)火災檢測器誤報率高的問題。盧鵬等[4]提出一種基于SSD_MobileNet的復雜環(huán)境火焰區(qū)域標記方法,適用于實時火焰檢測領域。張彬彬等[5]提出將改進的CIOU和Focal loss作為損失函數(shù),能滿足火焰檢測的實時性和高效性要求,但是訓練和檢測速度有所下降。王冠博等[6]通過K-Means聚類和引入注意力機制,提出改進型YOLOv4火焰圖像實時檢測模型,解決火焰受周圍因素干擾的問題,使檢測效果得到了很大的提升。目前,以上算法大都針對城市和周邊居民區(qū)的火災檢測,有些算法只能對火焰進行檢測,但忽略了對煙霧的檢測[7],而在森林火災發(fā)生的初期,對煙霧的檢測恰恰是不能缺失的,并且自然環(huán)境下的火焰和煙霧的形態(tài)與城市環(huán)境下的火焰和煙霧的形態(tài)差別較大。在不同場景下,面對不同天氣變化和周圍環(huán)境變化,精確且實時地檢測煙霧和火焰是檢測算法研究人員面臨的一個難題。因此,必須設計一個合適的預測模型,既能夠同時檢測火焰和煙霧,又要保證其檢測精度。本文采用YOLO系列中最新算法模型YOLOv8,在Neck層中改進算法和加入注意力機制,對常見的森林火災發(fā)生場景進行識別,驗證其識別效果。
2 YOLOv8原理及模型架構(YOLOv8 principlesand model architecture)
目前,YOLO系列中最新的算法模型是YOLOv8,其在公開的數(shù)據(jù)集上的檢測準確率和速度均超過其他YOLO系列的算法模型。YOLOv8算法由Glenn-Jocher提出,與YOLOv3算法、YOLOv5算法一脈相承[8]。YOLOv8網(wǎng)絡結構圖如圖1所示,主要組成部分為Input、Backbone、Neck和Head。
2.1Input
在輸入端部分,主要包括Mosaic圖像增強、自適應錨框計算和自適應圖片縮放。
采用Mosaic數(shù)據(jù)增強方法的思想是隨機使用4張不同圖像,將其隨機拼接成一張大的圖像,可以增加訓練集的多樣性和難度,有助于提高目標檢測模型的泛化能力。
在網(wǎng)絡訓練前,自適應錨框通過學習的方式自動計算出最適合輸入圖像的錨框參數(shù),不需要手動設置。這種方法可以提高目標檢測的精度和魯棒性。
在YOLOv4之后加入了圖像混疊增強技術,但是在訓練的過程中全程啟用圖像混疊增強技術會影響訓練效果。YOLOv8會在最后訓練時期關閉圖像混疊增強技術,從而得到更好的訓練效果。
2.2Backbone
Backbone由CBS、C2F、SPPF等模塊組成,主要是對目標特征進行提取。其中,C2F模塊參考了YOLOv7[9]中ELAN的設計思想以及YOLOv5中的C3模塊進行設計,將原先的C3模塊全部換成C2F模塊。同時,在該模塊中加入更多的分支。圖2為YOLOv8的C2F模塊結構圖,圖3為YOLOv5的C3模塊結構圖。SPPF 仍然使用YOLOv5 中的模塊。Bottleneck是一種特殊的殘差結構。
2.3 Neck
Neck層仍然采用了YOLOv5 中的特征金字塔網(wǎng)絡(Feature Pyramid Network, FPN) [10]和路徑聚合網(wǎng)絡(PathAggregation Network, PAN)[11],對不同層的特征信息進行融合。FPN和PAN相互配合使用,可以提高模型的檢測性能。FPN結構可以增強模型的感知能力和尺度不變性,而PAN結構可以增強多尺度特征的融合能力。在結構上僅需要將C3模塊替換為C2F模塊,其余結構不變。
2.4 Head
本文設計的算法模型有一部分改進是針對Head層,與YOLOv5相比,有兩大改進之處。首先使用了目前主流的解耦頭(Decoupled-Head)結構,將分類和檢測頭分離。其次將Anchor-Based換成Anchor-Free。該模塊負責檢測大尺度目標、中尺度目標和小尺度目標,用于將特征圖轉換為目標框的預測結果,能夠準確地預測圖像中目標的位置、類別和邊界框信息。
目前,YOLOv8官方代碼中給出了YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l和YOLOv8x共5個不同網(wǎng)絡寬度和深度的版本??紤]到模型的檢測速度和精度,本文采用YOLOv8n為基線模型對目標進行檢測,并在此基礎上進行了改進,檢測速度快、穩(wěn)定性高,具有深度和特征圖寬度最小的優(yōu)點,可以很好地用于火焰和煙霧目標的實時監(jiān)測。
3 改進YOLOv8 識別模型(Improvement ofYOLOv8 recognition model)
3.1CBAM 注意力機制
CBAM(Convolutional Block Attention Module)是一種組合模型,它將通道注意力和空間注意力結合,可以提高模型的表現(xiàn)力。CBAM模塊包含通道注意力和空間注意力兩個子模塊,可以對輸入特征進行通道級和空間級的注意力調控。通道注意力模塊計算每個通道的重要性,以便更好地區(qū)分不同通道之間的特征;空間注意力模塊計算每個像素在空間上的重要性,幫助模型更好地捕捉圖像中的空間結構。
3.2CBAM 注意力機制原理
CBAM是用于增強卷積神經(jīng)網(wǎng)絡(CNN)性能的注意力機制模塊,能夠應用于很多卷積神經(jīng)網(wǎng)絡中,如GoogLeNet[12]、VGGNet[13]和ResNet[14]等。CBAM 的主要目標是通過在CNN中引入通道注意力模塊和空間注意力模塊提高模型的感知能力,從而在不增加網(wǎng)絡復雜性的情況下提高其性能。
通道注意力模塊是一種用于確定每個通道對最終特征的重要性的方法,通道注意力機制模型結構如圖4所示,它通過對卷積后的特征圖進行全局平均池化,得到每個通道的全局特征描述。通過兩個全連接層將全局特征描述映射為通道權重,表示每個通道對最終特征的重要性,然后將通道權重與原始特征圖相乘,得到經(jīng)過通道注意力調整的特征圖。這樣可以更好地區(qū)分不同通道之間的特征,提高特征的表達能力。
間注意力模塊則用于計算每個像素在空間上的重要性,以更好地捕捉圖像中的空間結構??臻g注意力機制模型結構如圖5所示,首先通過對通道注意力模塊輸出的特征圖進行最大池化和平均池化操作,得到每個通道的最大值和平均值。將這些值拼接并輸入一個全連接層中,生成表示每個像素空間權重的向量。將空間權重向量與經(jīng)過通道注意力調整的特征圖相乘,得到最終經(jīng)過空間注意力調整的特征圖。這樣可以更好地區(qū)分不同像素空間的重要性,提高特征的表達能力。
公式(2)中的σ 表示Sigmoid函數(shù),f7×7 表示7×7大小的卷積核。
CBAM注意力機制能夠自適應地調整不同的通道和像素在特征映射中的權重,它可以針對不同的任務和數(shù)據(jù)集自動選擇最優(yōu)的特征組合,從而提高模型的性能。
3.3 改進模型結構
在初始YOLOv8網(wǎng)絡結構的基礎上,加入效果更好的混合注意力機制CBAM,將CBAM 注意力機制添加到上采樣階段中的Upsample模塊后面以及Neck層中C2F模塊的后面。嵌入CBAM機制后的網(wǎng)絡結構如圖6所示。
引入CBAM模塊可以增強火焰和煙霧特征表示能力。首先通過YOLOv8模型提取原始圖像的特征圖,其次在特征圖中添加CBAM模塊進行特征增強。將特征通道和特征空間兩個維度相結合構成注意力機制,然后將注意力聚焦的范圍信息與輸入的特征圖相乘,進行自適應的特征細化。CBAM注意力機制模型如圖7所示。
4 相關實驗設置(Related experimental settings)
4.1 數(shù)據(jù)集制作及其劃分
使用爬蟲技術在互聯(lián)網(wǎng)中收集數(shù)據(jù)集,在新聞網(wǎng)以及百度等網(wǎng)站上收集火災目標圖片共6 850張,其中數(shù)據(jù)集為5 360張,驗證為1 490張。數(shù)據(jù)集包含多種場景下發(fā)生的火災圖像,能夠適用于大部分場景下的火焰和煙霧目標檢測。
4.2 數(shù)據(jù)集標注
將數(shù)據(jù)集中的圖片輸入算法模型中進行訓練,因為沒有YOLO算法所需的標注文件,因此使用LabelImg軟件對火焰進行標注。數(shù)據(jù)集標注示例圖片如圖8所示,圖8(a)為標注火焰和煙霧的樣本,圖8(b)和圖8(c)為單獨標注火焰的樣本,圖8(d)為單獨標注煙霧的樣本。圖片用于模型訓練和模型測試的比例分別為80%和20%。
4.3 實驗平臺配置
本次實驗中使用的YOLOv8模型是在Windows 10的操作系統(tǒng)下配置,CPU型號為Intel(R)Core(TM)i7-8750 H CPU@2.2 GHz 2.21 GHz,運行內存為16 GB,GPU型號為NVIDIAGeForce GTX 1050 Ti,深度學習框架為Pytorch2.0.1+cu118,運算架構為Cuda11.8,開發(fā)環(huán)境是Python 3.8。
4.4 訓練過程及評價指標
為了驗證圖像的檢測性能,給出模型的評價指標。
(1)準確率P (Precision)。準確率可以衡量模型的精確性,可以定義為模型預測的正類別中有多少是真正的正類別,其公式如下:
其中:TP 表示模型正確地將正例判定為正例的數(shù)量,F(xiàn)P 表示模型錯誤地將負例判定為正例的數(shù)量。
(2)召回率R(Recall)。召回率可以衡量模型的全面性,可以定義為所有真正的正類別中有多少被模型成功檢測到,其公式如下:
其中:TP 表示模型正確地將正例判定為正例的數(shù)量,F(xiàn)N 表示模型錯誤地將正例判定為負例的數(shù)量。
(3)平均準確率AP (Average Precision)。平均準確率可以衡量模型的檢測性能,定義為對各個樣本的檢測精度,其公式如下:
(4)平均準確率均值mAP(mean Average Precision)。平均準確率均值[14]是一種綜合評價指標,它綜合考慮了模型在不同類別上的精準率,是所有類別AP 的均值,其公式如下:
5 實驗結果展示(Presentation of experimentalresults
為了驗證改進YOLOv8算法模型的有效性,將其與原始YOLOv8分別應用于數(shù)據(jù)集中進行訓練實驗,實驗檢測結果如表1所示。從表1中的數(shù)據(jù)可見,改進后的YOLOv8模型相比原始的YOLOv8模型,P、R 和mAP@0.5指標分別提高了6.5%、6.8%和4.8%,表明采用了CBAM注意力機制模塊后,較好地滿足了對火焰和煙霧的檢測要求。
圖9(a)和圖9(c)為原始的YOLOv8的檢測結果,圖9(b)和圖9(d)為添加了CBAM 注意力機制模塊的火災檢測結果。對比4張圖片發(fā)現(xiàn),兩種網(wǎng)絡模型均能夠對火災進行識別,但是未添加注意力機制的網(wǎng)絡對于檢測框的置信度低于添加注意力機制的改進網(wǎng)絡,所以經(jīng)改進的YOLOv8能更精確地對火焰和煙霧進行識別。
6 結論(Conclusion)
為提升森林火災檢測精確率和實時性差等,本文提出一種基于改進YOLOv8的森林火災檢測算法模型,引入CBAM 注意力機制到Neck層中C2F模塊后面和Upsample結構后面,能夠提高模型特征提取的準確率,使網(wǎng)絡模型更好地學習森林火災場景,最終提高其對火災和煙霧的識別靈敏度和辨別能力。從最終的實驗結果可知,相比于原模型,改進后的YOLOv8模型的mAP@0.5提高了4.8%,具有較高的檢測精度。目前,該模型還處于優(yōu)化階段,對于一些特殊情況還要進一步研究、調整,之后的研究中將加入更多不同的數(shù)據(jù)集對不同環(huán)境下的火災進行檢測,并進一步研究算法對目標檢測的識別性能。