田 楓, 馮建臣, 劉 芳
(東北石油大學 計算機與信息技術(shù)學院, 大慶 163318)
油田作業(yè)現(xiàn)場的環(huán)境具有易燃易爆的特征, 煙火災(zāi)害本身又具有發(fā)生快、防范難等特性, 煙火事故一旦發(fā)生, 企業(yè)就會面臨巨大的損失,使企業(yè)生產(chǎn)停滯, 甚至對煙火災(zāi)害發(fā)生地工作人員造成傷亡. 目前油田作業(yè)現(xiàn)場主要采用人工巡檢的方式預(yù)防煙火災(zāi)害, 費時費力且實時性較低. 隨著油田安防監(jiān)控的廣泛應(yīng)用, 使得視頻數(shù)據(jù)獲取變得方便快捷. 因此, 如何充分利用油田安防監(jiān)控的優(yōu)勢進行煙火檢測, 并在保證準確率的前提下, 實現(xiàn)實時性檢測, 一直都是一個熱點的研究課題.
采用對現(xiàn)場的視頻流實時分析來檢測煙火目標的方式, 可大大縮短預(yù)警響應(yīng)時間、增大檢測范圍. 近年來, 基于圖像的煙火檢測研究取得了豐碩的研究成果.Machine learning[1]使得基于圖像識別的煙火檢測技術(shù)取得較大進步[2], 但是該方式的識別性能受到所設(shè)計的手工特征質(zhì)量的影響[3]. 深度學習作為機器學習的分支, 在基于圖像的煙火識別中應(yīng)用廣泛[4], 它使用具有精準標注的數(shù)據(jù)集訓(xùn)練深層神經(jīng)網(wǎng)絡(luò),使模型在求解過程中自動學習目標的特征. 目前, 以先產(chǎn)生候選區(qū)再進行分類的RCNN[5]為代表的兩階段算法及直接輸出類別和定位的YOLO 系列[6]為代表的一階段算法是目標檢測主流算法. 通常,兩階段算法檢測精度高檢測幀率低. 單階段算法檢測幀率高,能夠滿足實時性的要求.基于監(jiān)控視頻的油田作業(yè)現(xiàn)場煙火檢測, 對實時性要求較高, 所以本文選擇YOLOv4 為基礎(chǔ)算法.
YOLOv4 作為通用的目標檢測算法, 直接應(yīng)用于油田作業(yè)現(xiàn)場的煙火檢測, 其檢測效果并不理想. 主要由于視野較開闊, 距離較遠導(dǎo)致的煙火目標在監(jiān)控視頻中占比較小, 現(xiàn)有算法漏檢誤檢嚴重. 并且對油田復(fù)雜背景的干擾不能很好處理. 例如, 實際監(jiān)控視頻中, 發(fā)生火災(zāi)的區(qū)域范圍比較小, 很難從復(fù)雜背景中識別出來. 場地中具有大量類似煙火的區(qū)域, 比如黑色的油、深色的樹、紅色的工裝等, 都可能造成檢測失敗.
針對油田作業(yè)現(xiàn)場煙火特征, 本文在YOLOv4 深度學習算法的基礎(chǔ)上, 提出了改進的YOLOv4 煙火識別模型. 該算法模型改進了特征融合網(wǎng)絡(luò)模塊, 將骨干網(wǎng)提取的淺層特征進一步融合, 并使用多尺度的金字塔卷積PyConv[7]替代標準卷積, 增強對不同層細節(jié)的提取能力, 增大局部感受野[8], 增強了小目標[9]的特征描述能力, 提高了小目標的檢測精度. 同時在骨干網(wǎng)絡(luò)中加入通道和空間注意力機制CBAM[10], 增強網(wǎng)絡(luò)對重要特征的提取能力并忽略特征中的噪聲信息, 以應(yīng)對復(fù)雜背景, 同時降低計算量, 增強網(wǎng)絡(luò)對復(fù)雜背景下煙火的識別能力, 提高分類準確率.
抽象語義在網(wǎng)絡(luò)淺層較少, 但紋理、坐標等信息豐富; 網(wǎng)絡(luò)深層含有較多的抽象語義信息, 但紋理、坐標信息則比較少. YOLOv4 中, FPN 網(wǎng)絡(luò)[11]將較強的語義特征自頂向下傳遞用于增強淺層類別的判定信息,PAN 模塊[12]將淺層較強的紋理、坐標信息通過自底向上的方式向上傳遞, 增強深層定位能力. 在識別小目標時,由于網(wǎng)絡(luò)深層小目標特征信息較少, 造成對小目標的漏識別和誤識別. 為了強化網(wǎng)絡(luò)對較小目標的檢測能力, 充分利用淺層信息本文重新設(shè)計了FPN+PAN層, 改進了YOLOv4 算法, 如圖1(a)中的Neck-2 部分.
圖1 YOLOv4 結(jié)構(gòu)及組成單元
從Neck 部分可以看出, 本文新加入了兩個包含更多位置、紋理信息的Residual Block[13]殘差單元模塊提取的淺層特征信息層. 將淺層特征進一步和高層語義特征融合, 將包含更多位置、紋理信息的淺層特征和含有足夠語義信息的深層特征進行融合. 加強網(wǎng)絡(luò)對小目標的判別能力, 在具有較準確語義信息的同時,為小目標的精準定位提供更多信息依據(jù). 讓算法能夠準確識別較小的煙火目標.
如圖2 所示, 當輸入圖片大小為608×608 時, 本文在原模型融合了19×19、38×38、76×76 的基礎(chǔ)上, 進一步融合了152×152 和304×304 大小的特征, 將更多的低層信息融入路徑聚合網(wǎng)絡(luò).
圖2 FPN+PAN 特征融合
最后, 使用整合后的特征圖預(yù)測目標框、類別概率、置信度.
卷積層是卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)構(gòu)建模塊, 卷積構(gòu)建塊的改進往往會增強特征的提取能力. 標準卷積(單一空間大小和深度的單一類型的卷積核)不具備提取多尺度特征的能力[14]. 而金字塔卷積(如圖3 所示)包含不同大小和深度的卷積核, 可以在不增加計算量的情況下, 增大局部感受野, 增強不同尺度目標的特征提取能力, 進而提高網(wǎng)絡(luò)性能. 因此, 為了增強局部特征的提取能力, 解決下采樣中細節(jié)信息丟失的問題. 本文在網(wǎng)絡(luò)特征融合模塊Neck-1、Neck-2 部分, 使用金字塔卷積替代標準卷積.
圖3 金字塔卷積PyConv
金字塔卷積PyConv(如圖3 所示), 包含一個核(kernel) 金字塔, 其中每個層涉及大小(自下而上增大)和深度(隨卷積核的增大而減小)不同的filters, 他們能夠捕獲場景中不同層的細節(jié). PyConv 使用多尺度卷積核對輸入特征進行提取. PyConv 會將輸入特征分成多個組并進行獨立的卷積運算.
假設(shè)每層輸出特征的深度一致, 那么每層的參數(shù)量和計算復(fù)雜度會呈現(xiàn)出較為均勻的分布. 因此, 可以得出PyConv 與標準卷積的計算復(fù)雜度近似. 如圖1(a)所示, 在網(wǎng)絡(luò)的Neck 部分中的PyCBLn 模塊, 其中PyC 代表的就是金字塔卷積.
特征網(wǎng)絡(luò)越深, 背景噪聲越明顯, 為減少復(fù)雜背景噪聲的干擾, 并減少計算量, 本文在backbone 的每個殘差單元模塊添加通道和空間注意力CBAM (如圖4所示). 注意力機制能夠?qū)μ卣鲌D中重要的通道和空間特征增強, 使得網(wǎng)絡(luò)在訓(xùn)練過程中能抓住目標的重點特征進行學習. 采用CBAM 模塊可以使網(wǎng)絡(luò)學習到特征的每個通道的重要程度以及特征的每個空間位置的重要程度, 從而實現(xiàn)空間和通道的自適應(yīng)調(diào)整, 優(yōu)化網(wǎng)絡(luò)的權(quán)重, 提升網(wǎng)絡(luò)性能. 進一步提高識別的準確率.
圖4 CBAM 注意力結(jié)構(gòu)圖
將CBAM 模塊嵌入至YOLOv4 網(wǎng)絡(luò)的骨干網(wǎng)每一個CSP 模塊的每個殘差單元的shortcut linear 融合之前(如圖5 所示). 由于CBAM 注意力模塊本身是對重要通道和空間特征進行增強, 因此將注意力嵌入到網(wǎng)絡(luò)的backebone 中一般可以取得很好的效果.
圖5 嵌入CBAM 注意力
為了使先驗框的大小更適合煙火數(shù)據(jù)集, 提升檢測的精度. 本文采用K-means++聚類方法[15], 根據(jù)自建煙火樣本數(shù)據(jù)集, 計算anchors 值. 步驟如下:
1)數(shù)據(jù)預(yù)處理: 異常值或噪聲數(shù)據(jù)會對平均值產(chǎn)生很大影響, 并導(dǎo)致中心偏移. 因此, 我們對數(shù)據(jù)的異常點進行處理, 篩除離群的點.
2)根據(jù)數(shù)據(jù)集中目標大小進行邊界框聚類分析.使用K-means++聚類算法對煙火數(shù)據(jù)集中目標的anchor box 進行聚類分析, 首先選取任意一個目標框的值作為初始聚類中心, 其次, 計算所有樣本與現(xiàn)有聚類中心之間的距離D(x), 并算出任意樣本成為下個聚類中心點的概率P(x)如式(9):
然后再使用輪盤賭選擇法找出下個聚類中心點.重復(fù)上述計算P(x)和D(x)的步驟直至得到K個錨框大小. 最后循環(huán)重復(fù)計算每個樣本點到K個聚類中心點的距離, 將該樣本點劃分給距離最小的聚類中心的類別并更新聚類中心點, 直至獲得的Anchorbox 大小不再變化.
損失函數(shù)用來評估模型的預(yù)測值和真實值的距離程度, 可通過最小化損失函數(shù)求解和評估模型. 本文模型中用到的損失函數(shù)由3 部分組成: 類別損失、置信度損失、回歸損失. 回歸損失CIoU loss 如式(10):
其中, ρ2(b,bgt)表示預(yù)測框的中心點和真實值之間的歐式距離c表示同時包含預(yù)測框和真實框的最小閉合區(qū)域的對角距離. α和v分別為式(11)和式(12):
YOLOv4 總的損失函數(shù)公式為式(13):
其中,S2表示預(yù)測特征為S×S大小的網(wǎng)格, 每個網(wǎng)格單元會對應(yīng)B個Anchor, 每個Anchor 通過模型推理計算得到相應(yīng)邊界框, 最后會得到S×S×B個邊界框. 若預(yù)測框中無對象(noobj), 那么只需計算預(yù)測框的置信度損失. 其置信損失使用交叉熵誤差, 并分為兩部分: 有對象(obj)和無對象(noobj). 無對象的損失添加了權(quán)重系數(shù) λ, 相當于降低了該部分的貢獻權(quán)值. 分類損失也使用了交叉熵誤差, 當?shù)趇個特征網(wǎng)格的第j個Anchor負責預(yù)測某個實際目標時, 則由該錨框生成的預(yù)測框計算分類損失值.
實驗設(shè)備的操作系統(tǒng)為Ubuntu 18.04, i7-6700 3.4 GHz CPU、NVIDIA CTX 3080Ti GPU, 使用PyTorch 框架.
煙火數(shù)據(jù)集通過網(wǎng)絡(luò)爬蟲工具從網(wǎng)站獲取, 如表1所示, 根據(jù)“火”“濃煙”“油田”等關(guān)鍵字從百度圖片爬取的5 000 張圖片, 構(gòu)成本次實驗的訓(xùn)練集. 訓(xùn)練集數(shù)據(jù)分為煙火圖片和非煙火圖片 (如圖6所示). 由根據(jù)相應(yīng)關(guān)鍵字爬取的500 張煙火數(shù)據(jù)和250 張非煙火數(shù)據(jù)構(gòu)成驗證集. 從網(wǎng)絡(luò)視頻庫獲取煙火視頻和非煙火視頻,進行視頻幀提取獲得5 000 張圖像, 構(gòu)成本次實驗的測試集.
表1 數(shù)據(jù)集描述 (張)
圖6 訓(xùn)練集部分數(shù)據(jù)
實驗使用準確率(accuracy)即正確識別煙火或非煙火的概率、誤檢率Pf即在無煙火發(fā)生時卻判定為有煙火的概率、召回率(recall)、平均精度均值(mAP)和檢測速度FPS 作為實驗結(jié)果的評價指標.召回率表示樣本中有多少正樣本被正確預(yù)測. MAP 可以全面評價實驗結(jié)果精度和查全率. 此外FPS 也是本實驗的重要評價指標之一. 準確率、誤檢率及召回率公式如下:
其中,Tp表示被模型預(yù)測為正類的正樣本數(shù)量,Tn表示被模型預(yù)測為負類的負樣本數(shù)量,Fp表示被模型預(yù)測為正類的負樣本數(shù)量,Fn表示被模型預(yù)測為負類的正樣本數(shù)量.
訓(xùn)練中將模型初始學習率置為0.001, 將影響梯度下降到最優(yōu)的動量因子置為0.935, 將防止過擬合的權(quán)重衰減正則系數(shù)置為0.0005, 共訓(xùn)練6000 個批次. 圖7為訓(xùn)練過程中的Loss 和MAP 變化曲線.
圖7 損失和MAP
為了綜合評估基于改進YOLOv4 算法的煙火識別效果, 本文利用驗證集圖像數(shù)據(jù)進行煙火識別測試, 以驗證本文模型的可靠性, 實驗結(jié)果如圖8 所示.
圖8(a)中, 在煙火目標距離較遠且目標較小時, 能夠準確檢測到目標.在圖8(b)中, 圖片包含大片暗黑色樹木等類煙區(qū)域及紅色滅火器、黃色抽油機等類火區(qū)域仍能夠準確識別煙火目標.圖8(c)為其他情況監(jiān)測結(jié)果.
圖8 模型驗證結(jié)果
為了證明改進算法的有效性, 在自建煙火數(shù)據(jù)集上, 使用改進后的算法和原算法分別進行實驗, 并使用準確率、誤檢率、MAP、FPS 等指標進行比較. 其實驗結(jié)果如表2 所示.
從表2 中可以看出, 本文算法和原算法相比, Fire分類和Smoke 分類的準確率分別提高了(5.3%, 6.6%),誤檢率分別降低了(1.1%, 1.6%),MAP值均優(yōu)于原算法. 本文提出的算法模型顯著提高了對于較小煙火目標的識別能力以及對于類似煙火目標的甄別能力. 能夠在復(fù)雜的油田作業(yè)現(xiàn)場背景下過濾類似煙火目標的干擾并準確地識別出較小的煙火目標. 本文算法以43 fps的檢測速度, 在滿足煙火檢測的實時性的要求下, 獲得了平均97%的準確率和平均1.2%的誤檢率, 實驗證明了本文算法在煙火實時檢測中的可行性.
表2 模型性能對比
為了驗證改進算法的可行性, 對本文改進的部分進行了多組消融實驗. 消融實驗均使用相同的訓(xùn)練數(shù)據(jù)集和測試集, 相同的超參數(shù)設(shè)置. 消融實驗結(jié)果如表3所示.
通過消融實驗, 可得出以下幾點結(jié)論, 首先, 從表3中第2 組實驗可看出在重新設(shè)計特征融合部分后, 在模型特征融合層引入前兩個殘差塊提取的細節(jié)信息,提高了淺層信息的利用率, 使其平均精度均值有了3 個百分點的提升, 其次從第3 組實驗中可得出, 在添加CBAM 后, 評價指標MAP同樣得到了改善, 其值增加了1.72%. 說明CBAM 可以有效地抑制噪聲, 強化通道和空間中目標的信息. 最后一組實驗中, 在FPN 和PAN 網(wǎng)絡(luò)結(jié)構(gòu)中, 使用PyConv 替代標準卷積, 減少細節(jié)特征的丟失, 增大局部感受野, 豐富了特征圖的信息,其MAP值較上組實驗提升了1.5 個百分點.
表3 消融實驗結(jié)果
針對油田作業(yè)現(xiàn)場復(fù)雜背景下的煙火小目標檢測難的問題. 本文基于YOLOv4 網(wǎng)絡(luò)模型, 并結(jié)合CBAM注意力機制、特征融合、金字塔卷積等方式進行優(yōu)化和改進. 使用自建煙火數(shù)據(jù)集, 并使用K-means++聚類算法對煙火數(shù)據(jù)集進行錨框調(diào)整. 實驗結(jié)果表明, 改進后的YOLOv4 檢測模型能夠滿足實時檢測的需要, 與原模型相比, 提高了準確率、MAP, 有效地改善了油田作業(yè)現(xiàn)場場景中通用檢測器性能不足的問題. 本文針對油田有紅色工裝, 黑色油, 易與火和煙混淆等問題制作了針對該場景的數(shù)據(jù)集, 如果應(yīng)用于其他場景, 例如學校、工廠等, 則需要對數(shù)據(jù)集做改變, 并重新訓(xùn)練模型.