呂 鵬,曹江濤,姬曉飛
(1.遼寧石油化工大學 信息與控制工程學院,遼寧 撫順 113001;2.沈陽航空航天大學 自動化學院,遼寧 沈陽 110136)
火災是最普遍地威脅社會公共安全和人類發展的主要災害之一,去年因火災帶來的直接經濟損失高達數億元[1],能夠及時并有效地做出火災預警變得非常重要。火災檢測主要由煙霧檢測與火焰檢測兩部分構成,火災的初期階段主要以煙霧為主,其中夾雜著小火苗或者小火星;伴隨著燃燒的逐漸充分,火災達到中期階段,此時的煙霧與火焰逐漸變大,最終形成火災[1]。可見,火災中的煙霧與火焰之間始終有著密切的內在聯系。合理利用這種內在聯系,將大大提升火災檢測的準確性和適應性。早期的基于計算機視覺的火災檢測算法通常利用運動分割的方法找到視頻中的可疑區域,利用煙霧與火焰的顏色[2]、紋理[3]、形狀[4]、濃度[5]等特征進行檢測和識別。在固定場景下,小樣本數據集中具有較好的檢測效果。但是,傳統方法提取特征本身不具備高度抽象性,在現實的場景中,煙霧和火焰所表現出來的顏色、紋理、形狀等特征容易受到周圍環境的影響,表現出一定的差異性,導致檢測的準確率下降,甚至出現誤檢測,無法滿足預警的要求。
近年來,深度學習在計算機視覺領域大放異彩,研究者們將卷積神經網絡(Convolutional Neural Net-work,CNN)和循環神經網絡(Recurrent Neural Net-work,RNN)應用于目標檢測任務中并取得了較好的效果。在CNN的基礎上又有研究者提出了區域卷積神經網絡Fast R-CNN[6]、Faster R-CNN[7]、YOLO(You Only Look Once)[8]及SSD(Single Shot Multi-box Detector,SSD)[9]。在RNN基礎上提出了長短時記憶網絡(Long Short-Term Memory,LSTM)。許多研究者也將上述算法運用到火災檢測上,設計了一系列的煙霧檢測算法與火焰檢測算法。文獻[10]設計專用于煙霧檢測的網絡SmokeNet,文獻[11]提出基于顯著性深淺特征融合的卷積神經網絡進行煙霧檢測,該網絡可以突出圖像中煙霧所在區域,提高檢測的準確性。文獻[12]提出FSSD網絡,設計中值濾波與自適應直方圖進行預處理,在SSD網絡中增加注意力模塊進行煙霧檢測。文獻[13]引入先驗知識和因果判斷機制,運用YOLOv3與InceptionV4網絡進行火焰檢測。上述文獻都是將煙霧與火焰作為單幀圖像進行火災檢測,沒有關注煙霧與火焰存在的時序關系。文獻[14]將改進的GoogleNet網絡進行火焰檢測。文獻[15]運用R-CNN與LSTM進行火焰檢測,同時利用貝葉斯網絡對周圍環境的其他因素進行信息融合,提高火焰檢測的精度。至今,大多數的火災檢測算法都是基于單任務學習(Single-Task Learning,STL)設計的,只關注煙霧與火焰中的某一個目標進行算法的設計,沒有考慮到煙霧與火焰之間的關聯性,導致特征的語義信息缺失。
針對上述問題,該文提出了一種基于對抗性多任務學習(Multi-Task Learning,MTL)的火災檢測算法。首先,將RGB視頻序列作為網絡的輸入,運用CNN網絡與LSTM網絡提取空間特征和時序特征。然后,將特征空間劃分為共享特征空間和私有特征空間,共享特征空間用于提取煙霧和火焰的內在聯系中的共享特征,私有特征空間用于提取煙霧和火焰各自的特征。最終,將上述兩部分特征通過torch.concatnate方式融合,即:拼接方式,送到全連接層與分類器中,得到識別結果。該算法充分考慮了煙霧與火焰檢測的內在聯系,在多任務學習的軟參數共享框架的基礎上,將特征空間劃分為共享特征空間與私有特征空間,其目的是在保證煙霧與火焰的私有特征的獨立性與完整性的同時,通過共享特征建立兩者的聯系。并且,利用共享特征空間豐富煙霧和火焰的私有特征空間。引入正交約束使得共享特征中更少地包含私有特征,私有特征中更少地包含共享特征。在網絡訓練過程中,運用單一煙霧視頻和單一火焰視頻來訓練煙霧與火焰的私有特征空間;運用煙火共存視頻來訓練共享特征空間。在訓練共享特征空間時,運用任務判別器來判斷共享特征是否獨立于煙霧私有特征與火焰私有特征。實驗結果表明,該算法大幅提升了煙霧與火焰檢測的準確率。
針對基于單任務學習框架下的火災檢測沒有考慮煙霧與火焰內在聯系的問題,該文提出了一種基于對抗性多任務學習的火災檢測算法,算法的整體框架如圖1所示。圖1的編碼器部分的結構如圖2所示。

