丁文龍,費樹珉
(東南大學自動化學院,江蘇南京,210096)
近年來,建筑工地作業人員因為未佩戴安全帽而導致安全問題的現象頻頻發生。施工場景中,由于施工人員安全意識不足,人員監管不力都是導致該類安全事故發生的原因。因此,對工人安全帽佩戴的實時檢測十分重要。當前主要是人為監管施工工人的安全帽佩戴情況,檢測效率低下。
目前,一些學者對安全帽檢測已有一些研究。文獻[1]利用Vibe背景建模算法,并基于運動對象分割的結果快速定位行人,并通過頭部位置、顏色空間變換來實現安全帽檢測。文獻[2]以梯度直方圖(histogram of oriented gradient,HOG)和圓環霍夫變換提取特征,再通過分類器進行安全帽檢測。文獻[3]利用運動物體提取K-Nearest-Neighbor(KNN)分類器開發了一個可以自動檢測自然環境中人員是否帶上安全帽的系統。傳統的安全帽檢測方法依賴于人工設計特征,基于此設計分類器。檢測效果受人員先驗知識影響大,該方法在應用上有局限性。當前采用深度學習方法通過CNN提取特征方式的方式可以避免人員主觀知識偏差的影響,被許多學者采用。利用現有模型訓練,能夠得到檢測效果良好的目標檢測模型。近年來,目標檢測模型不斷涌現的過程中,出現不同性能和適用場景的算法模型。在這一系列模型中,YOLO模型憑借其結構精簡,檢測速度快,適用于多種場合等優點,受到了大量相關研究人員的關注和具體應用。
本文基于圖像處理方法,針對YOLOv3[4]進行改進,提出一種施工場景中準確高效的安全帽檢測算法。
YOLOv3使用Darknet-53作為特征提取網絡。Darknet-53包括53個卷積層和5個最大池化層。YOLOv3網絡把圖片分為大小相同的網格,每個網格有3個用于預測的anchor框。每個框的預測信息包含框的寬度,高度,框的起始位置,物體預測置信度以及N維分類物體類別數。YOLOv3在特征提取之后采取特征金字塔(Feature Pyramid Networks)[5]的思想,將不同大小的特征圖用于預測不同尺寸的物體。共有三個不同大小的特征圖,越大的特征圖預測越小的物體。通過將淺層特征和深層特征融合,有效利用了低層網絡的位置特征以及高層網絡的語義信息,使得YOLOv3網絡能夠準確識別物體的類別,同時將物體進行精準定位。
YOLOv3文中對COCO數據集采用K-means[6]算法獲取用于目標檢測的初始先驗框。不同于COCO數據集的目標尺寸大小和類別數量,本文制作的數據集僅有兩個類別,且安全帽在圖像中的尺寸偏小。因此,需要采用K-means算法重新獲取用于當前檢測任務的初始先驗框。由于K-means算法需要人為確定初始聚類中心,不同的聚類中心會導致不同的聚類結果。K-means++算法隨機選擇初始聚類中心,并選擇距離最近聚類中心較遠的點作為新的聚類中心,并重復此過程,直到選取完K個聚類中心。從而避免人為選取聚類中心的缺點。
本文針對自制數據集,采用K-means++算法進行聚類,得到9個先驗框尺寸,并分配到不同尺寸的預測分支上,小尺度錨框為(5,11),(7,16),(11,22)。中尺度錨框為(17,30),(26,44),(39,66)。大尺度錨框為(58,102),(93,157),(182,255)。
在目標檢測任務中,當網絡層級加深。可采集的目標信息特征逐漸減弱。從而導致檢測目標的漏檢和誤檢等問題。scSE(Concurrent Spatial and Channel Squeeze and Channel Excitation)是一種更加輕量化的SE-NET變體。scSE模塊由在輸入通過sSE(Channel Squeeze and Spatial Excitation)和cSE(Spatial Squeeze and Channel Excitation)兩個模塊之后相加。其中,cSE將特征圖通過全局平均池化改變輸入的尺寸,然后使用了兩個卷積進行信息的處理,最終得到C維的向量,接著使用sigmoid函數進行歸一化,得到對應的掩碼。最后通過通道緯度融合,得到信息校準后的特征圖。sSE直接對特征圖使用卷積,將輸入特征圖的通道變為1維,然后使用sigmoid進行激活得到空間注意力圖,接著施加到原始的特征圖中,完成空間的信息校準。scSE整體結構如圖1所示。該注意力模塊同時根據通道和空間的重要性來校準采樣。這種重新校準使得網絡學習更有意義的特征圖。本文將scSE注意力模塊添加至YOLOv3模型特征提取網絡之后的三個檢測支路的多個卷積模塊之間進行網絡優化。

