李 宏
(西南交通大學(xué)計(jì)算機(jī)與人工智能學(xué)院,成都 610000)
世界各地每天都會(huì)發(fā)生數(shù)百起火災(zāi),嚴(yán)重影響到人類的生命和財(cái)產(chǎn)安全。因此,對(duì)煙火的實(shí)時(shí)監(jiān)測(cè)變得尤其重要,及時(shí)檢測(cè)出煙火能在很大程度上減少火災(zāi)帶來的損失。視頻相對(duì)靜態(tài)圖像包含更加豐富和復(fù)雜的信息,同時(shí)隨著監(jiān)控?cái)z像頭的普及,視頻數(shù)據(jù)也越來越容易獲取到。相對(duì)于靜態(tài)圖像的煙火檢測(cè),我們能夠利用視頻里煙火的動(dòng)態(tài)特性來降低煙火檢測(cè)的誤識(shí)別。
傳統(tǒng)的基于視頻的煙火檢測(cè)方法主要是利用一些運(yùn)動(dòng)檢測(cè)方法來提取出煙火的疑似區(qū)域,然后訓(xùn)練一個(gè)機(jī)器學(xué)習(xí)分類器或者深度卷積神經(jīng)網(wǎng)絡(luò)來判斷該候選區(qū)域中是否出現(xiàn)煙火。這類方法存在以下問題:①在復(fù)雜的場(chǎng)景中,通過運(yùn)動(dòng)檢測(cè)方法提取出來的區(qū)域會(huì)變得特別多,這導(dǎo)致如果對(duì)每一個(gè)候選區(qū)域都進(jìn)行識(shí)別判斷,將很難做到實(shí)時(shí)處理;②跟煙火外形相似的物體很容易被誤識(shí)別成煙火,而這些對(duì)于火災(zāi)防控尤其重要。在本文的工作中,使用SSD檢測(cè)模型和光流法來解決上述存在的問題。
SSD 在目標(biāo)檢測(cè)中得到了廣泛的應(yīng)用,多尺度和一階段的檢測(cè)框架使得其能夠?qū)崿F(xiàn)高準(zhǔn)確率和高效率。與傳統(tǒng)方法使用運(yùn)動(dòng)檢測(cè)方法得到煙火候選區(qū)域不同的是,本文首先通過SSD 檢測(cè)網(wǎng)絡(luò)檢測(cè)出煙火候選框,然后基于熱空氣向上流動(dòng)的理論,利用相鄰幀的煙火候選框和光流法來進(jìn)一步判斷該候選框是否存在煙火。與其他方法相比,本文提出的檢測(cè)框架能夠取得更好的效果,同時(shí)有著更快的檢測(cè)速度。
基于深度學(xué)習(xí)的煙火檢測(cè)算法最先是基于簡(jiǎn)單的卷積網(wǎng)絡(luò)實(shí)現(xiàn)煙火的分類識(shí)別。Khan等權(quán)衡了檢測(cè)的準(zhǔn)確性和效率,采用VGG-16卷積神經(jīng)網(wǎng)絡(luò)作為Baseline 進(jìn)行煙霧檢測(cè),實(shí)驗(yàn)表明即使輕量級(jí)的卷積神經(jīng)網(wǎng)絡(luò)在煙火檢測(cè)上的表現(xiàn)也好于傳統(tǒng)方法。Yin 等將傳統(tǒng)的卷積網(wǎng)絡(luò)層替換為歸一化層和卷積層,加快模型收斂的速度,實(shí)驗(yàn)表明卷積網(wǎng)絡(luò)并不需要特別復(fù)雜的處理,也能在煙火檢測(cè)上得到高準(zhǔn)確率。Valikhujaev等將空洞卷積加入傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中,這可以在計(jì)算量相當(dāng)?shù)那闆r下提供更大的感受野,從而增加煙火檢測(cè)模型的泛化性。Khan 等為了消除含霧場(chǎng)景下的煙霧誤檢,使用EfficientNet 卷積網(wǎng)絡(luò)進(jìn)行煙火識(shí)別,網(wǎng)絡(luò)模型訓(xùn)練的數(shù)據(jù)類別共包含四類:smoke、non-smoke、smoke with fog 和non-smoke with fog,這能夠極大地減少含霧場(chǎng)景下的誤識(shí)別率。
直接將整個(gè)圖像輸入到分類網(wǎng)絡(luò)中會(huì)使得檢測(cè)準(zhǔn)確率較低,尤其是在圖像分辨率很高的時(shí)候,而煙火只占圖像的小部分。面對(duì)這種情況,現(xiàn)有的方法大多是基于煙火的動(dòng)態(tài)特性,使用運(yùn)動(dòng)檢測(cè)算法提取出候選區(qū)域,然后將候選區(qū)域輸入到CNN 網(wǎng)絡(luò)中進(jìn)行分類。Gagliardi等提出了一個(gè)基于傳統(tǒng)的卡爾曼濾波的運(yùn)動(dòng)特征檢測(cè)器,通過生成移動(dòng)物體的邊界框來自動(dòng)選擇圖像中感興趣的特定區(qū)域,最后利用一個(gè)輕量級(jí)的淺層卷積網(wǎng)絡(luò)來驗(yàn)證該區(qū)域中煙霧的實(shí)際存在。Cao等利用ViBe算法提取出煙火候選區(qū)域,然后通過卷積網(wǎng)絡(luò)和雙向的LSTM 網(wǎng)絡(luò)來提取煙火候選區(qū)域的時(shí)空特征,雙向即從前往后和從后往前,此外還采用注意力機(jī)制來強(qiáng)調(diào)時(shí)域的運(yùn)動(dòng)信息,找到對(duì)煙霧識(shí)別有更多貢獻(xiàn)的視頻幀。
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法主要可以分為兩類:一階段檢測(cè)器和兩階段檢測(cè)器。經(jīng)典的一階段檢測(cè)器有SSD和Yolo 系列等,僅用一個(gè)深度卷積網(wǎng)絡(luò)完成候選區(qū)域的提取和識(shí)別檢測(cè)。相對(duì)兩階段檢測(cè)器,一階段檢測(cè)器通常更快。經(jīng)典的兩階段檢測(cè)器有Faster RCNN和Cascade R-CNN等,這一類方法把檢測(cè)問題分為兩階段:候選區(qū)域提取階段和檢測(cè)階段,候選區(qū)域提取階段主要是生成目標(biāo)可能存在的一些區(qū)域,然后在檢測(cè)階段,候選區(qū)域的位置和類別將被進(jìn)一步細(xì)化。與一階段檢測(cè)器相比,二階段的檢測(cè)器能夠?qū)崿F(xiàn)更好的檢測(cè)效果,然而檢測(cè)速度通常慢很多。
本文通過在自己構(gòu)建的數(shù)據(jù)集上分別測(cè)試了SSD,Yolov3,F(xiàn)aster R-CNN 的表現(xiàn),最終權(quán)衡了檢測(cè)速度和精準(zhǔn)度,選擇了效率更高的SSD作為本文的baseline,更多實(shí)驗(yàn)細(xì)節(jié)見第3節(jié)實(shí)驗(yàn)部分。通過采用SSD作為目標(biāo)檢測(cè)網(wǎng)絡(luò),得到煙火的候選框,然后提取相鄰幀的煙火候選框的光流,進(jìn)一步判斷該候選框中是否存在煙火。
本文采用SSD 檢測(cè)網(wǎng)絡(luò)進(jìn)行煙火候選框的提取。不同于Faster R-CNN 只用最后一層進(jìn)行檢測(cè),SSD 使用了多層的特征圖進(jìn)行檢測(cè),能夠更好地捕獲到多尺度目標(biāo)信息。因?yàn)殄^點(diǎn)(anchor)被應(yīng)用到不同尺度的特征圖上,所以SSD 在不同層的特征圖上設(shè)計(jì)了不同的錨點(diǎn)大小,能夠很好地處理同一個(gè)目標(biāo)在各種場(chǎng)景下有著不同的大小尺寸問題,這也提升了檢測(cè)的召回率。此外,SSD 引入了一些額外的數(shù)據(jù)增強(qiáng)技術(shù)和困難負(fù)樣本挖掘技術(shù),使得SSD 在一些基準(zhǔn)數(shù)據(jù)集上能夠得到很好的檢測(cè)效果。
SSD 將總體的目標(biāo)損失函數(shù)定義為置信度損失(conf)和定位損失(loc)的加權(quán)和,見公式(1):
其中是匹配到真值框(ground truth)的先驗(yàn)框數(shù)量,則用于調(diào)整置信度和定位損失之間的比例。
置信度損失是在多類別置信度上的softmax損失,見公式(2),其中表示先驗(yàn)框的序號(hào),表示真值框的序號(hào),表示類別的序號(hào)。
圖1 算法整體結(jié)構(gòu)圖
定位損失是典型的1 損失,見公式(3),其中為預(yù)測(cè)框,為真值框,使用1 損失是為了防止在訓(xùn)練早期出現(xiàn)梯度爆炸。
通過SSD 檢測(cè)網(wǎng)絡(luò)提取得到的煙火候選框通常存在一些誤檢情況,如車燈,紅色的物體,云霧等,這類物體跟煙火有著相似的外觀和形狀。為了盡可能消除這些誤檢,本文基于煙火的動(dòng)態(tài)特性和熱空氣向上流動(dòng)的理論,計(jì)算視頻中相鄰幀的煙火候選框的光流,統(tǒng)計(jì)候選框中每個(gè)像素點(diǎn)的位移向量,進(jìn)而判斷該候選框中存在的物體是否為煙火。
光流法的輸入為連續(xù)兩張×的灰度圖像,輸出為一張××2 的光流場(chǎng),其中每個(gè)像素值為輸入幀上該像素在方向和方向的位移。
圖2 光流場(chǎng)的表現(xiàn)形式
本文采用的光流計(jì)算方法來自O(shè)penCV SDK提供的的DeepFlow,該方法能夠很好地計(jì)算相鄰幀的光流信息。使用該方法計(jì)算出相鄰幀的煙火候選框的光流運(yùn)動(dòng)方向來進(jìn)行輔助檢測(cè),能夠極大減少一些誤檢情況的發(fā)生,如車燈、旗子、云霧等。
由于公開的煙火數(shù)據(jù)集并沒有進(jìn)行目標(biāo)框的標(biāo)注,所以本文將構(gòu)建一個(gè)能夠用于目標(biāo)檢測(cè)網(wǎng)絡(luò)訓(xùn)練測(cè)試的數(shù)據(jù)集,其中數(shù)據(jù)來源于互聯(lián)網(wǎng)和一些公開數(shù)據(jù)集。本文的數(shù)據(jù)集共分為兩類:圖像和視頻,其中圖像用于目標(biāo)檢測(cè)網(wǎng)絡(luò)的訓(xùn)練和測(cè)試,視頻則用于本文算法檢測(cè)效果的驗(yàn)證分析。圖像數(shù)據(jù)集共包含19532 張圖片,將這些圖片使用標(biāo)注工具進(jìn)行煙火兩類目標(biāo)框標(biāo)注后按照8∶2 的比例劃分為訓(xùn)練集和測(cè)試集。視頻數(shù)據(jù)集有6 個(gè)視頻,包含2 個(gè)煙火視頻和4個(gè)容易被誤識(shí)別成煙火的非煙火視頻。
在本文的實(shí)驗(yàn)中采用平均精度均值(mean average precision,mAP)作為評(píng)價(jià)標(biāo)準(zhǔn),的定義首先是被PASCAL VOC 數(shù)據(jù)集提出的。針對(duì)目標(biāo)檢測(cè),本文使用交互比(intersection over union,IoU)來判斷預(yù)測(cè)候選框的準(zhǔn)確性,通過設(shè)定閾值為0.5 來判斷正負(fù)樣本。精準(zhǔn)度()是預(yù)測(cè)結(jié)果中正確預(yù)測(cè)的比例,召回率()是所有正樣本中預(yù)測(cè)對(duì)的比例。在不同的recall之下的precision得到一條曲線,即曲線,根據(jù)這個(gè)曲線得到各個(gè)類別的,然后對(duì)所有的類別取平均得到。此外,模型的推理速度也是一個(gè)很重要的平均指標(biāo),即每秒能夠檢測(cè)多少?gòu)垐D片。
本實(shí)驗(yàn)在Linux 16.04系統(tǒng)上進(jìn)行,使用了4塊TITAN XP 顯卡進(jìn)行目標(biāo)檢測(cè)的訓(xùn)練和測(cè)試。在目標(biāo)檢測(cè)網(wǎng)絡(luò)對(duì)比實(shí)驗(yàn)中,SSD,Yolov3,F(xiàn)aster R-CNN 設(shè)置相同的參數(shù),批尺寸取32,初始學(xué)習(xí)率取0.02,權(quán)重衰減因子取0.0001,都是用SGD 訓(xùn)練策略。而對(duì)于主干網(wǎng)絡(luò),SSD 采用VGG-16,Yolov3 采用DarkNet-53,F(xiàn)aster RCNN 采用ResNet-101。三者的主干網(wǎng)絡(luò)都加載在ImageNet上已經(jīng)預(yù)訓(xùn)練的模型參數(shù)進(jìn)行微調(diào)。
本文將SSD,Yolov3,F(xiàn)aster R-CNN 在構(gòu)建的圖像測(cè)試集上進(jìn)行了實(shí)驗(yàn)對(duì)比,實(shí)驗(yàn)結(jié)果如表1所示。其中加粗表示效果最好,加下劃線表示效果次之。通過實(shí)驗(yàn)結(jié)果可以看出,SSD 跟Faster RCNN 有著幾乎相近的檢測(cè)精準(zhǔn)度,同時(shí)還有著三者最快的檢測(cè)速度。這可能與本文的檢測(cè)目標(biāo)和SSD 的檢測(cè)網(wǎng)絡(luò)有關(guān),因?yàn)闊熁鹪诓煌瑘?chǎng)景下有著不同大小的尺度, 而SSD 專為檢測(cè)多尺度特征而生。同時(shí),SSD采用輕量級(jí)的VGG-16作為主干網(wǎng)絡(luò)也帶來了更快的檢測(cè)速度。
表1 不同檢測(cè)網(wǎng)絡(luò)的實(shí)驗(yàn)結(jié)果對(duì)比
權(quán)衡檢測(cè)模型的精準(zhǔn)度和速度,本文選用SSD 檢測(cè)網(wǎng)絡(luò)繼續(xù)在視頻數(shù)據(jù)集上進(jìn)行測(cè)試。對(duì)視頻進(jìn)行抽幀,使用SSD 檢測(cè)模型檢測(cè)視頻的每一幀,從檢測(cè)結(jié)果可以看出,SSD 仍存在不少誤檢,尤其是外形跟煙火相似的物體。如圖3,車燈或者一些光照很強(qiáng)的物體容易被誤識(shí)別為煙或火,為了消除這類誤檢,本文使用光流法計(jì)算相鄰幀的光流。通過觀察煙火的光流運(yùn)動(dòng)方向和非煙火的光流運(yùn)動(dòng)方向,本文得出煙火的光流運(yùn)動(dòng)方向通常是向上,而其他容易被誤識(shí)別成煙火的物體的光流方向通常是向下或者運(yùn)動(dòng)緩慢。結(jié)合光流法,本文在視頻數(shù)據(jù)集上繼續(xù)測(cè)試,實(shí)驗(yàn)結(jié)果見表2。從表2 可以看出,利用光流法可以極大地消除誤檢。
圖3 測(cè)試結(jié)果實(shí)例(從左至右分別為誤檢情況和其對(duì)應(yīng)的光流場(chǎng))
表2 煙火檢測(cè)算法在視頻上的表現(xiàn)
本文提出了基于目標(biāo)檢測(cè)網(wǎng)絡(luò)SSD 和光流法的煙火檢測(cè)方法,并在構(gòu)建的圖像和視頻數(shù)據(jù)集上進(jìn)行該方法的實(shí)驗(yàn),實(shí)驗(yàn)表明該方法可以實(shí)現(xiàn)高準(zhǔn)確率和高效率,同時(shí)能夠極大減少誤檢數(shù)量。該方法可用做實(shí)際火災(zāi)防控工作的智能化解決方式,能夠?qū)崟r(shí)識(shí)別出煙火并且定位到其發(fā)生的具體位置。