徐梓涵 ,劉 軍*,張?zhí)K沛 ,肖澳文 ,杜 壯
1.智能機(jī)器人湖北省重點(diǎn)實(shí)驗(yàn)室(武漢工程大學(xué)),湖北 武漢 430205;
2.武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北 武漢 430205
火災(zāi)是現(xiàn)代社會具有毀滅性的重大災(zāi)害之一。隨著我國社會的快速發(fā)展,火災(zāi)的發(fā)生往往伴隨著生命財(cái)產(chǎn)的重大損失。2018年,全國火災(zāi)情況造成超過2 000人受傷或死亡,直接損失超過30億元。因此,在火勢形成之前進(jìn)行及時(shí)準(zhǔn)確的檢測具有重要意義。
在早期的火災(zāi)監(jiān)控的技術(shù)中,基于傳感器實(shí)現(xiàn)的火災(zāi)煙霧檢測裝置一般分為感光、感煙和感溫三種類型。目前已經(jīng)有采用多傳感器融合識別火災(zāi)的方法取得了較好的效果[1]。近年來,圖像模式識別技術(shù)的發(fā)展為解決實(shí)際問題提供了理論依據(jù)[2]。利用深度學(xué)習(xí)技術(shù),可以直接接受原始圖像輸入,通過模擬人類神經(jīng)細(xì)胞建立的卷積神經(jīng)網(wǎng)絡(luò)自動提取圖像特征。目前深度學(xué)習(xí)技術(shù)在人臉識別[3]、字符識別[4]、圖像分類[5]等領(lǐng)域都取得了較好效果,甚至超過了人類識別水平。本文的思路是結(jié)合深度學(xué)習(xí)技術(shù),利用圖像識別進(jìn)行火災(zāi)識別,同時(shí)利用社會中廣泛存在的視頻監(jiān)控設(shè)備進(jìn)行數(shù)據(jù)采集,可以在火災(zāi)形成初期進(jìn)行識別,從而實(shí)現(xiàn)快速、大范圍的火災(zāi)檢測,此外,該方法安裝和使用成本適中,有利于進(jìn)行推廣。
隨著深度學(xué)習(xí)的發(fā)展,基于計(jì)算機(jī)視覺并配合智能算法對場景內(nèi)容進(jìn)行識別和分析受到了國內(nèi)外研究者的廣泛關(guān)注。但相較于其他物體的識別,火災(zāi)煙霧檢測的難點(diǎn)在于二者在形態(tài)上均具有不確定性,其中煙霧還具有透明度,易與圖像的背景部分混合。有學(xué)者提出依靠對圖像中火焰和煙霧的明度、顏色和運(yùn)動情況等特征進(jìn)行分析和提取來進(jìn)行識別的方法[6]。利用稀疏光流算法跟蹤運(yùn)動區(qū)域,通過計(jì)算平均偏移量以及相位分布對煙霧進(jìn)行判斷,進(jìn)而檢測是否有火災(zāi)發(fā)生。劉穎等[7]提出基于潛在語義分析(latent semantic analysis,LSA)和支持向量機(jī)(support vector machine,SVM)的算法利用幀內(nèi)特征檢測煙霧。近年來,深度學(xué)習(xí)開始逐漸運(yùn)用于各個(gè)領(lǐng)域。區(qū)別于傳統(tǒng)框架,深度學(xué)習(xí)方法基于大量數(shù)據(jù)提取目標(biāo)特征,可以進(jìn)行更準(zhǔn)確的判斷。如Mao等[8]提出利用多通道卷積神經(jīng)網(wǎng)絡(luò)對火焰進(jìn)行識別。陳俊周等[9]提出利用原始圖像作為靜態(tài)紋理,原始圖像的光流序列作為動態(tài)紋理,融合兩種紋理信息構(gòu)建級聯(lián)的卷積神經(jīng)網(wǎng)絡(luò)。Yin等[10]提出更深層級的14層卷積神經(jīng)網(wǎng)絡(luò),通過將傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)中的卷積層替換為批規(guī)范化卷積層,加速訓(xùn)練過程并避免過擬合等問題。Muhammad等[11]提出類似于GoogleNet的網(wǎng)絡(luò)結(jié)構(gòu),利用遷移學(xué)習(xí)的方法,在提高檢測準(zhǔn)確率的同時(shí)降低了卷積復(fù)雜度。
由于實(shí)際使用中的嵌入式設(shè)備通常無法滿足大型卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算和存儲的需求,本文在深度卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,引入更適合嵌入式設(shè)備的MobileNetV1網(wǎng)絡(luò),并配合運(yùn)動檢測方法,提出一種針對視頻的火災(zāi)與煙霧檢測方法。。
利用了監(jiān)控?cái)z像機(jī)在空間位置、拍攝角度上的穩(wěn)定性,以降低額外的計(jì)算開銷,充分利用設(shè)備性能。首先讀取視頻中單幀圖像作為原始圖像,如圖1(a)所示,將整幅畫面以一定大小劃分為若干個(gè)矩形區(qū)域,然后對整幅畫面使用K-近鄰(K-nearest neighbor,K-NN)背景減除器進(jìn)行背景減除,提取出前景部分[12]的范圍作為動態(tài)區(qū)域圖像,如圖1(b)所示。K-NN背景減除器是一種基于K-NN算法進(jìn)行背景減除的算法[13],其接收若干幀連續(xù)的視頻圖像后,利用K-NN算法預(yù)測當(dāng)前視頻幀中的某一像素在當(dāng)前視頻幀中是否屬于前景部分。其中判斷當(dāng)前視頻幀中某像素是否為背景的計(jì)算方法見文獻(xiàn)[14]。
在獲得經(jīng)過背景減除的動態(tài)區(qū)域圖像后,需要對其進(jìn)行閾值處理,將亮度值小于255的像素均歸為0,處理后的圖像如圖1(c)所示。為了消除噪點(diǎn),減少不必要的計(jì)算,本文對動態(tài)區(qū)域圖像進(jìn)行了腐蝕與膨脹等形態(tài)學(xué)操作。腐蝕可以描述為:將圖像A與核B做卷積,核B有一個(gè)錨點(diǎn),將錨點(diǎn)所指的像素值替換為該核內(nèi)所指元素的最小值。腐蝕處理后圖像如圖1(d)所示。在圖像A中點(diǎn)(x,y)的像素上,腐蝕后的像素值可以表達(dá)為:
利用相似的原理,膨脹可以描述為:將圖像A與核C做卷積,核C有一個(gè)錨點(diǎn),將錨點(diǎn)所值的像素值替換為該核內(nèi)所指元素的最大值。膨脹處理后圖像如圖1(e)所示。在圖像R中點(diǎn)( )x,y的像素上,膨脹后的像素值可以表達(dá)為:
經(jīng)過上述形態(tài)學(xué)操作后移除了一定噪點(diǎn),平滑了前景的輪廓,得到了經(jīng)過處理后的動態(tài)區(qū)域圖像D。為了得到具體的檢測區(qū)域,本文使用了積分圖實(shí)現(xiàn)對區(qū)域內(nèi)前景像素的快速統(tǒng)計(jì)[15]。積分圖E中任意一點(diǎn)(x,y)的值是動態(tài)區(qū)域圖像D中位于(x,y)左上方的所有像素的灰度值之和,即。借助積分圖的性質(zhì),可以快速得到區(qū)域G={(x,y)|x0≤x≤x1,y0≤y≤y1}中前景像素的灰度值之和E(G) ,其中灰度值之和大于0的區(qū)域?qū)⒈粯?biāo)記為需要檢測的區(qū)域。部分運(yùn)行示例圖如圖1所示。
隨著卷積神經(jīng)網(wǎng)絡(luò)的飛速發(fā)展,已經(jīng)有實(shí)驗(yàn)[16]表明卷積神經(jīng)網(wǎng)絡(luò)在圖像識別、分類方面具有較好的能力。VGGNet(visual geometry group net-work)和ResNet的出現(xiàn)表明了具有一定深度的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)能夠很好地對圖像進(jìn)行擬合、分類。
圖 1 提取圖像:(a)原始,(b)動態(tài)區(qū)域,(c)閾值處理后,(d)腐蝕處理后,(e)膨脹處理Fig.1 Foreground extraction:(a)original image,(b)motion area image,(c)image after thresholding,(d)image after erosion,(e)image after dilation
常見的深度神經(jīng)網(wǎng)絡(luò)參數(shù)量如表1所示,由于這些網(wǎng)絡(luò)結(jié)構(gòu)相對龐大,需要運(yùn)算的參數(shù)數(shù)量較多,導(dǎo)致此類動輒需要高性能圖形卡計(jì)算的卷積神經(jīng)網(wǎng)絡(luò)的加載和前向計(jì)算需要更多的時(shí)間以及更多的內(nèi)存空間。而諸如監(jiān)控?cái)z像頭這一類嵌入式設(shè)備計(jì)算能力與存儲空間有限,通常無法滿足這些網(wǎng)絡(luò)運(yùn)行的需要。為解決這一問題,引入了MobileNet V1卷積神經(jīng)網(wǎng)絡(luò)。
表1 常見深度神經(jīng)網(wǎng)絡(luò)參數(shù)量Tab.1 Number of parameters of common deep neural network
2017年Google提出輕量卷積神經(jīng)網(wǎng)絡(luò)MobileNet V1。其核心方法是利用depthwise separate convolution將傳統(tǒng)的卷積拆分為depthwise convolution與pointwise convolution兩種卷積方式的組合,其運(yùn)算原理如圖2所示。在depthwise convolution中,3個(gè)卷積核分別對3個(gè)通道進(jìn)行卷積,分別得到3個(gè)通道的特征。pointwise convolution為對輸入矩陣進(jìn)行1×1的卷積。實(shí)驗(yàn)表明,拆分后depthwise convolution和pointwise convolution的效果接近傳統(tǒng)卷積[17]。同時(shí),相比于傳統(tǒng)的卷積方式,depthwise convolution與pointwise convolution兩種卷積方式組合的參數(shù)量與計(jì)算量大大減少。理論上,在進(jìn)行k個(gè)h×w卷積核的卷積時(shí),depthwise separate convolution與傳統(tǒng)卷積的運(yùn)算量之比為。這使得MobileNet V1比其他傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)更適合在計(jì)算能力有限的設(shè)備上使用。本文所使用的MobileNet V1卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如表2所示。
圖2 深度可分離卷積:(a)深度卷積,(b)點(diǎn)卷積Fig.2 Depthwise separable convolutions:(a)depthwise convolution,(b)pointwise convolution
表2 MobileNet V1網(wǎng)絡(luò)結(jié)構(gòu)Tab.2 Architecture of MobileNet V1
在卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,由于煙霧火災(zāi)識別領(lǐng)域沒有公開的數(shù)據(jù)集,本實(shí)驗(yàn)數(shù)據(jù)來自ImageNet等網(wǎng)絡(luò)圖片平臺,包含1 864張火災(zāi)圖片、1 625張煙霧圖片、1 818張正常景象圖片。在每個(gè)類別中分別選出25%的圖片作為測試集,其余為訓(xùn)練集,并保證訓(xùn)練集與測試集的圖片均不重復(fù)。訓(xùn)練集與測試集中圖片樣例如圖3所示。
圖3 數(shù)據(jù)集部分樣例Fig.3 Samples of dataset
算法使用跨平臺編程語言Python編寫,共有檢測模型訓(xùn)練、視頻讀取、區(qū)域選擇、檢測分類四個(gè)部分。運(yùn)用Tensorflow深度學(xué)習(xí)框架構(gòu)建和訓(xùn)練網(wǎng)絡(luò)模型,并提供運(yùn)行支持。Tensorflow是開源的跨平臺深度學(xué)習(xí)庫,其中提供了常用的機(jī)器學(xué)習(xí)算法,可以方便地構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)并高效地利用GPU對訓(xùn)練和運(yùn)行過程進(jìn)行加速。在處理視頻的輸入和輸出方面,實(shí)驗(yàn)采用跨平臺的計(jì)算機(jī)視覺庫OpenCV對視頻輸入輸出、圖像處理、結(jié)果預(yù)覽提供支持。在檢測模型的迭代訓(xùn)練階段,主要利用GPU對訓(xùn)練過程加速。在部署階段則使用CPU進(jìn)行前向計(jì)算。
在對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練前,需要對數(shù)據(jù)集進(jìn)行正則化處理。首先將所有的圖片統(tǒng)一調(diào)整到224×224以便于作為矩陣輸入到卷積神經(jīng)網(wǎng)絡(luò)。另外,為了使卷積神經(jīng)網(wǎng)絡(luò)更易收斂,應(yīng)對數(shù)據(jù)集中的圖像進(jìn)行去均值和標(biāo)準(zhǔn)化處理。去均值處理中,對于每一個(gè)圖像通道中的像素,在其紅、綠、藍(lán)3個(gè)分量上應(yīng)分別減去對應(yīng)的通道均值。一個(gè)通道的通道均值是通過計(jì)算訓(xùn)練集中每張圖像的所有像素在該通道的平均值并取平均得到的常量。標(biāo)準(zhǔn)化處理中,對于圖像A中每一通道中的每個(gè)像素將被縮放為一個(gè)0到1之間的浮點(diǎn)數(shù),即
迭代訓(xùn)練過程中,所有數(shù)據(jù)集中的圖像在經(jīng)過上述正則化處理后將被讀取為224×224×3的矩陣并依次輸入到卷積神經(jīng)網(wǎng)絡(luò)中,再根據(jù)卷積神經(jīng)網(wǎng)絡(luò)的輸出更新卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)。在進(jìn)行20 000次迭代訓(xùn)練后,得到的測試集準(zhǔn)確度如圖4(a)所示,損失函數(shù)值如圖4(b)所示。
圖4 (a)測試集準(zhǔn)確度,(b)測試集損失函數(shù)值Fig.4 (a)Accuracy on validation set,(b)Loss Function value on validation set
在視頻讀取階段與區(qū)域選擇階段,算法依次從視頻中讀取每一幀的圖像。對于每一幀圖像,算法首先使用K-NN背景減除器提取出前景部分,再進(jìn)行腐蝕、膨脹等形態(tài)學(xué)處理消除噪點(diǎn)、平滑邊緣,然后利用積分圖快速地篩選出有可能出現(xiàn)煙火的區(qū)域。
在檢測分類部分,首先對當(dāng)前幀以及篩選得到的區(qū)域內(nèi)的圖像依次進(jìn)行正則化處理,分別輸入到檢測分類的卷積神經(jīng)網(wǎng)絡(luò)中。通過卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行前向計(jì)算分別得到該幀或該區(qū)域?qū)儆诨鹧?、煙霧和正常3種情況的概率,從而對圖像的狀態(tài)做出預(yù)測。在這一過程中,通過對當(dāng)前視頻幀狀態(tài)的預(yù)測可以得到當(dāng)前場景的基本狀態(tài)。通過對動態(tài)區(qū)域內(nèi)的圖像進(jìn)行檢測可以得到火災(zāi)或煙霧的大致位置。
在視頻上進(jìn)行測試。實(shí)驗(yàn)運(yùn)行結(jié)果如圖5所示,圖5左上角方框內(nèi)表示了當(dāng)前視頻幀位置、判定結(jié)果以及不同狀態(tài)下的概率。圖5中部的方框標(biāo)記了當(dāng)前的動態(tài)區(qū)域,方框顏色代表該動態(tài)區(qū)域的判定結(jié)果,藍(lán)色代表煙霧、綠色代表正常、紅色代表火焰。由圖5可以看出,本文算法能夠基本確定視頻幀中煙霧與火焰的范圍和位置。
為了更加客觀準(zhǔn)確地衡量模型效果,實(shí)驗(yàn)階段設(shè)置ResNet-50卷積神經(jīng)網(wǎng)絡(luò)模型作為對照組。ResNet-50是由何凱明提出的一種卷積神經(jīng)網(wǎng)絡(luò)模型,其核心思想是引入identity shortcut connection直接跳過一個(gè)或多個(gè)層來解決當(dāng)卷積神經(jīng)網(wǎng)絡(luò)層數(shù)增加時(shí)產(chǎn)生的梯度消失問題,在圖像識別領(lǐng)域取得較好效果[18]。本文使用ResNet-50模型與MobileNet V1模型在相同的訓(xùn)練數(shù)據(jù)集下進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如表3所示,由實(shí)驗(yàn)結(jié)果可知處理1 128個(gè)視頻幀,MobileNet V1模型總處理時(shí)間為535.935 5 s,平均每幀圖像耗時(shí)0.415 1 s,ResNet-50卷積神經(jīng)網(wǎng)絡(luò)模型總處理時(shí)間為966.132 5 s,平均每幀圖像耗時(shí)0.856 5 s,本文模型處理圖像的速度相比ResNet-50卷積神經(jīng)網(wǎng)絡(luò)快51.5%。而MobileNet V1的模型文件大小為12.3 MB,ResNet-50的模型文件大小為90.0 MB,本文模型的模型文件大小相比ResNet-50卷積神經(jīng)網(wǎng)絡(luò)小86.3%。通過比較,本文模型在略微損失準(zhǔn)確率的情況下,大幅提升運(yùn)行速度,同時(shí)縮減模型體積。
表3 不同模型的實(shí)驗(yàn)結(jié)果對比Fig.3 Comparison of experimental results of different models
在使用深度學(xué)習(xí)技術(shù)對火災(zāi)煙霧檢測分類的基礎(chǔ)上,解決了傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)計(jì)算量大,占用存儲空間大,計(jì)算時(shí)間長的問題。由于火焰與煙霧在畫面中通常處于運(yùn)動狀態(tài),利用監(jiān)控設(shè)備的穩(wěn)定性,首先對視頻中單幀圖像采用K-NN背景減除器進(jìn)行背景減除,再使用腐蝕與膨脹等操作進(jìn)行降噪,可以較準(zhǔn)確地選擇出可能出現(xiàn)火焰或煙霧的范圍。同時(shí)因?yàn)榭s小了檢測目標(biāo)的查找范圍,加快了檢測速度。其次,引入了一種適合嵌入式設(shè)備等CPU計(jì)算能力有限的計(jì)算設(shè)備的卷積神經(jīng)網(wǎng)絡(luò)MobileNet V1對目標(biāo)區(qū)域進(jìn)行檢測,該網(wǎng)絡(luò)使用depthwise separate convolution將傳統(tǒng)的卷積操作拆分為depthwise convolution和pointwise convolution,大大降低了卷積運(yùn)算的參數(shù)量,提高了計(jì)算速度,降低了內(nèi)存占用。實(shí)驗(yàn)結(jié)果表明,相比于傳統(tǒng)的火災(zāi)煙霧檢測方法,本文在保持較高識別準(zhǔn)確率的基礎(chǔ)上,實(shí)現(xiàn)了可在嵌入式設(shè)備上運(yùn)行的火災(zāi)煙霧檢測算法。