圖1 算法框架

圖2 編碼器結構框架
算法主要如下:
(1)特征提取與時序建模:將視頻序列中的每幀圖像運用殘差網絡(Residual network,Resnet)提取空間特征,將得到的空間特征序列送入LSTM網絡,得到煙霧的時序模型、火焰的時序模型、煙霧與火焰內在聯系的時序模型。
(2)私有特征網絡的訓練:煙霧的私有特征通過單一煙霧視頻(以煙霧為主的視頻)進行訓練;火焰的私有特征通過單一火焰視頻(以火焰為主的視頻)進行訓練。
(3)共享特征網絡的訓練:結合步驟(2)訓練好的網絡,煙霧與火焰的共享特征通過煙火共存視頻進行訓練;在訓練共享特征時引入任務判別器,運用任務判別器判斷共享特征是否獨立于煙霧與火焰的私有特征。
(4)融合識別:將得到的私有特征與共享特征通過拼接方式融合,送到全連接層與分類器,得到識別結果。
私有特征與共享特征分別通過煙霧編碼器模塊、火焰編碼器模塊與共享編碼器模塊進行提取,具體編碼器結構如圖2所示。考慮到煙霧與火焰在空間與時間的特征變化,該文采用文獻[16]提出的Resnet18網絡(去掉全連接層)進行空間特征提取,去掉全連接層的目的使ResNet18網絡成為一個特征提取網絡,僅用于提取視頻幀的空間特征,不做檢測和識別。將得到的特征序列送入長短時記憶(Long Short-Term Memory,LSTM)網絡進行時序建模。這樣得到的特征中既包含空間上的特征,又考慮了隨時間變化的特征。

圖3 Resnet18網絡(去掉全連接層)
利用Resnet18網絡提取煙霧和火焰的空間特征。由于殘差學習結構的存在,使得Resnet18網絡在學習深層特征時,不會由于網絡的加深而產生梯度消失或者梯度爆炸的情況,能夠更有效地學習到深層特征。Resnet18網絡結構如圖3所示。在運用Resnet18網絡時去掉了網絡最后的全連接層,僅使用Resnet18網絡進行空間特征提取,不用于識別。
Resnet網絡提出的殘差學習結構如圖4所示。

圖4 殘差學習結構
殘差學習結構有效解決了隨著網絡層數的增加,深層網絡存在的梯度消失或者梯度爆炸的問題。對于一個堆積層結構,當輸入為x時,學習到的特征為H(x),通過殘差學習結構學習的特征為:
F(x)=H(x)-x
(1)
其原始的學習特征為:
F(x)+x
(2)
這樣的殘差學習結構比原始特征更容易學習,當殘差為0時,此時對基層只做恒等映射,保證了網絡性能不會退化。但是,在現實情況中,殘差并不會為0,這會使得堆積層在輸入特征基礎上學習到新的特征,進而使網絡擁有更好的性能。網絡的結構如表1所示。

表1 Resnet18(去掉全連接層)網絡結構
最終,煙霧與火焰的視頻序列通過Resnet網絡提取特征,單視頻幀得到的特征維度為(512,3,3)。將得到的空間特征序列送入LSTM中進行時序建模。
LSTM網絡常被廣泛應用于時序信息的數據建模之中,它可以高效地學習特征序列之間存在的關系。時序關系對于火災視頻而言,是一個很重要的因素。它能夠反映火災隨時間的變化規律。基于此,該文將LSTM網絡用于火災視頻的時序建模。
如圖5所示,LSTM網絡由LSTM單元模塊構成,每個單元模塊保留一個單元狀態,該狀態保留的是上一個單元模塊中的信息,所以,LSTM網絡可以學習到時間序列關系。其中,遺忘門ft和輸入門it共同控制來自上一個單元模塊的信息和隱藏狀態的信息,用于生成新的信息保存在當前狀態Ct中。由公式(3)~公式(6)表示:
ft=σ(Wf*[ht-1,xt]+bf)
(3)
it=σ(Wi*[ht-1,xt]+bt)
(4)
(5)

