蘇州中材建設有限公司 崔 俊
近年來,目標檢測主要通過卷積神經網絡(CNN)提取圖片的特征,根據應用場景相應地誕生了許多目標檢測算法。對于安全帽與人體的目標檢測這一應用場景,國內外根據各種算法已經有很多實際的應用,并取得了很好的效果。2004年,Alexey等人根據YOLO v3提出了YOLO v4算法,在速度與精度上有了非常好的提升,與YOLO v3相比,YOLO v4的AP和FPS分別提升了10%和12%。
隨著建筑行業的發展,無論是企業規模、相關從業者的數量,還是經濟總產值都有不同程度的增長。然而在繁榮興盛的背后,由于疏忽大意而時常發生的建筑事故給工人的生命安全帶來了巨大的威脅。本文所提出的工地工人安全帽佩戴監測系統的安全帽監測部分主要基于YOLO v4的圖像特征提取處理,通過在工地布置的相關設備獲取即時的圖像,并以人體識別為前提判斷其安全帽的佩戴情況,并且通過后臺通知系統進行相應的預警和提醒,保證進入人員的人身安全,后臺系統整體是MVC架構,后臺進程通過socket與監測部分進程進行通信,同時將實時的結果通知系統管理員,進行及時的提醒。
Alexey等人在2020年4月23發表了論文《YOLO v4: Optimal Speed and Accuracy of Object Detection》,提出了YOLO v4算法。從圖1的結果來看,相對于YOLO v3在準確率上提升了近10個點,然而速度并幾乎沒有下降,論文主要貢獻如下:提出速度更快、精度更好的檢測模型,僅需要單張1080Ti或2080Ti即可完成訓練;驗證了目前SOTA的Bag-ofFreebies(不增加推理成本的trick)和Bag-of-Specials(增加推理成本的trick)的有效性;修改了SOTA方法,讓其更高效且更合適地在單卡進行訓練,包括CBN、PAN、SAM等。許多特征可以提高CNN的準確率,然而真正實行起來,還需要在大型數據集上對這些特征組合進行實際測試,并且對測試結果進行理論驗證。某些特征僅在某些模型上運行,并且僅限于特定的問題,或是只能在小型數據集上運行;而另外有些特征(如批歸一化和殘差連接)則適用于大多數模型、任務和數據集。YOLO v4使用了以下特征組合,實現了新的SOTA結果:(1)加權殘差連接(WRC);(2)Cross-Stage-Partial-connection,CSP;(3)Cross mini-Batch Normalization,CmBN;(4)自對抗訓練(Self-adversarialtraining,SAT);(5)Mish激活(Mish-activation);(6)Mosaic數據增強;(7)DropBlock正則化;(8)CIoU 損失。
YOLO v4的基本目標是提高生產系統中神經網絡的運行速度,同時為并行計算做出優化,而不是針對低計算量理論指標(BFLOP)進行優化。YOLO v4的作者提出了兩種實時神經網絡:(1)對于GPU,研究者在卷積層中使用少量組(1-8組):CSPResNeXt50/CSPDarknet53;(2)對于VPU,研究者使用了分組卷積(grouped-convolution),但避免使用Squeeze-andexcitement(SE)塊。具體而言,它包括以下模型:EfficientNetlite/MixNet/GhostNet/MobileNetV3。

圖1 YOLO v4網絡結構圖
YOLO v4包含了以下三部分:(1)骨干網絡:CSPDarknet53;(2)Neck:SPP、PAN;(3)Head:YOLO v3。
YOLO v4的網絡結構圖如圖1所示。
在模型結構選擇時,主要考慮了三個問題:為了檢測較小的物體,輸入圖片需要較高的分辨率,為了更大的感受野需要更多層的網絡,為了網絡的容量需要更多的參數。其中關于感受野作者分析了三種不同level的感受野:能看到整個目標的感受野,能看到整個圖像的感受野,大于整個圖像的感受野。作者選擇了CSPDarknet53作為主干網絡,SPP與modified-PAN作為Neck,沿用了YOLO v3的Head。
數據集的制作:
數據集來源主要根據建筑工地架設的各個攝像頭,圖像的角度包括后方、側方和前方的各個圖像,其光照和可見度變化不大,主要集中在白天的不同時間段。根據此數據集得到的訓練集具有代表性,訓練集的制作在Windows10系統下進行,使用NVIDIAGeForce GTX2060通過TensorFlow深度學習框架進行運算。

圖2 檢測結果

圖3 系統整體設計
訓練集制作過程中參數設置控制其bath參數為16,表示每一次迭代到網絡的圖片數量,經過實驗采用16,在訓練時使其不溢出顯存,classes類別數目設置為3,num設置為9,表示YOLO中每個cell預測框的數量,filters=3*(classes+5)=24,表示輸出特征圖的數量。進行訓練后,YOLO v4可以監測到動態的訓練過程的loss值圖像,當圖像的loss值下降區域平穩時,表示學習的速度變慢,損失函數幅度減小,此時進行了800次的迭代。最終將圖片輸入建立好的模型中得到的結果如圖2所示。
根據結果可知監測部分的功能符合需求,對于單個的圖片可以完成對安全帽佩戴的監測。
系統分為兩個部分,監測模塊、后臺實現模塊,架構如圖3所示,各個模塊的進程間通過socket進行通信。
(1)圖像分析:工程運行在windows系統上,通過相應攝像頭驅動設備提供的接口每隔一段時間獲取一張待檢測的樣本圖片,存至特定的緩存目標目錄,用于記錄日志,檢測程序也從該目錄讀取樣本進行檢測。
(2)后臺系統的設計:系統的整體設計由控制部分、后臺日志記錄部分、檢測部分組成??刂撇糠郑航缑嬗蒀++/QT開發,主要用于提供管理員的操作界面并負責與后臺系統的交互,方便查詢服務器上保存的監控日志等信息。后臺日志記錄部分:由傳統的MVC架構搭建,與前端分離,降低系統的耦合性,主要提供各種API進行數據的交互。后臺部分主要負責管理監控部分檢測分析到的各種監控數據,并將其按照時間日期生成日志并整理保存進數據庫,方便管理人員進行查看。
本系統架構設計簡潔,功能可根據需求對接口進行相應的拓展即可實現擴大,具有可維護性與泛用性,系統可以很好地實現對安全帽佩戴情況的進行實時的監測,并且通知相關責任人采用應對措施。
結論:安全防護從頭做起,在我國各處建筑工地上,因為不戴安全帽等防護設施,每年發生的意外的事故約3100起。有時候如果多一個及時的提醒,往往就能避免一場事故的發生。本文提出了安全帽佩戴檢測系統,可以實現工地工人的安全帽快速檢測,通過及時的提醒與記錄,保障了工人的生命安全。同時整個系統架構清晰高效,管理員可以方便的查看記錄與操作系統,各個部分相互間耦合度低,便于后期的修改維護和功能擴展。