(華中師范大學 物理科學與技術學院,湖北 武漢 430079)
由于火災的突發性、頻發性和危害性,人們一直在尋找更加及時有效的火災檢測方法。傳統的火災探測系統存在探測范圍有限,誤報率高,安裝密度大,可拓展性不強,智能化程度較低等缺點。近年來,隨著視頻監控的普及、視頻圖像處理技術和計算機視覺技術的發展,視頻火焰識別一直是火災檢測領域的熱點。
傳統的視頻火焰檢測算法大多關注檢測火焰的存在性,而不能對火焰的燃燒狀態進行持續有效的跟蹤,使用常見的目標跟蹤算法,如kalman濾波器算法對火焰目標進行跟蹤,其對于火焰這種原地閃動且存在被遮擋可能的目標跟蹤效果欠佳[1]。大多數早期的火焰檢測算法都是通過先人工提取火焰的特征,再將多種特征進行融合識別火焰。人工提取的火焰特征主要分為靜態與動態兩類,早期的火焰識別算法通過提取典型的靜態特征如圓形度序列,面積序列,面積序列頻譜,強度序列等進行融合判別火焰[2], 動態特征方面,火焰的尖角運動方向[3]、閃爍特征與邊緣一致性特征[4]等能有效區分疑似火焰的干擾物。將火焰的尖角數目與火焰高度的頻譜變化等靜態特征與動態特征相結合進行火焰識別,也成為一個研究熱點[5]。但是,人工提取特征有容錯性差,魯棒性低的缺點。
火焰識別是視頻火焰檢測最關鍵的一步,其識別效果決定了算法整體的實用性與可靠性,早期的火焰識別通過建立概率模型實現[2-5],這種方法逐漸被機器學習算法取代,如支持向量機[6-7]、貝葉斯分類器[8-9]等,但該類方法依賴于特征的選取。由于火災發生的背景較復雜,容易出現干擾物,為使算法適用于復雜的環境情況,Oleksii Maksymiv[10]通過AdaBoost和LBP進行前期的檢測,將檢測為疑似發生火災的區域送至卷積神經網絡(CNN)中處理,進行最終判斷,但煙霧與火災的分類結果影響了其識別精度。
針對上述算法的優缺點,同時考慮到火焰檢測的實時性與準確性,本文提出了一種基于多目標跟蹤與深度學習的火焰識別算法,首先通過運動檢測與顏色檢測提取出具有火焰顏色的運動目標,然后對疑似火焰目標進行跟蹤,進而對每個目標通過訓練好的卷積神經網絡模型進行預測,得到最后的火焰識別結果。
對于待檢測的視頻序列,對單幀圖像進行檢測運算量大,不利于火焰特征的提取,因此提取圖像中疑似火焰區域將是識別前的必要步驟。傳統的火焰識別算法是直接對提取到的疑似火焰目標進行識別,判斷其是否是火焰,但這種方式不能對火焰的狀態進行記錄,無法排除瞬時出現的干擾物,導致算法誤檢率升高,魯棒性較差,因此本算法在提取火焰目標后對目標進行持續跟蹤,從而為火焰識別階段提供穩定存在的待識別目標。
火焰目標提取采用先運動檢測再顏色檢測的方式提取疑似火焰區域,首先,運動檢測算法與顏色檢測算法相比,運算速度較快,因此先運動檢測,篩選出圖像中運動的物體能有效提高算法整體運算速度。其次,根據火焰的持續不斷運動的特征,先進行運動檢測可以篩選出視頻中的運動物體,進而排除具有類似火焰顏色但靜止的干擾物。
運動檢測利用了火焰持續不斷進行隨機運動的特征,對比多種運動檢測方法后使用自適應的高斯混合模型的背景建模法提取運動物體。該算法提取的前景較為連續且完整,同時運算速度較快,可以滿足實時檢測運動物體的要求。
接下來將運動前景進行分割,對該分割區域進行顏色檢測,得到具有火焰顏色的運動目標。顏色檢測使用Chen[11]提出的火焰顏色模型進行識別。
顏色模型公式:

