程瀟 劉雪梅 郭幸語 韓昌



摘要:目標檢測技術廣泛應用于各個領域,其目的是通過對輸入圖像中的物體和場景進行信息的特征提取,從而識別圖中感興趣的目標。為了減少作業人員在建筑工地作業時因未佩戴安全帽造成的人員傷亡事故,文章提出了一種基于深度學習的建筑工地安全帽目標智能檢測方法,檢測建筑工地人員安全帽佩戴情況,提高行業安全生產效率。本研究通過安全帽數據集進行先驗框設計,采用k-means算法獲得本數據集的先驗框維度;將用于訓練的圖片進行拼接實現了數據集的增強;用CIOU代替回歸損失增加預測精度,基于YOLOv4的基礎網絡進行特征提取,獲得不同尺度的特征層,將獲得的特征層經過深層次特征金字塔進行特征融合,再輸入分類回歸層進行回歸預測。
關鍵詞:安全帽檢測;數據增強;特征金字塔
中圖分類號:TP399文獻標志碼:A
1 研究背景及意義
在建筑生產環境中,由于工作人員在進行生產操作過程中沒有按照安全規定佩戴安全帽或者沒有正確佩戴安全帽而造成的安全事故越發多見,為了響應國家對施工安全規范的提倡,越來越多的企業注重員工的安全行為規范,因此,需要一種技術來監測作業工人在建筑生產環境中安全帽的佩戴情況,從而督促工人們佩戴好安全帽,減少安全事故的發生。
隨著卷積神經網絡的提出和發展,可以用一些數學函數來描述計算機難以理解的問題,使得目標檢測有了新的研究方向。通過設計神經網絡模型進行訓練后,自動提出特征的方法使目標檢測的研究方向轉到了深度學習。基于深度學習的目標檢測算法發展得很迅速,從Faster RCNN[1]錨框的提出到SDD、YOLOv系列的提出,在不斷地提高目標檢測的精度和計算速度。
關于如何保障作業人員在建筑生產環境中的安全問題,目前已經有一些有關安全帽佩戴檢測的相關研究。在計算機視覺研究方面,馮國臣等[2]提出了應用機器視覺的相關方法來實現安全帽的自動識別任務,通過在圖像預處理的基礎上利用混合高斯模型來做前景檢測,然后運用連通域的判斷來進行人體頭部區域的定位[2]。楊莉瓊等[3]在機器學習的基礎上對安全帽佩戴檢測做了相關研究,利用深度學習算法檢測出現場視頻中的施工人員臉部位置,根據安全帽與人臉的關系估算出安全帽潛在區域再對區域圖像進行增強處理,使用 H方向梯度直方圖提取樣本的特征向量,用支持向量機分類器對臉部上方是否有安全帽進行判斷,實現對施工人員安全帽佩戴行為的實時檢測與預警。在建筑施工場地方面,劉云波等[4]提出一種基于計算機視覺的施工現場的安全帽監控技術,通過利用背景差法從圖像中提取出前景,運用二值化的方法分割出檢測目標進行尺度濾波提高檢測的準確性。
在YOLOv系列算法的改進方面,王兵等[5]在YOLOv3的基礎上使用GIoU代替交并比IOU,在包含IOU對目標物體的尺度不敏感的特點下,GIoU可優化預測框與真實框的重疊區域,從而改進了回歸的損失函數,提高了判斷是否佩戴安全帽的檢測效果。林俊等[6]利用YOLO v3提出了安全帽檢測的方法,通過修改分類器使輸出的張量為18維度,再對基于YOLOv3的預訓練模型進行訓練,根據損失函數和交并比的曲線對模型的參數進行優化得到最適合的安全帽檢測模型。施輝等[7]提出了基于改進YOLO v3算法的安全帽佩戴檢測方法,通過采用圖像金字塔結構獲取不同尺度的特征圖用于多尺度的位置和類別預測,使用施工場地的監控視頻作為數據集進行目標框維度聚類,在訓練迭代過程中改變輸入圖像的尺寸從而增加模型對尺度的適應性。
王明芬等[8]基于視頻圖像做了安全帽檢測、識別和跟蹤的相關研究,通過提取視頻里的幀序列進行前景處理,然后在處理后的結果中檢測目標、預測和跟蹤軌跡的新位置,再匹配檢測目標并顯示目標的跟蹤結果。鄧開發等[9]提出一種基于深度學習的安全帽佩戴檢測方法,使用Keras深度學習框架搭建Faster RCNN模型,通過卷積層和池化層提取圖像的信息形成特征圖,提高了檢測速度。劉曉慧等[10-12]對安全帽的識別算法進行了研究,在定位識別人臉時創新性地引入了檢測膚色的方法來獲得臉部以上的區域圖像,將不變矩作為圖像的特征向量,再通過支持向量機(SVM)分類模型[13]判斷是否佩戴安全帽。
2 安全帽檢測算法
以提高建筑行業安全生產效率為目的,本文提出了一種基于機器人視覺的建筑工地安全帽目標檢測算法用于檢測建筑工地人員安全帽佩戴情況,算法的設計思路如圖1所示。本文的目標檢測算法采用k-means算法通過自制的安全帽數據集進行先驗框設計獲得新的先驗框維度,將用于訓練的圖片進行拼接實現了數據集的增強,使用CIOU量化真實框與預測框的重合度優化回歸損失,從而增加預測精度,基于YOLOv4的基礎網絡進行特征提取,獲得不同尺度的特征層,將獲得的特征層經過深層次特征金字塔進行特征融合,再輸入分類回歸層進行回歸預測。
2.1 特征提取網絡
CSPDarkNet53作為YOLOv4的主干特征提取網絡,是在DarkNet53的基礎上結合了CSPNet。CSPNet網絡主要用來增強卷積神經網絡的學習能力,其結構如圖2所示。CSPNet將原來由殘差單元疊加的卷積網絡進行了左右的拆分,第一部分會有一個大的殘差邊不經過堆疊的殘差結構直接連接到后面的輸出層,第二部分作為主干部分繼續進行原來殘差塊的堆疊。
從圖2 CSPDarkNet53特征提取網絡結構中可以看到,YOLOv4的輸入是一個416×416×3的圖片,當然也可以對輸入圖片的大小進行改變,例如改為608×608×3的圖片,但考慮到常用電腦顯存的問題,本論文選擇了輸入大小為416×416×3的圖片。
在主干特征提取網絡中,只使用了最后面3個的特征層進行下一步的操作,因為這3個特征層的語義信息更為豐富一些。在獲得了最后3個特征層后,本研究將第五層的特征層,即13×13×1 024的有效特征層進行3次卷積操作,再將卷積后的結果輸入SPP網絡結構中。
SPP網絡結構具有4個分支,事實上就是運用不同池化核大小的最大池化對輸入進來的特征層進行池化處理從而增加網絡的感受野,然后將池化后的結果經過堆疊和3次卷積操作輸入下一個環節即PANet網絡中。SPP與PANet加強特征提取網絡結構如圖3所示。通過堆疊和3次卷積后的特征層在PANet網絡中通過上采樣,將輸入的特征層的高和寬變為原來的2倍,當輸入的特征層尺寸為13×13,則經過上采樣處理后的特征層尺寸為26×26,這樣就可以把上采樣得到的特征層與在主干特征提取網絡中獲取到的shape同樣為26×26×512的特征層進行堆疊從而實現特征融合,完成堆疊后再進行5次卷積,5次卷積的操作為1×1的卷積和3×3的卷積交替進行來完成,這樣的結構有助于提取圖片的特征并減少了參數量。同理再一次上采樣、堆疊、卷積,這樣就完成了一個特征金字塔的結構并將主干特征提取網絡中的3個有效特征層都進行了特征融合。
PANet網絡結構進一步加深了特征提取,將特征融合后的結果進行下采樣,使特征層的高和寬再一次被壓縮,從而與第一次上采樣得到的特征層進行堆疊,堆疊后進行5次卷積,卷積后的輸出一方面用于YOLO Head進行結果預測,另一方面繼續進行下采樣再與池化后的特征層進行特征融合。在PANet結構中,進行多次的特征融合得到了更加有效的特征。
2.2 YOLO Head網絡結構
YOLO Head將提取到的特征進行結果預測,YOLO Head的結構與YOLOv3的分類回歸層是一致的,在YOLOv4網絡結構中一共存在3個YOLO Head,可以分為上層、中層和下層。每個YOLO Head的內部是1個3×3的卷積和1個1×1的卷積,3×3的卷積是對前一層輸出結果的特征整合,1×1的卷積是利用3×3卷積后的特征獲得最終的輸出結果。YOLO head的網絡結構如圖4所示。
本文使用的數據集是基于VOC數據集的格式。因此,YOLO Head的預測結果為(52×52×75)(26×26×75)(13×13×75),分別對應著上層、中層和下層。以下層為例,下層的預測結果(13×13×75)基于下采樣與池化后的特征層進行特征融合獲得特征圖預測。75可以分解成3×25,其中3表示網格點上的3個先驗框,下層利用的特征層shape為13×13,即將輸入的圖片劃分為169個網格,每個網格會負責該區域物體的檢測。當某個物體的中心落到該區域時就需要利用網格對物體進行檢測。因此,YOLO Head輸出的預測結果是將先驗框進行調整后的最終預測框結果。因為使用的是VOC數據集的格式,所以分為20個種類。25則包含著VOC數據集分的20個種類;4個用于調整先驗框的參數,通過4個調整參數對已經設定好的先驗框的中心和寬高進行調整,調整后的結果即為預測框;最后剩下的1個1,用來判斷先驗框內部是否包含需要檢測的物體。當數值越趨近于1,則表示先驗框內包含檢測物體;同理,當數值越趨近于0,則表示先驗框內不包含檢測物體。
3 實驗過程及即結果分析
3.1 實驗數據集制作
實驗數據集是目標檢測任務的關鍵性部分,數據集的好壞直接影響著訓練模型的預測效果,本文使用的數據集是基于VOC格式的自制數據集,利用企業提供的安全帽數據進行數據集的制作,通過對圖片數據的篩選濾除了重復的或不符合檢測任務的圖片,用于本文的安全帽數據集總共包含8 270張,其中,用于模型訓練的圖片為7 581張、用于模型測試的圖片為689張。用于模型訓練的圖片需要對圖片進行數據標注,本文使用了專門的圖像標記工具labellmg對安全帽數據集中的訓練圖片進行標記,制作用于模型訓練的訓練數據集。
3.2 實驗平臺
本實驗所使用的軟硬件工具包括Python,CUDA,OpenCV,Keras,numpy以及服務器等工具,基于YOLOv4的安全帽檢測算法采用Pytorch框架。為了方便環境的搭建和管理,本文還使用了anaconda軟件工具包。本文實驗環境的配置如表1所示。
3.3 實驗方案
本文的實驗把安全帽數據集分為兩類:一類是用于對改進后的新網絡進行訓練的訓練集。在訓練的時候,網絡算法會在訓練集的圖片中隨機選取圖片進行訓練,直至遍歷完所有的圖片;另一類是用于已經訓練成功的網絡模型進行測試的測試集。
本實驗的網絡訓練初始參數參考了YOLOv4官網上提供的部分參數,然后在預訓練權重的基礎上進行訓練。將首次訓練得到的權重參數作為下一次訓練的權重,根據訓練效果對網絡參數進行調節再多次進行訓練,從而得到最優網絡效果的權重參數。本文的特征提取網絡會有3種不同尺度的特征層。因此,本實驗在安全帽圖片尺寸的選擇上并沒有采取相同尺寸的訓練圖片,而是在網絡訓練時隨機輸入不同尺寸的圖片。
3.4 實驗結果分析
本實驗通過使用最佳的權重參數進行圖片預測,從而檢測模型的訓練效果。實驗模型算法的檢測效果如圖5所示。
從該圖片的檢測結果中可以看出,本研究把圖片中佩戴安全帽的作業人員的安全帽用描框框選出來并標記為hat;同時,把未佩戴安全帽的作業人員也框選出來并用紅色標記為person。模型檢測精度的計算采用的是mAP,mAP常用于衡量目標檢測的精確度。
在使用mAP計算精度前,需要了解TP,TN,FP和FN的概念。mAP的計算過程會涉及檢測樣本是否有被正確地分類以及被分成了正樣本還是負樣本,因此采用TP,TN,FP和FN來代替4種分類,即正確的被分為了正樣本;正確的被分為了負樣本;錯誤的被分為了正樣本,實際上為負樣本;錯誤的被分為了負樣本,實際上為正樣本。
在計算mAP中,需要使用精確度和召回率這兩個指標,精確度的概念表示的是分類器正確分類正樣本的部分占所有被分類器認為是正樣本的比例(包含被錯誤分為了正樣本的部分),用來衡量分類器預測結果的準確度,其表達見公式(1):
召回率的概念表示的是分類器正確分類正樣本的部分占所有實際上是正樣本的比例(包含被錯誤分為了負樣本的部分),用來衡量分類器是否把比較多的正樣本檢測了出來,其表達見公式(2):
在計算mAP中,要使用兩個指標,是因為在目標檢測算法中,會人為地對置信度的值進行設定。只有當預測結果的置信度大于所設定的值時,檢測網絡才會認為圖片中包含檢測的目標。如果置信度的值設置得比較合適,分類器預測的結果就會越符合實際情況,即更多的正樣本被正確地檢測了出來。如果設置得太高就會使一部分實際的正樣本被分為負樣本,此時在計算精確度時其值為等于1,召回率的值就會很低。因此,如果只用精確度來衡量預測效果的話,雖然精確度很高,但是仍有明顯的目標沒有被檢測出來;同理,如果只用召回率來衡量預測效果的話,當置信度設置得越低,計算召回率的值就會越高而精確度卻較低,那么就會存在較多的誤檢測,即被錯誤地分類為正樣本的數量會增多,檢測效果不好。不同置信度的值會影響精確度和召回率的大小,最終在計算mAP時要同時考慮精確度和召回率,只有將兩者進行結合才能正確評價目標檢測算法的優劣。在取不同的置信度時會得到不同的精確度和召回率值,利用不同的精確度[0,1]與召回率[0,1]的點的組合所得到的曲線圍成面積的值為這一類的AP值,而mAP就是這一類AP值的平均值。
在運行mAP的計算程序前需要準備兩個文件夾,分別為detection_result,ground_truth。detection_result用于存放檢測結果的txt文件,文件里包含物體的種類、物體的置信度以及物體位置的預測結果;ground_truth用于存放真實框的內容。文件里包含物體的種類以及檢測物體真實存在的位置。運行相應的程序即可得到對應文件夾中的內容。部分操作及運算結果如圖6、圖7所示。
當生成計算mAP所需要的文件后,便可以運行程序得到mAP的計算結果,mAP計算的值如圖8所示。從mAP的計算結果圖中可以得到,檢測安全帽的召回率為93%,檢測精度為95.61%;檢測未佩戴安全帽的作業人員的召回率為81.57%,檢測精度為84.63%,整體上mAP的計算結果為89.08%。以mAP作為本文算法檢測效果的評價指標,滿足了本設計的檢測要求。
4 結語
本文基于YOLOv4的深度學習算法,首次在建筑工地領域實現了安全帽的智能檢測。實驗采用k-means算法通過安全帽數據集進行先驗框設計獲得新的先驗框維度,將用于訓練的圖片進行拼接實現了數據集的增強,使用CIOU量化真實框與預測框的重合度優化回歸損失從而增加預測精度,基于YOLOv4的基礎網絡進行特征提取,獲得不同尺度的特征層,將獲得的特征層經過深層次特征金字塔進行特征融合,再輸入分類回歸層進行回歸預測。本文的安全帽算法在檢測精度和速度上都滿足設計的要求。
參考文獻
[1]GIRSHICK R.Fast R-CNN:Proceedings of the IEEE international conference on computer vision[C].Santiago:2015 IEEE International Conference on Computer Vision (ICCV),2015.
[2]馮國臣,陳艷艷,陳寧,等.基于機器視覺的安全帽自動識別技術研究[J].機械設計與制造工程,2015(10):39-42.
[3]楊莉瓊,蔡利強,古松.基于機器學習方法的安全帽佩戴行為檢測[J].中國安全生產科學技術,2019(10):152-157.
[4]劉云波,黃華.施工現場安全帽佩戴情況監控技術研究[J].電子科技,2015(4):69-72.
[5]王兵,李文璟,唐歡.改進YOLOv3算法及其在安全帽檢測中的應用[J].計算機工程與應用,2020(9):33-40.
[6]林俊,黨偉超,潘理虎,等.基于YOLO的安全帽檢測方法[J].計算機系統應用,2019(9):174-179.
[7]施輝,陳先橋,楊英.改進YOLOv3的安全帽佩戴檢測方法[J].計算機工程與應用,2019(11):213-220.
[8]王明芬.基于視頻的安全帽檢測和跟蹤算法研究[J].信息通信,2020(1):40-42.
[9]鄧開發,鄒振宇.基于深度學習的安全帽佩戴檢測實現與分析[J].計算機時代,2020(7):12-15.
[10]劉曉慧,葉西寧.膚色檢測和Hu矩在安全帽識別中的應用[J].華東理工大學學報(自然科學版),2014(3):365-370.
[11]姬壯偉.基于pytorch的神經網絡優化算法研究[J].山西大同大學學報(自然科學版),2020(6):51-53,58.
[12]BOCHKOVSKIY A,WANG C Y,LIAO H Y M. YOLOv4:Optimal Speed and Accuracy of Object Detection[EB/OL].(2020-04-23)[2023-03-06].https://doi.org/10.48550/arXiv.2004.10934.
[13]WANG C Y,MARK LIAO H Y,WU Y H,et al.CSPNet:A new backbone that can enhance learning capability of cnn[C].Seattle:Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops,2020.
(編輯 王永超)