石 磊 張海剛 楊金鋒
1(深圳職業(yè)技術學院粵港澳大灣區(qū)人工智能應用技術研究院 廣東 深圳 518055)2(中國民航大學電子信息與自動化學院 天津 300000)
火災是容易發(fā)生且具有嚴重破壞性的災害,對人類的財產和生命安全都造成重大的威脅。突發(fā)性的火災蔓延速度很快,及時、準確地發(fā)現(xiàn)起火點,對于火災的預警和撲救具有非常重要的作用。因此,火災的識別和檢測一直是研究的熱點問題。
早期的煙火檢測大多是利用各類硬件設備,如煙霧傳感器、溫度感應器、光敏火焰探測器等[1]。但這些傳感器需要預先安裝,不僅耗費資源,而且容易受到外界環(huán)境的干擾,導致出現(xiàn)靈敏度降低、誤報和漏報等情況。隨著監(jiān)控系統(tǒng)的普及和圖像處理技術的發(fā)展,基于視頻的煙火檢測方法具有響應及時、適用范圍廣和智能化等優(yōu)勢,逐漸成為主流方法。此類方法主要是結合視頻圖像中煙霧和火焰的物理特征進行檢測[2],并取得了一定的檢測效果,但同時存在特征提取復雜、抗干擾性差、誤報率高和泛化性能弱等缺點。近年來,深度學習的方法被應用到視頻煙火檢測領域中,并使檢測效果得到較大程度的提高。但是已有算法還不夠完善,尤其是對視頻中的小尺度煙火目標檢測效果較差,這對于火災的早期預警是不利的。
為了進一步提高視頻煙火檢測效果,本文提出一種基于改進型SSD[3]的視頻煙火檢測算法。該算法以DenseNet[4]網(wǎng)絡結構作為算法的基礎特征提取網(wǎng)絡,該網(wǎng)絡是一種稠密連接型網(wǎng)絡,通過融合淺層特征與深層特征來實現(xiàn)網(wǎng)絡的特征重用,極大地增強了網(wǎng)絡的特征提取和表達能力。并且本文算法在損失函數(shù)中引入Focal loss函數(shù),解決算法中樣本不均衡問題,增強算法對復雜場景下煙火目標的學習能力,進一步提高模型檢測精度。
目前,基于視頻的煙火目標檢測算法主要有:傳統(tǒng)算法和基于深度學習的檢測算法。傳統(tǒng)算法中主要是利用煙火的物理特征進行判斷,如顏色、輪廓、閃爍頻率和運動特征等。Chen等[5]在RGB和HIS顏色空間中利用火焰的動態(tài)特性和不規(guī)則性來實現(xiàn)對火焰像素的分類,但該方法誤報率較高。Celik等[6]利用 YCrCb顏色空間中顏色分量和亮度分量可分離的特點,研究了一種基于規(guī)則的火焰像素分類模型。該方法具有較好的檢測效果,但是對于遠距離小區(qū)域火焰缺乏較好的檢測精度。Foggia等[7]結合火焰的形狀、顏色和運動特征對火焰進行實時檢測,但該方法仍然存在較高的誤報率。嚴云洋等[8]提出了一種使用維度加權模式動態(tài)紋理特征進行煙火檢測的算法。曾思通等[9]提出了一種結合多種火焰特征的煙火實時檢測算法。這兩種方法使得煙火檢測算法取得了更大的進展。但是上述傳統(tǒng)的煙火檢測方法均基于人工設計的煙火特征,在復雜場景下不能較好地表達煙火目標,并且容易將疑似煙火目標誤檢為煙火目標,導致識別精度下降。
近年來,深度學習已經(jīng)成為解決計算機視覺問題的一種非常有效的方法,它已被廣泛應用于多個領域,如物體檢測[10]、物體識別[11]和跟蹤[12]。深度學習不同于傳統(tǒng)算法,它能夠從大量數(shù)據(jù)中自動提取特征,并實現(xiàn)特征表達和分類器預測同步優(yōu)化運算。將深度學習思想應用于視頻煙火檢測任務,已成為當前重要的研究方向。Frizzi等[13]利用卷積神經(jīng)網(wǎng)絡自動提取的煙火特征進行煙火目標檢測。Yin等[14]將批規(guī)范化卷積層替換卷積神經(jīng)網(wǎng)絡中的原始卷積層,搭建了一種深度規(guī)范化卷積神經(jīng)網(wǎng)絡(DNCNN) ,并將其應用于煙霧檢測。該算法解決了傳統(tǒng)卷積神經(jīng)網(wǎng)絡訓練過程出現(xiàn)的梯度彌散和過擬合的問題,并通過對訓練樣本使用數(shù)據(jù)增強技術,解決了訓練樣本不足的問題。洪偉等[15]融合了區(qū)域全卷積網(wǎng)絡(R-FCN)和殘差網(wǎng)絡(ResNet)的思想,搭建了一種全新的網(wǎng)絡結構用于煙火目標的檢測。該算法首先使用基礎特征提取網(wǎng)絡進行特征提取,然后使用區(qū)域全卷積網(wǎng)絡進行目標區(qū)域確定,最后使用殘差網(wǎng)絡對目標區(qū)域進行再判斷,以提高模型的檢測精度。Horng等[16]利用卷積神經(jīng)網(wǎng)絡學習火焰的HSI顏色模型特征,并使用網(wǎng)絡學到的特征來分離圖像的火焰區(qū)域。Hu等[17]使用光流法和長短期記憶網(wǎng)絡單元(LSTM)構建深度卷積長周期網(wǎng)絡(DCLRN)進行火災實時檢測,該方法具有更好的實時性和準確性。
基于深度學習的目標檢測算法通??梢苑譃閮煞N,一種是兩階段的目標檢測算法,經(jīng)典算法有R-CNN[18]、Fast RCNN[19]、Faster RCNN[20]等;另一種是單階段的目標檢測算法,經(jīng)典算法有YOLO、SSD等。相比現(xiàn)有的兩階段目標檢測算法Faster-RCNN和單階段的目標檢測算法YOLO[21],SSD算法在檢測效率和精度上達到了更好的平衡。SSD以VGG-16[22]作為其基礎的特征提取網(wǎng)絡,并在VGG-16之后添加一系列的卷積層,使用多個卷積層的特征進行預測。SSD算法在實現(xiàn)較好的檢測效果同時兼顧了檢測速度,但同時存在一些問題。由于其使用conv4_3這一低層次的特征層進行小目標檢測,導致其對小尺寸目標的檢測效果并不十分理想。主要原因是低層卷積層雖然能更好地提取空間位置信息,但是缺乏高級的語義信息和抽象特征,導致最終訓練的模型沒有足夠的精確度。其次,由于SSD是直接在所有參與預測的特征圖上直接生成大量的先驗框,其中與真實目標匹配被判定為正樣本的先驗框較少,被判定為負樣本的先驗框數(shù)目較多,導致送入算法中的正負樣本比例失衡,影響了最終訓練的模型的檢測精度。
本文將SSD模型應用于視頻煙火檢測任務中,通過大量仿真實驗發(fā)現(xiàn):在火災發(fā)生的早期,由于煙火目標區(qū)域很小,模型無法進行有效的特征提取,產生大量漏檢;同時在一些有疑似煙火區(qū)域,如車燈、白色塑料袋、顏色偏紅的衣物,模型出現(xiàn)大量的誤檢。由于原有的SSD算法無法在這些場景下獲得一個較好的檢測效果,所以本文提出一種基于改進型SSD的視頻煙火檢測算法。本文算法的網(wǎng)絡結構如圖1所示。
圖1 本文算法網(wǎng)絡結構
由于SSD算法受限于基礎特征提取網(wǎng)絡VGG-16的網(wǎng)絡深度,只能使用低層次的特征層進行小尺寸目標的檢測。低層卷積層雖然有較好的空間位置信息,但是缺乏高級的語義信息和抽象特征,導致最終訓練的模型無法對小尺寸目標有足夠的檢測精度。
本文算法使用網(wǎng)絡結構更深的稠密連接型網(wǎng)絡DenseNet替換SSD算法中的VGG-16作為本文算法的基礎特征提取網(wǎng)絡。如圖2所示,DenseNet網(wǎng)絡結構中的任意兩層均通過前向跳躍連接直接相連,即網(wǎng)絡中每一層的輸入均來自前面所有層的輸出,通過特征重用加強信息在網(wǎng)絡中的傳播,使得位于網(wǎng)絡中較后的層也能利用前面層提取到的信息,進而緩解了深層網(wǎng)絡在訓練過程中的梯度消失現(xiàn)象。同時由于特征的重復利用,每層僅需較少的卷積核,在一定程度上減少了網(wǎng)絡參數(shù),提高了網(wǎng)絡運算效率。
圖2 DenseNet網(wǎng)絡結構
圖2所示網(wǎng)絡結構輸出表達式為:
XL=HL([X0,X1,…,XL-1])
(1)
式中:[X0,X1,…,XL-1]表示將0到L-1層輸出的特征進行級聯(lián);HL表示非線性變換;XL表示第L層的輸出。為了在融合淺層特征和深層特征的同時保持較低的計算量,DenseNet在每個dense block模塊里使用了bottleneck layer結構。bottleneck layer結構由一個1×1卷積和一個3×3卷積構成,1×1卷積用于減少輸入特征圖維度,3×3卷積用于特征提取運算。而在dense block之間采用了transition layer結構,transition layer包括一個1×1的卷積和2×2的平均池化層,對特征圖尺寸進行逐步縮小。與其他只使用最后一層特征圖來進行預測的卷積神經(jīng)網(wǎng)絡相比,DenseNet網(wǎng)絡在實現(xiàn)特征重用和提高特征傳播效率的同時,還減輕了深度網(wǎng)絡帶來的梯度消失問題,使得網(wǎng)絡模型具備更好的泛化性能。
本文算法采用了遷移學習的思想,在DenseNet121網(wǎng)絡的基礎上進行了修改,將其最后的池化層和全連接層刪掉,并新增卷積層對其最后輸出的特征圖維度進行壓縮,進一步降低特征圖維度,提高運算速度。其次,在DenseNet網(wǎng)絡之后添加新的卷積層使其構成類金字塔結構,進一步進行特征提取,并利用不同尺度的特征圖進行預測。這樣構建的網(wǎng)絡層次更深,特征提取更加充分,加強了特征傳播的同時還提高了對各層特征的重復利用率。表1是本文算法網(wǎng)絡結構。
表1 本文算法網(wǎng)絡結構
在單階段的目標檢測算法中,輸入網(wǎng)絡中用于計算損失值的先驗框分為正樣本和負樣本。當先驗框與目標真實邊界框(Ground Truth)之間的IOU大于設定的閾值時,該先驗框為正樣本,否則為負樣本。一般把具有較低損失值和較高置信度的先驗框稱為易分樣本,把具有較高損失值能夠引導網(wǎng)絡訓練趨勢的先驗框稱為難分樣本。SSD算法直接在不同層的特征圖上的每個位置生成不同尺度的先驗框進行正負樣本匹配,由于算法生成的先驗框數(shù)目較大,但是與真實目標匹配的先驗框數(shù)目較少,也就是被判定為正樣本的先驗框數(shù)目較少,被判定為負樣本的先驗框數(shù)目過多,導致輸入網(wǎng)絡中的正負樣本比例嚴重失衡。若先進行難分樣本挖掘(Hard Negative Mining)[23],然后采用非極大值抑制算法, 則會造成檢測樣本數(shù)量進一步減少,使輸入的樣本中的易分樣本在損失中占據(jù)了較高的比重,導致訓練被大量的易分樣本主導,限制了檢測算法精度的進一步提高。
為解決SSD中正負樣本和易分難分樣本不均衡的問題,本文采用Focal loss函數(shù)代替原損失函數(shù)中的置信度損失函數(shù),通過調節(jié)輸入網(wǎng)絡中的正負樣本比例參數(shù)來解決算法中正負樣本失衡的問題。
SSD網(wǎng)絡的損失函數(shù)由置信度損失(Confidence Loss, conf)和位置損失(Localization Loss, loc)的加權和構成,具體表達形式為:
(2)
式中:x為先驗框與不同類別的匹配結果,匹配x=1,否則x=0;c為預測框類別置信度;l為預測框位置偏移信息;g為真實邊界框與匹配先驗框的偏移量;N表示匹配的先驗框的數(shù)量;Lconf(x,c)表示置信度損失;Lloc(x,l,g)表示定位損失;α表示定位損失的權重。
本文使用 Focal loss 損失函數(shù)進行正負樣本不平衡校正,其表達式如下:
FL(pt)=-at(1-pt)γlog(pt)
(3)
式中:pt是不同類別的分類概率;γ是大于零的值,用于調節(jié)易分樣本權重降低的速率;at為0到1之間的小數(shù),作為權重用于調整正負樣本的比例。從式(3)可以看出無論是目標還是背景,對于簡單樣本,pt會比較大,權重(1-pt)γ自然就比較??;針對難分樣本,pt比較小,則導致權重會比較大,讓網(wǎng)絡傾向于利用這樣的樣本來進行參數(shù)的更新。而且該權重是動態(tài)變化的,如果難分樣本逐漸變得易分,那么它在損失函數(shù)中的影響會逐漸下降。
由圖3函數(shù)曲線可知,當γ=0時函數(shù)曲線為SSD中損失函數(shù)曲線,可以看出即使是易分樣本 (pt?0.5),它的損失值也很高,導致易分樣本在算法中的損失值占比過高。在Focal loss曲線中,當γ越來越大,輸入的樣本中難分樣本所占的權重增加,表明Focal loss 通過at和γ兩個參數(shù)分別實現(xiàn)對正負樣本和難分易分樣本比例均衡,從而使參與訓練的樣本分布更加均勻,能夠進一步提高檢測算法的可靠性。
圖3 Focal loss函數(shù)曲線
本文選用ImageNet數(shù)據(jù)集作為預訓練數(shù)據(jù)集,該數(shù)據(jù)集涵蓋2萬多個類別,擁有1 400多萬幅圖片。利用該數(shù)據(jù)集訓練出的預訓練模型具有較好的特征提取能力。為了進一步實現(xiàn)模型對煙火目標的檢測,需要大量帶標注的煙火數(shù)據(jù)集對預訓練模型進行微調。為獲取更真實的煙火數(shù)據(jù)樣本,本文實驗的數(shù)據(jù)集采用從各種場景下錄制的煙火視頻作為樣本,通過對視頻進行跳幀截取圖像,并按照PASCAL VOC數(shù)據(jù)集格式對圖像中的煙火目標進行標注。實驗中用于訓練的數(shù)據(jù)集包含9 721幅圖像,其中含有6 725個煙霧目標和6 764個火焰目標。
參考最新的SSD數(shù)據(jù)增強方法,在訓練前對數(shù)據(jù)集進行預處理操作。對原始圖像分別進行了亮度、對比度、飽和度、色度隨機變換、水平翻轉、隨機剪裁、擴展、鏡像和顏色扭曲等操作,通過數(shù)據(jù)增強的方式擴充數(shù)據(jù)集,使得訓練出的模型具有更好的魯棒性。
為了檢測圖像中不同大小和形狀的目標,需要在網(wǎng)絡中不同層的特征圖上設定不同大小與比例的先驗框。本文利用Conv3_blk、Conv4_blk、Conv5_blk、Conv6_blk、Conv7_blk、Conv8_blk這6個卷積層輸出的特征圖進行預測,在每一個特征圖的每個基準點上設置同心的先驗框。對于先驗框的尺度,使用線性遞增原則,即隨著網(wǎng)絡層數(shù)的增加,特征圖尺寸逐漸降低,先驗框尺度線性增加。相應計算公式如下:
(4)
表2 參與預測的特征圖尺寸與基準點上預設框數(shù)目
先驗框與Ground truth(真實目標)進行匹配有兩個原則。第一個原則規(guī)定,對于圖片中每個Ground truth(真實目標)找到IOU最大的先驗框,該先驗框與Ground truth進行匹配,這樣可以保證每個Ground truth一定與某個先驗框進行了匹配。將與Ground truth匹配的先驗框稱為正樣本,將沒有與Ground truth匹配的先驗框稱之為負樣本。第二個原則是針對剩余未匹配的先驗框進行的操作。設定一個IOU閾值,將剩余未匹配的先驗框與任意一個Ground truth嘗試進行配對,若兩者之間的IOU大于閾值,則認為這個先驗框也與該Ground truth匹配。這意味著一個Ground truth可以與多個先驗框匹配,但是一個先驗框只能匹配一個Ground truth。如果某個先驗框與多個Ground truth的IOU大于閾值,那么先驗框只與IOU最大的那個Ground truth匹配,并且第二個原則在第一個原則之后進行。本文設定的IOU閾值為0.5,NMS算法交并比的閾值為0.45。
實驗平臺配置為GPU Nvidia Geforce GTX1080ti;操作系統(tǒng)為Ubuntu16.04;實驗框架為Caffe開源框架[24]。本文網(wǎng)絡結構中的參數(shù)設置為:利用預訓練的模型進行權重初始化,初始學習率設為 0.001,使用隨機梯度下降算法及動量優(yōu)化算法優(yōu)化參數(shù),gamma=0.1,momentum=0.9,weight_decay=0.000 5,批量大小為32,共迭代30 000次。
目前,已有的煙火識別數(shù)據(jù)集有Bilkent大學視頻庫、NIST數(shù)據(jù)集、仁荷大學計算機視覺實驗室建立的ICV數(shù)據(jù)集和VisiFire數(shù)據(jù)集。但是這些數(shù)據(jù)集場景單一,而且樣本數(shù)量較少。本文通過采集真實場景視頻并截取視頻獲得圖片,按照PASCAL VOC的格式進行手工標注,構建標準測試集。該測試集共1 535幅圖片,包含738個煙霧目標和819個火焰目標。
對于煙火目標檢測,首先單獨計算各個類別的AP(Average Precision)值,這是評估檢測效果的重要指標。取各個類別的AP值的平均值,得到綜合指標平均精度值(Mean Average precision,mAP),用于評估目標檢測模型的檢測精度,其計算公式如下:
(5)
式中:QR表示煙火目標檢測任務輸出類別。
另一個重要的性能指標是模型的檢測速度。只有模型的檢測速度夠快,才能實現(xiàn)視頻目標實時檢測的任務。評估檢測速度的常用指標是每秒幀率(Frames Per Second,FPS),即每秒內可以處理的圖片數(shù)量。每秒內可以處理的圖片數(shù)量越多,模型的檢測速度越快。
為驗證本文算法對煙火目標的檢測性能和本文算法提出的關于SSD算法兩點改進的作用,進行以下兩組對比實驗。
4.3.1與已有算法的對比實驗
使用標準測試集測試SSD300、SSD512、RESNET300[25]和本文算法四個算法模型,得到煙火目標檢測的各類AP值和mAP值,同時獲取各模型在視頻上的檢測速度用于進行對比,實驗結果及效果對比如表3所示。
表3 與已有算法的對比實驗結果
對實驗結果進行分析可知,SSD512算法由于輸入圖像尺寸更大,可以使得算法更為有效地進行特征提取,所以其檢測精度要比SSD300稍高。但是由于輸入的圖像尺寸變大,導致算法內部傳輸?shù)臄?shù)據(jù)塊尺寸較大,使得卷積計算量變大,算法整體的檢測速度下降較多,所以不考慮使用較大尺寸的圖像作為算法的輸入數(shù)據(jù)。RESNET300由于結合了淺層和深層的特征,檢測精度超過了SSD300,但是由于網(wǎng)絡層次較深,網(wǎng)絡參數(shù)增多,同樣使得算法的檢測速度有較多的下降。本文算法采用網(wǎng)絡結構更深的稠密連接型網(wǎng)絡DenseNet作為算法的基礎特征提取網(wǎng)絡,使用較高層次的特征層進行小尺寸目標檢測,提高了對小尺寸目標的檢測精度。DenseNet網(wǎng)絡中的旁路連接方式在減少網(wǎng)絡參數(shù)提高檢測速度的同時,又提高了特征復用率,進一步增強了檢測精度。通過在損失函數(shù)中引入Focal loss函數(shù),實現(xiàn)了算法中樣本的均衡分布,提高了模型的可靠性。所以本文算法在檢測精度上優(yōu)于其他三種算法并保持了較高的檢測速度。由于本文算法具有較高的檢測速度,在實際工業(yè)應用場景中,可以通過采用視頻序列跳幀檢測的策略來滿足工業(yè)應用場景的實時性需求。
同時本文對帶有小目標的圖像進行仿真測試,發(fā)現(xiàn)本文算法有著較為明顯的優(yōu)勢。圖4為火焰場景檢測效果對比,原圖有三種尺寸大小的火焰,SSD512和SSD300能夠檢測出尺寸較大的火焰,但是無法檢測到小尺寸火焰,RESNET300和本文算法可以檢測到圖中的小尺寸火焰,但是本文算法對小尺寸火焰目標有著更高的置信度。圖5顯示了煙霧場景的檢測效果,盡管四種算法都可以檢測到煙霧目標,但是本文算法對煙霧目標具有最高的檢測置信度。圖6為無煙火目標的場景的檢測,發(fā)現(xiàn)SSD300和SSD512存在將夜間車燈誤檢為煙火的情況,RESNET300和本文算法則沒有誤檢情況。從仿真對比實驗可以看出,本文算法在檢測精度和抗干擾性能上均優(yōu)于其他三種算法,在保持較高檢測速度的同時提高了檢測精度。
圖4 火焰場景檢測結果
圖5 煙霧場景檢測結果
圖6 無煙火場景檢測結果
4.3.2針對改進點的對比實驗
為進一步驗證本文算法對SSD算法兩點改進的作用,分別對兩點改進進行對比實驗。實驗一:只對SSD算法的基礎特征提取網(wǎng)絡進行改進,將VGG-16網(wǎng)絡替換為DenseNet網(wǎng)絡結構;實驗二:只對SSD算法的損失函數(shù)進行改進,將Focal loss函數(shù)代替原損失函數(shù)中的置信度損失函數(shù)。使用標準測試集對以上實驗進行測試,并將實驗結果與SSD300算法模型實驗結果進行對比,對比結果如表4所示。
表4 消融實驗對比結果
將實驗一算法模型與SSD300算法模型實驗結果對比可知,實驗一的煙火目標檢測準確率有明顯提升,但算法檢測速度有一定下降??梢娛褂肈enseNet網(wǎng)絡作為算法的基礎特征提取網(wǎng)絡可以明顯提高算法模型的特征提取能力,進而提高模型檢測精度。但同時較深的網(wǎng)絡結構也帶來了一定的算法運算速度下降。將實驗二算法模型與SSD300算法模型實驗結果對比發(fā)現(xiàn),實驗二的煙火目標檢測準確率有一定的提升,同時算法的檢測速度保持不變。可見在損失函數(shù)中引入Focal loss函數(shù)可以實現(xiàn)算法中樣本分布均衡,從而提升模型的檢測效果。
本文提出基于改進型SSD的視頻煙火檢測算法,利用更為高效的DenseNet網(wǎng)絡作為算法的基礎特征提取網(wǎng)絡,搭建了層次更深的網(wǎng)絡結構,利用跳躍連接加強信息在網(wǎng)絡中的傳播,在增強了網(wǎng)絡的特征提取和表達能力的同時保持了較低的網(wǎng)絡參數(shù)量。在算法的損失函數(shù)中引入Focal loss函數(shù),解決了單階段目標檢測算法中的正負樣本不均衡和易分樣本在損失函數(shù)中占比較高的問題。與對比實驗中的其他主流算法相比,本文算法在提高了檢測精度的同時也兼顧了模型的檢測速度。