(6)
式中,σ為sigmoid函數;Wf,Wi,Wc依次為遺忘門,輸入門,當前時刻的LSTM單元狀態的權重;bf,bi,bc依次為遺忘門,輸入門,當前時刻的LSTM單元狀態的偏置。通過網絡訓練,生成單元的隱藏狀態ht,如式(7)、(8)所示:
Ot=σ(W0*[ht-1,xt]+b0)
(7)
ht=Ot*tanh(Ct)
(8)
式中,Ot表示輸出門;W0,b0依次表示輸出門的權重和偏置。然后,單元狀態和隱藏狀態傳遞給下一個LSTM單元模塊,形成長期依賴的時序關系。

圖5 LSTM模塊結構
對上節中運用Resnet18(去掉全連接層)得到的空間特征,將其通道展平,變為4 608的一維張量。按照視頻序列排好,送入LSTM網絡中進行訓練。選擇兩個連續的LSTM模塊,每個LSTM模塊中有100個神經元。最終得到的特征維度為(128,100)。為了防止LSTM網絡在訓練中產生過擬合的情況,引入Dropout避免過擬合的發生。
火災檢測主要由煙霧檢測與火焰檢測兩部分構成,這兩部分也是文中算法框架中重要的組成部分。針對煙霧的私有特征訓練,將單一煙霧視頻的視頻幀作為輸入,分辨率為224×224,依次通過Resnet網絡(去掉全連接層)與LSTM網絡,將得到的特征向量送入softmax,得到識別結果。針對火焰的私有特征訓練,將單一火焰視頻的視頻幀作為輸入,其他的框架與煙霧的相同。在訓練好煙霧與火焰的私有特征網絡后,開始對煙霧與火焰內在聯系的共享特征網絡進行訓練。煙霧檢測和火焰檢測作為火災檢測的兩個任務,兩個任務之間存在很強的關聯性。所以,該文利用煙霧與火焰的關聯性,提取其共享特征,目的是利用共享特征豐富煙霧與火焰私有特征的語義信息。
為了確保共享特征的獨立性,引入正交約束懲罰冗余特征,其作用使共享特征中盡可能少地包含私有特征,私有特征中盡可能少地包含共享特征,呈現正交化。正交約束L1、L2如公式(9)、(10)所示。

(9)

(10)
式中,SF表示共享特征;PS表示煙霧私有特征;PF表示火焰私有特征。在訓練共享特征網絡時,將煙火共存視頻的視頻幀作為輸入,分辨率為224×224,依次通過Resnet網絡(去掉全連接層)與LSTM網絡,添加一個任務判別器,用于判斷特征來源哪個任務,公式如(11)所示。
D(SF,θD)=softmax(b+USF)
(11)
式中,D(SF,θD)表示任務判別器;U表示任務判別器的權重;b表示任務判別器的偏置;softmax(·)函數用于映射共享特征的概率。在訓練過程中,Shared encoding生成共享特征,阻礙任務判別器對任務來源的判斷,確保共享特征的獨立性。同時,任務判別器盡可能去判斷當前特征是來自于哪個任務。任務判別器的損失函數如公式(12)所示:

(12)

該文采用的是torch框架中的torch.concatnate的方式,即:拼接方式,將共享特征與私有特征進行融合。拼接方式是在保證原始特征圖的高度H、寬度W及通道數C都不改變的情況下進行的。通過這種方法將特征聯合到一起,其本質是豐富用于描述目標特征的語義信息。并且,拼接并不會丟失原始的特征信息。拼接時,只需要保證拼接維度的一致性即可使用。
torch.concatnate拼接方式分為三種,即:axis=0,1,2。該文采用的拼接方式為axis=0,即:在通道方向進行拼接,這樣的拼接方式可以保證共享特征與私有特征的完整性,能夠更好地豐富特征的語義信息。得到拼接后的特征維度為(256,100)。通過上述方法,將得到的共享特征與私有特征通過concat方式融合,送入全連接層與分類器,得到識別結果。
如圖6所示,使用的視頻數據來源于實驗室自行拍攝和網絡公開的視頻,視頻幀的分辨率統一為224×224,以滿足Resnet網絡的輸入。火災視頻數據共15個視頻。前兩行的10個視頻為訓練集;第三行5個視頻為測試集。使用labelimg軟件進行手工標注[17]。

圖6 火災視頻數據
實驗是在window10 64 bit系統下進行,Relu為激活函數,Adam為優化方法,batch_size=128,其余均保持默認設置。該文在訓練和測試中使用的軟件和硬件配置如表2所示。

表2 軟件與硬件配置
實驗的評價指標為識別準確率和誤識別率,識別準確率和誤識別率的計算方法分別如公式(13)和公式(14)所示。

