王殿偉,趙文博,房 杰,許志杰
(1.西安郵電大學(xué) 通信與信息工程學(xué)院,西安 710121; 2.哈德斯菲爾德大學(xué) 計算機與工程學(xué)院,哈德斯菲爾德HD1 3DH,英國)
煙霧是火災(zāi)的主要伴生現(xiàn)象,具有更明顯的可觀測性[1],因此開展煙霧智能檢測對消防減災(zāi)具有重要的意義。無人機具有機動性強、可視范圍廣和行進速度快等特點[2-3],在煙霧檢測領(lǐng)域中有明顯的優(yōu)勢。因此,開展無人機航拍視頻煙霧檢測技術(shù)研究對于消防減災(zāi)具有重要的意義,已經(jīng)成為計算機視覺領(lǐng)域的一個新的研究熱點[4]。
傳統(tǒng)煙霧檢測算法大多是圍繞著手工提取各種煙霧特征進行研究,檢測精度不高。而卷積神經(jīng)網(wǎng)絡(luò)因具有強大的特征表征能力,已被廣泛應(yīng)用于煙霧檢測領(lǐng)域。文獻[5-6]使用YOLO系列算法進行煙霧檢測,但在多類場景下準(zhǔn)確率不高。文獻[7]提出了煙霧檢測和分割框架;文獻[8]提出了兩級煙霧檢測算法,都提升了算法精度,但增加了計算量,導(dǎo)致算法檢測速度慢。文獻[9]提出一種新的注意機制模塊,但訓(xùn)練數(shù)據(jù)過少導(dǎo)致算法性能不佳。為此,文獻[10-11]利用人工合成煙霧圖像解決缺乏訓(xùn)練數(shù)據(jù)的問題,但人工合成的煙霧圖像真實性差導(dǎo)致算法魯棒性低。文獻[12]提出火焰和煙霧統(tǒng)一檢測的方法;文獻[13]提出基于深度可分離卷積神經(jīng)網(wǎng)絡(luò)的煙霧檢測算法;文獻[14]提出YdUaVa顏色模型和改進的MobileNetV3網(wǎng)絡(luò)結(jié)構(gòu),但在多類場景下煙霧檢測效果都不好。文獻[15]提出的YOLOv4算法和文獻[16]提出的改進的YOLOv5算法都對煙霧檢測算法輕量化做出了貢獻;文獻[17]提出的SparseR-CNN算法在應(yīng)用于煙霧檢測領(lǐng)域時明顯提升了準(zhǔn)確率,但算法實時性不高。文獻[18]提出YOLOx目標(biāo)檢測算法,在YOLOv3[19]的基礎(chǔ)上新增了Decoupled Head和Anchor-free等結(jié)構(gòu),算法精確度顯著提升,但在應(yīng)用于無人機視角下的多類場景時,檢測準(zhǔn)確率降低。
針對以上算法出現(xiàn)的訓(xùn)練數(shù)據(jù)少、場景種類單一和檢測精度低等問題,本文建立了一個多類場景下的無人機航拍煙霧數(shù)據(jù)集(UAV smoke dataset,USD),從注意力機制、雙向特征融合模塊和損失函數(shù)3個角度出發(fā)改進YOLOx算法,提升了算法在面對多類場景下無人機航拍視頻的煙霧檢測精度,并具有實時檢測的能力。
現(xiàn)有的無人機視頻煙霧檢測算法使用的訓(xùn)練數(shù)據(jù)集多為普通視角下的單一場景煙霧數(shù)據(jù)集,這導(dǎo)致訓(xùn)練出的網(wǎng)絡(luò)模型不能適用于多類場景下的無人機煙霧檢測任務(wù)。目前最常使用的公共數(shù)據(jù)集有兩個:1)上海師范大學(xué)袁非牛團隊公布的煙霧圖像和非煙霧圖像數(shù)據(jù)集VSD[20],該數(shù)據(jù)集包含了6 323張各種顏色的煙霧圖像,但該數(shù)據(jù)集包含的煙霧圖像質(zhì)量較差,分辨率低,且煙霧目標(biāo)在整幅圖像中占據(jù)了較大的面積,對網(wǎng)絡(luò)模型的檢測性能有很大影響;2)韓國啟明大學(xué)計算機視覺與模式識別實驗室(CVPR)聯(lián)合美國NIST火災(zāi)研究實驗室以及Bilkent信號處理小組公開的煙霧數(shù)據(jù)集KMU[21],其中共包含了11段有煙視頻和9段非煙霧視頻,加入了大量白色燈光和自然天氣下的云等負(fù)樣本信息,但該數(shù)據(jù)集的視頻分辨率較低,且只包含森林和室內(nèi)兩種場景,很難訓(xùn)練出具有較強泛化能力的網(wǎng)絡(luò)。
數(shù)據(jù)集的建立應(yīng)包含圖像信息多和場景覆蓋性廣兩個方面,因此采用自己拍攝和網(wǎng)絡(luò)收集等方法,創(chuàng)建了一個新的多類場景下的無人機航拍煙霧數(shù)據(jù)集,該數(shù)據(jù)集包含了81個無人機煙霧視頻,對這81個視頻進行每隔100幀提取一次圖像,共提取30 000張無人機煙霧圖像,并使用LabelImg軟件對30 000張圖像進行標(biāo)注,標(biāo)注方法為最大外接矩形框標(biāo)注。數(shù)據(jù)集中所有視頻都是由無人機在高空50~500 m之間拍攝完成,包含了森林、農(nóng)場、居民樓、學(xué)校、工廠和海岸等19種場景,且視頻的分辨率大小都為1 280×720,煙霧區(qū)域更加清晰,見表1。部分場景的煙霧圖像見圖1。
表1 USD數(shù)據(jù)集中的場景類別
由表1可以看出,在USD煙霧數(shù)據(jù)集中,森林、居民樓和工廠3個場景的圖像占比最多,十分符合現(xiàn)實情況。相比于普通視角下的煙霧數(shù)據(jù)集,本文自建的USD煙霧數(shù)據(jù)集,包含場景多、數(shù)量多、分辨率高,圖像中的煙霧形狀更加多變,煙霧特征也更加豐富,與算法的應(yīng)用場景非常貼切。
為了更好地實現(xiàn)在多類場景下對無人機航拍視頻的煙霧檢測,設(shè)計了一個基于YOLOx-s的輕量級的端到端煙霧檢測網(wǎng)絡(luò),采用改進的注意力機制模塊和多尺度特征融合模塊降低場景信息對煙霧檢測準(zhǔn)確率的影響,并提升網(wǎng)絡(luò)對小目標(biāo)煙霧的檢測能力。網(wǎng)絡(luò)結(jié)構(gòu)見圖2。
圖2 本文算法網(wǎng)絡(luò)模型
由圖2可知,本文的煙霧檢測網(wǎng)絡(luò)主要由4部分組成:1)特征提取網(wǎng)絡(luò);2)注意力機制模塊;3)雙向特征融合模塊(bidirectional feature fusion module);4)預(yù)測網(wǎng)絡(luò)。特征提取網(wǎng)絡(luò)由4個CBS單元(卷積層+BN層+Silu激活函數(shù))、1個SPP單元、1個Focus單元和3個CSP結(jié)構(gòu)組成。預(yù)測網(wǎng)絡(luò)由Decoupled Head模塊以及Transpose結(jié)構(gòu)組成。為了提高本算法對小目標(biāo)煙霧的檢測能力,本文提出的雙向特征融合模塊在多尺度特征融合的基礎(chǔ)上加入了一條額外支路,該支路能使FPN結(jié)構(gòu)學(xué)習(xí)到更多的小目標(biāo)煙霧特征,從而增強網(wǎng)絡(luò)對小目標(biāo)煙霧的學(xué)習(xí)能力。為了解決多類場景下算法檢測準(zhǔn)確率低的問題,引入改進的煙霧協(xié)調(diào)注意力(smoke coordinate attention,SCA)[22],該模塊是一種適用于輕量級網(wǎng)絡(luò)的煙霧注意力機制,能使網(wǎng)絡(luò)更加關(guān)注特征圖中的煙霧區(qū)域,并對不同通道的煙霧特征以及不同大小的煙霧特征進行重新加權(quán)計算。最后本文引入了Focal-EIOU[23]損失函數(shù),解決了正負(fù)樣本不平衡的問題以及預(yù)測框和真實框不相交時無法反映兩個框的距離遠近以及重合度大小的問題。
2.1.1 注意力機制模塊
鑒于多類場景下無人機煙霧視頻圖像的復(fù)雜性,本文增加改進的注意力機制模塊來提升算法對煙霧特征的提取能力,其結(jié)構(gòu)見圖3(a)。首先,利用2個不同方向的全局平均池化生成包含特征通道信息的描述符,經(jīng)過1個拼接操作和1個共享的卷積層,再經(jīng)過1個批量歸一化處理,得到的特征圖最終經(jīng)過1個全連接層和Sigmoid激活函數(shù)。在該注意力機制模塊中,本文將煙霧的位置信息嵌入到通道注意力中,并且沿著高度和寬度2個方向生成一對特征圖,分別為方向感知圖和位置感知圖,最終將這一對特征圖加權(quán)融合到原始輸入特征圖中,其加權(quán)公式為
(1)
(2)
(3)
式中:σ為Sigmoid函數(shù);Fh和Fw分別為1×1的卷積變換;fh和fw為輸入圖像在高度和寬度上生成的注意力特征圖,注意力生成公式為
(4)
式中:f為生成的注意力特征圖;δ為非線性激活函數(shù);xc為大小為H×W×C的輸入特征圖;F1為批量歸一化操作。
2.1.2 雙向特征融合模塊
在YOLOx-s的網(wǎng)絡(luò)中,特征融合模塊采用的是FPN+PAN[24]結(jié)構(gòu),該結(jié)構(gòu)融合了80×80、40×40和20×20三種不同大小的特征圖。為了增強網(wǎng)絡(luò)對煙霧小目標(biāo)的檢測能力,適應(yīng)無人機視角下火災(zāi)早期煙霧主要為小目標(biāo)的實際情況,受BiFPN[25]結(jié)構(gòu)的啟發(fā),本文設(shè)計了一個額外的融合支路加入到多尺度特征融合模塊,其結(jié)構(gòu)見圖3(b)。雙向特征融合加權(quán)計算為
(5)
(6)
在雙向特征融合模塊中,本文在PAN結(jié)構(gòu)的N4層額外加入了原始的40×40大小的特征圖,新加入的特征與P4層的輸出和N3層經(jīng)過下采樣得到的特征共同輸入到N4層,隨后再經(jīng)過下采樣輸入到N5層??梢钥闯?這使得N5層相比原來獲得了更多的小目標(biāo)特征,并且新加入的注意力機制模塊將不同層和不同大小的煙霧特征進行重新分配權(quán)重,再將得到的煙霧特征連接到一起,最終輸入到Decoupled Head模塊進行分類和檢測。
2.1.3 損失函數(shù)
在無人機拍攝的煙霧視頻圖像中,煙霧所占圖像比例遠小于其他負(fù)樣本信息所占的比例,這就造成了算法訓(xùn)練過程中存在正負(fù)樣本不平衡的問題。為此,本文引入LFocal-EIOU[23]損失函數(shù),其中LFocal損失函數(shù)可以解決訓(xùn)練過程中正負(fù)樣本不平衡的問題。同時,在煙霧圖像中,煙霧的形狀多變且不規(guī)則,可能導(dǎo)致模型的真實框和預(yù)測框不相交的問題,為了解決這一問題,本文在計算IOU[26]損失時引入LEIOU損失函數(shù)。該損失函數(shù)考慮了預(yù)測框和真實框的重疊面積、中心點距離、長寬邊長真實差,可以解決預(yù)測框和真實框不相交時無法反映兩個框的距離遠近以及重合度大小的問題。LFocal-EIOU損失函數(shù)計算步驟為
(7)
式中:γ為控制異常值抑制程度的參數(shù);IIOU為真實框和預(yù)測框的交并比;LIOU為IOU損失;LEIOU為EIOU損失,其中IIOU和LEIOU損失計算為
(8)
LEIOU=LIOU+Ldis+Lasp
(9)
(10)
式中:A和B分別為預(yù)測框和真實框;LIOU、Ldis和Lasp分別為IIOU損失、中心距離損失和寬高損失;ρ是預(yù)測框和真實框中心點間的歐氏距離;b和bgt分別為預(yù)測框和真實框的中心點;w和wgt分別為預(yù)測框和真實框的寬度;h和hgt分別為預(yù)測框和真實框的高度;cw和ch分別為兩個框的最小外接框的寬度和高度。
本文算法研究的硬件平臺為CPU(Intel(R) Core(TM) i7-12700K 3.61 GHz),GPU(Nvidia Titan XP),CUDA版本為11.1,實驗環(huán)境為Python3.7和PyTorch框架1.8.1版本。無人機型號為大疆精靈4 Pro,最大飛行高度6 000 m,拍攝視頻和照片的最大分辨率為4 000×3 000。
本文使用自建的多類場景無人機航拍煙霧視頻圖像數(shù)據(jù)集USD作為訓(xùn)練數(shù)據(jù)集,按照8∶1∶1的比例隨機選取了其中24 000張圖片作為訓(xùn)練集,3 000張圖片作為驗證集,3 000張圖片作為測試集。訓(xùn)練開始時,使用多尺度縮放將原始1 280×720大小的圖像縮小到640×640大小的圖像并作為輸入,訓(xùn)練過程中采用了隨機梯度下降法(stochastic gradient descent,SGD)。經(jīng)過實驗,當(dāng)Batch size設(shè)置為8,初始學(xué)習(xí)率設(shè)置為0.01,余弦衰減權(quán)重系數(shù)設(shè)置為0.000 5時,得到的模型為最優(yōu)。本文共訓(xùn)練了300個epoch,其中每10個epoch進行一次驗證,訓(xùn)練總耗時52 h 34 min,最終模型大小為70.24 MB。
本文使用準(zhǔn)確率P(precision)、召回率R(recall)、類別精度A(average precision)作為檢測算法有效性的評價指標(biāo),為了更進一步的評價本文算法的適用性,另加入每秒檢測幀數(shù)FFPS(frames per second)作為參考對比。
本文選用USD煙霧數(shù)據(jù)集中的24 000張和3 000張分別用作本文算法的訓(xùn)練集和測試集A。為了驗證本文算法的泛化性,利用網(wǎng)絡(luò)收集的方法額外建立了1個普通視角下的測試集B,并用現(xiàn)有的2個公開數(shù)據(jù)集制作了測試集C和測試集D。測試集B包含3 864張普通視角下的煙霧圖像,測試集C包含袁非牛團隊公開的VSD[20]煙霧數(shù)據(jù)集中的2 000張普通煙霧圖像,測試集D包含從CVPR實驗室聯(lián)合NIST火災(zāi)研究實驗室火災(zāi)研究部以及Bilkent信號處理小組公開的KMU[21]煙霧數(shù)據(jù)集中提取的1 000張煙霧圖像。
本文將所提算法在自建煙霧數(shù)據(jù)集以及2個經(jīng)典煙霧數(shù)據(jù)集上進行測試,為了驗證本文自建煙霧數(shù)據(jù)集的有效性和本文所提算法在多類場景下無人機視頻煙霧檢測的優(yōu)勢,本文選用YOLOv4[15]、YOLOv5-s[16]、SparseR-CNN[17]3種經(jīng)典的目標(biāo)檢測算法作對照實驗,另選用最新的煙霧檢測模型DeepSmoke[7]進行對比實驗。為了保證實驗環(huán)境的一致性,所有算法均在相同的實驗環(huán)境下運行實現(xiàn),實驗結(jié)果見表2。
由表2可以看出,在VSD[20]和KMU[21]等公開數(shù)據(jù)集上,場景種類少,圖像復(fù)雜度不高,本文算法取得了96%以上的準(zhǔn)確率,相比于YOLOv4、YOLOV5-s和DeepSmoke算法,本文算法在準(zhǔn)確率、召回率和類別精度都有很大的領(lǐng)先。在自建的USD煙霧數(shù)據(jù)集中,由于該數(shù)據(jù)集包含的無人機視角煙霧場景多,煙霧特征更加復(fù)雜,導(dǎo)致所有算法均出現(xiàn)了準(zhǔn)確率降低的現(xiàn)象,但本文所提算法對比于原算法YOLOx-s仍然提升了2.7%的準(zhǔn)確率和2.5%的精度,并且FFPS達到了73.6,表明本文算法在面對多類場景下的無人機航拍煙霧檢測時,比原算法YOLOx-s和其他現(xiàn)有算法更有優(yōu)勢。本文算法的檢測準(zhǔn)確率略低于SparseR-CNN算法,但SparseR-CNN算法的FFPS只有6.2幀/s,明顯達不到實時檢測的要求。另外,本文展示了本文算法在USD煙霧數(shù)據(jù)集、測試集B、測試集C和測試集D上的部分可視化結(jié)果,見圖4和圖5。
圖4 本文算法在USD數(shù)據(jù)集上的部分檢測結(jié)果
圖5 本文算法在不同測試集上的部分檢測結(jié)果
由圖4的可視化檢測結(jié)果可以看出,本文算法在面對不同場景下的無人機煙霧檢測任務(wù)時,都能以最大框準(zhǔn)確地標(biāo)示出圖像中煙霧區(qū)域外沿,證明了本文算法的有效性。從圖5的可視化檢測結(jié)果可以看出,在測試集B中,煙霧像素占據(jù)整幅圖像近一半的像素,導(dǎo)致煙霧特征過于明顯;在測試集C中,圖像主要由像素大小為100×100的煙霧塊組成,沒有復(fù)雜的場景信息干擾;在測試集D中,該測試集中出現(xiàn)了霧天、淡煙和大量的天空區(qū)域,煙霧特征不明顯,導(dǎo)致算法出現(xiàn)了漏檢和誤檢現(xiàn)象,本文列出了不同算法在測試集D中(a)、(b)兩組場景中漏檢和誤檢的可視化結(jié)果,見圖6。
圖6 不同算法在測試集D上的漏檢和誤檢結(jié)果
由圖6可以看出,在圖6(a)和圖6(b)兩組場景的可視化結(jié)果中,不同算法都出現(xiàn)了漏檢和誤檢現(xiàn)象(圖中煙霧區(qū)域由紅框標(biāo)出)。在圖6(a)場景中,出現(xiàn)了有霧天氣,煙霧所占像素小且出現(xiàn)了顏色失真,導(dǎo)致所有算法都出現(xiàn)了漏檢現(xiàn)象;在圖6(b)場景中,出現(xiàn)了大量含云的天空區(qū)域,導(dǎo)致SparseR-CNN算法出現(xiàn)了誤檢現(xiàn)象,YOLOv5-s算法和YOLOx-s算法都出現(xiàn)了漏檢現(xiàn)象,本文算法雖然準(zhǔn)確地檢測出了煙霧區(qū)域,但同樣也誤檢了天空中含云的區(qū)域,這是因為本文所用訓(xùn)練集USD中的圖像主要為無人機對地視角,包含多云的場景較少,導(dǎo)致算法模型對假煙物體敏感,出現(xiàn)誤檢現(xiàn)象。
為了評價本算法和其他算法對不同場景無人機煙霧視頻的檢測效果,選取USD數(shù)據(jù)集中5個不同場景的無人機煙霧視頻,每個場景包含2 000幀的連續(xù)視頻圖像,對共計10 000幀的煙霧和非煙霧視頻進行測試,測試結(jié)果見表3??梢钥闯?本文算法檢測準(zhǔn)確率對比YOLOx-s算法在不同場景下都取得了提升。對比DeepSmoke算法、YOLOv5-s算法和YOLOv4s算法,本文算法在5個不同場景下都取得了最高的檢測準(zhǔn)確率,且平均準(zhǔn)確率達到了92.3%以上。
表3 不同視頻下的檢測準(zhǔn)確率對比
消融實驗的對象主要包括SCA注意力模塊、雙向特征融合模塊和Focal-EIOU損失函數(shù),實驗結(jié)果見表4。本文算法所提出的改進對檢測準(zhǔn)確率都有所提升,其中對算法檢測準(zhǔn)確度提升最大的是SCA模塊,檢測精度提升了1.9%,證明改進的注意力機制有效的增強了算法對煙霧特征的提取能力。單一的雙向特征融合模塊同樣使算法檢測準(zhǔn)確度提升1.6%,證明改進的雙向特征融合模塊能有效地增強FPN結(jié)構(gòu)對小目標(biāo)煙霧特征的融合能力。引進的Focal-EIOU損失函數(shù)也對算法檢測準(zhǔn)確度有所提升,證明該損失函數(shù)解決了網(wǎng)絡(luò)訓(xùn)練過程中正負(fù)樣本不平衡的問題和預(yù)測框與真實框不相交時無法反映兩個框的距離遠近以及重合度大小的問題。
表4 消融實驗
針對現(xiàn)有煙霧檢測算法在多類場景下無人機航拍視角中表現(xiàn)不佳的問題,本文自建了一個包含多類場景的無人機航拍視頻煙霧數(shù)據(jù)集USD,并提出了一種改進YOLOx的無人機視頻煙霧檢測算法,得出結(jié)論如下:
1)對現(xiàn)有的煙霧數(shù)據(jù)集進行分析,建立一個多類場景下的無人機航拍視頻煙霧數(shù)據(jù)集USD,該數(shù)據(jù)集包含了從81個無人機煙霧視頻中提取出的30 000張無人機煙霧圖像,總共包含了19類場景,在場景類別、圖像質(zhì)量和圖像數(shù)量上遠優(yōu)于其他現(xiàn)有的煙霧數(shù)據(jù)集。
2)對現(xiàn)有煙霧檢測算法在應(yīng)用到無人機視角的多類場景時出現(xiàn)的檢測率低、速度慢等問題進行了分析,針對火災(zāi)初期煙霧多為小目標(biāo)的問題,提出改進的雙向特征融合模塊和注意力機制模塊。對網(wǎng)絡(luò)訓(xùn)練過程中出現(xiàn)的正負(fù)樣本不平衡問題進行分析,并對預(yù)測框和真實框不相交時無法反映兩個框的距離遠近以及重合度大小的問題進行了研究,引入了Focal-EIOU損失函數(shù)。
3)在自建數(shù)據(jù)集USD以及國內(nèi)外常用煙霧數(shù)據(jù)集上進行實驗分析,并與現(xiàn)有算法對比,證明了本文各個模塊能有效解決多類場景下無人機航拍煙霧檢測領(lǐng)域中的常見問題,有效提升了本文算法的檢測性能。
4)本文算法在面對多霧、多云和光照不良等極端場景時會出現(xiàn)檢測準(zhǔn)確率下降的情況,這是由于訓(xùn)練數(shù)據(jù)集中缺少極端場景下的煙霧圖像,導(dǎo)致算法出現(xiàn)漏檢和誤檢,下一步我們將從兩個方面繼續(xù)深化完善本文算法:1)擴充數(shù)據(jù)集,加入更多極端場景下的煙霧圖像,提升算法在更復(fù)雜的場景中的準(zhǔn)確率;2)研究算法的時間復(fù)雜度和空間復(fù)雜度,在不降低準(zhǔn)確率的條件下,利用更加輕量化的網(wǎng)絡(luò)構(gòu)架,提升算法的實用性和適用性。