(1)
式(1)即本文使用的火焰的顏色檢測模型,其采用基于RGB與HSV顏色空間相結合的火焰顏色判據,R、G、B代表圖像的R、G、B通道值,S代表圖像的HSV顏色空間的Saturation值,Ravg代表圖像中R通道的均值,在本算法中,Sth=0.4,Rth為115。
圖1(a)、(b)、(c)為對一段視頻進行運動檢測與顏色檢測后的結果。圖1(c)中白色部分即為二值化后的火焰區域。由檢測結果可以看出,運動檢測可以檢測出視頻中火焰、煙霧等運動物體,再對運動區域進行顏色檢測,可以提取出較完整的疑似火焰區域。

圖1 運動檢測與顏色檢測結果
針對火焰運動速度較慢的特點,結合多目標跟蹤算法的處理速度需要,設計了一種基于幀間距離匹配的多目標跟蹤算法,處理時先將每一幀提取的目標的外接矩形進行整體融合處理。融合時與目標匹配時所依據的距離匹配關系相同,這樣可以確保接下來要融合的目標的唯一性。兩目標按照距離相交或相鄰的位置示意圖見圖2,圖2中a圖表示的情況即兩目標相交,b圖表示的情況即兩目標相鄰,(Xa1,Ya1) 、(Xa2,Ya2)為矩形a的左上角坐標與右下角坐標,(Xb1,Yb1)、(Xb2,Yb2)為矩形b的左上角坐標與右下角坐標,Wa、Wb即矩形a、b的寬,Ha、Hb即矩形a、b的高。

圖2 目標相交相鄰位置示意圖
具體的距離匹配公式見式(2),
(2)
若前后幀有兩個目標相鄰或相近則視該目標狀態為存在,即若相鄰幀兩個目標的外接矩形距離關系滿足式(2)則判定其為同一目標。若前一幀的目標在當前幀無匹配結果,則視為目標消失。類似的,若當前幀的目標在前一幀無匹配結果,則視為目標新增。
當出現目標離散或目標融合情況時,可使用最大目標信息繼承方式處理相應目標,即當多個目標融合為一個目標時,當前目標繼承歷史目標中面積最大目標的信息,當歷史目標離散為多個目標時,當前多個目標中面積最大者繼承歷史目標的信息。為了處理短時間的目標遮擋問題,在目標消失后算法將依據該目標的存在時間長短,對目標信息進行一定時間保存,當目標遮擋消失,仍能對該目標進行持續不斷的跟蹤,若該消失目標長時間沒有再次出現,再刪除目標信息。這樣的處理既適用于火焰的目標跟蹤也保證了跟蹤的穩定性。
多目標跟蹤算法的跟蹤效果如圖3所示,方框代表疑似火焰目標,其附近的標號代表該目標的序號,由跟蹤效果可以看出,本算法能夠處理短時間目標被遮擋以及目標離散或融合等復雜運動情況,較好地實現了針對火焰疑似目標的實時跟蹤功能?;鹧孀鳛橐环N運動區域相對固定的物體,在檢測火焰時進行目標跟蹤可以在前期排除一些諸如汽車、自行車等快速移動的物體,同時可以提高系統的魯棒性,為接下來的目標識別做準備。

圖3 多目標跟蹤結果
深度學習類似人腦學習的機制,從底層特征到高層特征逐層進行抽象提取,進而得到分類識別所需要的關鍵特征,提升分類的準確性。本文使用卷積神經網絡,其可以壓縮輸入端維度,在多個空間位置共享參數,進行公共特征的提取,尤其適合處理圖片這種二維格狀數據,其適用性強,泛化能力好,具有全局優化能力,且訓練參數少。深度神經網絡是由機器學習中的神經網絡算法演變而來,且與傳統的機器學習方法相比,深度神經網絡能一次完成特征提取與分類識別,從而避免了手工提取特征的步驟,實現火焰識別。
Lecun在1998年提出的深度卷積神經網絡,是解決模式識別問題的有效工具[12]。原始圖像輸入到有多個神經元的卷積層,其中的卷積核函數會提取輸入圖像的邊緣,輪廓,尖角等局部特征。卷積層后面是池化層,主要用于對卷積層進行特征圖的下采樣運算,降低分辨率,從而降低模型的復雜度。下采樣后的特征也具有一定的尺度不變能力。卷積層和池化層交替出現在網絡中。通常,一層卷積層和一層池化層完成一次特征提取過程。在卷積神經網絡中,最后幾層通常是全連接層,這使得最終生成的特征圖連接在一起。輸出節點的數量可以根據分類要求進行調整,最終得到分類結果。綜上,卷積神經網絡的主要優點是不依賴于先驗知識,可以有效地解決手工特征的設計難度問題。
本文算法選用的特征提取網絡為CaffeNet,其網絡結構如圖4所示。該網絡由五層卷積層、三層全連接層組成,其圖像的輸入尺寸為227×227,通道數為3,即圖像的RGB三通道,網絡層數為8層,網絡參數大小為60 MB,神經元個數650 000,分類數目為1 000,并且已經在ImageNet數據集上做了預訓練。CaffeNet使用RELU函數進行激活,將負激活部分全部清零,以改善使用sigmoid激活函數帶來的收斂波動以及梯度消失缺陷,在保留神經網絡非線性能力的同時,加快訓練速度。使用數據集擴展和dropout的方法防止過擬合。CaffeNet的降采樣技術將輸入為227×227 的圖像降采樣為6×6,最終得到抽象后的特征。

