馬慶祿,唐小垚
(重慶交通大學交通運輸學院,重慶 400074)
我國的隧道數量和長度均占世界第一,隧道火災事故的危害極大[1],較早的發現火災事故能夠保障人民的生命安全,降低社會和個人的財產損失,因此研究實時、準確的感知火災的發生并能及時發出警告具有重要的意義。
傳統的基于硬件的火災檢測器[2]具有很多的局限性,雖然一些學者在此基礎上做出了改進,如Ting[3]等提出了將傳感器采集的多種物理信息進行融合的火災檢測算法,但是由于傳感器自身的特性,受隧道里環境(氣流、粉塵等)影響較大,且必須近距離接觸火源待收集火災到信息后,才能發送數據提出警示,不能很好的保證實時性以及精準的反饋火災的嚴重程度。近年來,許多學者提出通過視頻監控系統以實現實時監測火災的研究算法越來越多,視頻檢測能夠滿足實時性的要求并且檢測的區域的大,并能提供很直觀的火災畫面。
基于圖像的火災檢測的關鍵環節在于特征提取以及模式識別。判斷火焰是否存在提取的圖像特征一種是關于靜態的顏色和外形,另一種是動態的變化區域和閃爍頻率等。Kim MG[4]提出了結合顏色信息理論的火焰檢測分割技術,通過幀差法成功提取火焰的HIS特征,但由于顏色比較單一,所以準確率較低。Liqiangwang[5]通過分析火焰閃爍的時空特性和亮度變化特性建立了閃動特征模型,實驗結果誤報率較低。Foggia[6]在火災檢測中融合了火焰燃燒的形狀、顏色和運動形態,從而在一個多專家框下實現了火災的實時檢測。王琳等[7]給出一種基于RGB和Lab的顏色統計模型,對隧道內疑似火災區域邊緣分割完整,有較好的魯棒性。這些方法多是以顏色和形狀來提取火焰特征,泛化能力不足,人為因素影響較大,無法廣泛應用。
目前,基于深度學習的視頻目標檢測發展迅速,Frizzi[8]采用卷積神經網絡(CNN)對火災進行檢測,該方法雖然取代了手動提取特征,但無法準確獲取火災位置并且對初期火焰漏檢率高。現在深度學習網絡主要分為先產生候選區域再分類的兩步法(Two Stage)和直接對圖像進行卷積處理得檢測結果的一步法(One Stage)。常見的兩步法主要R-CNN[9]、Fast R-CNN[10]、Faster R-CNN[11],一步法主要包括SSD[12]、YOLO[13]、YOLOv2[14]、YOLOv3[15]、YOLOv4[16]可以更快地實現目標檢測。YOLOv3是最流行的一步法,它廣泛應用于交通運輸領域的交通標志[17]、交通流[18]、路面坑洼[19]、視覺裂縫[20]等檢測。Shen等[21]運用YOLOv1模型進行火災檢測,雖然有很高的檢測速度,但易受環境和其它因素干擾導致檢測精度較低。Kim等[22]采用Faster R-CNN進行火災檢測,檢測的精度顯著提高但實時性無法得到保證。Yu等[23]在提出Mask R-CNN的特征層中從下至上將火焰特征進行融合,精度有所提高但實時性卻無法保證。Jin等[24]采用了Anchor-Free網絡結構進行火災檢測,降低了網絡參數使其更容易部署在實際應用,但算法的檢測效果正負樣本極端不平衡且具有語義模糊性(兩個目標中心點重疊);
現有的算法無法滿足隧道火災檢測對實時性和準確性的要求,因此本文提出嵌入DenseNet的YOLOv4多尺度公路隧道火災檢測算法。自建了一個含有3000張隧道火焰圖片的數據集,在CSP特征提取層中加入DenseNet網絡,加強特征復用,降低梯度消失的問題,抑制過擬合。為了增強小尺寸的隧道火焰,在特征檢測層中加入104×104特征檢測層,加強特征融合,并用K-means聚類算法對數據集進行處理,獲取隧道火災檢測先驗框并分配給各特征檢測尺度。建立了嵌入DenseNet的YOLOv4多尺度公路隧道火災檢測模型。實驗表明該模型對隧道火災檢測具有較高的準確性和實時性,能夠滿足隧道火災檢測的要求,并且對隧道火災初期的小尺寸火焰具有很好的檢測效果,對隧道火災預警的研究具有重要意義。
YOLOv4網絡主要由輸入端、BackBone主干網絡、Neck、Prediction四個模塊構成。在輸入端采用Mosaic和CutMix的數據增強方式,增強圖像特征信息,減少GPU的損耗。包含5個CSP網絡結構的CSPDarknet53作為主干的核心,能夠降低計算瓶頸以及內存成本,增強學習能力。在頸部以路徑聚合網絡(PANet)和采用1×1,5×5,9×9,13×13最大池化方式的空間金字塔(SPP)構成,增強特征融合。在訓練過程中采用標簽平滑和學習率余弦退火衰減等技巧進行優化。框架結構如圖1所示。

