徐 巖,李永泉,郭曉燕,韓立蘇,劉巧玲
(山東科技大學 電子信息工程學院,山東 青島 266590)
火災是極具破壞性的災害之一,造成的損失巨大,因此火災的預防以及前期檢測尤為重要。基于傳感器的傳統(tǒng)火災檢測系統(tǒng)存在檢測條件單一、易受戶外場景干擾、響應速度慢等缺陷。近年來基于深度學習算法的計算機視覺發(fā)展迅速,相比于傳統(tǒng)機器學習算法與圖像處理技術,深度學習具有強大的特征表示能力和自主學習能力,將深度學習技術與火災檢測相結合,檢測速度和精度可以大幅提升。
基于深度學習的火焰檢測主要是通過搭建卷積神經網(wǎng)絡提取火焰特征進行分類識別,實現(xiàn)端到端的火焰檢測。2016年Frizzi等[1]搭建9層卷積神經網(wǎng)絡實現(xiàn)了對火焰和煙霧的分類,檢測速度較快。Muhammad等[2]使用AlexNet[3]實現(xiàn)對火災特征的提取,但網(wǎng)絡參數(shù)量較大,泛化性較差。2018年Sun等[4]利用殘差結構設計了一個新的網(wǎng)絡進行火焰識別,通過滑動窗口進行定位,取得較好的檢測效果。同年,Yan等[5]利用Faster-RCNN[6]實現(xiàn)了火焰的端到端檢測,檢測速度與精度大幅提升。2021年Han等[7]采用改進的CA-SSD網(wǎng)絡檢測吸煙行為,在保證實時性的基礎上,提高了煙霧檢測的準確性。
常用于目標檢測的卷積神經網(wǎng)絡模型主要分為兩類,一類是以R-CNN[8]系列為代表的兩階段模型,在檢測過程中,首先找到目標候選區(qū)域[9],然后對候選區(qū)域進行分類與定位,該類方案檢測精度較高,但相對于單階段網(wǎng)絡檢測速度較慢;另一類是以YOLO系列[10-13]、SSD[14]為代表的單階段模型,將檢測問題看成坐標回歸問題,通過模型直接輸出目標檢測結果,該類算法檢測速度較快,但相對于兩階段網(wǎng)絡檢測精度較差。本研究針對火焰檢測實時性需求,選取YOLOv3-tiny輕量級網(wǎng)絡。通過改進該網(wǎng)絡,在保證檢測速度的同時提高火焰檢測的精度,并通過自制的火焰數(shù)據(jù)集進行實驗,驗證改進的YOLOv3-tiny算法的有效性。
YOLOv3-tiny是YOLOv3的一個輕量級網(wǎng)絡,構架分為特征提取網(wǎng)絡、特征融合網(wǎng)絡、檢測網(wǎng)絡3個部分。相比于YOLOv3采用殘差結構來加深特征提取網(wǎng)絡的方式,YOLOv3-tiny骨干網(wǎng)絡僅由卷積層和池化層簡單堆疊構成,極大地降低了網(wǎng)絡的參數(shù)量和計算量,提升了檢測速度。特征融合部分延續(xù)了YOLOv3網(wǎng)絡采用深層高語義特征圖上采樣與淺層特征圖拼接的融合方式,實現(xiàn)深淺層特征信息的互補。檢測網(wǎng)絡部分刪除了52×52大小的檢測分支,僅包含13×13、26×26大小的兩個預測分支。具體網(wǎng)絡結構如圖1所示,其中Concat表示特征圖拼接操作,Upsample表示上采樣操作,Conv_1、Conv_2分別表示3×3、1×1卷積操作,P1、P2表示輸出特征圖。
圖1 YOLOv3-tiny網(wǎng)絡結構
2.2.1 引入CSP-MobileNetV2模塊替換骨干網(wǎng)絡部分卷積層
YOLOv3-tiny骨干網(wǎng)絡通過卷積層提取特征,池化層降低維度,網(wǎng)絡結構簡單且層數(shù)較少,導致目標特征提取不充分,火焰檢測效果較差。本研究在骨干網(wǎng)絡相鄰兩個池化層之間引入CSP-MobileNetV2模塊,替換骨干網(wǎng)絡部分卷積層,從而增強網(wǎng)絡的特征提取能力,使得深層輸出特征圖含有更豐富的語義信息。
CSPNet[15]模塊通過對輸入特征圖進行二分支操作,將特征圖分成相同的兩個分支,其中一個分支進行后續(xù)的卷積激活操作,另外一個分支通過跨層連接與卷積激活后的分支進行通道拼接,實現(xiàn)特征融合。CSPNet采用分支操作實現(xiàn)梯度流分割,通過跨層連接實現(xiàn)多種梯度信息組合,緩解網(wǎng)絡訓練過程中梯度重復利用問題,降低計算量,提升網(wǎng)絡的性能。
MobileNetV2[16]模塊由一個1×1的點卷積和一個深度可分離卷積構成。由于深度卷積無法改變特征圖通道數(shù),學習到的特征數(shù)受輸入通道的限制,因此,MobileNetV2在深度可分離卷積結構之前添加了一個1×1卷積進行通道升維,獲取更多的目標特征。MobileNetV2模塊類似于倒置的殘差模塊,深度可分離卷積常用來替換普通卷積,減少參數(shù)量和計算量。
本研究將CSPNet模塊與MobileNetV2模塊相結合,在滿足檢測速度的情況下提升了網(wǎng)絡的檢測性能。圖2為CSPNet模塊、MobileNetV2模塊以及融合后的CSP-MobileNetV2模塊結構。
圖2 模塊結構
2.2.2 引入SKNet選核注意力網(wǎng)絡
火焰發(fā)生的場景復雜多樣且火焰的形狀大小各異,復雜的背景信息對火焰目標檢測會產生干擾,同時不同尺度的火焰目標在同種大小卷積核的作用下提取的特征信息量差距較大,使得目標特征提取不充分。為了在提高對火焰有用信息關注的同時,使火焰特征提取更充分,本研究在原始網(wǎng)絡檢測分支輸出之前引入選核注意力網(wǎng)絡(selective kernel network,SKNet)[17]。SKNet是SENet[18]的改進版,通過對不同大小的卷積核提取到的特征圖進行全局池化、激活、加權等操作,加強特征圖通道關聯(lián)的同時實現(xiàn)不同分支特征圖的加權分配。SKNet的結構如圖3所示,作用過程可分為3個部分。
圖3 選核注意力網(wǎng)絡結構
1) 分支卷積。將輸入特征圖經過不同大小的卷積核進行卷積操作,得到具有不同感受野的特征圖。分支卷積的個數(shù)可以有2個到多個。實驗表明,在本研究數(shù)據(jù)集上分支卷積個數(shù)為2時檢測效果最好,分支卷積的大小分別為3×3和5×5。
2) 融合。將各卷積分支得到的特征圖F1、F2對應位置元素相加得到特征圖X′,其中F1、F2以及融合特征圖X′的維度與輸入特征圖尺寸一致,皆為H×W×C(H、W為特征圖的高度和寬度,C為通道數(shù))。對特征圖X′進行通道維度上的全局平均池化(global average pooling,GAP)得到維度為1×1×C的特征圖,再經過兩個全連接層進行非線性變換。其中,第一個全連接層進行降維,將特征圖降為1×1×d,第二個全連接層將特征圖恢復到1×1×C。最后通過softmax函數(shù)激活得到兩個1×1×C的通道描述符a和b,兩個通道描述符對應位置的權重相加等于1,實現(xiàn)不同卷積核輸出特征圖通道權重的分配。式(1)、(2)、(3)分別表示特征融合操作、全局池化操作、激活歸一化操作。
X′=F1+F2,
(1)
(2)
Z=δ(B(S))。
(3)
式(3)中:δ表示RELU激活操作,B表示歸一化操作。
(4)
2.2.3 插入PPM金字塔池化模塊
通常網(wǎng)絡越深感受野越大,而YOLOv3-tiny結構簡單,網(wǎng)絡層數(shù)少,得到的特征圖感受野比較小,目標的檢測效果不佳。通過加深網(wǎng)絡來擴大感受野會增加網(wǎng)絡的參數(shù)量和計算量,為了兼顧檢測速度,同時擴大網(wǎng)絡的感受野,捕獲更豐富的多尺度上下文信息,提高網(wǎng)絡的整體性能,本研究在骨干網(wǎng)絡末端加入金字塔池化模塊(pyramid pooling module,PPM)[19]。
PPM通過對輸入特征圖進行一系列不同大小的池化操作得到具有不同感受野的特征圖,將得到的特征圖與輸入特征圖進行空間維度上的拼接融合,實現(xiàn)多級特征信息的融合互補。具體過程為:將輸入特征圖分別進行1×1、2×2、3×3、6×6大小的池化操作,將池化后的特征圖通過1×1的卷積進行通道降維,通道數(shù)降為輸入特征通道的1/N(N為池化操作個數(shù));將降維后的特征圖采用雙線性插值法,上采樣得到輸入特征圖大小,然后與輸入特征圖進行空間維度上的拼接,使特征圖通道數(shù)變?yōu)?C;最后通過卷積操作將特征圖進行特征融合降維,通道數(shù)恢復為C,實現(xiàn)從全局到局部多尺度特征信息的充分利用。圖4為PPM結構圖,圖5為改進的網(wǎng)絡整體結構圖,紅色邊框部分為改進的區(qū)域。
圖4 金字塔池化模塊結構
圖5 改進的網(wǎng)絡結構
實驗環(huán)境為Deepin Linux V20系統(tǒng)、NVIDIA GeForce RTX 3080 GPU(10 GB)顯卡等硬件條件,結合Python語言和Pytorch深度學習框架進行編程實現(xiàn)。輸入圖片大小為416×416,網(wǎng)絡初始學習率為0.001,權重衰減系數(shù)為0.000 5,采用動量梯度下降優(yōu)化算法,動量值為0.9,batch size設置為32,訓練輪數(shù)(epoch)為150。
目前網(wǎng)絡上公開的火焰數(shù)據(jù)集較少且質量不高。本研究通過網(wǎng)絡爬蟲技術自制火焰數(shù)據(jù)集,共9 206張圖片,其中訓練集7 365張,測試集1 841張,訓練集圖片和測試集圖片比例為8∶2。通過Labelimg標注軟件將數(shù)據(jù)集制作成PASCAL VOC格式。數(shù)據(jù)集圖片分布比較廣泛,既包含了燭火、火炬、篝火等燃燒穩(wěn)定、特征明顯的火焰,也包含了森林火災、交通火災、城市火災等背景復雜、形狀多樣的火焰。由于數(shù)據(jù)集包含的背景復雜多樣,火焰燃燒階段不同且形狀不一,檢測難度較大。數(shù)據(jù)集中火焰圖片大體可以分為兩大類,如表1所示。
表1 數(shù)據(jù)集分類
為了使錨框的大小更符合數(shù)據(jù)集的目標尺寸,本研究通過K-means聚類分析法[20]重新尋找合適的聚類中心生成適合本數(shù)據(jù)集的6個錨框,大小分別為(17, 23),(26, 46),(54, 59),(66, 115),(128, 145),(216, 279)。錨框尺寸整體符合自制數(shù)據(jù)集中目標框的尺寸分布,用來加速算法的訓練。
實驗常用的評價指標為準確率(P)、召回率(R)、平均檢測精度(A)、平均精度均值(mAP)以及檢測速度(Fps)。以下分別為幾個指標的計算式:
(1)
(2)
(3)
(4)
式中:T為真正例,表示被預測為正類的正樣本;FP為假正例,表示被預測為正類的負樣本;FN為假負例,表示被預測為負類的正樣本;N為類別個數(shù)。本研究只有火焰一類,故采取的評價指標為mAP和Fps。
本研究在原網(wǎng)絡的基礎上,分別對單一改進點、融合兩個改進點以及最終網(wǎng)絡進行了8個實驗,具體實驗結果如表2所示。
表2 消融實驗結果
在本研究自制數(shù)據(jù)集上,YOLOv3-tiny網(wǎng)絡的mAP為80.2%,將CSP-MobileNetV2模塊引入到骨干網(wǎng)絡后mAP提升2.0%,表明引入CSP-MobileNetV2模塊后網(wǎng)絡的特征提取能力增強,對火焰的深度特征提取更充分。實驗3為引入PPM后的網(wǎng)絡性能,與原網(wǎng)絡相比mAP提升1.5%,說明多級特征信息融合使火焰信息互補,檢測效果更好。實驗4為加入SKNet模塊后的結果,網(wǎng)絡的mAP提升1.8%,該結果表明SKNet模塊實現(xiàn)了不同尺度火焰目標對卷積核的自適應選擇,對火焰特征提取更充分。實驗5~7分別將實驗2~4進行兩兩融合,融合后的mAP分別為83.1%、83.4%、82.9%。實驗8為本算法結果,mAP達到84.3%,與YOLOv3-tiny網(wǎng)絡相比,mAP提升了4.1%,證明了本算法的有效性。
圖6為實驗1與實驗8訓練過程中平均精度均值曲線對比圖。從圖6可以看出,隨著訓練程度的加深兩條曲線呈上升趨勢,并在100輪左右趨于穩(wěn)定。最終YOLOv3-tiny的mAP為80.2%,本算法的mAP達到84.3%,整體提升了4.1%。
圖6 實驗曲線
為了進一步驗證本算法的有效性,分別從檢測精度與檢測速度兩個方面對比幾種常用算法在本研究自制數(shù)據(jù)集上的表現(xiàn),結果見表3。
表3 不同算法實驗對比
如表3所示,在檢測精度上,本算法的平均精度均值最高,達到84.3%。與YOLOv3、YOLOv3-tiny、 EfficientDet-D2[21]和YOLOv5m相比分別提高了0.8%、4.1%、7.0%和1.6%。
在檢測速度方面,本算法的Fps為106,相較于YOLOv3、SSD,F(xiàn)ps分別高出53和64,比YOLOv5m、EfficientDet-D2算法分別高出69和46。由于引入模塊帶來少許的參數(shù)量和計算量增加,所以與YOLOv3-tiny、YOLOv4-tiny相比,速度稍微降低,但檢測速度依舊滿足實時性檢測的需求。
圖7為YOLOv3-tiny算法與本算法在訓練過程中分類損失與回歸損失的對比曲線,圖7(a)、7(b)分別表示回歸損失和分類損失。
圖7 損失曲線
在圖7中,改進前后算法損失曲線都呈下降趨勢。隨著訓練程度的加深,原算法的回歸損失值與分類損失值最終分別穩(wěn)定在1.1與0.7左右,本算法的回歸損失值與分類損失值最終分別穩(wěn)定在0.9與0.6左右。
為對比改進前后算法的檢測效果,對部分火焰圖片進行測試。測試的火災類型包括夜間城市火災、森林火災、汽車起火3種類型。圖8(a)為YOLOV3-tiny算法的檢測結果,圖8(b)為本算法的檢測結果。通過檢測結果看出,本算法的檢測效果整體有所提升,且對原算法漏檢的小火焰也有較好的檢測效果。
圖8 部分火焰檢測圖片
表4為模型改進前后的參數(shù)量和訓練時間對比。從表4中可以看出,由于CSP-MobileNetV2、SKNet以及PPM等模塊的加入,改進后YOLOv3-tiny算法的參數(shù)量上升4.5M,導致算法運行時間有所提高,算法處理一張圖片的時間為9.4 ms,比原YOLOv3-tiny增加3.8 ms。
表4 算法參數(shù)量及運行時間對比
本研究提出一種基于YOLOv3-tiny的輕量級火焰檢測算法,并利用自制的火焰數(shù)據(jù)集驗證了算法的有效性。通過在骨干網(wǎng)絡中加入CSP-MobileNetV2結構,提升了算法對火焰目標的特征提取能力;在檢測分支輸出前加入SKNet,加強了對重要特征的關注,實現(xiàn)了不同尺度火焰目標自主選擇合適的卷積核;在骨干網(wǎng)絡末端加入PPM,實現(xiàn)了多尺度火焰目標特征融合互補,提升了火焰的檢測效果。實驗結果表明,本算法在自制火焰數(shù)據(jù)集上相比于原算法,mAP提高了4.1%,F(xiàn)ps為106,檢測效果顯著提升。
由于自制的火焰數(shù)據(jù)集圖片數(shù)量不夠充足,后續(xù)需要進一步擴充數(shù)據(jù)集圖片,同時本算法的檢測速度只是通過部分樣本圖片推理計算得出,并未在實際應用中進行測試,且網(wǎng)絡訓練時間較長,在實驗配置上過度依賴高算力的GPU,距離實際的實時檢測還有差距。在后續(xù)工作中,需要進一步開展實驗驗證,在不降低準確率的前提下,研究如何縮短算法訓練時間。