圖1 Concurrent Spatial and Channel Squeeze and Channel Excitation(scSE)
隨著網絡的加深,在靠近檢測輸出端的深層網絡中,含有圖像小目標的特征信息較少,而本任務所檢測的安全帽以及人體頭部都屬于這樣的小目標。為了讓檢測層能夠檢測到目標信息,在輸出端的卷積操作之前,將卷積模塊替換為殘差模塊。通過跳躍連接,將網絡中層級間的信息的得以傳遞。實現在網絡較深的背景下,能夠加強模型對深層特征的檢測能力。圖2為本文引入的殘差模塊結構圖。本文殘差模塊前通道數為512,分為殘差部分和快捷連接部分。殘差連接先經過一個1×1的卷積,通道數變為128。然后經過3×3的卷積層,通道數保持不變,再經過一個1×1的卷積層,通道數變為1024。快速連接部分通過一個1×1的卷積將輸入通道512轉換為1024。最后將兩個分支進行相加,得到殘差模塊的輸出。改進后模型如圖3所示。

圖2 殘差模塊結構圖

圖3 改進后模型結構
當前開源的安全帽數據集有SHWD數據集,共包含7581張圖片,分為person(未佩戴)和hat(佩戴)兩類。數據集包含9044個正類樣本以及111514個負類樣本。由于該數據集場景單一,缺乏更多施工現場的場景,缺乏佩戴非安全帽的場景。因此本文針對以上缺點,另外從多個工地監控視頻中采集了另外828張工地監控視頻圖片。
從工地監控視頻中采集的數據用labelImg軟件進行標記。本文按照Pascal VOC格式對監控視頻數據進行標注。標定后生成的xml文件標注了圖片中安全帽和未佩戴安全帽頭部的類別和位置信息。數據標注界面如圖4所示。

圖4 數據標注界面
標注后的數據量較少,為增強數據的多樣性,提升模型的泛化性和魯棒性,本文對工地監控視頻做了翻轉,加噪,HSV變換等方式進行數據增強,最終得到3312張工地視頻圖像。本文將自制后增強的圖片融合至SHWD數據集,得到本文實驗所用的數據集SHWD-NW,共10893張圖片。并采用留出法按照8:1:1劃分訓練集,驗證集,測試集。
本文實驗基于GPU進行運算,在實驗室服務器上搭建包括Windows10,Python,OpenCV等環境。深度學習框架采用Pytorch。實驗平臺配置如表1所示。

表1 平臺配置
使用深度學習模型YOLOv3進行模型訓練過程中,損失函數在訓練迭代的過程中會逐漸降低。本次實驗中,訓練批次為100。模型迭代次數共55100次。在0到50個批次時,學習率初始設置為0.001,在50到100批次時,學習率初始設置為0.0001。每經過一個訓練批次,學習率減少為上一個訓練批次學習率的0.94倍。權重衰減系數為0.0005。模型在0到44080次時損失函數迅速降低,在44080次之后損失逐漸收斂于3.27,得到一個訓練完畢的模型。圖5為模型訓練過程中模型損失變化圖。

圖5 訓練過程損失曲線
準確率(Precision),召回率(Recall)以及平均準確率均值(mean average precision)是衡量目標檢測模型性能的一般性指標。本文采取平均準確率均值(mAP)作為模型性能評價的指標。
準確率是模型預測的正類樣本數和預測總樣本數的比值。召回率是預測樣本中正類樣本和預測樣本的比值。通過對本文分類類別的helmet以及head兩種類別,針對準確率,召回率曲線的圖像使用積分計算該曲線與坐標軸的面積,來計算兩種類別的準確率(AP),兩個類別的準確率求和再除以分類的類別,得到本文所使用的評價指標之一:平均準確率均值。平均準確率均值越高,表明模型對檢測任務的目標識別效果越好。
此外,本文使用識別幀率(f/s)來衡量模型的檢測速度。該數值越高,代表模型的檢測速度越快。用訓練好的模型針對圖片進行檢測得到。
本文采用改進YOLOv3模型在自制的數據集中SHWDNW上進行實驗。并對比目標檢測的其他常見方法:YOLOv3,Faster R-CNN算法等。實驗結果如表2所示。

表2 實驗結果
實驗結果表明,在416×416的圖片輸入尺寸下,在檢測準確率方面,Faster R-CNN的平均準確率最高,達到了91.28%。本文所采用的算法改進型YOLOv3相比Faster R-CNN,準確率稍有不及,但是改進型YOLOv3算法的檢測速度比Faster R-CNN有顯著優勢。另一方面,改進型YOLOv3相較于YOLOv3,在檢測速度下降不大的情況下,檢測準確率有相應的提升。能夠較好的滿足工地場景安全帽檢測任務的準確性和實時性要求。
本文基于開源數據集以及自制工地現場監控視頻數據集進行了安全帽佩戴檢測實驗。采用K-means++優化YOLOv3算法所需的anchor尺寸,在網絡模型中加入scSE注意力模塊,使網絡學習重要的特征圖,用殘差模塊替換卷積模塊等方法改進YOLOv3網絡,使網絡獲得較好的前后特征信息傳遞。經過本文改進后的安全帽檢測模型同時獲得了較高的檢測準確率和檢測速度。可以較好地滿足施工現場安全帽檢測任務的需要。