









摘" 要:火災往往指的是失控的燃燒,對人們的財產及生命安全造成了嚴重的隱患。因此,就需要實時監測火災是否發生,該文基于YOLOv5系列,包括YOLOv5s、YOLOv5m和YOLOv5l,對標注好的數據集分別利用3種權重文件進行模型訓練,設計和實現能夠實時監測火災是否發生的系統。對上述3種不同的方法,進行比較,發現YOLOv5l的精確率、召回率和平均精度高于其他二者。
關鍵詞:YOLOv5s;YOLOv5m;YOLOv5l;火災;檢測系統
中圖分類號:S776.29+2" " " 文獻標志碼:A" " " " " 文章編號:2095-2945(2023)12-0039-06
Abstract: Fire often refers to out-of-control combustion, which causes serious hidden dangers to people's property and life safety. Therefore, it is necessary to monitor the occurrence of fire in real time. Based on the YOLOv5 series, including YOLOv5s, YOLOv5m and YOLOv5l, this paper uses three kinds of weight files to train the model of the labeled data set, and designs and implements a system which can monitor the occurrence of fire in real time. Compared with the above three different methods, it is found that the precision, recall rate, and average precision of YOLOv5l are higher than those of the other two.
Keywords: YOLOv5s; YOLOv5m; YOLOv5l; fire; detection system
火災的危害不僅表現在毀壞財物、造成人員傷亡,而且還會破壞生態環境,其涉及的范圍很廣,比如森林、酒店和工廠等等。這些場景都要杜絕火災的發生,或者當火災發生時快速地采取相應措施,減輕火災造成的損害。為了能夠及時發現火災,部分工作人員還會被指派到現場,檢測是否有火災發生。但是這種人工監督的方式不但會造成大量的人員成本,還很容易會出現誤檢、漏檢等情況,不能實時準確地監控[1]。利用監控攝像頭等設備實時監控現場情況,再結合YOLOv5目標檢測算法可以實現火災的自動檢測,對當前的火災防治具有顯著的作用。
1 模型介紹
YOLOv5的結構和YOLOv4很相似,但也有一些不同,YOLOv5網絡結構可分為Input(輸入端)、Backbone(骨干網絡)、Neck(多尺度特征融合模塊)和Output(輸出端)共4個部分。本文重點講解YOLOv5s,其小巧速度快,其他的版本都在YOLOv5s的基礎上對網絡進行加深與加寬,也就是使用殘差組件和卷積核的數量不斷變多,depth_multiple控制網絡的深度,width_multiple控制網絡的寬度[2]。YOLOv5s具體結構如圖1所示。
1.1" 輸入端
1.1.1 Mosaic增強
YOLOv5的Mosaic數據增強參考了CutMix(裁剪后拼接)數據增強方式。Mosaic數據增強利用了4張圖片,采取隨機填充、縮放和裁剪的形式進行混合,將4張圖片拼接之后就獲得1張新的圖片,Mosaic圖像增強技術基于現有數據極大地豐富了樣本的多樣性,極大程度降低了模型對于多樣性學習的難度,也極大豐富了檢測物體的背景,且在標準化BN計算的時候會計算4張圖片的數據[3]。如圖2所示。
1.1.2 自適應錨框計算
YOLOv5將錨框的計算嵌入到訓練中:在訓練中,在初試設定好的錨框的基礎上輸出預測框,然后和Ground-truth進行對比計算Loss,再進行更新,從而不斷更新錨點框大小。通過這種方法,YOLOv5可以在不同訓練集中通過自適應計算出最佳的錨框值。
1.1.3 自適應圖片縮放
縮放填充后,兩端的灰邊大小都不同,如果填充得比較多,則存在信息冗余,影響推理速度。簡單使用resize會造成圖片的失真,YOLOv5對此提出了新的方法,在代碼中對letterbox函數進行了改進,通過計算圖片最適宜的尺寸,YOLOv5對原始圖像自適應添加最少的灰邊。圖像高度上兩端的灰邊變少,在推理時,計算量也會減少,即目標檢測速度會得到提升。
1.2 骨干網絡
Backbone部分作為主干網絡,包含Focus結構和跨級部分網絡(Cross Stage Partial Network,CSP)模塊。
1.2.1 Focus結構
這其中比較關鍵的是切片操作,如圖3所示,4×4×3的圖像切片后變成2×2×12的特征圖,再經過一次32個卷積核(僅YOLOv5s使用,其他3種結構使用的數量有所增加)的卷積操作,最終變成304×304×32的特征圖[4]。
4次切片操作對應代碼在YOLOv5的源碼中的common.py文件中,截取切片操作的代碼如圖4所示。
forward方法的切片部分的代碼:
[x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]]
首先得清楚::2的含義,原本是start:end:步長[start,end)間隔為步長。
所以::2 的含義是從第一個元素開始,到最后一個元素,間隔為2。
1::2的含義是從第二個元素開始,到最后一個元素,間隔為2。
這樣一來,將W、H信息就集中到了通道空間,輸入通道擴充了4倍,即拼接起來的圖片相對于原先的RGB三通道模式變成了12個通道,最后將得到的新圖片再經過卷積操作,最終得到了沒有信息丟失情況2倍下的采樣特征圖。
1.2.2 CSP結構
YOLOv5 與 YOLOv4均使用了CSP結構,不同之處在YOLOv4中只有主干網絡使用了CSP結構,而YOLOv5中設計了2種CSP結構,如圖5所示。
CSP1_X結構將輸入分為2個分支,一個分支先通過CBL,再經過多個殘差結構(Bottleneck×N),再進行一次卷積;另一個分支直接進行卷積;然后2個分支進行Concat,再經過BN(正態分布),再來一次激活,最后進行一個CBL,得到的特征粒度更細。
另一種CSP2_X結構則應用于Neck中,CSP2_X相對于CSP1_X來說,不一樣的地方只有CSP2_X將Resunit換成了2×X個CBL,后將其Concat,使網絡對特征的融合能力得到加強,保留了更豐富的特征信息。
1.3 Neck
Neck網絡的融合部分,將特征混合組合,并傳遞到預測層。YOLOv5采用自頂向下傳遞強特征的FPN 結構,將高層的特征信息通過上采樣的方式進行傳遞融合,得到進行預測的特征圖。
1.4 Output
Output部分包括 Bounding box損失函數和非極大值抑制NMS(Non-Maximum Suppression)。
1)Bounding box損失函數。YOLOv5中采用GIoU Loss做 Bounding box的損失函數。
假如現在有2個任意性質A、B,找到一個最小的封閉形狀C,讓C可以把A、B包含在內,然后計算C中沒有覆蓋A和B的面積除以面積C,然后用重疊度(Intersection over Union,IoU)減去比值,示意圖如圖6所示。因此,GIoU _Loss可以表示為
2)非極大值抑制NMS。非極大值抑制(Non-Maximum Suppression,NMS),顧名思義就是抑制不是極大值的元素,可以理解為局部最大搜索。這個局部代表的是一個鄰域,鄰域有2個參數可變,一是鄰域的維數,二是鄰域的大小。
面對數量巨大的目標框篩選,通過采用加權NMS操作剔除重復冗余,增加了相交尺度的衡量,找到最佳的物體檢測位置,從而完成檢測過程(圖7)。
2 整體設計
本文所設計的火災檢測系統的整體設計流程圖如圖8所示。
1)數據集收集:運用網絡爬蟲技術,爬取網上大量的有關火災的圖片。
2)數據集標注:圖片標注工具有很多,這里使用的Makesense AI工具對圖像添加標簽,Makesense AI不需要安裝,直接用瀏覽器在線標注即可,非常方便;而且能夠直接導出Yolo格式,不需要再用工具轉換了。當然還有別的工具例如label Img等,但只能導出xml,需要腳本進行xml—txt轉換,不過label Img這類本地Tools數據隱私/安全性更高。
3)調整模型訓練參數:迭代批量設置大小為16;總迭代次數為100次。
4)模型訓練:等待模型訓練完成。
5)將模型部署到用PyQt搭建好的界面中:使用PyQt搭建一個平臺,使得能更好地運用所訓練好的模型。
6)圖片/視頻/攝像頭檢測:運行所搭建好的平臺,可以實現圖片、視頻中是否佩戴口罩的檢測,當然也可以實現攝像頭的實時檢測。
3 實驗與分析
3.1 YOLOv5 3個權重模型對比
分別利用YOLOv5的3個權重模型對火災數據集進行訓練,得到各訓練模型的精確率、召回率等一些評價指標,見表1。
由于YOLOv5l在網絡層次的加深和加寬,可以發現YOLOv5l比另外2種權重模型在精確率、召回率和平均精度方面要好。選用在精確率方面表現能力最好的權重,利用YOLOv5l權重進行數據集的訓練得到的模型,將其部署到用PyQt搭建的平臺上。
對數據集的每一張圖片進行訓練后,所有圖片上的錨框的分析情況如圖9所示。
可以發現錨框標注的類別都是fire,即都是火的情況,這是因為模型只識別出現火災的情況,而不識別不出現火災(nofire)的情況。還可以發現錨框中心點大部分在正中間的位置,所以可推斷出訓練的圖片,有火的位置大部分都在圖片正中心。并且可以得知,錨框大部分都不大,大概是20 cm左右。
3.2 測試效果圖
將訓練最好的模型部署到使用PyQt搭建好的平臺上,測試其圖片檢測功能(圖10)、視頻檢測功能(圖11)及攝像頭實時檢測功能(圖12)。
4 結束語
本文分別對3種權重模型YOLOv5s、YOLOv5m和YOLOv5l進行了實驗設計,發現YOLOv5l的檢測結果的準確性高于其他二者,但是速度也比二者要慢。在對數據集進行訓練后,將得到的模型部署到使用PyQt搭建好的平臺上。
參考文獻:
[1] 談世磊,別雄波,盧功林,等.基于YOLOv5網絡模型的人員口罩佩戴實時檢測[J].激光雜志,2021,42(2):147-150.
[2] 施金汝,許凌峰,陳金立,等.基于樹莓派和YOLOv5算法的路面裂縫檢測系統[J].信息技術,2022(4):22-28,34.
[3] 彭浩.基于YOLOv5的無人機巡檢圖像絕緣子檢測技術的研究[D].徐州:中國礦業大學,2021.
[4] 何穎,陳丁號,彭琳.基于改進YOLOv5模型的經濟林木蟲害目標檢測算法研究[J].中國農機化學報,2022,43(4):106-115.