圖1 YOLOv4框架結構圖
YOLOv4目標檢測網絡流程如圖2所示。在輸入端將隧道火災視頻幀劃分為N×N格。采用具有火焰中心坐標的網格進行火焰檢測,每個網格單元預測B個賦有Tx、Ty、Tw、Th和置信度五預測值的邊界框。用置信度來評價檢測的精度和置信水平[15]。

圖2 YOLOv4網絡火災檢測
通過式(1)求得預測框的寬和高,分別用Bw、Bh表示,以及預測框的中心坐標(Bx,By)。

(1)
式中σ(x)——Logistic函數;
Cx、Cy——特征圖中每個網格的左上角坐標;
Pw、Ph——先驗框相對于特征圖的寬和高;
Tx、Ty、Tw、Th——模型預測的中心坐標及寬高。
圖1表示換道車輛在時間段t內完成從初始車道到達目標車道的換道過程,圖中M代表換道車輛,C代表原始車道上行駛于換道車輛M前方的車輛,
將預測框的位置參數與特征尺寸的比值與輸入圖片尺寸相乘,得到火焰原圖中預測的邊界框坐標值。每個網格需預測一個類別信息,記錄為C類,因此輸出為尺寸N×N(5×B+C)的張量。同時,檢測系統按式(2)計算交并比。

(2)
式中IoU——交并比;
DR——預測框;
GT——實際框。
用IoU來衡量預測框的精度,其理想值為1。
YOLOv4網絡訓練時的損失函數由邊界框回歸損失Lciou、置信損失Lconf、分類損失Lclass共同構成YOLOv4目標檢測網絡的的損失函數,表達式如式(3)。若邊界框沒有目標,就不計算Lciou和Lclass。

(3)
式中S2、B——特征圖尺度與先驗框;
λnoobj——權重系數;

ρ(·)——歐氏距離;
c——預測框與實際框閉包區域的對角線距離;
b、w、h——預測框的中心坐標及寬高;
bgt、wgt、hgt——實際框的中心坐標及寬高;


相比傳統的損失函數計算方法,CIoU避免了尺度敏感的問題,對預測框和實際框的關系有更好的表達。因此采用CIoU損失函數計算邊界框回歸損失,采用交叉熵計算置信度損失與分類損失。
3.1.1 特征檢測層改進
在特征檢測網絡中,YOLOv4采用13×13,26×26,52×52的三種尺度對特征進行融合,尚未完全利用特征提取網絡中分辨率較大的淺層特征圖的位置信息[25]。因此直接用來進行檢測,多次卷積處理后,會使小型火焰信息丟失,不能很好的完成火焰初期的檢測任務。
因此,在原來的基礎上新增一個低維尺度104×104尺度檢測,強化特征的學習,將YOLOv4檢測尺度由3尺度變為4尺度,通過融合多種尺度的特征信息后進行火災檢測,但新增的檢測尺度會稍加模型檢測時間。改進后的網絡結構如圖3所示。
3.1.2 特征提取層改進
在特征提取過程中,為了解決特征傳播梯度消失的問題,在CSPX模塊中嵌入DenseNet網絡[26],增強多層間的特征復用,結構如圖4(a)所示。

圖4 嵌入DenseNet結構
DenseNet與ResNet網絡總體結構類似,不同的是,前者是將網絡結構中前面的每一層與下一層進行密集鏈接,而后者是將下一層與某一層進行元素級相加,因此特征信息更加豐富。為了增強計算效率,減少網絡參數,DenseNet采用1×1卷積模塊降低特征數量并躍層將特征圖融合。DenseNet的核心如式(4)所示
xm=Hm([x0,x1,…,xm-1])
(4)
式中xm表示第m層網絡輸出的特征圖;
[x0,x1,…,xm-1]表示將第0層到第m-1層網絡的特征圖進行通道合并;
Hm是由批歸一化(batch normalization,BN)、修正線性單元(Mish)激活和CONV(卷積)的組合操作.
改進后的特征提取網絡如圖4(b)所示。其中,CBM模塊表示Hm操作組合;ResNet單元表示兩個CBM模塊及其快捷鏈路的和;DenseNet單元表示一個1×1卷積CBM和一個3×3卷積CBM的組合操作,不同DenseNet單元間采用密集型網絡連接的方式。
在目標檢測中引入先驗框,通過判斷給定錨框中是否含有檢測對象并分預測框與實際框的距離,省去了以往的多尺度滑動窗口遍歷環節,從而提升了目標檢測的速度與精度。為了加快隧道火焰檢測的精度和速度,采用K-means聚類對火災數據集進行處理,統計分析,重新獲得先驗框的寬高值,其中的K代表類簇個數,means代表類簇內數據對象的均值[27]。
而傳統的歐式距離變換會使大目標和小目標檢測產生較大的誤差,影響檢測性能。因此通過式(5)來進行計算,將交并比加入到標注框的距離計算中。
d(box,centroid)=1-IoU(box,centroid)
(5)
通過K-means算法得到IoU與先驗框個數的關系圖,如圖5所示。

