陳照悅,張紅梅,張向利
(桂林電子科技大學(xué)信息與通信學(xué)院,桂林541004)
現(xiàn)有的自動(dòng)火災(zāi)報(bào)警系統(tǒng)是利用新型的感煙、感溫等探測(cè)器進(jìn)行火災(zāi)檢測(cè),但受多種因素影響,存在響應(yīng)時(shí)間慢,不能及時(shí)報(bào)警,漏報(bào)誤報(bào)等問題。視頻火災(zāi)檢測(cè)技術(shù)可以實(shí)現(xiàn)快速準(zhǔn)確的探測(cè)火災(zāi),對(duì)環(huán)境的適應(yīng)性強(qiáng),誤報(bào)率低,得到了廣泛的關(guān)注和應(yīng)用。國內(nèi)外學(xué)者對(duì)視頻火災(zāi)檢測(cè)進(jìn)行了大量的研究,取得了重大的進(jìn)展。視頻火災(zāi)檢測(cè)主要有兩種檢測(cè)方法,一是基于特征的檢測(cè)方法,二是基于深度學(xué)習(xí)的檢測(cè)方法。視頻火災(zāi)圖像有動(dòng)態(tài)和靜態(tài)兩大特征,靜態(tài)特征主要有顏色、紋理等特征,動(dòng)態(tài)特征主要包括整體運(yùn)動(dòng)、頻閃等特性。Chen 等人[1]根據(jù)火焰的顏色和像素變化特征,通過RGB 模型和火焰動(dòng)態(tài)特征得到異常像素點(diǎn)數(shù)目,并通過重復(fù)計(jì)算決策函數(shù)判斷是否超過自適應(yīng)閾值,來判定是否發(fā)出報(bào)警信號(hào),但容易將類似火焰的物體檢測(cè)為火焰,虛警率較高;Celik 等人[2]提出了一種基于規(guī)則的火焰像素分類通用顏色模型,使用YCbCr 顏色空間,更好地將火焰的亮度與色度區(qū)分開,實(shí)現(xiàn)了較高的火焰檢測(cè)率,但誤報(bào)率仍然較高,無法應(yīng)用到實(shí)際環(huán)境中。文獻(xiàn)[3]使用幀差法實(shí)現(xiàn)火焰的前景分割,再通過動(dòng)靜態(tài)特征識(shí)別火焰,但是幀差法對(duì)背景的判斷只是前后兩幀,對(duì)變化很快的物體檢驗(yàn)效果明顯,沒有更多的時(shí)序信息,檢測(cè)前景區(qū)域不完整。文獻(xiàn)[4]使用了改進(jìn)的ViBe 算法,通過引入切換變量控制模型每兩幀更新一次,并使用快速更新策略提高適應(yīng)力,能夠準(zhǔn)確檢測(cè)出森林火災(zāi)煙霧,但只考慮了運(yùn)動(dòng)特征,不能提取出完整特征,虛警率高。文獻(xiàn)[5]使用3D 卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行火焰識(shí)別,從時(shí)間和空間維度上提取特征,但是很難定位煙霧火焰位置,并且數(shù)據(jù)集較少,只檢測(cè)紅色火災(zāi),對(duì)藍(lán)色等火災(zāi)并不能準(zhǔn)確檢測(cè)。文獻(xiàn)[6]提出基于深度學(xué)習(xí)模型的遷移學(xué)習(xí)來識(shí)別煙霧的方式,利用預(yù)訓(xùn)練CNN 模型進(jìn)行特征遷移,只訓(xùn)練全連接層得到識(shí)別模型,但訓(xùn)練集較少,魯棒性較低。文獻(xiàn)[7]提出一種基于多通道CNN 的方法,對(duì)多場(chǎng)景數(shù)據(jù)構(gòu)造CNN,由低到高逐層提取空間特征,訓(xùn)練通用火焰識(shí)別模型,提高了火焰識(shí)別精度。文獻(xiàn)[8]提出一種基于Faster RCNN 模型的火焰檢測(cè)算法,可以動(dòng)態(tài)提取分析火焰特征,提升了在復(fù)雜條件下識(shí)別火焰的準(zhǔn)確率,但是輸入圖像是固定尺寸,數(shù)據(jù)集較小,容易陷入過擬合。Bingo等人[9]對(duì)遷移學(xué)習(xí)解釋為模型可以把從其他數(shù)據(jù)集學(xué)習(xí)而來的知識(shí),轉(zhuǎn)移應(yīng)用到當(dāng)前所需的目標(biāo)數(shù)據(jù)集中,這樣就可以讓模型在數(shù)據(jù)較少的場(chǎng)景下依舊可以較好的學(xué)習(xí)樣本特征并進(jìn)行泛化。
為此,針對(duì)當(dāng)前存在標(biāo)注數(shù)據(jù)不足、識(shí)別效果差的問題,本文提出了基于遷移學(xué)習(xí)的火災(zāi)圖像檢測(cè)方法,首先獲取不同場(chǎng)景下的火災(zāi)視頻圖像作為數(shù)據(jù)集,然后利用數(shù)據(jù)增強(qiáng)技術(shù),對(duì)火災(zāi)圖像進(jìn)行翻轉(zhuǎn)、裁剪等操作來擴(kuò)充數(shù)據(jù)集。通過在這四個(gè)不同網(wǎng)絡(luò)模型的實(shí)驗(yàn)分 析,發(fā) 現(xiàn) DenseNet121[10]相 比 于 InceptionV3、ResNet18、ResNet50 模型在檢測(cè)準(zhǔn)確率和實(shí)時(shí)性方面性能更佳。
本文提出的基于遷移學(xué)習(xí)的火災(zāi)圖像檢測(cè)方法框架如圖1 所示,首先,進(jìn)行數(shù)據(jù)的預(yù)處理操作,然后進(jìn)行模型的遷移學(xué)習(xí)。具體操作步驟如Step 1 和Step 2所示。
圖1 基于遷移學(xué)習(xí)的檢測(cè)方法框架
Step 1:數(shù)據(jù)預(yù)處理:
(1)將所有的圖像數(shù)據(jù)縮放到224×224;
(2)將所有的數(shù)據(jù)做數(shù)據(jù)增強(qiáng);
(3)將所有數(shù)據(jù)進(jìn)行歸一化。
Step 2:模型遷移學(xué)習(xí):
(1)加載預(yù)訓(xùn)練的網(wǎng)絡(luò)模型;
(2)重新添加一層全連接層,并隨機(jī)初始化權(quán)重;
(3)微調(diào)隱藏層中的卷積層與池化層參數(shù)或者凍結(jié)前面全部層,只訓(xùn)練全連接層;
(4)使用視頻幀圖像小數(shù)據(jù)集執(zhí)行訓(xùn)練,微調(diào)網(wǎng)絡(luò)全部參數(shù);
(5)得到深度遷移學(xué)習(xí)CNN 火焰檢測(cè)模型進(jìn)行預(yù)測(cè)。
GoogLeNet 提出Inception 網(wǎng)絡(luò)結(jié)構(gòu),其目標(biāo)是搭建稀疏且高計(jì)算性能的網(wǎng)絡(luò)結(jié)構(gòu),Inception 網(wǎng)絡(luò)在V1-V4 版本的發(fā)展之后漸入佳境,效果越發(fā)強(qiáng)大。Inception 的初始結(jié)構(gòu)如圖2 所示。
圖2 Inception網(wǎng)絡(luò)結(jié)構(gòu)
該結(jié)構(gòu)將CNN 中常用的1×1、3×3、5×5 卷積和3×3 池化操作組合在一起,不僅增加了網(wǎng)絡(luò)寬度,也增加了網(wǎng)絡(luò)的適應(yīng)性,其中1×1 卷積可以用來減少維度和降低運(yùn)算量。InceptionV3 引入了分解,將7×7 卷積轉(zhuǎn)換成7×1 和1×7 卷積,既加速了計(jì)算,又進(jìn)一步增加了網(wǎng)絡(luò)深度和非線性,提高了網(wǎng)絡(luò)的表現(xiàn)能力,它的網(wǎng)絡(luò)結(jié)構(gòu)如下表1 所示。
表1 InceptionV3 模型結(jié)構(gòu)
上述網(wǎng)絡(luò)中3 個(gè)Inception 部分。第一個(gè)Inception部分是使用兩個(gè)3×3 卷積代替了5×5 卷積,第二個(gè)In?ception 減少了feature,增多了filters,而第三個(gè)Incep?tion 增多了filter 并使用卷積池化并行結(jié)構(gòu),通過這種方式雖增加了網(wǎng)絡(luò)的層數(shù),但參數(shù)量少了,訓(xùn)練起來并不會(huì)比改變之前慢多少。
在深度學(xué)習(xí)中,深度網(wǎng)絡(luò)都伴隨著梯度消失等問題,進(jìn)而導(dǎo)致性能下降,而微軟研究院的Kaiming He[11]提出的ResNet 成功訓(xùn)練了152 層的神經(jīng)網(wǎng)絡(luò),有效解決了梯度消失問題,其中解決梯度消失問題的關(guān)鍵結(jié)構(gòu)是殘差塊(ResNet Unit)。殘差塊通過在網(wǎng)絡(luò)中加入跳躍連接結(jié)構(gòu),進(jìn)而可以讓梯度在反向傳播過程中通過這個(gè)結(jié)構(gòu)傳遞到更深層的網(wǎng)絡(luò),殘差塊的結(jié)構(gòu)如圖3所示:
圖3 殘差塊結(jié)構(gòu)
圖3 將輸入設(shè)為X,殘差結(jié)構(gòu)的輸出設(shè)為H(X),F(xiàn)(X)來表示殘差函數(shù),則有:
網(wǎng)絡(luò)的訓(xùn)練目標(biāo)就是將這條新的學(xué)習(xí)路徑損失降為0,從而確保模型層數(shù)增多的同時(shí),梯度不會(huì)消失,保證模型識(shí)別準(zhǔn)確率。
DenseNet(Densely Connected Convolutional Net?works)是一種密集型連接網(wǎng)絡(luò),其后的層都與前面的每一層相連接,對(duì)于一個(gè)L層CNN,存在L(L+1)/2 條連接。
假設(shè)傳統(tǒng)的網(wǎng)絡(luò)在l 層的輸出為:
式(2)中網(wǎng)絡(luò)的第l層只有一個(gè)輸入,即xl-1,而對(duì)于DenseNet,前面所有層都作為l層的輸入:
其中Hl指的是一系列非線性運(yùn)算,包括BN、Re?LU、Pooling 及3*3Conv 運(yùn)算。
DenseNet 的網(wǎng)絡(luò)特性:
(1)特征圖大小一致。DenseNet 進(jìn)行運(yùn)算必須要求所有特征圖大小一致,而一般的神經(jīng)網(wǎng)絡(luò)要經(jīng)過pooling 操作等來降低特征圖的大小。
(2)采用DenseBlock + Transition 結(jié)構(gòu),如圖4所示。
圖4 可以看出該結(jié)構(gòu)由3 個(gè)DenseBlock 和2 個(gè)Transition 組成,每個(gè)DenseBlock 模塊可能包含很多的Conv、Pooling、ReLU、BN 運(yùn)算、Transition 結(jié)構(gòu)用來進(jìn)行降維操作。(3)生長率。生長率指的是每層特征的映射數(shù),假設(shè)為k,對(duì)于第i 層輸入有ki 個(gè)特征映射為:
式中K0表示輸入層的通道數(shù)。一般較小的k 值就可以獲得較好的效果,隨著層數(shù)的增加,相應(yīng)的特征圖的輸入也逐漸增多。但每個(gè)層僅有自己獨(dú)有的k 個(gè)特征,而k 就是生長率。
DenseNet 網(wǎng)絡(luò)在圖像分類性能表現(xiàn)出很大的優(yōu)勢(shì),由于密集連接方式,DenseNet 提升了梯度的反向傳播,使得網(wǎng)絡(luò)更容易訓(xùn)練。由于每層可以直達(dá)最后的誤差信號(hào),實(shí)現(xiàn)了隱式的“deep supervision”;參數(shù)更小且計(jì)算更高效,這有點(diǎn)違反直覺,由于DenseNet 是通過concat 特征來實(shí)現(xiàn)短路連接,實(shí)現(xiàn)了特征重用,并且采用較小的growth rate,每個(gè)層所獨(dú)有的特征圖是比較小的;由于特征復(fù)用,最后的分類器使用了低級(jí)特征。
圖4 DenseBlock+Transition結(jié)構(gòu)
目前基于深度學(xué)習(xí)的火災(zāi)檢測(cè)研究還處于初期階段,在火災(zāi)研究領(lǐng)域的公共的數(shù)據(jù)集比較少,常用的方式即通過攝像頭捕獲一些火焰、煙霧圖片或者視頻數(shù)據(jù)??紤]是既要獲取火災(zāi)的空間特征,又要獲取時(shí)間特征,如果使用一般毫無關(guān)聯(lián)的火災(zāi)圖像,很難學(xué)習(xí)全部特征,因此使用多個(gè)場(chǎng)景下的連續(xù)幀圖像模型進(jìn)行訓(xùn)練。數(shù)據(jù)集為網(wǎng)上獲取的不同場(chǎng)景下的連續(xù)視頻幀圖像,其中訓(xùn)練集火圖像數(shù)為12550 張,非火圖像為10850 張;測(cè)試集火圖像數(shù)為1716 張,測(cè)試非火圖像數(shù)為1223 張。
火災(zāi)數(shù)據(jù)集都是一些不標(biāo)準(zhǔn)的數(shù)據(jù)集,不能直接送到網(wǎng)絡(luò)中訓(xùn)練,雖然有些網(wǎng)絡(luò)可以直接對(duì)原始數(shù)據(jù)集處理,但每次訓(xùn)練都需要重新處理數(shù)據(jù)集,則會(huì)浪費(fèi)大量訓(xùn)練時(shí)間,因此預(yù)先處理出適用于預(yù)訓(xùn)練模型的數(shù)據(jù)集是非常必要的。
許多CNN 需要輸入標(biāo)準(zhǔn)尺寸的圖像,而攝像頭采集到的數(shù)據(jù)往往不能滿足這樣的要求,所以必須要對(duì)這些數(shù)據(jù)集剪切到指定尺寸,同時(shí)使用數(shù)據(jù)集增強(qiáng)技術(shù)擴(kuò)充數(shù)據(jù)集,數(shù)據(jù)增強(qiáng)方法非常適用于圖像識(shí)別與目標(biāo)檢測(cè),即使圖片進(jìn)行一些幾何變換(翻轉(zhuǎn)、裁剪等),其類別信息與特征也不變,可以使神經(jīng)網(wǎng)絡(luò)的泛化誤差大大降低。
本文實(shí)驗(yàn)采用GPU 是NVIDIA GeForce GTX 1080Ti,CPU 為Intel Xeon ES-260,32G 內(nèi) 存,128G SSD;Windows10 64bit 操作系統(tǒng),環(huán)境配置CUDA9.0,PyCharm 編譯軟件,PyTorch 深度學(xué)習(xí)框架的軟硬件平臺(tái)。
深度學(xué)習(xí)算法包含許多超參數(shù),它們分別控制算法的不同表現(xiàn),也會(huì)對(duì)算法的運(yùn)行時(shí)間、推斷能力等造成影響。超參數(shù)可以手動(dòng)選擇,也可以讓機(jī)器自動(dòng)選擇,手選超參要對(duì)超參數(shù)的作用以及模型有著較高的認(rèn)知,自動(dòng)選擇超參數(shù)算法則是建立在超強(qiáng)的算力基礎(chǔ)上面。本文采取手動(dòng)調(diào)整超參數(shù)方式設(shè)置如下超參數(shù):學(xué)習(xí)率(learning-rate)為0.001,迭代次數(shù)為25 次,優(yōu)化器(optimizer)為SGD 優(yōu)化器,批大?。╞atch_size)為16。
實(shí)驗(yàn)結(jié)果通過TP(True Positive)、FP(False Posi?tive)、TN(True Negative)、FN(False Negative)、準(zhǔn)確率A、誤報(bào)率P、敏感度R、漏檢率Miss 八個(gè)指標(biāo)評(píng)價(jià)模型的好壞。
TP、FP、TN、FN 四個(gè)概念之間的關(guān)系如表2 所示。
表2 預(yù)測(cè)結(jié)果概念定義表
其中:
(1)TP:表示火數(shù)據(jù)集中被分類為火的圖像數(shù)量。
(2)FP:表示火數(shù)據(jù)集中未被分類為火的圖像數(shù)量。
(3)TN:表示非火數(shù)據(jù)集中未被分類為火的圖像數(shù)量。
(4)FN:表示非火數(shù)據(jù)集中被分類為火的圖像數(shù)量。
(5)準(zhǔn)確率:指真正有火的數(shù)據(jù)集數(shù)量在所有火圖像中所占的比例,表示模型發(fā)出正確警報(bào)的概率。
(6)誤報(bào)率:指非火圖片被分類成火的統(tǒng)計(jì)在所有報(bào)警圖像數(shù)量的占比,表示模型發(fā)出錯(cuò)誤警報(bào)的概率。
(7)敏感度:指正確圖像數(shù)量在所有火焰圖像中的比例。表示系統(tǒng)對(duì)火圖像的敏感程度,敏感程度R 值越大,則代表模型對(duì)火圖像的識(shí)別能力越強(qiáng)。
(8)漏檢率:指未檢測(cè)到的火圖片在總測(cè)試集中所占的比例。漏檢率值Miss 越低,表示模型對(duì)火的識(shí)別能力越強(qiáng)。
通過對(duì)訓(xùn)練集訓(xùn)練得到結(jié)果如圖5 所示。
圖5 可以看出各模型訓(xùn)練開始時(shí)loss 值就較小,并且loss 值可以快速收斂,模型在訓(xùn)練20 個(gè)epoch后,loss 值趨于穩(wěn)定。
由圖6 可以看出經(jīng)過一個(gè)epoch 的訓(xùn)練,各模型就達(dá)到了一個(gè)很好的預(yù)期效果,精確度最低為84%;第二個(gè)epoch 后,訓(xùn)練精度大幅提升,10 個(gè)epoch 以后訓(xùn)練精確度明顯提高,在98%左右波動(dòng)。
我們對(duì)訓(xùn)練后的模型在測(cè)試集上測(cè)試,實(shí)驗(yàn)結(jié)果如表3 所示。
表3 模型實(shí)驗(yàn)結(jié)果對(duì)比
圖5 各模型loss 曲線
圖6 訓(xùn)練精確度曲線
通過表3 可以看出就訓(xùn)練時(shí)間來說,隨著網(wǎng)絡(luò)深度的增加,訓(xùn)練的時(shí)間是越長的。DenseNet121 模型由于網(wǎng)路深度的原因,越到后面層學(xué)習(xí)的特征圖越多,占用內(nèi)存較大,訓(xùn)練時(shí)間較長。對(duì)于測(cè)試時(shí)間,我們可以看出DenseNet121 的測(cè)試時(shí)間較短,檢測(cè)2900 多張圖片僅需要19 秒,檢測(cè)速度快;InceptionV3 模型的時(shí)間檢測(cè)較長,需要40 多秒,ResNet18 和ResNet50 的檢測(cè)時(shí)間基本都在30 秒左右;對(duì)于測(cè)試集DenseNet 能表現(xiàn)出很好的檢測(cè)效果,精確度91.15%,其他三種模型的精確度都在90%以下。對(duì)于模型的大小,Incep?tionV3 網(wǎng)絡(luò)訓(xùn)練后模型大小95.3M,ResNet18 模型因其網(wǎng)絡(luò)層數(shù)低有43.7M,ResNet50 網(wǎng)絡(luò)模型大小89.9M,而DenseNet 網(wǎng)絡(luò)模型只有31.6M。綜合實(shí)驗(yàn)我們可以得出雖然DenseNet 訓(xùn)練模型的時(shí)間較長,但在檢測(cè)時(shí)間和檢測(cè)精度上都明顯優(yōu)于其他三種模型,且模型小,更容易在硬件上被使用。
對(duì)火圖像和非火圖像分別在四種模型下預(yù)測(cè),得到四種模型的混淆矩陣如表4。
將表4 的數(shù)據(jù)代入式(5)、式(6)、式(7)、式(8)可求出各模型的準(zhǔn)確率、誤報(bào)率、召回率、漏檢率,如表5所示。
表4 4 種模型混淆矩陣
表5 4 種模型準(zhǔn)確率、誤報(bào)率、召回率、漏檢率
由表5 可以看出InceptionV3 網(wǎng)絡(luò)在召回率方面有很大優(yōu)勢(shì)達(dá)到94.75%,但準(zhǔn)確率和精確率都比較低,誤報(bào)問題比較嚴(yán)重,有23.14%的誤報(bào)率,但漏檢性能較好,漏檢率為5.25%;ResNet18 與ResNet50 基本保持相同的性能,準(zhǔn)確率分別是88.40%和87.65%,檢測(cè)效果一般;DenseNet 雖然在召回率方面略低于In?ceptionV3 網(wǎng)絡(luò),但準(zhǔn)確率在92.54%,明顯高于其他網(wǎng)絡(luò),誤報(bào)率和漏報(bào)率分別是7.46%和7.36%。
通過以上實(shí)驗(yàn)我們可以看出,微調(diào)后的DenseNet網(wǎng)絡(luò)模型具有預(yù)測(cè)時(shí)間短、精確度高、漏報(bào)率低、誤報(bào)率低等優(yōu)勢(shì)而且模型比較小,能夠很好地應(yīng)用到火災(zāi)檢測(cè)領(lǐng)域,則選取DenseNet121 模型作為最終深度遷移模型。
本文基于遷移學(xué)習(xí)的視頻火災(zāi)圖像檢測(cè)方法研究,選取了遷移學(xué)習(xí)模型分別是InceptionV3、ResNet18、ResNet50、以及DenseNet 模型,將數(shù)據(jù)集放入預(yù)訓(xùn)練模型中訓(xùn)練,并對(duì)模型做了微調(diào),最終得到了不同的模型,分別對(duì)他們的精確度、漏報(bào)率、預(yù)測(cè)時(shí)間做了對(duì)比,實(shí)驗(yàn)表明DenseNet 具有預(yù)測(cè)時(shí)間短、精確度高、漏報(bào)率低的優(yōu)勢(shì),我們選取DenseNet 作為最后的模型。下一步準(zhǔn)備結(jié)合目標(biāo)檢測(cè)算法對(duì)火災(zāi)區(qū)域進(jìn)行定位。