(13)
式中,Accuracy表示識別準確率,TP、FP、TN、FN依次表示被模型預測為正的正樣本數量,被模型預測為正的負樣本數量,被模型預測為負的負樣本數量,被模型預測為負的正樣本數量。

(14)
式中,FAR表示誤識別率,NFA、NIRA依次表示被錯誤預測的樣本數量;類間樣本總數量。為了驗證本文提出的多任務學習算法的有效性,將基于單任務學習得到的煙霧檢測和火焰檢測結果分別本文提出算法得到的檢測結果進行對比。上述單任務的網絡框架為圖2中的編碼器框架。對比結果如表3、表4所示。

表3 煙霧檢測的單任務學習與多任務學習的結果對比

表4 火焰檢測的單任務學習與多任務學習的結果對比
從表3、表4可以看出,對比煙霧檢測、火焰檢測的單任務學習算法,多任務學習的火災檢測的準確率都有了一定的提高。識別準確率方面,在煙霧檢測中,多任務學習算法識別準確率比單任務學習算法高2.4%。在火焰檢測中,多任務學習算法的識別準確率比單任務學習算法高1.7%。誤識別方面。在煙霧檢測中,多任務學習算法的誤識別率比單任務學習算法低4.9%。在火焰檢測中,多任務學習算法的誤識別率比單任務學習算法低7.5%。通過實驗可以說明,多任務學習算法比單任務學習算法的識別準確率更高,誤識別率更低,進而說明算法的有效性。在某些特定的情況下,算法產生了誤識別。例如:少量的白云和水霧在某些情況下會被識別為煙霧,主要原因為白云和水霧在在某些情況下會呈現出與火災煙霧相同或者相近的特征。當煙霧與火焰混在一起時,火焰的亮紅色使薄霧呈現為紅色,少數情況下會將煙霧誤識別為火焰,主要原因為煙霧特征不足導致的誤識別;海平面上太陽的余暉,少數情況下會被誤識別為火焰,主要原因為在某些情況下,太陽余暉折射在波動的海平面上,與火災中火焰的特征相近,少數情況下會被誤識別為火焰。
為了更好地驗證文中算法的有效性,同其他文獻中的煙霧檢測、火焰檢測算法進行對比與分析,結果如表5、表6所示。由于火災數據庫尚未統一,對比算法中使用的數據庫與文中所使用的數據庫略有差別。
在煙霧檢測方面,從表5中可以看出,提出的多任務學習方法,相比文獻[10]提出的SmokeNet網絡、文獻[11]的顯著性視頻煙霧檢測框架、文獻[12]的FSSD網絡,取得了更好的識別率。該文提出的算法優勢在于考慮到煙霧在空間域的特征變化,更加符合真實的火災場景,煙霧的變化規律。然而,文獻[10-12]都是針對煙霧的空間特征進行檢測,并未考慮到煙霧在時間域上的特征變化。特別地,文獻[10]在算法中引入注意力機制,這使得文獻[10]的誤識別率略低于文中算法。

表5 多任務學習煙霧檢測對比其他算法結果
在火焰檢測方面,從表6可以看出,提出的多任務學習方法,相比文獻[13]的Densenet121網絡、文獻[14]的改進GoogleNet,取得了更高的識別率及更低的誤識別率。文獻[13-14]都是針對火焰的空間特征進行檢測,并未考慮到火焰隨時間的特征變化情況。文獻[14]的Bayesian Network采用Fast R-CNN結合LSTM網絡進行火焰檢測,在此基礎上還結合了探測器針對檢測環境的溫度、濕度等變化情況,運用環境因素變化結合視頻目標檢測算法,使得文獻[14]在誤識別率低于提出的算法。

表6 多任務學習火焰檢測對比其他算法結果
針對大多數的火災檢測算法只關注煙霧或火焰兩者間的某一個任務來設計檢測算法的問題,考慮到煙霧和火焰的內在聯系,設計了一種基于多任務學習的火災檢測算法。將特征空間劃分為共享特征空間和私有特征空間兩部分,利用共享特征空間可以有效獲取煙霧和火焰之間的共享特征,私有特征空間可以有效獲取煙霧和火焰各自的私有特征,私有特征可以通過共享特征來豐富自身的語義信息。實驗結果證明了多任務學習應用于火災檢測的可行性,檢測的準確率有了大幅度提高。在未來工作中,將通過完善火災數據庫的種類,設計更加有效的多任務學習框架,進一步區分上述的實際情況,提高模型的魯棒性及泛化能力。