程廣濤,鞏家昌,李 建
(1.國家消防工程技術研究中心研發(fā)部,天津300381; 2.中國刑事警察學院聲像資料檢測技術系,沈陽110854)(?通信作者電子郵箱gt_cheng@163.com)
煙霧檢測已經(jīng)成為早期火災檢測的重要技術。傳統(tǒng)的煙霧檢測設備中常見的是點型感煙探測器,它因為成本低和安裝簡便而被廣泛應用。點型感煙探測器通過采樣和分析火災產(chǎn)生的煙霧顆粒濃度、氣體溫度和濕度等特征來觸發(fā)報警,這樣的工作原理使它應用在高大空間場所時很難發(fā)揮作用。近年來,隨著城市內(nèi)各種大型建筑的興起,各種大型建筑和超大型建筑越來越多,急需一種新型的煙霧探測方法來彌補現(xiàn)有點型感煙探測器存在的不足。在安全城市、安全社區(qū)、智慧消防等全新理念的提出下,各種視頻監(jiān)控系統(tǒng)已經(jīng)在國內(nèi)的大中城市里得到了大規(guī)模的普及,促使基于視頻圖像分析技術的煙霧檢測算法被廣泛研究[1-2]。
現(xiàn)有的煙霧識別方法首先從煙霧圖像中提取煙霧特征,然后將提取的特征經(jīng)過支持向量機(Support Vector Machine,SVM)等模式識別分類器進行最終識別,其中特征提取是煙霧識別方法取得高準確率的關鍵所在。Ferrai等[3]利用小波變換構(gòu)建一個隱馬爾可夫樹模型用于煙霧識別;Ye等[4]利用自適應背景減除法提取運動和顏色特征去檢測圖像序列中的煙霧和火焰;Yuan等[5]利用金字塔局部二值化模式(Local Bianry Pattern,LBP)特征和容積局部二值化模式(Volumn Local Bianry Pattern,VLBP)特征的直方圖序列進行視頻煙霧檢測;Yuan等[6]利用高階局部三元模式進行煙霧識別。然而現(xiàn)有的煙霧識別方法雖然都取得了很高的檢測率,但同時也伴有較高的誤報率,其原因在于傳統(tǒng)的煙霧圖像顏色、紋理、形狀等特征魯棒性較差,容易受光照條件、復雜的環(huán)境影響而變得異常不穩(wěn)定,進而忽略圖像中煙霧的本質(zhì)特征。
深度卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)的出現(xiàn)很好地解決了特征提取的問題,它能夠根據(jù)原始的圖像數(shù)據(jù)自動學習魯棒特征,既能學習邊緣和紋理等低層特征,也可以學習高階的抽象特征,如此豐富的特征表示對圖像識別非常重要。目前,卷積神經(jīng)網(wǎng)絡已經(jīng)被廣泛研究和被應用到各個圖像分析領域,包括圖像分類[7]、目標檢測[8-9]、人臉識別[10]等。Yin等[11]首次將卷積神經(jīng)網(wǎng)絡應用到煙霧識別問題中,提出了14層的深度規(guī)范和卷積神經(jīng)網(wǎng)絡(Deep Normalization and Convolutional Neural Network,DNCNN)用來實現(xiàn)煙霧圖像特征提取和分類;王文朋等[12]針對煙霧數(shù)據(jù)量較少的問題,提出一種基于深度遷移學習的煙霧識別方法,將ImageNet數(shù)據(jù)集作為源數(shù)據(jù),利用16層的VGG(Visual Geometry Group)模型[13]進行同構(gòu)數(shù)據(jù)下的特征遷移;Yuan等[14]提出了深度多尺度卷積神經(jīng)網(wǎng)絡(Deep Multi-scale CNN,DMCNN)進行煙霧識別,DMCNN由一些基本卷積塊堆積而成,每個卷積塊包含一些并行的卷積核大小不同的卷積層,用于對煙霧圖像的多尺度特征提取。
稠密卷積神經(jīng)網(wǎng)絡(Dense Convolutional Neural Network,DenseNet)[15]由一些稠密塊堆積而成,在每個稠密塊的卷積神經(jīng)網(wǎng)絡中,當前層的輸入數(shù)據(jù)來自前面所有層的數(shù)據(jù),因此DenseNet可以緩解梯度消失,增強特征流通和特征重利用,并減少深度模型參數(shù)。借鑒DenseNet的優(yōu)勢,本文構(gòu)造了用于煙霧識別的稠密卷積神經(jīng)網(wǎng)絡(DenseSmoke)。首先根據(jù)煙霧圖像特征利用卷積運算和特征圖融合構(gòu)建稠密網(wǎng)絡塊,然后疊加稠密網(wǎng)絡塊,設計用于煙霧識別的深度稠密卷積神經(jīng)網(wǎng)絡。該網(wǎng)絡提取的豐富圖像特征可以更好地對煙霧圖像進行描述,達到了更高的準確率和更低的誤報率,并且模型參數(shù)量大約只有0.44 MB,可以更好地節(jié)省運算資源。
深度卷積網(wǎng)絡中層與層之間的稠密連接可以改善數(shù)據(jù)的信息流通,本文構(gòu)造了稠密網(wǎng)絡塊,其基本構(gòu)件依次由下面結(jié)構(gòu)組成:批規(guī)范化(Batch Normalization,BN),修正線性單元(Rectified Linear Unit,ReLU),卷積核為1× 1、通道數(shù)為D的卷積運算,BN,ReLU,卷積核為3×3、通道數(shù)為C的卷積運算,如圖1所示。每個經(jīng)過基本構(gòu)件處理后得到的特征圖都與前面所有層的特征圖作拼接融合,融合后的特征圖作為下一個基本構(gòu)件的輸入,以此類推,共經(jīng)過M次基本構(gòu)件操作和M次特征圖融合操作。這樣稠密網(wǎng)絡塊的最終特征圖信息來自于其前面所有層,促進了信息流通和特征重利用。稠密網(wǎng)絡塊的結(jié)構(gòu)如圖2所示,文中設置M=3,D=48,C=12,I表示稠密網(wǎng)絡塊輸入的特征圖通道數(shù)目。
圖1 稠密網(wǎng)絡塊基本構(gòu)件Fig.1 Basic componentsof densenetwork block
圖2 稠密網(wǎng)絡塊結(jié)構(gòu)Fig.2 Structure of dense network block
整個稠密卷積神經(jīng)網(wǎng)絡DenseSmoke由卷積層、稠密網(wǎng)絡塊、壓縮層、池化層、全局池化層和分類輸出層構(gòu)成,網(wǎng)絡的輸入是大小為48×48的RGB煙霧圖像,如圖3所示。
圖3 DenseSmoke的網(wǎng)絡結(jié)構(gòu)Fig.3 Network structureof DenseSmoke
卷積層 輸入的圖像數(shù)據(jù)首先經(jīng)過一個卷積層,其中卷積核大小為3×3,滑動步長為1,擴充參數(shù)為1,以保證卷積后特征圖分辨率大小不變,特征圖通道數(shù)設置為24。
稠密網(wǎng)絡塊 整個DenseSmoke網(wǎng)絡由N個稠密網(wǎng)絡塊疊加而成,每個稠密網(wǎng)絡塊都包含3次基本構(gòu)件操作和3次特征圖拼接融合操作。文中設置N=4,這樣每個稠密網(wǎng)絡塊的特征圖分辨率依次為48×48、24×24、12×12和6×6,特征融合后的特征圖通道數(shù)目依次為60、66、69、70。
壓縮層 為了緩解特征圖通道信息冗余,在每個稠密塊后連接壓縮層進行特征通道數(shù)目壓縮,利用1×1卷積操作減少特征圖的數(shù)目。假定特征塊包含m個特征圖,壓縮層處理后將特征圖減少為,其中壓縮因子0<θ≤1,文中設置θ=0.5。經(jīng)過壓縮層處理后,稠密網(wǎng)絡塊的特征圖通道數(shù)依次為30、33、34,最后一個稠密網(wǎng)絡塊不進行壓縮。
池化層 池化層一般被連接在卷積層后面以減少特征圖的分辨率,進而減少模型參數(shù)數(shù)量以節(jié)省運算資源和緩解過擬合問題。常見的池化方法有最大池化和平均池化,它們分別在池化區(qū)域內(nèi)取最大值和平均值。本文選擇平均池化方法,池化區(qū)域大小為2×2,滑動步長為2,這樣池化層將特征圖的分辨率降低為原來的1 4。
全局池化層 在最后的特征圖和分類層之間設置全局池化層,首先全局池化層可以加強特征圖和分類層直接的信息通信,其次全局池化層屬于無參操作而避免過擬合問題,最后對于圖像數(shù)據(jù)的空間平移全局池化層具有很強的魯棒性。對大小為6×6×70的稠密塊進行池化區(qū)域為6×6的平均池化操作,輸出為1×1×70的特征圖。
分類輸出層 1×1×70的特征圖中神經(jīng)元經(jīng)過線性變換后再經(jīng)過Sigmoid函數(shù)變換進行圖像二分類任務:
其中:x表示分類輸出層輸入,y表示煙霧和非煙霧標簽,W表示神經(jīng)元之間連接的權(quán)重,b表示神經(jīng)元之間連接的偏置。
本文使用Pytorch深度學習框架去構(gòu)建和訓練DenseSmoke網(wǎng)絡。所有的實驗運行在Windows10操作系統(tǒng),實驗主機配置主頻為3.40 GHz的i7-3700 CPU處理器,16 GB的RAM和Nvidia GTX 1080Ti GPU顯卡。
表1顯示了江西財經(jīng)大學袁非牛教授研究組公開的4個數(shù)據(jù)集(http://staff.ustc.edu.cn/~yfn/vsd.html),分別為Set1、Set2、Set3和Set4。實驗中使用Set3作為訓練數(shù)據(jù)集,Set4作為驗證數(shù)據(jù)集,其他的兩個數(shù)據(jù)集作為測試數(shù)據(jù)集。
表1 煙霧圖像數(shù)據(jù)集Tab.1 Smokeimagedatasets
對于煙霧識別二分類問題,選擇交叉熵損失函數(shù)來作為DenseSmoke網(wǎng)絡的訓練目標函數(shù):
其中:yi表示數(shù)據(jù)集提供的樣本標簽,非煙霧圖像的標簽為0,煙霧圖像的標簽為1;p(yi)表示樣本被預測為yi的概率;N表示訓練樣本的個數(shù)。
本文使用批量隨機梯度下降算法(Batch Stochastic Gradient Descent,Batch-SGD)訓練深度卷積神經(jīng)網(wǎng)絡的參數(shù)變量,批量大小設置為96,動量參數(shù)為0.9,訓練過程利用權(quán)重下降來進行正則化,其中L2懲罰乘子設置為10-5,學習率設置為10-2,整個訓練過程循環(huán)遍歷訓練數(shù)據(jù)集300次,每經(jīng)過100次時將學習率除以10進行更新,學習率共被除以2次。網(wǎng)絡權(quán)重初始化采用Kaiming初始化方法。如圖4所示,訓練過程很快就能夠收斂,大約遍歷90次訓練數(shù)據(jù)庫時,訓練準確率已經(jīng)達到100%,對應的損失函數(shù)值也開始趨于穩(wěn)定。
本文使用檢測率(Detection Rate,DR)、誤報率(False Alarm Rate,F(xiàn)AR)和準確率(Accuracy Rate,AR)作為煙霧識別方法的量化評價指標,公式如下:
其中:Qp和Qn分別表示煙霧樣本和非煙霧樣本的數(shù)目,Pp表示煙霧樣本中被正確檢測為煙霧的數(shù)目,Np表示非煙霧樣本中被錯分為煙霧類別的數(shù)目,Nn表示非煙霧樣本中被正確檢測為非煙霧的數(shù)目。煙霧識別算法的目標是使得AR指標和DR指標更高,同時使得FAR指標更低。
圖4 DenseSmoke訓練過程Fig.4 Trainingprocessof DenseSmoke
根據(jù)上述實驗設置,表2匯總了不同煙霧識別算法訓練的模型在測試集Set1和Set2上的實驗結(jié)果,表中加粗數(shù)字表示各個指標下的最優(yōu)值。從實驗結(jié)果可以看到,與DNCNN和DMCNN相比較,DenseSmoke在Set1測試集上達到更高的DR和AR,在Set2測試集上達到更高的DR,AR值稍微低于DMCNN,但DenseSmoke的模型大小只有0.44 MB,還不到DMCNN模型大小的一半。除此之外,DenseSmoke的FAR值在Set1和Set2測試集上都略高于DNCNN和DMCNN,后面應用數(shù)據(jù)增強技術(DenseSmoke_A)進一步降低DenseSmoke的FAR值。
表2 煙霧識別算法實驗結(jié)果Tab.2 Experimental results of smoke recognition algorithms
為了更好地解釋DenseSmoke網(wǎng)絡構(gòu)建的合理性,本文進行如下的消融實驗。
1)為了驗證卷積神經(jīng)網(wǎng)絡中層與層之間稠密連接的必要性,本文移除稠密網(wǎng)絡塊中的特征圖融合操作,這時稠密網(wǎng)絡塊如圖5所示,其基本構(gòu)件依次由下列組件構(gòu)成:BN,ReLU,卷積核為3×3、通道數(shù)為D的卷積運算。其他設置和DenseSmoke相同,在每個稠密網(wǎng)絡塊后面仍然附有壓縮層和池化層,將如上描述的網(wǎng)絡標記為DenseSmke_0。
如表3所示,去掉稠密連接的DenseSmoke_0的模型參數(shù)由0.45 MB增加到1.08 MB,而DR和AR指標都發(fā)生較大的下降,同時FAR指標更高,在Set1測試集上DR指標甚至下降了3.45個百分點,在Set2測試集上FAR指標甚至升高了1.46個百分點。實驗結(jié)果說明了稠密連接在煙霧識別任務中的必要性。
圖5 DenseSmoke_0的稠密網(wǎng)絡塊Fig.5 Dense network blocks of DenseSmoke_0
表3 DenseSmoke消融實驗結(jié)果Tab.3 Ablation experimental resultsof DenseSmoke
2)DenseSmoke網(wǎng)絡中稠密網(wǎng)絡塊有M次基本構(gòu)件操作和M次特征圖拼接融合操作,然后整個網(wǎng)絡由N個稠密塊疊加而成,文中設置M=3,N=4。為了驗證這樣設置可以得到最好的性能,本文分別對M和N的取值減少和增加,詳細設置如表4所示。
如表4所示,與DenseSmoke相比,減小M或N的值,模型大小有所減少,DenseSmoke_1和DensSmoke_3的模型大小分別只有0.28 MB和0.33 MB,但在測試集Set1和Set2上的檢測率DR都發(fā)生了較大幅度的下降,說明降低模型復雜程度導致訓練模型對圖像特征的表達能力不足,進而使得訓練模型的識別性能下降。增大M或N的值,DenseSmoke_2和DenseSmoke_4的模型分別增加到0.63 MB和0.55 MB,但是模型大小的增加并沒有導致訓練模型的識別性能提升。這個結(jié)果的一個可能解釋是:深度卷積神經(jīng)網(wǎng)絡達到令人滿意的性能需要大量的訓練數(shù)據(jù)做支撐,而煙霧圖像數(shù)據(jù)量較小,利用深度卷積神經(jīng)網(wǎng)絡訓練容易導致過擬合問題,訓練的模型泛化能力較差,因此隨著模型參數(shù)的增加其識別能力反而下降。通過以上實驗和分析,文中提出的DenseSmoke網(wǎng)絡當設置M=3、N=4時可以達到最好的性能。
表4 消融實驗中參數(shù)M和N的設置Tab.4 Settingsof parameter M and N in ablation experiment
深度卷積神經(jīng)網(wǎng)絡達到優(yōu)異的性能需要大量的圖像數(shù)據(jù)集作為保證。煙霧圖像識別任務中存在的一個問題是煙霧圖像訓練數(shù)據(jù)的不充分,作為訓練集的Set3只包含10 712張圖片,這樣訓練的深度卷積神經(jīng)網(wǎng)絡模型泛化能力差,即訓練的模型只對少量的訓練數(shù)據(jù)產(chǎn)生過好的效果,而對驗證集和測試集效果較差。數(shù)據(jù)增強技術可以有效地緩解上述問題,它基于現(xiàn)有的少量訓練數(shù)據(jù)集通過幾何變換等操作達到擴充訓練圖像數(shù)據(jù)集的目的。本文采用水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)和中心旋轉(zhuǎn)3種數(shù)據(jù)增強技術,其中中心旋轉(zhuǎn)對原有圖像分別按照90°、180°和270°進行旋轉(zhuǎn)。SetA表示在Set3基礎上增強原有訓練集中煙霧樣本和非煙霧樣本。增強的訓練數(shù)據(jù)集詳情如表5所示。
表5 數(shù)據(jù)增強處理后的訓練數(shù)據(jù)集Tab.5 Trainingdatasetsafter dataaugmentation
圖6展示了通過數(shù)據(jù)增強技術產(chǎn)生的圖像示例。
圖6 數(shù)據(jù)增強處理產(chǎn)生的圖像示例Fig.6 Image examples generated by data augmentation
表2中的DenseSmoke_A表示提出的DenseSmoke網(wǎng)絡在增強后的數(shù)據(jù)集SetA上進行訓練的實驗結(jié)果。從實驗數(shù)據(jù)中可以看到,通過數(shù)據(jù)增強技術對訓練數(shù)據(jù)集進行擴充,DR和AR指標略有升高,同時FAR指標具有較大幅度的下降,在Set1數(shù)據(jù)集上FAR從0.96%降低到0.36%,在Set2數(shù)據(jù)集上FAR從0.49%降低到0.24%。DenseSmoke_A方法在兩個測試集上分類錯誤的圖像示例如圖7所示。稀薄的煙霧圖像和紋理不清楚的煙霧圖像容易被錯認為非煙霧,而樹葉圖像和模糊圖像容易被識別為煙霧,成為誤報的主要來源。
圖7 DenseSmoke_A錯誤分類示例Fig.7 Misclassification examples of DenseSmoke_A
特征提取是煙霧圖像識別的核心問題所在,而傳統(tǒng)的特征提取技術容易受光照條件、復雜環(huán)境等因素干擾而具有較弱的魯棒性。本文利用稠密卷積神經(jīng)網(wǎng)絡根據(jù)原始煙霧圖像自動提取特征,由于卷積層之間的稠密連接,促進了深度網(wǎng)絡結(jié)構(gòu)中從低層特征到高層特征之間的信息流通,加強了特征重利用。針對煙霧圖像數(shù)據(jù)量較少問題,采取數(shù)據(jù)增強技術提高訓練模型的識別能力。實驗結(jié)果說明了提出的方法利用更少的模型參數(shù)達到更高的準確率和更低的誤報率。