奚方園,李 燕,梅 腱,胡國華
(合肥學院 先進制造工程學院,安徽 合肥 230000)
在日常生活中,火災的發(fā)生會對人們帶來巨大的危害[1]。在火災發(fā)生前,通常伴隨著煙霧和火焰的不斷產生,若能夠在火災發(fā)生早期,及時地對煙霧和火焰進行迅速并且準確地檢測,就可以有效地把財產損失和危害降到最低。
深度學習的發(fā)展,特別是基于深度學習的卷積神經網絡的出現,為火災發(fā)生時煙霧及火焰特征提取帶來了全新的解決方法。陳俊周等人[2]利用原始圖像的光流序列提取動態(tài)煙霧紋理信息,將煙霧紋理的靜態(tài)特征與動態(tài)特征相結合,提升了復雜環(huán)境煙霧的檢測效果,降低了誤檢率,但是由于早期的煙霧特征不明顯,無關的區(qū)域較大,直接將原始圖像輸入到CNN,增大了模型的復雜度;蔣珍存等人[3]基于VGG16網絡,將3層全連接層修改為2層,并利用Dropout層來阻止模型的過擬合。雖然去掉一層全連接層可以減少部分計算量,但是由此導致模型的泛化能力較差;Xu G等人[4]提出結合像素級和目標級融合的顯著目標檢測算法,有效地提取火災目標的顯著特征圖,但是骨干網絡采取的是輕量化VGG16網絡,檢測性能相對較低;Ryu J等人[5],使用HSV通道與Harris角點檢測器對火焰進行預處理,再傳入Inceptionv3提取特征;謝書翰等人[6]使用K-means聚類得到適合煙霧的錨框。在YOLOv4檢測頭中加入SE-NET模塊,能夠有效地抑制無關信息對檢測結果的影響,提升檢測精度,但是增加了部分參數,造成速度下降;在對圖像預處理時,有效地提高了目標檢測的準確率,但是預處理占用較多的時間。
火災發(fā)生時的環(huán)境一般比較復雜,在對煙霧和火焰進行檢測時會導致對小目標檢測的效果較差和檢測精度低等問題。YOLOv3中Darknet-53的網絡結構的計算是一個非常耗時的網絡,在實現檢測模型的嵌入式移植時對硬件的要求較高,在資源有限的設備上就無法滿足檢測實時性需求。因此,本文通過替換原骨干網絡、增加聚焦和空間金字塔池化等方法對YOLOv3進行改進和優(yōu)化。改進后的算法與傳統(tǒng)的YOLO算法相比,在實時性、準確率上有了顯著的提高,可滿足火災發(fā)生時對煙霧和火焰目標檢測任務,可幫助救援人員排查火災隱患。
YOLOv3是一個端到端的回歸網絡模型[7],其基礎網絡在Darknet-19的基礎上引入了殘差網絡[8],并進一步加深了網絡,改進后的網絡由53個卷積層組成,稱為Darknet-53(網絡中含有53個卷積層)。其中殘差網絡由兩級卷積網絡疊加核主分支輸出的同緯度張量得到。同時,采用快捷鏈接可以有效解決卷積層訓練過程中網絡模型梯度退化、網絡誤差不斷累積等問題,保證YOLOv3深度訓練擬合度高。Darknet-53模型結構整個網絡主要包括5組殘差網絡。如圖1所示為引入的殘差網絡圖。
圖1 DrakNet53網絡引入殘差網絡模塊
卷積層包含如下幾個部分:一個Darknet的2維卷積Conv2D采用3×3和1×1卷積層組合而成一個Darknet的2維卷積Conv2D;一個批量歸一化層通過反向傳播對訓練過程中的梯度參數進行更新,使訓練最快得到最優(yōu)解;一個具有激活函數的層幫助參數進行更新。
通過Darknet-53網絡提取到圖像的特征信息后,YOLOv3使用K-means聚類[9]來確定邊界框的先驗,即在基礎網絡后通過3個尺度的特征層進行邊界框的預測,從而提升小目標的檢測效果。YOLOv3的網絡結構如圖2所示。
圖2 YOLOv3網絡總體框圖
根據YOLOv3的網絡結構,由前面的分析可知,YOLOv3由Darknet-53與YOLO層構成,其中Darknet-53主要以卷積層與殘差層組成,用于提取圖片的特征;而YOLO層則主要用于不同層次的特征圖交互。
MobileNetv3[10]網絡具有低延遲、輕量高效的特點,可移植到目標檢測嵌入式設備。在MobileNetv3網絡模型設計中,不僅繼承了MobileNetv1[11]的深度卷積可分離結構,同時也繼承了MobileNetv2[12]網絡模型中的可以通過不斷地學習達到更好的擴展效果和壓縮效果,提高整體結構的平衡性。在此基礎上,MobileNetv3網絡模型中還引入了NAS[13]和NetAdapt[14]網絡搜索架構,通過計算機來實現最優(yōu)化的參數設定,通過比較不同參數的網絡模型效果,從而實現最優(yōu)參數的設置。與MobileNetv2網絡結構相比,增加了SE(Squeeze and excite)[15]注意力模塊與h-swish非線性激活函數。整體而言,相較于MobileNetv1和MobileNetv2網絡模型,在ImageNet項目數據庫中的分類任務上,精度和速度都有著一定的提升。
為了能夠使目標檢測算法部署到邊緣檢測設備上,本文對YOLOv3的骨干網絡進行改進,將原骨干網絡替換成具有輕量化的MobileNetv3網絡,具體操作過程是采用深度可分離卷積替代原來的標準卷積結構。
如圖3所示是引入MobileNetv3骨干網絡的MobileNetv3+YOLOv3模型圖。
圖3 MobileNetv3+YOLOv3模型圖
對YOLOv3模型的骨干網絡精簡后,極大地降低了計算量。但同時由于分辨率低,小目標物體攜帶的信息量少,容易造成特征丟失,從而導致對小目標的檢測效果差。
Focus模塊的概念,最先應用于YOLOv5[16]。如果圖像在進入MobileNetv3骨干網絡之前未進行預處理,則圖像特征可能會丟失,因此引入了聚焦模塊來預處理圖像,解決在處理過程中可能會出現圖像失真問題。具體操作是在圖像中每隔一個像素獲取一個值,獲取四個獨立的特征層,然后通過堆疊的方法將四個獨立的特征層堆疊。堆疊后得到的數據經過卷積操作就可以獲得新的圖像數據。得到的特征數據不會丟失信息,并且可以有效降低計算量提高處理速度。聚焦模塊的處理過程如圖4所示。
圖4 Focus聚類模塊
卷積神經網絡中通常輸入固定尺寸的圖像。本文通過引入SPP[17]結構,從而獲得多尺度局部特征信息。其主要作用是當進行卷積運算時在池化層與全連接層之間建立連接,使外部輸入的圖像進入本文網絡框架前生成固定尺寸的圖像。SPP結構總共有3層,分別為卷積層、池化層、全鏈接層。其中,池化層中池化核有三個,分別為13×13,9×9,5×5,并選擇最大池化。在Mobilenetv3主干網絡中加入SPP結構不僅提高了網絡結構的魯棒性,而且大大降低了過擬合,提高了模型的性能,極大地增強了最后一個特征層的感受野,在參數量與計算量無明顯增加的同時,增強了檢測的準確度。如圖5所示為SPP結構圖。
圖5 SPP結構
原始YOLOv3訓練使用的損失函數是多目標優(yōu)化函數,分別是類別損失、置信度損失和坐標損失,但是在計算這三種損失會使用到交并比(Intersection Over Union, IoU)作為損失函數。如果當檢測框與真實框之間沒有重合,那么這時的IoU值為0,這時對損失函數進行優(yōu)化,梯度就為0,網絡模型將無法進行訓練。針對這個問題,本文的MobileNetv3+YOLOv3+SPP模型在訓練的過程采用的是廣義交并比GIoU(Generalized Intersection Over Union, GIOU)作為損失函數。
IoU的計算如式(1)所示。
IoU=|A∪B|/|A∩B|
(1)
GIoU的計算如式(2)所示。
GIoU=IOU-|C-(A∪B)|/|C|
(2)
GIoU損失函數的計算如式(3)所示。
LGIoU=1-GIoU=1-IOU(A,B)+
|C-(A∪B)|/|C|
(3)
其中:A表示檢測框面積,B表示真實框面積,C表示包含A和B的最小矩形面積。
改進的MobileNetv3+YOLOv3+SPP模型結構算法實現如下。
第一部分,圖像輸入到MobileNetv3的算法流程:
(1)輸入的圖像通過聚焦模塊來進行切片操作,然后再通過堆疊(Concatenate)得到通道數為12的下采樣特征圖;
(2)經過Conv+BN+LeakyReLU進行卷積操作;
(3)經過多次的深度可分離卷積得到下采樣特征圖。
第二部分,利用加強特征網絡,對初步的三個有效特征層進行特征融合,提取出更好的特征,獲得三個更有效的特征層:
(1)經過卷積進一步加深網絡層次提高特征提取能力,并通過SPP結構的最大池化作用來提升網絡的感受野;
(2)將從骨干網絡中得到的特征圖像進行卷積調整,然后將深層特征進行上采樣處理,處理后再與淺層特征進行加權融合,使采樣后得到的信息更加豐富;
(3)中間層的特征信息通過深度可分離卷積操作提高特征提取深度,有效地避免了梯度融合。
αi和bi的參數設置可通過統(tǒng)計分析設備維修的歷史維修數據進行擬合得到。αi愈大,則維修后設備故障率恢復程度越高;bi愈大,則維修后設備老化速度越快。當αi=bi=1時,表示設備經更換后恢復為新。
第三部分,得到的三個輸出經過Attention機制ECA到達檢測頭,經過如下算法流程:
(1)在ECA中計算特征信息的權重提高對重點任務的關注度;
(2)在檢測邊界框采用GIoU損失計算預測框與真實框的偏差,將得到結果與類別損失、置信度損坐標損失結合作為Loss總損失;
(3)整個網絡根據損失度反向傳播計算調整權值。
改進的MobileNetv3+YOLOv3+SPP模型如圖6所示。
圖6 MobileNetv3+YOLOv3+SPP模型圖
本次實驗環(huán)境的軟硬件配置如表1所示。
表1 實驗環(huán)境軟硬件配置表
目前沒有統(tǒng)一公開的煙霧火焰數據集,本文通過網絡爬蟲爬取圖片,同時也借用了中科大火災實驗室提供的煙霧數據集,整理后得到9500張圖像,并將得到的圖像統(tǒng)一用labelImg標注工具進行標注。自制的數據集中,5100張圖片只含有火焰,3200張圖片只含有煙霧,1200張圖片既包含火焰又包含煙霧。并添加100張負樣本背景圖片(既不含有火焰又不含有煙霧)。收集得到的數據集按照9:1的比例隨機劃分訓練集和測試集。圖7、圖8和圖9分別是不同檢測模型對火焰、煙霧、火焰煙霧圖像檢測的結果。
(a)Yolov3模型(b)Yolov5模型(c)MobileNetv3+YOLOv3(d)改進模型圖7 火焰識別效果圖
(a)Yolov3模型(b)Yolov5模型(c)MobileNetv3+YOLOv3(d)改進模型圖8 煙霧識別效果圖
(a)Yolov3模型(b)Yolov5模型(c)MobileNetv3+YOLOv3(d)改進模型圖9 火焰及煙霧識別效果圖
本文評價的指標有準確度(Precision, P)、召回率(Recall, R),平均準確率(Mean Average Precision, mAP)和檢測速度(Frames Per Second, FPS)。其中,TP為正確檢測到的正樣本數據;FP為把負樣本檢測為正樣本的數量;FN為把正樣本檢測為負樣本的數量。在平均準確率的公式中,N表示樣本數量,p(r)表示精確度與召回率的關系函數。
(4)
召回率:所有已標注目標中模型預測正確的比例,如式(5)所示。
(5)
平均精度:目標檢測中準確度和召回率是一對矛盾變量的指標。若以R作為橫坐標,P作為縱坐標,那么平均精度AP就為曲線所圍成的面積,如式(6)所示。
(6)
平均精度均值:用來衡量識別精度,是所有類別AP的均值,如式(7)所示。
(7)
檢測速度:用來衡量模型的運算能力,指的是模型一秒鐘可以處理圖片的數量。
在相同的實驗環(huán)境下,將本文改進的YOLOv3檢測模型與YOLOv5、MobileNetv3+YOLOv3、YOLOv3-Tiny等其他檢測模型進行比較,對比結果如表2所示。
表2 不同模型檢測對比
從表2中可以看出,針對火災發(fā)生時對火焰與煙霧目標檢測,本文提出的MobileNetv3+YOLOv3+SPP模型在檢測精度上均高于YOLOv3、YOLOv3-Tiny、YOLOv5、MobileNetv3+YOLOv3;在檢測速度方面,由于采用了輕量化網絡MobileNetv3作為骨干網絡,所以在計算量上面會大大地降低,因此改進后的模型在檢測速度上相較于原模型提升了74.29%,相較于YOLOv5提升了35.56%,因加入了SPP模塊,所以略低于MobileNetv3+YOLOv3,低于YOLOv3-Tiny。
MobileNetv3+YOLOv3和YOLOv3-Tiny為輕量化網絡模型,然而輕量化網絡模型的引入在檢測速度方面也有顯著的提升,但是模型的平均精度值略有下降,無法滿足既提升模型的平均精度值又提升對目標檢測的精度。本文針對火災發(fā)生時火焰及煙霧目標在復雜背景下檢測困難的問題,通過引入聚焦和空間金字塔池化等方法對目標算法進行優(yōu)化,改進后的目標檢測算法對小目標的檢測精度有了很大的提升,結合MobileNetv3輕量化網絡可以達到較好檢測效果。
本文引入MobileNetv3作為骨干網絡,通過金字塔池化和聚類等方法對YOLOv3算法進行改進。改進后的卷積神經網絡MobileNetv3+YOLOv3+SPP目標檢測算法,通過大量的學習訓練,最終實現對煙霧和火災的目標檢測的準確率達到88.73%,實時處理幀率達到61FPS。相較于YOLOv3算法,利用改進后的模型對目標進行檢測,在準確率上有了顯著的提高,并且滿足火災發(fā)生時煙霧和火焰的實時檢測任務。