圖4 CaffeNet結構示意圖
微調是在數據量不足時的解決方案,它使用復雜網絡在小數據集上訓練模型,結合網絡結構,恢復已經訓練好的模型權重進行訓練的方式。在大規模的網絡結構中,如果訓練數據集的樣本量和特征維數較小,系統可能出現局部收斂,并導致過擬合,對測試數據進行分類結果較差,分類精度不高。微調可以有效地緩解這一問題。訓練時,直接在模型中使用其他層的權重,通過改變最后一層并利用現有的數據對訓練好的模型進行微調操作。該方法不僅大大提高了訓練速度,還能減少過擬合問題。在本文中,我們對CaffeNet的Caffe模型進行微調,以適應火焰的分類任務。
首先,網絡中的crop_size為227×227。在Caffe的訓練過程中,訓練和驗證同時進行。test_iter值設置為260代表每1000次迭代計算一次誤差,batch_size設置為16,即每次迭代的圖像數是batch_size×crop_size=16×1000=16 000。每一個迭代過程,所有的訓練數據集都將通過網絡訓練一次。在solover.prototxt中,迭代的最大次數為max_iteration=50 000,因此epoch=50 000/1 000=50。當初始學習率base_lr=0.01時,訓練中loss值不會下降,甚至在一定的值停止,通過調整base_lr參數來解決這個問題。在本實驗中,將base_lr設置為0.001,lr_policy設置為step,Gamma=γ=0.1,stepsize=20 000。根據Step學習策略,學習速率的衰減時間與step有關,衰減程度與“γ”有關。例如,當設置step=500,base_lr=0.000 1,Gamma=0.1時,達到第一次500迭代次數時,學習率將開始衰減。衰減后的學習率為a=a×γ= 0.000 1×0.1= 10-5。即step表示學習速率的衰減步長,“γ”表示衰減因子。優化后的網絡訓練參數見表1。
本算法的整體流程圖如圖5所示。其中程序初始化主要實現閾值初始化、火焰識別模型加載等步驟,接著對輸入的視頻進行運動檢測提取出運動前景,并對運動前景進行顏色檢測提取出面積較大的顯著目標,然后對疑似火焰目標進行多跟蹤跟蹤并對目標信息進行存儲與更新,并對持續存在的目標進行火焰識別,最后根據當前目標被識別為火焰的頻次得到識別結果,實現火災檢測。

表1 CaffeNet優化前后網絡參數

