徐柯,王保云,2★
(1.云南師范大學(xué) 數(shù)學(xué)學(xué)院,云南 昆明 650500;2.云南省高校復(fù)雜系統(tǒng)建模及應(yīng)用重點實驗室,云南 昆明 650500)
火災(zāi)作為常見的災(zāi)害之一,對人民生命和財產(chǎn)構(gòu)成巨大威脅。據(jù)應(yīng)急管理部消防救援局2022 年11 月1 日發(fā)布的視頻,2022 年前三個季度全國共接報火災(zāi)63.68 萬起,死亡1441 人,受傷1640 人,直接財產(chǎn)損失55億元。因此,對火災(zāi)的快速、高效地檢測并預(yù)警顯得尤為重要。傳統(tǒng)的感煙和感溫型火災(zāi)探測方法對于小空間范圍適用性較好,但在大空間范圍內(nèi),這種火災(zāi)識別方法具有一定的局限性。相比于傳統(tǒng)的感煙和感溫火災(zāi)識別方法,圖像型火災(zāi)識別可以很好地避免這一缺點 。李建文等人[1]通過對核電站場所內(nèi)火災(zāi)發(fā)生的特點進行分析,結(jié)合圖像分析技術(shù)的優(yōu)勢,降低了核電站的火災(zāi)探測誤報率;王媛彬等人[2]通過提取火災(zāi)火焰圖像的特征,對是否有火焰產(chǎn)生實現(xiàn)了判斷。馬越豪等人[3]利用無人機技術(shù),通過圖像的顏色特征檢測火災(zāi)區(qū)域,提出了一種火災(zāi)檢測方法。Kandil等人[4]提取火焰小波變換后的圖像特征,通過使用BP 神經(jīng)網(wǎng)絡(luò)進行火焰的識別。然而,以上這些基于圖像處理的火災(zāi)識別方法均屬于傳統(tǒng)的圖像處理方法,需要人工提取特征,易受干擾且效率較低。
隨著深度學(xué)習(xí)[5]的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(CNN) 已經(jīng)在手寫字符識別、語音識別[6]、圖像識別等領(lǐng)域得到了成功應(yīng)用。與傳統(tǒng)的機器學(xué)習(xí)圖像識別算法相比,卷積神經(jīng)網(wǎng)絡(luò)具有無須人工提取特征,局部區(qū)域連接以及權(quán)值共享特點。本文基于改進的VGG16 網(wǎng)絡(luò)模型,對圖像進行發(fā)生火災(zāi)和未發(fā)生火災(zāi)的分類,借助深度學(xué)習(xí)的方法,讓計算機通過大量樣本訓(xùn)練提取到火災(zāi)特征,對火災(zāi)進行識別,并將該網(wǎng)絡(luò)與ResNet34網(wǎng)絡(luò)和VGG16網(wǎng)絡(luò)進行對比,測試網(wǎng)絡(luò)在火災(zāi)數(shù)據(jù)集上的性能表現(xiàn)。
本文采用的火災(zāi)樣本數(shù)據(jù)集來自公開數(shù)據(jù)集“Fire Image Data Set for Dunnings 2018 study - PNG still image set”靜態(tài)火災(zāi)圖像數(shù)據(jù)集。為保證樣本的平衡,選取火災(zāi)圖像4 000 張,非火災(zāi)圖像4 000 張。將發(fā)生火災(zāi)的圖像標(biāo)注為0,未發(fā)生火災(zāi)的圖像標(biāo)注為1,訓(xùn)練集和測試集按照7:3的比例進行劃分,數(shù)據(jù)庫中的部分圖像如圖1所示。
圖1 數(shù)據(jù)庫部分樣本
本文分別采用VGG16、ResNet34 以及改進的VGG 網(wǎng)絡(luò)模型對數(shù)據(jù)集進行訓(xùn)練和測試。其中VGG16[7]是由牛津大學(xué)和Google公司共同研發(fā)的一個卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。VGG16網(wǎng)絡(luò)是由13個卷積層和5 個池化層組成,最后由3 個全連接層作為分類層。在本文中,考慮到火災(zāi)識別是一個二分類問題,不需要復(fù)雜的分類層,故保留VGG16 網(wǎng)絡(luò)中的特征提取層,重新設(shè)置分類層,采用2層全連接層[8]。VGG16網(wǎng)絡(luò)的特點是采用連續(xù)的3×3 的卷積核代替較大卷積核,相比直接使用大尺度卷積核訓(xùn)練,訓(xùn)練量大大減小,通過增加通道數(shù)提高了網(wǎng)絡(luò)特征識別能力,并且VGG16網(wǎng)絡(luò)的非線性能力增強,增加了卷積神經(jīng)網(wǎng)絡(luò)特征提取能力。
殘差神經(jīng)網(wǎng)絡(luò)[9](ResNet)是由何愷明等人提出的,并在ILSVRC2015比賽中取得冠軍。ResNet34是由33層卷積層和1層全連接層組成的神經(jīng)網(wǎng)絡(luò)模型。殘差網(wǎng)絡(luò)主要由殘差塊構(gòu)成,這種殘差塊的輸入會經(jīng)過一個跳躍結(jié)構(gòu)輸出到殘差塊的輸出,避免了網(wǎng)絡(luò)退化的問題,同時緩解了在深度神經(jīng)網(wǎng)絡(luò)中增加深度帶來的梯度消失問題。
改進的VGG網(wǎng)絡(luò)模型是在原來的VGG16模型的基礎(chǔ)上添加了殘差塊結(jié)構(gòu),改進的VGG 網(wǎng)絡(luò)結(jié)構(gòu)見圖2。
圖2 改進的VGG16網(wǎng)絡(luò)示意圖
三個網(wǎng)絡(luò)的激活函數(shù)均使用Rule函數(shù),選擇Rule函數(shù)是因為在一定程度上解決了梯度消失的問題,加速梯度下降的收斂速度,并且Rule 函數(shù)計算簡單,更加高效。
三個網(wǎng)絡(luò)在經(jīng)過對圖像的特征提取和分類后,通過使用Softmax 函數(shù)將兩個目標(biāo)類別給出的輸出數(shù)值轉(zhuǎn)化為相對概率。關(guān)于Softmax 函數(shù)的定義表達式為:
其中,i表示數(shù)據(jù)集的類別索引,vi是分類器對第i類的輸出。數(shù)據(jù)集總的類別個數(shù)為C。Si為第i類的輸出的指數(shù)與數(shù)據(jù)集所有類輸出的指數(shù)的比值。
模型的訓(xùn)練與測試均在PyTorch框架下完成。硬件環(huán)境:Intel(R) Xeon(R) Platinum 8157 CPU @2.30GHz,NVIDIA GeForce RTX 3090 GPU;軟件環(huán)境:Ubuntu18.04 操作系統(tǒng), Python 3.8, CUDA 11.3,Py-Torch 1.11.0,以及圖像相關(guān)的第三方庫。
模型訓(xùn)練時使用GPU加速,具體訓(xùn)練設(shè)置如下:最大訓(xùn)練數(shù)設(shè)置為100 個epoch,batch size 設(shè)置為64,學(xué)習(xí)率設(shè)置為0.001。損失函數(shù)為交叉熵損失函數(shù)(Cross Entropy Loss) ,交叉熵函數(shù)可以完美解決均方誤差函數(shù)權(quán)重更新慢的問題,在誤差大時權(quán)重更新快,在誤差小時,權(quán)重更新慢。交叉熵損失函數(shù)的表達式為:
其中,a為
優(yōu)化方法為隨機梯度下降法(SGD) ,該算法是通過迭代運算不斷優(yōu)化參數(shù),使損失函數(shù)最小化。
為比較3種網(wǎng)絡(luò)的性能,在數(shù)據(jù)集上進行實驗,得到實驗結(jié)果,繪制了以下圖像。
訓(xùn)練迭代100次,圖3是在訓(xùn)練過程中,網(wǎng)絡(luò)模型的損失值隨著迭代次數(shù)變化的曲線圖。觀察圖3的損失值曲線發(fā)現(xiàn),隨著迭代次數(shù)的增加,3種網(wǎng)絡(luò)模型的損失函數(shù)均呈遞減形式,并最終都穩(wěn)定在一個數(shù)值;從圖3還可以看出,改進后的VGG模型在損失方面要優(yōu)于其他兩個網(wǎng)絡(luò)。
圖3 損失值變化曲線
在測試集上的準(zhǔn)確率如圖4 所示。觀察圖4 發(fā)現(xiàn),隨著訓(xùn)練迭代次數(shù)的增加,3種模型的準(zhǔn)確率均呈遞增形式,并最終收斂;除此之外,改進后的VGG模型在準(zhǔn)確率上明顯優(yōu)于其他兩個網(wǎng)絡(luò)。
圖4 準(zhǔn)確率變化曲線
為了評價算法對火災(zāi)的識別能力,本文通過召回率、準(zhǔn)確率、受試者操作特征曲線(ROC) 以及AUC 四個指標(biāo),對網(wǎng)絡(luò)性能進行評價。
首先,給出實驗結(jié)果匯總后得到的混淆矩陣?;煜仃囀且环N精度評價模型,主要比較預(yù)測值和實際值在不同類別上的表現(xiàn)。表1為3種網(wǎng)絡(luò)在測試集上的混淆矩陣。通過觀察表1 混淆矩陣發(fā)現(xiàn),改進的VGG 模型對有火發(fā)生的識別能力要優(yōu)于無火災(zāi)發(fā)生的識別能力。并且改進的VGG 模型對有火發(fā)生的識別能力要優(yōu)于另外兩個網(wǎng)絡(luò)。
表1 混淆矩陣
其中,TP(True Positive):代表有火檢測出有火;
FN(False Negative):代表有火檢測出無火;
FP(False Positive):代表無火但檢測出有火;
TN(True Negative):代表無火檢測為無火。
接著,根據(jù)表2給出的混淆矩陣,計算得到三個網(wǎng)絡(luò)的各性能指標(biāo)值,見表2。通過表2 可知,改進的VGG 模型的有火召回率為86.33%,優(yōu)于其他兩個網(wǎng)絡(luò),這說明改進的VGG模型在識別有火災(zāi)發(fā)生的能力要強于另外兩個網(wǎng)絡(luò)。改進的VGG 模型的無火召回率為81.33%,優(yōu)于VGG16 模型,但不如ResNet34 模型。通過表2還可以發(fā)現(xiàn),改進的VGG模型的準(zhǔn)確率為81.21%,優(yōu)于另外兩個網(wǎng)絡(luò)。
表2 準(zhǔn)確率和召回率
其中準(zhǔn)確率是有火和無火中預(yù)測正確數(shù)量占總數(shù)量的比例,用公式表示為:
有火召回率是被預(yù)測正確的有火占實際有火樣本的比例。用公式表示為:
無火召回率是被預(yù)測正確的無火占實際無火樣本的比例。用公式表示為:
為了進一步驗證模型的可靠性,根據(jù)實驗結(jié)果繪制了三種模型的ROC曲線,如圖5所示。改進的VGG模型,VGG16 模型以及ResNet34 模型的AUC 值分別為0.879、0.866、0.846,這說明三種網(wǎng)絡(luò)模型都具有一定的準(zhǔn)確性,且改進后的VGG模型相比其他兩種網(wǎng)絡(luò)具有更好的識別能力。
圖5 ROC曲線圖
針對傳統(tǒng)火災(zāi)探測器檢測局限性、檢測率低的問題,本文提出了一種改進的VGG網(wǎng)絡(luò)的圖像型火災(zāi)識別方法。本文選取公開數(shù)據(jù)集上的4 000張火災(zāi)照片和4 000張未發(fā)生火災(zāi)的照片,保證了樣本的平衡,并將數(shù)據(jù)集按7:3分為訓(xùn)練集和測試集,對改進的VGG模型進行實驗,得到的火災(zāi)識別模型分類準(zhǔn)確率為81.21%,AUC 值為0.879,網(wǎng)絡(luò)性能優(yōu)于VGG16 網(wǎng)絡(luò)和ResNet34 網(wǎng)絡(luò),說明了該網(wǎng)絡(luò)可以應(yīng)用于火災(zāi)識別,且具有準(zhǔn)確的優(yōu)點。