唐勇 巫思敏
摘? 要:在工地現(xiàn)場的安全管理中,施工人員的安全帽佩戴與否關(guān)系到其生命安全。傳統(tǒng)的人工方式檢測施工人員安全帽佩戴與否的效率較低。文章提出一種基于YOLOv3目標(biāo)檢測算法,可以實時地自動檢測施工人員是否佩戴安全帽:首先收集安全帽數(shù)據(jù)集和標(biāo)注處理,把數(shù)據(jù)集分為訓(xùn)練集、驗證集和測試集;然后使用YOLOv3對訓(xùn)練集和驗證集進(jìn)行訓(xùn)練,并對測試集進(jìn)行測試,最終結(jié)果顯示檢測準(zhǔn)確率達(dá)到0.78、召回率0.914、mAP達(dá)到0.91、F1指數(shù)0.842、FPS為161,可滿足安全帽實時檢測的要求。
關(guān)鍵詞:YOLOv3;目標(biāo)檢測;安全帽
中圖分類號:TP391? ? ? ? 文獻(xiàn)標(biāo)識碼:A文章編號:2096-4706(2021)23-0088-05
Application of YOLOv3 in Safety Helmet Wearing Detection
TANG Yong1, WU Simin2
(1.Guangdong University of Technology, Guangzhou? 510006, China; 2.School of Computer Science and Engineering, North Minzu University, Yinchuan? 750021, China)
Abstract: Whether constructors wear safety helmets or not is related to their life safety in the safety management of the construction site. It is inefficient to detect whether the safety helmet of construction personnel is worn by traditional manual inspection. This paper proposes a target detection algorithm based on YOLOv3 to detect automatically whether the construction personnel wear safety helmets in real time. Firstly, collect the data set of safety helmets and label processing, divide the data set into training set, verification set and test set; then use YOLOv3 to train the training set and verification set, and test the test set. The final results show that the accuracy rate of detection reaches 0.78, the recall rate is 0.914, mAP reaches 0.91, F1 index is 0.842, and FPS is 161, which can meet the real-time detection requirements of safety helmet.
Keywords: YOLOv3; target detection; safety helmet
0? 引 言
施工人員在工地施工過程中,經(jīng)常存在各種各樣的作業(yè)風(fēng)險,威脅著施工人員的人身安全。經(jīng)??梢栽谛侣剤蟮乐锌吹轿矬w打擊、高處墜落、起重、坍塌等危害出現(xiàn)在施工過程中[1]。因此,施工人員在施工過程中必須正確佩戴安全帽,以保護(hù)人身安全。目前,對于安全帽佩戴的檢測方法是以人工檢測為主,人工檢測費時費力,而且檢測精度較為低下,存在較多的錯檢、漏檢現(xiàn)象。針對以上的問題,需要尋找一種更加高效可行的方式或方法來代替人工檢測,減少施工人員在施工過程中受傷和死亡的事件的出現(xiàn)。
目標(biāo)檢測應(yīng)用較多,包括安全帽檢測、行人檢測[2]、口罩檢測、車輛識別[3]等等,本文主要研究安全帽檢測。據(jù)統(tǒng)計,為了提高了安全帽檢測的準(zhǔn)確性及效率,相關(guān)學(xué)者使用了傳統(tǒng)機(jī)器學(xué)習(xí)算法進(jìn)行研究,如馮國臣等人探索安全帽檢測時通過機(jī)器視覺先確定目標(biāo)圖像為人體[4],再定位到人體頭部;但傳統(tǒng)的機(jī)器學(xué)習(xí)方法應(yīng)用于目標(biāo)檢測,結(jié)果極其容易受施工環(huán)境的影響,檢測結(jié)果往往都是很低的準(zhǔn)確率,檢測時延較長,不利于實際應(yīng)用。Joseph Redmon在2016年提出了提出You Only Look Once(YOLO)[5],同年提出了YOLO的改進(jìn)版YOLOv2算法[6],并對其改進(jìn)提出了YOLOv3算法[7],不僅運算速度快,還得到了達(dá)到RetinaNet水平的mAP值。因此本文實現(xiàn)了基于YOLOv3的安全帽檢測,并得到了較好的精度和效率。
1? YOLOv3算法
1.1? YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3是指通過特征提取網(wǎng)絡(luò),提取輸入圖像的相關(guān)特征,從而得到特定大小的特征圖。比如現(xiàn)有一張輸入圖像,第一步是處理為一個13×13的網(wǎng)格單元;第二步是判斷這些網(wǎng)格單元中是否存在真實框中的目標(biāo)的中心坐標(biāo),若存在那么可以利用這個網(wǎng)格單元來預(yù)測這個目標(biāo);最后利用RPN網(wǎng)絡(luò)來進(jìn)行3×3邊框預(yù)測,需要注意的是部分邊框不會去進(jìn)行預(yù)測,只有交并比值的邊框真正在預(yù)測目標(biāo)。YOLOv3網(wǎng)絡(luò)的結(jié)構(gòu)圖如圖1所示。
其中Darknet-53是YOLOv3的主干網(wǎng)絡(luò),由53個卷積層和若干的residual層組成,是一種提取特征的網(wǎng)絡(luò)結(jié)構(gòu)。Darknet-53不僅結(jié)合了殘差網(wǎng)絡(luò)(ResNet)的優(yōu)點,還包含了5個殘差塊,分別進(jìn)行5次的降采樣工作,在最后的三次降采樣過程中獲得3個尺度檢測的特征圖,并最終實現(xiàn)了目標(biāo)預(yù)測。大特征圖和小特征圖存在較大的差異,大特征圖包含檢測目標(biāo)的基本位置信息,小特征圖包含著層次的語義信息,但是這兩個特征圖能夠互相融合,從而能夠檢測大小目標(biāo)。
YOLOv3相對于YOLOv2而言,能夠利用3個特征尺度進(jìn)行多尺度特征融合,對目標(biāo)進(jìn)行預(yù)測,尤其使得小目標(biāo)檢測更加精準(zhǔn)化。其中各個特征尺度與之對應(yīng)的先驗框(anchors值)如表1所示。
1.2? 模型損失函數(shù)
在YOLO算法模型中,第一步把圖片劃分成單元格,以每一個單元格為單位進(jìn)行目標(biāo)的預(yù)測和分類,每個單元格負(fù)責(zé)檢測目標(biāo)真實框中心,判斷其是否落在本網(wǎng)格內(nèi)。第二步工作是所有的單元格必須預(yù)測預(yù)測框和真實框的大小與坐標(biāo),并且對所有預(yù)測框生成一個預(yù)測置信度分?jǐn)?shù)。第三步,根據(jù)數(shù)據(jù)集的類別數(shù)目,確定每個單元格就需要預(yù)測多少個類別的條件概率值。在這個預(yù)測過程中與真實值所產(chǎn)生的偏差就組成了本文算法模型YOLOv3的損失函數(shù),Loss這個偏差由三部分組成:目標(biāo)置信度損失、目標(biāo)分類損失和邊界框位置回歸損失;Loss的計算公式為:
Loss=LBBox+Lconfidence+Lclass? ? ? (1)
其中目標(biāo)置信度損失中的置信度主要有兩個評價指標(biāo),首先是單元格內(nèi)是否存在目標(biāo),然后是候選框的準(zhǔn)確程度。將置信度用confidence表示,Pobj表示檢測目標(biāo)是否在這個單元格內(nèi),其計算公式為:
confidence=Pobj×(2)
其中,當(dāng)單元格內(nèi)沒有包含目標(biāo)物體,Pobj的值為0,否則Pobj值為1。即,當(dāng)單元格存在目標(biāo)物體時,置信度的取值就為IoU的取值。下面對IoU的相關(guān)知識做一個簡單說明,指出其優(yōu)點與缺陷。
1.3? 交并比
交并比(Intersection of Union, IoU)是從數(shù)學(xué)的集合引入到目標(biāo)檢測算法處理過程中的,間接作為YOLO的優(yōu)化損失指標(biāo)。數(shù)學(xué)上,它描述了集合A和集合B兩者之間存在的關(guān)系,但在目標(biāo)檢測中它被用來用于衡量真實框(ground truth)與預(yù)測框(predict box)的差距,也包括用來描述真實框與預(yù)測框的重合度,具體計算公式為:
IoU= (3)
這個指標(biāo)能夠快速地直觀反映真實框與預(yù)測框的檢測效果,具備著尺度不變性特點。
1.4? NMS處理目標(biāo)重復(fù)檢測
YOLOv3刪除了一些目標(biāo)可能性較低的窗口框,通過非極大抑制(NMS)算法[8],將置信度偏低的重復(fù)預(yù)測框剔除,然后輸出置信分?jǐn)?shù)較高的預(yù)測框。其次NMS處理目標(biāo)重復(fù)檢測時,先根據(jù)置信度的分?jǐn)?shù)值對預(yù)測排序;然后按照分?jǐn)?shù)值高到低的順序進(jìn)行檢查是否存在與之前的預(yù)測相同類別,同時滿足條件閾值(預(yù)先設(shè)置)小于當(dāng)前預(yù)測的IoU時,那么可以之間忽略這個預(yù)測;最后不斷重復(fù)地執(zhí)行上一個步驟,一直到所有預(yù)測檢查都完成。
2? 實驗過程
2.1? 數(shù)據(jù)集搜集和處理
本次實驗所用到的安全帽數(shù)據(jù)集是從網(wǎng)上搜索得到,總共分為兩類,分別為“hat”和“person”,其中未佩戴安全帽的人使用“person”來表示,而佩戴安全帽的人用“hat”標(biāo)記。本次實驗總共搜集了7 581張圖片,然后利用開源軟件LabelImg標(biāo)注所有的已收集到的圖片,其中一張圖片的標(biāo)注過程界面圖,如圖2所示。由圖可見,綠框表示安全帽的真實框(ground truth),右上角的小框表示類別,依此類推對所有圖片進(jìn)行了標(biāo)注操作。
7 581張圖片對應(yīng)生成7 581個xml文件。目標(biāo)真實框(ground truth)的標(biāo)簽信息保存至每一個xml文件,并且包括輸入圖像的大小以及目標(biāo)的類別和位置信息,如圖3所示。
本文將數(shù)據(jù)集進(jìn)行劃分為訓(xùn)練集、驗證集和測試集的數(shù)目是5 458、1 517、606.
2.2? 訓(xùn)練過程
實驗主要在PC端完成,PC的主要配置為CPU:Intel(R)Xeon(R)Platinum 8369B CPU @ 2.90 GHz 8核16線程,內(nèi)存:64 GB,顯卡:NVIDIA A10 GPU 24 GB ,Ubuntu:Ubuntu 20.04.3 LTS,框架:pytorch 1.10.1,語言:Python3.9.7,實驗過程中使用網(wǎng)絡(luò)的重要超參數(shù),如表2所示。
2.3? 評估標(biāo)準(zhǔn)
在本次目標(biāo)檢測實驗中,當(dāng)IoU取值大于等于0.5時,若檢測框中有一個目標(biāo),標(biāo)記為TP,反之則標(biāo)記為FP,當(dāng)IoU取值小于0.5時,若檢測框內(nèi)中有一個目標(biāo),標(biāo)記為FN,反之則標(biāo)記為TN。由這4項可求得訓(xùn)練樣本的召回率(Recall)與準(zhǔn)確率(Precision),其中計算公式為:
Precision==? ? ? (4)
Recall==? ? ?(5)
通過設(shè)置目標(biāo)的置信度閾值,得到數(shù)組滿足條件的Precision值和Recall值。由Precision值和Recall值組合而成的準(zhǔn)確率-召回率曲線(即P-R曲線)的面積,代表訓(xùn)練樣本中各類目標(biāo)的平均精度(AP),mAP則指所有類別的平均精度求和除以類別數(shù)目,目標(biāo)檢測網(wǎng)絡(luò)的檢測效果常以mAP作為主要的評估指標(biāo),公式為:
(6)
其中,
(7)
(8)
除此之外,本文在進(jìn)行算法性能評價時還采用F1指數(shù),F(xiàn)1是P-R的調(diào)和平均,能很好地區(qū)別算法的優(yōu)劣,F(xiàn)1值越高,物體識別算法就越好,計算公式為:
(9)
2.4? 實驗結(jié)果
迭代100個epoch之后,訓(xùn)練趨于穩(wěn)定,所得到的損失函數(shù)走勢圖如圖4所示,其中(a)所示的IoU Loss是通過訓(xùn)練集訓(xùn)練得到的邊框損失函數(shù);(b)所示的Objectness Loss是通過訓(xùn)練集得到的目標(biāo)置信度損失函數(shù);(c)所示的Classification Loss是通過訓(xùn)練集得到的類別損失函數(shù)。
最后通過測試集的測試,得到各個種類和總的數(shù)值,其中安全帽的準(zhǔn)確率為0.777,未戴安全帽的準(zhǔn)確率為0.782,平均類別準(zhǔn)確率為0.78;其中安全帽的召回率為0.898,未戴安全帽的召回率為0.93,平均類別召回率為0.914;AP50表示IoU取值為0.5時的精度,其中安全帽的精度為0.9,未戴安全帽的精度為0.92,平均類別精度為0.91;其中安全帽的F1指數(shù)為0.833,未戴安全帽的F1指數(shù)為0.85,平均類別F1指數(shù)為0.842;在該平臺下,當(dāng)設(shè)置測試batch size為16,并且把測試的圖片resize成512×512的大小的情況下,所得到的FPS為161。得到的結(jié)果如表3所示,測試效果如圖5所示。
3? 結(jié)? 論
本文提出了一種通過YOLOv3的目標(biāo)檢測算法來檢查施工人員在施工過程中安全帽的佩戴與否。首先確定從眾多的目標(biāo)檢測算法模型中,挑選出綜合性能較好的YOLOv3算法模型。然后開始收集并標(biāo)注制作整個實驗所需要的數(shù)據(jù)集,對制作好的數(shù)據(jù)進(jìn)行合理的劃分。最后將訓(xùn)練集和驗證集用于訓(xùn)練,測試集用于測試評估指標(biāo),調(diào)整YOLOv3中的參數(shù)。通過這一系列的操作,得到一個安全帽佩戴檢測的YOLOv3算法模型,該模型具有較高的準(zhǔn)確率、召回率和均值平均精度,并且在該模型下所測的結(jié)果滿足安全帽佩戴是實時檢測要求,可以很好地代替目前的人工檢測,更好地保障施工人員在施工過程中的人生安全。
參考文獻(xiàn):
[1] 唐凱,陳陸,張洲境,等.我國建筑施工行業(yè)生產(chǎn)安全事故統(tǒng)計分析及對策 [J].建筑安全,2020,35(9):40-43.
[2] 謝林江,季桂樹,彭清,等.改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)在行人檢測中的應(yīng)用 [J].計算機(jī)科學(xué)與探索,2018,12(5):708-718.
[3] 彭清,季桂樹,謝林江,等.卷積神經(jīng)網(wǎng)絡(luò)在車輛識別中的應(yīng)用 [J].計算機(jī)科學(xué)與探索,2018,12(2):282-291.
[4] 馮國臣,陳艷艷,陳寧,等.基于機(jī)器視覺的安全帽自動識別技術(shù)研究 [J].機(jī)械設(shè)計與制造工程,2015,44(10):39-42.
[5] REDMON J,DIVVALA S,GIRSHICK R,et al. You Only Look Once:Unified,Real-Time Object Detection [C]//2016 IEEE Conference on Computer Vision and Pattern Recognition(CVPR).Las Vegas:IEEE,2016:779-788.
[6] REDMON J,F(xiàn)ARHADI A. YOLO9000:Better,F(xiàn)aster,Stronger [C]//2017 IEEE Conference on Computer Vision and Pattern Recognition(CVPR).Honolulu:IEEE,2017:6517-6525.
[7] REDMON J,F(xiàn)ARHADI A. YOLOv3:An Incremental Improvement [J/OL].arXiv:1804.02767 [cs.CV].[2021-11-02].https://arxiv.org/abs/1804.02767.
[8] NEUBECK A,GOOL L V. Efficient Non-Maximum Suppression [C]//8th International Conference on PatternRecognition(ICPR06).Hong Kong:IEEE,2006:850-855.
作者簡介:唐勇(1993—)男,漢族,廣東河源人,碩士研究生在讀,主要研究方向:深度學(xué)習(xí)與目標(biāo)檢測;通信作者:巫思敏(1993—)女,漢族,廣東信宜人,碩士研究生,高級工程師,主要研究方向:數(shù)據(jù)挖掘與知識發(fā)現(xiàn)。