圖5 算法整體流程圖
本實驗軟件環境為Windows10系統下Caffe開源框架,硬件配置為:英特爾Core i7-8550U八核處理器,8 G內存,128 G固態硬盤等。由于火焰檢測領域還沒有公開、統一的標準數據集,因此本實驗使用的火焰樣本視頻部分來自Bilkent大學火災火焰視頻庫(http://Signal.ee.bilkent.edu.tr/VisiFire),部分來自網絡及作者拍攝。
火焰識別模型的訓練標簽有兩類:火焰與非火焰,為實現卷積神經網絡的訓練,從火焰視頻數據集與火焰圖片數據集中整理了2400張火焰圖片作為火焰訓練集,1020張火焰圖片作為火焰測試集,2400張疑似火焰圖片作為疑似火焰訓練集,1020張疑似火焰圖片作為疑似火焰測試集,兩類樣本數量達到1:1平衡,且訓練集與測試集數量基本滿足2.4:1,符合訓練集與測試集的合理劃分比例。為滿足CaffeNet的輸入要求,圖像大小統一為227pixel×227pixel,將數據集轉化為LMDB格式存儲,并輸入CaffeNet處理。
實驗過程中,網絡訓練采用微調策略,每迭代1000次進行一次預測,迭代訓練50000次后網絡已經具備了識別火焰與疑似火焰目標的能力,并可通過輸出對應各類別的概率實現對目標是否是火焰的量化評價。網絡訓練過程的損失函數如圖6所示,從圖6中可以看出,經過10000次的迭代訓練后迅速收斂,并保持平穩。網絡的訓練誤差在20000次迭代訓練后逐步下降,并在50000次附近達到平穩,實驗結果表明網絡得到了有效學習。如圖7所示,網絡的測試精度也逐步上升,最終網絡模型的精度達到97.79%。

圖6 CaffeNet訓練階段誤差

圖7 CaffeNet測試階段精度
本文為測試算法檢測火焰的準確性,使用了多個火焰與非火焰視頻進行了測試,火焰視頻包含了多種場景下,各個階段的火焰燃燒情況,非火焰視頻包含了一些生活中較為常見的與火焰相似的物體,具有較強的干擾性。
算法實驗結果如圖8所示,對于識別為火焰的目標,用紅色框高亮顯示,并在旁邊標注為火焰;對于識別為非火焰的目標,用綠色框高亮顯示,并在旁邊標注為非火焰。火焰誤報率即為將非火焰目標識別為火焰目標的概率,本文算法的平均檢測率達到了98.79%,且對各種場景的火焰都具有較好的檢測效果。圖8是不同場景的測試結果圖,結果表明本算法能成功排除相似顏色的樹干,移動燈光,帶有火焰顏色的煙霧等干擾,穩定地檢測出不同場景、不同光照下的火焰。

圖8 不同場景的測試結果
為了驗證算法的識別準確率,使用上述視頻樣本對算法進行測試,檢測結果如表2所示,同時,將本算法的識別準確率與三種典型火焰檢測算法進行對比,文獻[11]采用的是RGB-HSI混合顏色模型,通過運動檢測與顏色檢測結合面積變化特征識別火焰,該方法對穩定燃燒的火焰識別效果不好且容易誤判。文獻[6]使用水平、垂直和對角方位的亮度圖結合SVM分類器建立了一種基于像素的非線性火焰分類方法,實驗結果表明該方法對于火焰檢測具有較強的魯棒性,但存在對比度較高時容易誤判的問題。文獻[13]提出的基于RGB顏色空間統計模型的火焰識別算法,提取火焰的分層與閃爍特征,利用神經網絡進行火焰的識別,該算法魯棒性較好,但對大空間內火焰面積占比較小的視頻檢測效果較差。由表2和表 3可見,與類似算法相比本算法具有較高的可靠性與準確性,抗干擾能力強,誤報率低,檢測效果好。在算法運行效率上,火焰檢測識別算法中前期的特征提取與跟蹤部分計算量較小,但火焰判別部分對算法運行效率影響較大,在測試實驗中,本文算法平均幀處理時間為147 ms。利用每三幀識別一次的方式處理,在加快算法運行速率的同時也能保證算法的識別效果。在應用中火焰檢測的平均處理效率達到了20幀/s,能很好地滿足工業需求。

表2 火焰視頻檢測結果

表3 非火焰視頻視檢測結果
本文提出了一種基于多目標跟蹤與深度學習的火焰檢測算法,使用多目標跟蹤的方法使得算法能對火焰目標進行持續穩定的跟蹤,增強系統的魯棒性,使用深度學習的方法進行火焰目標識別,使得本算法與傳統機器學習方法進行火焰檢測相比,擁有更好的準確率與更低的誤報率,同時可以避免人工提取火焰特征的缺點。測試結果表明,本算法具有較為理想的火焰檢測效果,同時具備較好的實時性與抗干擾能力,具有較好的應用前景。但本算法僅能檢測到火焰的發生,對于陰燃及火焰被完全遮擋的情況還沒有考慮,因此后面將增加煙霧檢測模塊,實現對火焰更為及時有效的預警。