圖5 先驗框K與IoU關系
由圖可知,在先驗框個數為12時,IoU增長速度變緩,因此文章設置先驗框個數為12,使網絡的計算效率和模型的檢測精度的關系都能達到最佳。再通過K-means在本文的隧道火災數據集中計算得到12個聚類中心,如圖6所示。

圖6 聚類中心分布圖
因此得到的12個先驗框如表1所示,通過對比測試最終選定(19,27),(44,52),(52,98)分配給新增具有小物體感受野的104×104特征檢測層;將(114,97),(88,170),(206,106)分配給52×52的火災檢測特征層;在26×26的特征圖層上選用(163,183),(123,272),(257,239)這三種先驗框尺寸進行火焰檢測;最后將(372,162),(218,347),(371,344)分配給13×13的特征圖層用于大面積火災檢測。

表1 先驗框分配表
目前有很多與目標檢測相關的數據集,如MS COCO以及PASCAL VOC,但關于火災檢測的數據集較少,因此本文通過收集網上以及公開的火災視頻,對視頻處理提取火災圖片,構建了一個包含13000張左右的火災圖片數據集,以及幾十段火災的視頻庫。本文還通過在重慶交通大學1號門地下通道模擬隧道火災形成初期實驗獲取數據集,試驗現場如圖7。經過篩選,一共提取了火災圖片數據集中的3000張火焰圖片,并通過軟件LabelImg進行數據標記。為了文中提出的火災檢測算法的泛化性,本文還通過手機拍攝隧道燈光以及汽車的車燈獲取了1000張圖片作為負樣本數據集。因此,本文算法訓練的數據集共4000張,其中火焰圖片3000張,隧道行車燈光,隧道燈光各500張。

圖7 隧道火災初期模擬試驗
本文在Intel Core I5-10200H處理器,8G內存,NVIDIA GeForce GTX 1650Ti,4G獨立顯存的硬件環境下,以及CUDA10.2,CUDNN7.6,Darknet深度學習框架,Windows10,64位系統,編程語言Python等軟件環境進行實驗驗證。
在模型訓練階段,設置批尺寸(Batch size)、動量(Momentum)、衰變值(Decay)、初始學習率(Learning rate)等參數,訓練參數如表2所示。采用數據增強來增加訓練樣本,在訓練過程中,通過分析IoU曲線和Loss曲線來不斷優化和調整模型參數,最終保存Loss曲線趨于平滑穩定、Loss值最低的權重,將該權重用于隧道火災火焰檢測,文中將改進后的算法用YOLOv4-Improve表示。

表2 參數設置
訓練過程中的損失函數變化曲線圖如圖8所示。由圖8可知,在前1500次迭代中,曲線變化較大,后逐漸平滑,而到了12000次以后,Loss值相對穩定。

圖8 Loss值變化曲線
訓練過程中IoU變化曲線圖如圖9所示,從圖9中可以看出,在前2500次迭代中,IoU值變化明顯,逐漸增大。在2500次以后曲線趨于平滑,最后也達到穩定值,變化較小。

圖9 IoU變化曲線
在目標檢測中,通常將預測框與目標真實框的交并比(IoU)大于0.5設定為成功預測到目標位置,通過準確率(P)和召回率(R)計算平均精準度(AP)和加權調和平均(F),并以平均AP值(mAP)作為算法檢測精度的綜合評價指標。AP用于評估模型在單個檢測類別上的精度表現,而mAP越大表明整體檢測精度越高。式(8)為準確率的計算公式,式(9)為召回率的計算公式,式(10)為加權調和平均的計算公式,式(11)為mAP的計算公式。

(8)

(9)

(10)

