吳 雪, 宋曉茹, 高 嵩, 陳超波
(西安工業(yè)大學(xué)電子信息工程學(xué)院,西安 710021)
在現(xiàn)實(shí)生活中的各種災(zāi)害中,火災(zāi)是最常見的危害人類公共安全和社會(huì)發(fā)展的主要災(zāi)難之一?;馂?zāi)的發(fā)生通常不可控且危害范圍廣。因此,發(fā)展一種快速有效的火災(zāi)探測(cè)技術(shù)具有極其重要的理論和現(xiàn)實(shí)意義,也成為現(xiàn)代監(jiān)控技術(shù)的重要任務(wù)之一。
早期的火災(zāi)識(shí)別技術(shù)主要是采用傳感器技術(shù)進(jìn)行煙霧信號(hào)的采集并報(bào)警。楊帆等[1]設(shè)計(jì)了一種基于無(wú)線傳感器網(wǎng)絡(luò)和信息融合技術(shù)的森林火災(zāi)報(bào)警系統(tǒng),利用傳感器將采集到的環(huán)境溫度和煙霧濃度等信息傳給單片機(jī)進(jìn)行處理。Chen等[2]根據(jù)火焰的特點(diǎn),提出了一種基于多傳感器數(shù)據(jù)融合的火災(zāi)探測(cè)技術(shù),但傳感器缺點(diǎn)是實(shí)時(shí)監(jiān)測(cè)面積較小,在面積大的地方進(jìn)行實(shí)行監(jiān)測(cè)時(shí),需要大量的傳感器,且基于傳感器的火焰探測(cè)技術(shù)在很大程度上易受外部因素的干擾,當(dāng)外部環(huán)境發(fā)生改變時(shí),會(huì)造成傳感器的漏報(bào)誤報(bào)現(xiàn)象。
近年來(lái),隨著計(jì)算機(jī)視覺(jué)技術(shù)和機(jī)器學(xué)習(xí)的快速發(fā)展,基于圖像和機(jī)器學(xué)習(xí)的火災(zāi)識(shí)別技術(shù)[3]得到了廣泛應(yīng)用。Maruta等[4]提出了基于紋理分析和支持向量機(jī)的煙霧探測(cè),利用紋理分析提取圖像的特征向量,再使用SVM作為分類輸出。鄒婷等[5]和Prama等[6]利用小波變換提取的多種特征作為SVM的特征輸入。Kandil等[7]提取火焰小波變換后的特征,使用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行火焰的識(shí)別。但以上基于傳統(tǒng)機(jī)器學(xué)習(xí)的火災(zāi)識(shí)別方法的不足之處在于依賴大量的先驗(yàn)知識(shí),需要手動(dòng)提取圖像特征,且易受外界干擾,在圖片背景比較復(fù)雜或者發(fā)生改變時(shí),會(huì)降低識(shí)別的準(zhǔn)確率。深度學(xué)習(xí)[8]因具有避免手動(dòng)提取、自學(xué)習(xí)特征的優(yōu)點(diǎn),極大的推動(dòng)了人工智能的發(fā)展,已被廣泛應(yīng)用到圖像檢測(cè)與分割[9]、圖像識(shí)別和語(yǔ)音識(shí)別[10]等領(lǐng)域中。近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展非常迅速,Lecun等[11]提出LeNet5結(jié)構(gòu)模型,將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到字符的識(shí)別中;Krizhevsky等[12]提出了一種經(jīng)典的AlexNet結(jié)構(gòu)卷積神經(jīng)網(wǎng)絡(luò);Cha等[13]提出了使用卷積神經(jīng)網(wǎng)絡(luò)的深層架構(gòu)來(lái)檢測(cè)混凝土裂縫,避免了手動(dòng)計(jì)算混凝土的缺陷特征;Deng等[14]提出了利用R-CNN進(jìn)行快速準(zhǔn)確的車輛檢測(cè)框架,避免了傳統(tǒng)的基于滑動(dòng)窗口搜索[15]計(jì)算成本高、表示能力有限的缺點(diǎn)。相比于傳統(tǒng)的機(jī)器學(xué)習(xí)圖像識(shí)別算法,卷積神經(jīng)網(wǎng)絡(luò)具有無(wú)需手工提取特征,采用局部感知,共享參數(shù)的方法,大大減少了參數(shù)的數(shù)量等優(yōu)點(diǎn)。但基于深度學(xué)習(xí)的圖像識(shí)別都依賴于大量的數(shù)據(jù)樣本,在無(wú)法獲取到最夠量的樣本時(shí)易造成小樣本過(guò)擬合問(wèn)題的發(fā)生。
基于此,為減少背景復(fù)雜圖像特征選取的盲目,解決耗時(shí)性問(wèn)題,對(duì)不同類型的火災(zāi)和場(chǎng)景更具普遍性,利用卷積神經(jīng)網(wǎng)絡(luò)逐層學(xué)習(xí)出由淺到深的火焰特征。針對(duì)卷積神經(jīng)網(wǎng)絡(luò)小樣本易出現(xiàn)過(guò)擬合的問(wèn)題,引入數(shù)據(jù)增強(qiáng)方法,將原始的火災(zāi)圖像進(jìn)行旋轉(zhuǎn)、翻轉(zhuǎn)和平移,使得提取的特征能夠具有一定的旋轉(zhuǎn)平移不變性,通過(guò)增加樣本多樣性來(lái)減少過(guò)擬合的發(fā)生。
當(dāng)使用深度學(xué)習(xí)的方法進(jìn)行圖像識(shí)別時(shí),經(jīng)常需要大量的訓(xùn)練數(shù)據(jù),若數(shù)據(jù)集太少,則會(huì)出現(xiàn)過(guò)擬合的缺陷。為了能夠在小樣本數(shù)據(jù)集上進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練識(shí)別,對(duì)圖像引進(jìn)增強(qiáng)變換,增加樣本數(shù)據(jù)量。常用的數(shù)據(jù)增強(qiáng)變換方法有平移、旋轉(zhuǎn)、鏡像、隨機(jī)裁剪、仿射變換、主成分分析(PCA)白化和小波變換等。為了保證在火焰背景復(fù)雜的情況下進(jìn)行識(shí)別,主要采取了平移、旋轉(zhuǎn)和翻轉(zhuǎn)變換3種方法。
圖像的平移變換是將原始圖像的坐標(biāo)分別移動(dòng)指定的距離,若將x0,y0分別表示像素點(diǎn)沿x軸和y軸移動(dòng)的距離,a(x,y)和b(x,y)表示平移后的坐標(biāo),則圖像的平移變換可以表示為
(1)
旋轉(zhuǎn)變換是將像素點(diǎn)繞原點(diǎn)逆時(shí)針旋轉(zhuǎn)一定的角度θ??梢员硎緸?/p>
(2)
翻轉(zhuǎn)變換是指將圖像沿著x軸或者y軸對(duì)稱變換。為了保留更多的圖片信息,將圖片進(jìn)行水平翻轉(zhuǎn),可以表示為
(3)
式(3)中:c和d分別表示沿x軸或者y軸的縮放倍數(shù)。當(dāng)c=-1時(shí),表示當(dāng)前圖像進(jìn)行y軸翻轉(zhuǎn),當(dāng)d=-1時(shí),表示當(dāng)前圖像沿著x軸翻轉(zhuǎn)。
火災(zāi)圖片在經(jīng)過(guò)平移,旋轉(zhuǎn)和翻轉(zhuǎn)后,數(shù)量增加到原來(lái)的3倍,擴(kuò)充了樣本數(shù)量,且在背景復(fù)雜的情況下,能夠使得提取的特征具有平移和旋轉(zhuǎn)等不變性,增加了魯棒性。
卷積神經(jīng)網(wǎng)絡(luò)由輸入層,卷積層,池化層,全連接層和最后的輸出層組成(圖1)。所建立的火災(zāi)識(shí)別模型如圖2所示。該模型由一個(gè)輸入層,3個(gè)卷積池化層,一個(gè)全連接層和一個(gè)兩分類輸出層組成。輸入層由64×64像素的3通道樣本圖像組成;C1、C2、C3為卷積層,用于特征提??;S1、S2、S3為池化層,一般放在卷積層中間,用于壓縮數(shù)據(jù)和參數(shù)的計(jì)算量,去掉冗余信息,減小過(guò)擬合。其中,C1層得特征圖個(gè)數(shù)有32個(gè),是由32個(gè)3*3大小的卷積核與輸入層進(jìn)行SAME卷積,再經(jīng)過(guò)Relu激活函數(shù)得到的,經(jīng)過(guò)S1下采樣(選擇最大池化)后,特征圖數(shù)不變,圖片大小變?yōu)?2×32,最終得到32×32×32的特征圖。C2層也由32個(gè)3*3的卷積核與前一層進(jìn)行卷積運(yùn)算,再使用Relu激活函數(shù)得到,特征圖個(gè)數(shù)仍為32,再經(jīng)過(guò)S2下采樣(最大池化)后,圖片大小變?yōu)?6×16,最終得到16×16×32的特征圖。C3層是由64個(gè)3*3的卷積核與前一層進(jìn)行卷積運(yùn)算再使用Relu激活函數(shù)得到,該層特征圖個(gè)數(shù)為64,經(jīng)過(guò)S3下采樣后,圖片大小變?yōu)?×8,最終得到8×8×64的特征圖。fc1為隱藏層,該層的神經(jīng)元個(gè)數(shù)設(shè)為1 024,與上一層是全連接,該層的作用是合并前面卷積層所提取到局部的,低級(jí)特征,獲得關(guān)于圖片的全局特征,激活函數(shù)仍為Relu。最后一層是輸出層,選擇softmax激活函數(shù)輸出,與fc1之間也是全連接,由于本次識(shí)別只有兩個(gè)結(jié)果,因此該層的神經(jīng)元個(gè)數(shù)設(shè)置為2個(gè)。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
C1、C2、C3為卷積層;S1、S2、S3為池化層;fc1為隱藏層
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程和傳統(tǒng)的反向傳播(BP)算法一樣,分為由輸入圖片一級(jí)一級(jí)傳播至輸出層的前向傳播過(guò)程和由輸出值與實(shí)際值的誤差反向更新權(quán)值的過(guò)程。但又因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)擁有其獨(dú)特的卷積層和池化層,不同于傳統(tǒng)的全連接神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),因此卷積層和池化層的計(jì)算有所不同。
卷積層是卷積神經(jīng)網(wǎng)絡(luò)的重要組成部分,主要用于表達(dá)圖像的各個(gè)層次的特征。卷積神經(jīng)網(wǎng)絡(luò)的前向傳播公式如式(4)所示:
(4)
(5)
已知卷積層的誤差信號(hào),可以用誤差反向求梯度來(lái)更新權(quán)重和偏置值,權(quán)重求梯度公式在MATLAB中可表示為式(6),偏置的梯度公式如式(7)所示:
(6)
(7)
池化層在卷積神經(jīng)網(wǎng)絡(luò)中的主要作用是壓縮數(shù)據(jù)量,減少信息的冗余。同理,假設(shè)池化層的前后都連著卷積層,則池化層的前向傳播公式為
(8)
(9)
已知池化層的誤差信號(hào),根據(jù)誤差更新池化層的權(quán)值β和偏置值b的梯度,公式如式(10)、式(11)所示:
(10)
(11)
采用的火災(zāi)樣本數(shù)據(jù)集來(lái)自一位挪威的教授,其中含有110張正樣本的火災(zāi)圖片和510張復(fù)雜背景圖片的負(fù)樣本。為了減小正負(fù)樣本不均衡的缺點(diǎn)和卷積神經(jīng)網(wǎng)絡(luò)在小樣本數(shù)據(jù)集時(shí)容易產(chǎn)生過(guò)擬合的問(wèn)題,使用平移,翻轉(zhuǎn)和旋轉(zhuǎn)3種方法對(duì)正樣本進(jìn)行數(shù)據(jù)增強(qiáng),圖3所示為其中一個(gè)樣本進(jìn)行增強(qiáng)后的結(jié)果。進(jìn)行數(shù)據(jù)增強(qiáng)方法后,設(shè)置70%的樣本為訓(xùn)練集,30%為測(cè)試集。實(shí)驗(yàn)操作系統(tǒng)為windows10 64bit,CPU參數(shù)為Intel(R) Core(TM) i5-5200 CPU @2.20 GHz 2.20,內(nèi)存為4.00GB,使用pycharm、tensorboard作為實(shí)驗(yàn)仿真平臺(tái)。
2.2.1 未進(jìn)行數(shù)據(jù)增強(qiáng)的實(shí)驗(yàn)仿真
首先使用原始數(shù)據(jù)集進(jìn)行仿真,即正樣本圖像只有110張,背景圖像個(gè)數(shù)不變。由于樣本數(shù)據(jù)集的大小不一致,在做訓(xùn)練之前,先對(duì)輸入的火災(zāi)圖片做數(shù)據(jù)預(yù)處理,統(tǒng)一圖片大小為64×64像素。再運(yùn)用圖2所示的模型進(jìn)行火災(zāi)圖像的訓(xùn)練。實(shí)驗(yàn)權(quán)值采用批量更新,設(shè)置batch_size值為32,反向更新的學(xué)習(xí)率為0.000 1,在實(shí)驗(yàn)中加入dropout的方法,設(shè)置keep_prob的值為0.5,訓(xùn)練過(guò)程中所使用的參數(shù)如表1所示。
圖3 進(jìn)行數(shù)據(jù)增強(qiáng)的圖片
表1 模型參數(shù)設(shè)置
對(duì)該模型的權(quán)值進(jìn)行隨機(jī)初始化,然后對(duì)該網(wǎng)絡(luò)進(jìn)行訓(xùn)練和測(cè)試,經(jīng)過(guò)2 000次迭代后,訓(xùn)練集和測(cè)試集的識(shí)別正確率對(duì)比曲線如圖4所示,loss損失對(duì)比曲線如圖5所示。
藍(lán)線為測(cè)試集;紅線為訓(xùn)練集
藍(lán)線為測(cè)試集;紅線為訓(xùn)練集
經(jīng)過(guò)兩次實(shí)驗(yàn)比較,可以看出,原始小樣本訓(xùn)練集和測(cè)試集都有較高的識(shí)別率,測(cè)試集在95%左右,訓(xùn)練集從第780步開始就已經(jīng)達(dá)到100%的識(shí)別率,并且識(shí)別率一直保持不變。但由圖5可知,雖然在480步之前,訓(xùn)練集和測(cè)試集的誤差都在逐漸減小,但在480步之后,測(cè)試集的loss損失值突然增大,導(dǎo)致網(wǎng)絡(luò)無(wú)法收斂。說(shuō)明雖然加入了dropout方法,但仍出現(xiàn)了過(guò)擬合情況。
2.2.2 進(jìn)行數(shù)據(jù)增強(qiáng)后的實(shí)驗(yàn)仿真
為比較出進(jìn)行數(shù)據(jù)增強(qiáng)后網(wǎng)絡(luò)的性能,使用進(jìn)行數(shù)據(jù)增強(qiáng)后的數(shù)據(jù)集做仿真實(shí)驗(yàn),設(shè)置70%為訓(xùn)練集,30%為測(cè)試集。訓(xùn)練的其他參數(shù)同未進(jìn)行數(shù)據(jù)增強(qiáng)設(shè)置的網(wǎng)絡(luò)參數(shù)一樣。然后對(duì)該網(wǎng)絡(luò)隨機(jī)初始化,進(jìn)行訓(xùn)練和測(cè)試,經(jīng)過(guò)2 000次迭代后,進(jìn)行數(shù)據(jù)增強(qiáng)后的識(shí)別率對(duì)比如圖6所示,loss損失值對(duì)比如圖7所示。由圖7可知,隨著epoch的值的增加,網(wǎng)絡(luò)逐漸收斂。訓(xùn)練集正確率在0.871 2~0.904 2,測(cè)試集正確率在0.901 8~0.925 1。訓(xùn)練集的平均Loss損失值在收斂到0.19左右,測(cè)試集的平均Loss損失值收斂到0.20左右。實(shí)驗(yàn)仿真對(duì)比結(jié)果如表2所示。
藍(lán)線為測(cè)試集;紅線為訓(xùn)練集
藍(lán)線為測(cè)試集;紅線為訓(xùn)練集
表2 仿真結(jié)果對(duì)比
基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別獲得較高的識(shí)別率,根本原因在于卷積神經(jīng)網(wǎng)絡(luò)模型的深度,深度越深,其表達(dá)能力越強(qiáng),但會(huì)使得模型參數(shù)量增多,因此,需要海量的有標(biāo)簽樣本支撐訓(xùn)練,如果數(shù)據(jù)集太少,將導(dǎo)致深度模型記憶住有限的訓(xùn)練數(shù)據(jù)集,而不能泛化到測(cè)試集,從而出現(xiàn)過(guò)擬合情況。數(shù)據(jù)增強(qiáng)方法的本質(zhì)是增加了訓(xùn)練樣本的個(gè)數(shù),因此可以改善過(guò)擬合情況的發(fā)生,對(duì)樣本不充足時(shí),使用卷積神經(jīng)網(wǎng)絡(luò)具有一定重要的意義。
依據(jù)火焰發(fā)生時(shí)背景復(fù)雜性的特點(diǎn)和卷積神經(jīng)網(wǎng)絡(luò)無(wú)需手工提取特征但依賴于大量樣本的特點(diǎn),提出了基于數(shù)據(jù)增強(qiáng)的卷積神經(jīng)網(wǎng)絡(luò)火焰識(shí)別的方法。在使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行火焰圖片識(shí)別之前,先使用數(shù)據(jù)增強(qiáng)的方法對(duì)原始的圖片進(jìn)行平移,翻轉(zhuǎn)和旋轉(zhuǎn),增加樣本圖像的魯棒性,再使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行火焰低級(jí)特征和高級(jí)特征的提取,最后利用softmax分類器輸出識(shí)別結(jié)果。通過(guò)仿真實(shí)驗(yàn)結(jié)果表明,該方法的確避免了卷積神經(jīng)網(wǎng)絡(luò)因數(shù)據(jù)集太小而導(dǎo)致發(fā)散的現(xiàn)象,使得網(wǎng)絡(luò)收斂,火焰的識(shí)別率達(dá)到了0.925 1。