王一旭,肖小玲,王鵬飛,向家富
長江大學 計算機科學學院,湖北 荊州 434023
在日常生活中,火災會對人類帶來巨大的傷害,危害人類的身體健康,同時會影響社會健康發(fā)展和人民財產安全。而火災在發(fā)生初期是很容易被撲滅的,因此,通過對火災發(fā)生初期的煙霧與火焰進行迅速準確的檢測是非常有必要的,可以很大程度上減少火災帶來的危害與損失[1]。
早期的火災識別是通過傳感器實現的,基于溫度,煙霧顆粒等物理數據采樣來進行識別[2]。這種方法在特定環(huán)境中有著不錯的表現,但在室外和復雜環(huán)境中會受到大量干擾,導致檢測精度會大幅下降,同時這種方法也無法獲取現場實時圖像。隨著計算機視覺技術的發(fā)展與進步,Toereyin等人[3]通過小波變換來檢測火焰閃爍周期與火災的顏色變換,結合時間與顏色的變化信息來減少對顏色相似的物體出現誤檢的情況。王文豪等人[4]通過采用二維最大熵自動閾值法對火災圖像進行分割處理,分割后再提取可疑區(qū)域;對可疑區(qū)域的火焰進行識別。Tian等人[5]通過像素間的相關性、主成分分析初步識別出圖像中的煙霧,并通過純煙霧圖片中獲得的模型,對疑似區(qū)域進一步進行分離,來提取出圖片中的煙霧圖像。
近年來,深度學習已在許多領域超過傳統(tǒng)的人工方法[6],相對于傳統(tǒng)的計算機視覺檢測中的人工提取特征,深度學習方法能提取出更抽象、更深層次的特征,可以使模型泛化性更好,并且在火焰檢測中也取得了不錯的成績[7]。Wu等人[8]在當時主流的目標檢測框架Faster R-CNN、YOLOv1和SSD來進行火焰檢測,并發(fā)現SSD精度最高,檢測效率最好,提出了用于移動設備上的輕量化網絡tiny-YOLO;Li等人[9]在Faster R-CNN、R-FCN、SSD、YOLOv3等目標檢測算法與計算機視覺方法在火焰檢測上的表現,發(fā)現目標檢測算法的精度率高于手工提取特征的算法,同時YOLOv3算法擁有最高的檢測精度與速度。謝書翰等人[10]在對YOLOv4網絡進行改進的同時在網絡預測頭中加入通道注意力模塊,以此來提高對煙霧的檢測精度。在目前現有的大部分算法只對火焰與煙霧進行單獨檢測,而在火災發(fā)生時,煙霧和火焰都是關鍵信息,所以煙霧和火焰的檢測重要性是一致的,同時險情出現時的煙霧與火焰大多為小目標。而現有算法仍然存在檢測精度低,難以準確檢測到小目標,速度不滿足日常需要,在復雜環(huán)境中誤檢、漏檢率高等問題。
因此,提出一種基于YOLOv5s的小目標煙霧火焰檢測算法,并針對現有問題進行改進。首先基于公開數據集創(chuàng)建了一個內容全面豐富的煙霧火焰數據集,并通過結構相似性算法[11]剔除相似圖片,使模型在訓練時效率更高,有更好的泛化能力;之后融合SimAM注意力機制[12],在不增加網絡參數的情況下,加強特征提取能力,提高檢測精度;通過結合加權雙向特征金字塔網絡(BiFPN)結構修改Neck結構[13],加強了特征提取與融合的過程,提高小目標的檢測精度;最后使用遺傳算法[14]在自建數據集上優(yōu)化超參數,更進一步提高模型的檢測能力,可以在火災發(fā)生初期做出準確迅速的檢測,保護生命與財產安全。
YOLOv5[15]是目前廣泛使用的目標檢測網絡之一,憑借檢測精度高、推理速度快等特點,在各種工業(yè)問題取得了不錯的成果[16-18]。同時,YOLOv5也一直在更新迭代,目前版本為6.0,也是綜合表現最好的版本。選用的YOLOv5s網絡為YOLOv5的輕量化版本,更符合實時火災檢測的要求。YOLOv5s的網絡結構如圖1所示。
圖1 YOLOv5s結構Fig.1 Structure of YOLOv5s
YOLOv5s網絡主要分成4個部分:輸入(input)、主干網絡(backone)、頸部(neck)以及預測頭(head)。其中backone由CBS、CSP1_X、SPPF構成。neck部分由CSP2、上采樣(upsample)和相加模塊(concat)構成,最后在head中進行預測并輸出結果。其中CBS模塊由卷積(Conv),批量歸一化(batch normalization,BN)和SilU激活函數構成。
CSP模塊借鑒了CSPNet結構[19],可以在不影響模型精度的情況下,有效地減少計算量,并提高推理速度。YOLOv5根據backone和neck的不同,分別設計出了CSP1_X和CSP2模塊。CSP1_X通過Res模塊[20]在不同層中控制網絡的深度,結構如圖2所示。
圖2 CSP1結構Fig.2 Structure of CSP1
CSP2主要用在neck部分,有效地提高了網絡的特征融合能力,結構如圖3所示。
圖3 CSP2結構Fig.3 Structure of CSP2
在backone的最后采用了快速空間金字塔池化(fast spatial pyramid pooling,SPPF),將不同感受野的特征圖融合,以此提高特征圖的表達能力。原理上與SPPNet[21]類似,但運行速度更快,結構如圖4所示。
圖4 SPPF結構Fig.4 Structure of SPPF
數據集是深度學習網絡的基本,優(yōu)秀的數據集能讓模型有更強的魯棒性和泛化性,為解決現有數據集的限制,制作了一個多場景的復雜煙霧與火焰數據集,數據來源于多個公共火災數據集,Bilkent大學火焰視頻庫VisiFire、BoWFire Dataset、FD-Dataset,搜索引擎搜索和網絡火焰煙霧視頻截取,如圖5所示。
圖5 數據集示例Fig.5 Dataset examples
同時獲取到的數據大多沒有標注或標注不全,將對數據重新標注,對數據采用最大外接矩形框標注,將顯著特征都包括進去,標注為fire、smoke兩個類,標注格式為YOLO格式,如圖6所示。
圖6 標注示例Fig.6 Annotation example
由于大部分數據來源于網絡,存在大量的相似圖片,為提高數據集中數據的質量,減少重復數據的出現,提高網絡的學習效率,對數據集中的圖片進行結構相似性(structural similarity,SSIM)計算,如式(1):
其中C1、C2為常數,避免分母為0的情況,常取0.01和0.03,μ表示圖的平均亮度,計算過程為式(2):
其中,N為圖像的像素點總數,xi標識每個圖像的像素值。σ表示圖的對比度,計算過程為式(3):
兩張圖片通過計算,可得到一個SSIM index,值在0到1之間,越大表明兩張圖片越相似,在數據集中,對SSIM index大于0.85的兩張圖片定義為相似,只保存其中一張。
在數據集收集與整理后,總共有9 981張圖片,每張圖片中至少含有一個標簽,對數據集進行統(tǒng)計,結果如圖7、8所示。
圖7中,縱坐標軸為標簽數量,橫坐標為標簽名,數據集中有足夠數量的煙霧與火焰,經過相似度檢查后,可以認為已經包含日常生活中絕大部分火災中的火焰和煙霧場景。
圖7 標簽數量Fig.7 Number of labels
如圖8表示標簽的分布。圖8(a)中,橫坐標x為標簽中心橫坐標與圖像寬度的比值,縱坐標y為標簽中心縱坐標與圖像高度的比值,數值越大或越小表示越靠近圖像的邊緣,從圖中可知,數據分布廣泛,集中在圖像的中部。
圖8標簽分布Fig.8 Label distribution
圖8(b)中,橫坐標width為標簽寬度與圖像寬度的比值,縱坐標height為標簽高度與圖像高度的比值,數值越大,標簽框在圖像中的占比就越大。從圖8中可知,數據集中包含各種大小的數據,主要為中小目標數據,更貼合實際情況。同時為保證模型的泛化性,也有一定數量的其他大小數據。
計算機視覺中的注意力機制,目的是模仿人類視覺系統(tǒng),能夠有效地在復雜場景中找到顯著區(qū)域。通過注意力機制,可以對輸入圖像的特征進行動態(tài)權重調整。注意力機制已經在許多視覺任務中取得了成功[22]。
SimAM注意力模塊不同于現有1-D通道注意力和2-D空域注意力,無需額外參數去推導出3-D注意力權值,簡單且高效,只需通過一個Energy函數來計算注意力權重。SimAM注意力模塊原理如圖9所示。
圖9 SimAM注意力模塊Fig.9 SimAM module of attention
通過3-D權重,對特征中的每個點都賦上單獨的標量,通過這種統(tǒng)一權重,使得特征更具有全局性,很適合用于需要考慮全局性的煙霧火焰的檢測。計算過程如式(4)所示:
其中輸出結果為增強后的特征,X為輸入的特征,⊙為點積運算,并且通過sigmoid函數限制E中可能出現的過大值,E為每個通道上的能量函數,計算過程如式(5)所示:
其中t為輸入的特征的值,t∈X,λ為常數1E-4,μ和σ2分別表示X中每個通道上的均值與方差,計算過程為式(6)、(7):
其中M=H×W,表示每個通道上的值的數量。通過計算可獲得每個點的權重,以此來改善網絡的識別效果,同時也不會為網絡增加額外的參數。在多次實驗后,SimAM層加在backone中的最后一層中效果最好。
為加強網絡對小目標的檢測能力,且不擴大輸入的分辨率,將在網絡的第三層,也就是CSP1_1部分增加一個特征圖輸出,接入Neck部分作為P2輸出,輸入的大小為640×640時,P2的特征圖大小為160×160,每格特征圖對應輸入圖中以4×4的感受野,可以更好檢測小目標,同時也可在特征融合的過程中為其他層提供信息。但是P2的部分僅經過4倍下采樣,干擾信息較多,為更好地提取特征,將對YOLOv5s的Neck部分進行改進。
YOLOv5s的Neck參考了PANet[23]的思想,對從主干網絡獲取的特征,進行上采樣之后再進行下采樣融合,使得每個特征能包含更多的信息,如圖10所示。
圖10 原有Neck結構Fig.10 Structure of original Neck
在P2加入后,為了Neck能對特征進行更好地融合,將借鑒BiFPN的結構對原有的Neck部分進行改進,在P3層增加一個上采樣與P2層融合,同時在P3層增加一個上采樣節(jié)點。并在P3、P4層增加到輸出節(jié)點的通路,可在不增加太多復雜度的情況下融合特征,最終改進的結構如圖11所示。
圖11 改進后的Neck結構Fig.11 Structure of improved Neck
如圖11所示,改進后的結構增加了些許復雜度,但每個特征圖能融合更多的信息,能在提高在檢測時的精度。同時,原有的特征融合過程中并沒有對不同特征進行區(qū)分,僅僅為簡單的相加融合,在改進后的Neck結構中,將特征融合優(yōu)化為帶權特征融合,區(qū)分每個權重的重要性,使用快速歸一化融合(fast normalized fusion)來計算,過程為式(8):
其中,I為輸入值,O為輸出值,通過計算可以使所有的權重值在0和1之間。以P3融合過程為例,計算過程為式(9)、(10):
式中Conv代表卷積操作,Resize為上采樣或下采樣,各參數和計算流程如圖12所示。
圖12 計算流程與參數Fig.12 Calculation process and parameters
基于以上描述,改進后的Neck輸出的每個特征圖能包含更多信息,且加強了對小目標的檢測能力。整體改進后的YOLOv5s網絡結構如圖13所示。
圖13 改進后的YOLOv5s網絡結構Fig.13 Network structure of improved YOLOv5s
遺傳算法(genetic algorithm,GA)最早是計算數學中用于解決最佳化的搜索算法,通過遺傳算法可以得到問題的優(yōu)質解。在深度學習領域中,最優(yōu)的超參數能最大化地發(fā)揮網絡的性能,從而提高模型的檢測能力。通過遺傳算法找出網絡的最優(yōu)超參數。目前已有相關成果[24-26]。使用遺傳算法對優(yōu)化后的YOLOv5s網絡的部分超參數在自建的數據集上尋找最優(yōu)值,算法流程如圖14所示。
其中,編碼過程就是把參數轉換到遺傳算法的搜索空間,轉為遺傳算法的染色體結構數據,解碼的過程就是反過來,將染色體結構數據轉換為原有數據。適應度為當前參數訓練后的模型在測試集上的檢測精度。
選擇、交叉與變異操作都是遺傳算子。選擇操作是指從設定的范圍中以選擇前幾代中優(yōu)秀的數據作為遺傳對象,個體的適應度越高越容易被選擇。交叉操作是選擇兩個父代,通過一定的概率對兩個染色體結構數據的交換組合,把父代的優(yōu)秀特征遺傳給子串,從而產生新的優(yōu)秀個體。變異操作是防止遺傳算法在優(yōu)化過程中陷入局部最優(yōu)解,在搜索過程中,需要對個體進行變異,對染色體結構數據進行變化。種群數量定義為選定的父代范圍,算法只在固定的種群數量中選定父代。
在自建的數據集上進行超參數進化,將YOLOv5s原有的超參數設定為初始值,在改進后的YOLOv5s網絡上進行進化,并設定選擇算子的選擇范圍為5,交叉算子為80%的隨機交叉,變異算子的概率為0.01,進化的輪次為300次,最終結果如表1所示。
表1 進化的參數列表Table 1 Evolutionary parameters list
實驗環(huán)境硬件配置:CPU為AMD R7 5800H,GPU為NVIDIA RTX 3070 Laptop,操作系統(tǒng)為Windows10,編譯環(huán)境為Python3.8+Pytorch1.10.1+CUDA11.3。
在訓練開始前通過K-means算法對初始錨框進行聚類,結果為[18,28,43,37,52,110],[90,66,96,144,157,117],[270,150,192,237,346,221],[305,350,532,253,548,352]。訓練時對數據集使用在線增強,在每個epoch中對數據進行色調、飽和度、亮度的變換,以一定的概率進行平移、縮放操作,并加上Mosaic數據增強,使得每個epoch學習的數據都有一定變化,進一步提升模型泛化能力,減少過擬合的可能性。將原始數據集按照8∶1∶1的比例劃分為訓練集,驗證集和測試集。訓練集7 985張圖片,驗證集和測試集的數量為998張,同時進行相關性分析,避免測試集中出現數據泄露,保證訓練結果可靠真實。為保證實驗結果的準確性與嚴謹性,所有數據皆為3次實驗后統(tǒng)計取平均值。
實驗結果采用精確度(precision,P)、召回率(recall,R)、平均精度(average precision,AP),和平均精度均值(mean average precision,mAP)等作為評價指標,計算公式為式(11)~(14):
其中TP(true postives)為預測正確的正類樣本數量,FP(false postives)為預測錯誤的正類樣本數量,FN(false negatives)為預測錯誤的負類樣本數量,n為數據集中的類別數。設定AP的IoU檢測閾值為0.5,即評價指標為AP@0.5與mAP@0.5。同時為進一步發(fā)揮模型性能,對每個置信度閾值(confidence threshold)下的指標進行判斷,如圖15所示。
圖15 不同置信度閾值下模型性能Fig.15 Model Performance under different confidence thresholds
從15圖可知,當置信度閾值設定為0.5時,各項指標綜合最高,由此表示此時的模型性能最好,其中precision為82.1%,recall為70.4%,mAP為78.9%。
首先對自建數據集的有效性進行分析,目前還沒有權威的煙霧火焰公開數據集,將與廣泛使用的VisiFire火焰數據集,目前Kaggle上火焰煙霧體量最大的數據集fire smoke dataset[27]進行對比。
將YOLOv5s在3個數據集上分別進行訓練,并選用1張不在數據集中的現實圖片進行對比,結果如圖16所示。
圖16 數據集對比Fig.16 Comparison of datasets
由圖16可知,VisiFire數據集中僅包含火焰標注,無法檢測到煙霧類別,同時因數據量過少,訓練的模型泛化性不是很好,而fire smoke dataset數據集訓練的模型中雖然能檢測到火焰煙霧圖像,但置信度不高,同時也沒有將煙霧完全檢測到,自建數據集所訓練模型的檢測效果是最好的。
之后將SimAM注意力機制對目前廣泛使用的SE、CBAM注意力機制進行對比。將3種注意力機制分別加入到YOLOv5s中的實驗結果,如表2所示。
表2 注意力機制對比Table 2 Comparison of attention mechanism
對YOLOv5s和改進后的YOLOv5s進行對比實驗,設定batchsize為16,輸入為640×640,部分超參數采用表1中的結果。同時,為避免過擬合出現,在模型訓練過程中不設定固定的epoch數量,而是在100個epoch后啟用早停(early stopping)機制,當發(fā)現模型在驗證集上基本沒有改善時就自動停止訓練,在相同的網絡配置下,越早停止的訓練說明模型訓練的效率更高,學習速度更快。模型訓練的訓練損失和驗證損失的對比,如圖17所示。
圖17 損失值對比Fig.17 Comparison of loss value
從圖17可知,改進后的網絡中,box_loss、obj_loss、cls_loss在訓練集與驗證集中都比YOLOv5s網絡更小,未出現嚴重過擬合現象,且訓練花費時間更短,學習速率更高。改進后的網絡比原網絡收斂更快,在訓練時更有效率。
為進一步展現網絡的改進效果,對網絡的mAP@0.5數據進行對比,結果如圖18所示。
圖18 平均精度均值對比Fig.18 Comparison of mAP
從圖18可知,改進后的網絡比原YOLOv5s的精度指標更高,在火焰和煙霧檢測中更有優(yōu)勢。同時因為數據集中大部分數據為小目標數據,當精度提升后,可以認定為對小目標檢測效果提升。
為更全面地展示改進的網絡的優(yōu)勢,與主流的輕量級目標檢測網絡YOLOv3-Tiny、YOLOv4-Tiny、
EfficentDet-D0、YOLOX-Tiny、NanoDet-p-m-1.5x、YOLOv5-lite-g進行對比實驗,在與改進后網絡使用的訓練集上訓練,之后在同一測試集對比,為保證每個網絡發(fā)揮最佳性能,對每個網絡設置合適的輸入大小。對比結果如表3所示。
通過表3數據可知,改進后的YOLOv5s的精度遠高于其他網絡,參數量和權重大小也仍然滿足輕量級網絡的要求,同時對比原YOLOv5s網絡,因為網絡結構的改變,提高了少量的參數量和權重大小。但并未明顯影響檢測速度,仍可滿足實時檢測的要求。
表3 網絡對比結果Table 3 Network comparison results
為進一步驗證改進的有效性,對各項改進進行消融實驗測試,測試結果如表4所示。
由表4數據可知,各部分改進都有效果,在加入SimAM注意力機制后,檢測精度有明顯提高,同時訓練得也更快,其中SimAM機制中帶來的3-D權重很適合用于火焰與煙霧的檢測,之后加入Neck改進的部分后,加強了對小目標的檢測,優(yōu)化了多尺度特征的融合過程,對火焰的檢測有明顯改善,煙霧上也有更高的精度,同時也因為網絡復雜度的提高,對訓練輪次有所增加,檢測速度有微量下降。最后使用遺傳算法優(yōu)化的超參數后,精度提升,訓練效率更高,表示模型性能發(fā)揮得更好。
表4 消融實驗結果Table 4 Ablation experimental results
為更直觀對比網絡改進后的結果,選取測試集中部分圖片與現實圖片進行測試,為更明顯的對比結果,對兩個網絡的置信度閾值都設置為0.25,結果如圖19所示。
圖19左邊為YOLOv5s檢測結果,右邊為改進后的YOLOv5s檢測結果。圖(a)煙霧中的火焰,受到遮擋且火焰目標較小,左邊雖然能檢測到目標,但置信度不高,且無法細分火焰,右邊準確地檢測到被遮擋的火焰,且對煙霧的檢測中更準確。圖(b)中右圖對小目標的檢測效果更好,同時沒有對較為稀疏的煙霧產生誤檢。數據中不會將類似煙霧標注,因為在火災檢測中這種煙霧并沒有太多參考價值。圖(c)中煙霧與背景混淆,存在一個小目標火焰,右圖比左圖更好地檢測到了煙霧的輪廓,同時對小火焰的置信度更高。圖(d)中左圖漏檢了被遮擋的小火焰,同時將云朵誤檢為煙霧,右圖檢測到了被遮擋的小火焰,并且沒有誤檢,對火焰的檢測效果也更好。圖(e)為現實生活中的圖片,火焰與煙霧中背景復雜,存在干擾。相對于左圖,右圖中對煙霧與火焰的置信度更高,檢測框更貼近現實。
圖19 檢測結果對比Fig.19 Comparison of detection results
針對目前火災檢測算法中對煙霧誤檢,對小目標火焰漏檢的情況,提出一種基于YOLOv5s改進的小目標火焰檢測算法,首先為增加模型的魯棒性和泛化能力,基于公開數據集制作了一個數量充足,內容復雜的煙霧火焰自建數據集,對網絡改進之處為在主干網絡中增加3-D注意力機制SimAM,對Neck部分進行修改,增加一個檢測尺度,優(yōu)化特征融合過程,提高模型對小目標的火焰以及煙霧的檢測精度。通過遺傳算法在自建數據集上優(yōu)化網絡超參數,進一步提升模型的性能。經過實驗表明,改進后的網絡相較于YOLOv5s,在沒有過多增加參數與權重大小的情況下,對火焰與煙霧中精度更高,提升了對小目標的檢測精度,能滿足實時檢測的需要。在后續(xù)中,可對結構進一步調整,擴充學習的數據集,以達到更好的檢測效果。