(11)
其中,TP為真正例,FP為假正例,FN為負正例,c為分類數。
4.4.1 驗證集檢測結果
為了驗證改進后的YOLOv4網絡的魯棒性和泛化性,本文用百度圖片獲取的驗證集進行了測試,部分檢測結果如圖10所示。
由圖10(a)和圖10(b)可以看到,隧道模擬的兩處火災都達到了0.9以上的置信度,完整的標記出圖中存在的火焰。圖10(c)和圖10(d)也能正確的標記燃燒車身上的火焰,且沒有受隧道燈光的干擾導致誤檢。實驗結果表明本文算法在公路隧道火災檢測中較好的效果,能夠實現對隧道內不同面積的火焰的檢測,并且不受隧道其它燈光的影響。
4.4.1 對比實驗
為了更好的體現本文優化后的網絡模型,本文將改進后的模型與YOLOv4、YOLOv3、YOLOv4-tiny進行了測試對比,LOSS曲線圖如圖11所示。

圖11 Loss曲線圖
由圖11可以看出YOLOv3和YOLOv4-tiny在前1500次Loss值就下降到1以內,然后開始緩慢下降,最終分別達到0.3802和0.4075。而YOLOv4和YOLOv4-Improve在3000次以后Loss值降到2以內,然后變化趨于平滑,在達到平穩時,Loss值分別為1.3000和1.3537。
繪制模型的精度和召回率曲線,簡稱P-R曲線(Precision-Recall),結果如圖12所示。

圖12 P-R曲線
由圖12(a)和(b)可以看出,YOLOv3和YOLOv4-tiny兩種模型在火焰和燈光檢測精度各有優點,但總體上精度都比較低。圖12的(c)圖,YOLOv4在檢測精度上相比前兩種算法有了一個不錯的提升,且燈光和火焰都能兼顧。而圖12(d)為改進后的模型P-R曲線明顯優于其它幾個模型,在YOLOv4的基礎進一步提升了算法的檢測精度。本文為了實現火災初期的火焰檢測,在小目標檢測上進了很多增強,改進前后的小目標檢測效果如圖13所示。

圖13 改進前后小目標檢測
圖13(a)、(b)、(c)中可以看出,YOLOv3將火光作為了檢測對象,而實際的火焰并未檢測到。而YOLOv4只是檢測出了一處火焰,但改進后的YOLOv4模型將大巴車兩處火焰均標記出來。在隧道燈光檢測上,YOLOv3的置信度只有0.35,而YOLOv4有0.96,改進后的YOLOv4模型確能將多處隧道燈光標記出來。由此可知,本文改進的YOLOv4算法對小目標檢測有較大的提升。
為了評估不同改進方法對火焰的檢測效果,將P、R、mAP進行對比,結果如圖14所示。其中,YOLOv4-K是對數據進行了聚類分析的模型檢測結果,YOLOv4-104是多尺度檢測模型,YOLOv4-DenseNet是在特征提取層中嵌入了DenseNet網絡的檢測模型。

圖14 不同改進方法對比結果
由圖可知,只增加特征檢測層算法mAP提升了0.9%,對小目標檢測有提升。而對先驗框重新聚類得到的YOLOv4-K模型總體也只提升了0.7%。而在特征提取層中加入DenseNet對檢測結果有較大的提升。而融合了多種改進策略的YOLOv4-Improve相對YOLOv4-DenseNet還提升了1.3%。
為了進一步證明改進后的YOLOv4算法在隧道火災檢測中有更好的效果,本文將自建的數據集Faster R-CNN、YOLOv3、YOLOv4等模型上進行實驗對比,結果如表3所示。

表3 多種算法對比結果
由表3可以得到,相比Faster R-CNN,本文改進的算法mAP提升了6.3%,平均檢測時間也比其快0.15s。而相比YOLOv3,mAP提升了9.7%,速度提升了0.08s。對比原YOLOv4,本文提出的算法雖然犧牲了0.04s檢測時間,但mAP提升了4.3%,隧道火災檢測的總體效果得到了提升。
為滿足公路隧道火災實時檢測的要求,綜合考慮和分析其它算法模型,研究了一種結合隧道機器人、攝像頭等視覺的YOLOv4火災檢測算法。實驗結果表明,改進的算法在同類火災檢測算法中具有更好的精確度和實時性,在本文構建的隧道火災數據集上,準確率達到了90.4%,召回率達到了82.3%,mAP達到了83.8%,平均檢測時間為0.16s,為實現隧道初期火焰智能檢測提供了理論研究價值,構建了一個隧道火災火焰數據庫,以及一些類火特征的負樣本數據集,為深度學習在隧道火焰檢測領域的理論研究提供了訓練集支撐。本文隧道火焰數據集較少,圖像質量等問題,檢測精度還有待提高。因此,在以后的研究中,將對隧道火災數據集進行擴充和優化,對不同材質火源引起的火焰進行數據采樣,同時繼續對網絡進行改進,降低網絡復雜度。