王子元, 王國中, 顧嘉城
(上海工程技術大學電子電氣工程學院, 上海 201620)
安全帽對于建筑施工人員的人身安全保護至關重要,對于施工場所的意外墜物,安全帽的外殼可以有效減緩沖擊,緩解高空墜物對工人頭部的傷害,保護施工人員的安全。 在以往的施工場所中,通常采用人工監督的方式來保證施工人員佩戴安全帽,但由于施工范圍大,施工人員多,部分人員安全意識薄弱,經常出現未按規定佩戴安全帽作業的施工人員。考慮到人工監督方法耗費大量人力物力,并且效率低下,因此本文利用施工場所的監控視頻畫面設計了一種自動檢測施工人員是否佩戴安全帽的方法。
傳統的安全帽檢測方法主要是利用人工構造的特征來完成檢測任務。 如HOG 特征與SVM[1]相結合的方法,Harr 特征與Adaboost[2]相結合的方法等。這些傳統機器學習的安全帽檢測算法需要人為設計檢測特征和訓練分類,對于復雜的施工環境來說主觀性較強,魯棒性差且不易泛化。
基于深度學習的安全帽檢測方法[3],不需要人工設置特征,實現方法較為簡潔。 以R-CNN[4]為代表的雙階段檢測算法[5]雖然檢測精度較高,但檢測速度較慢。 以SSD[6]和YOLO[7]為代表的單階段算法在檢測速度方面具有優勢,徐凱等學者通過改進YOLOv3 的損失函數來降檢測模型的誤差。 Zhou 等學者[8]通過替換YOLOv4 的骨干網絡使模型輕量化,提高了檢測效率。
以上網絡模型雖然都具有較好的檢測精度,但是模型較大,不能滿足施工環境下低算力設備的部署需求。 因此,本文基于YOLOv5[9-10]網絡設計了一種輕量級安全帽檢測算法:
(1)提取原網絡模型特征圖中的通道注意力特征和空間注意力特征,將CBAM[11]模塊融合到骨干網絡的卷積后,讓網絡關注于圖片中出現安全帽的特定區域,加快網絡訓練時的收斂速度。
(2)在原模型的頸部網絡部分使用雙向特征金字塔(BiFPN)[12]結構代替原網絡中的特征金字塔結構,融合不同層級的特征并保留特征圖中淺層信息,提高模型的計算效率。
(3)使用GhostConv[13]模塊替換原始網絡中的普通卷積,減少網絡的參數量,輕量化模型,并使用EIoU[14]作為網絡的損失函數,提高改進模型的識別準確率。
YOLO 系列算法是具有代表性的單階段目標檢測算法,與其他兩階段和單階段算法相比具有檢測速度快、檢測精度高等優點。 YOLOv5 算法將網絡模型分為4 個不同的尺寸,模型由小到大分別是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,隨著模型的深度和寬度增加,模型體積也依次增大。 本文中選擇尺寸較小的YOLOv5s 模型作為基準模型進行實驗,YOLOv5s 的網絡結構如圖1 所示。

圖1 YOLOv5s 網絡結構Fig. 1 YOLOv5s network structure
從YOLOv5s 的網絡結構圖中可以看出,YOLOv5s 網絡模型主要由4 部分構成,分別是圖片輸入端(Input)、骨干網絡(Backbone)、頸部模塊(Neck)、預測模塊(Prediction)。 在圖片輸入端使用Mosaic 數據增強、圖片縮放和自適應錨框計算增強輸入數據的多樣性。 骨干網絡由Focus 下采樣、CSP結構和SPP 池化金字塔結構組成,用于提取圖像特征信息。 頸部模塊使用特征金字塔(FPN)[15]與金字塔注意力網絡(PAN)[16]相結合的方式融合特征,傳遞不同尺度的特征信息。 預測模塊輸出3 組不同尺寸的預測信息。
CBAM(Convolutional Block Attention Module)是一種集成了通道注意力和空間注意力的輕量型混合注意力機制。 通過學習關注特征圖中與安全帽相關的信息,抑制不重要的特征來提升檢測效率。CBAM 的結構如圖2 所示。

圖2 CBAM 結構圖Fig. 2 CBAM structure diagram
在施工環境中,由于安全帽的背景復雜多樣,原始網絡對無效信息的剔除能力有限,而背景信息對網絡的檢測性能影響較大,因此通過在Focus 下采樣后引入CBAM 注意力機制來確定模型重點關注的安全帽特征。
在YOLOv5 原始網絡的特征融合部分,使用自下而上和自上而下的方式融合高層級的特征信息如圖3 所示。 而對于安全帽檢測網絡來說,安全帽在畫面中多為小尺寸目標,使用FPN+PAN 結構會丟失圖像中的小尺度特征信息,局限了網絡模型的小尺度檢測能力。

圖3 改進特征融合結構Fig. 3 Improved feature fusion structure
本文中使用BiFPN 替換原始特征融合結構見圖3,通過刪去邊緣融合節點來加快網絡計算速度,并使用跳躍連接傳遞底層特征信息,通過融合底層特征與高級特征的信息來增強網絡對安全帽尺度目標的檢測能力。
BiFPN 對不同的輸入特征分配不同的權重,使網絡通過調整權重來衡量不同特征的重要程度,并采用快速歸一化方法,可按式(1)來計算:
其中,Out表示輸出特征;In表示輸入特征;ωi采用ReLU激活函數;ε=0.000 1 為數值穩定小量。
GhostModel 是一種新型的卷積計算方法,基于原始特征圖使用一系列的線性變換從原始特征圖中生成相似特征,使用該方法可以減少網絡模型的參數量,搭建輕量化網絡模型。 GhostModel 的結構如圖4 所示。

圖4 Ghost 模塊Fig. 4 Ghost model
對于給定輸入數據,X∈?c×h×w,c表示輸入通道數,w和h分別表示輸入數據的寬度和高度。GhostNet 的輸出特征圖可以表示為:
其中,Y'∈w'×h'×m使用一般卷積f '∈c×k×k×m生成m個特征圖,然后對m個特征圖進行線性運算可以生成s×m個特征圖,用到的數學公式為:
其中,y'i表示Y'中第i個原始特征圖;Φi,j表示第j個線性運算;yij表示生成的特征圖。 最終得到n=m·s個特征圖Y=[y11,y12,…,yms],計算可得GhostModel 的計算量和參數量約為一般卷積的。 因此,使用Ghost 模塊可以在保證輸出特征圖一致的情況下,降低模型的計算量和參數量。
Ghost bottleneck 可以根據步長分為2 種結構。當步長為1 時,在輸入端的首個GhostModule 增加通道數, 起到擴展作用。 在經過靠近輸出端的GhostModule 后,數據通道數減少與輸入相匹配并與輸入相加。 對于步長為2 的情況,添加了步長為2的深度卷積來實現。
在本文中使用步長為1 的Ghost bottleneck 代替原YOLOv5 模型中的CSP2 模塊,使用步長為2 的Ghost bottleneck 代替原模型中的CBL 卷積模塊。
YOLOv5 中使用GIoU(Generalized IoU loss)作為損失函數。 當預測框與標簽框未完全重疊的情況下GIoU的方法可以衡量2 個標簽框的重疊程度,但是當預測框在標簽框內部的時候,GIoU退化成了IoU,無法衡量預測框與標簽框之間的距離。
本文中使用了EIOU(Efficient IOU)作為邊界框損失函數,EIOU損失函數可以分為3 個部分,分別是:預測框與真實框之間的中心距離損失、重疊損失和寬高損失,數學定義公式具體如下:
其中,bgt與b分別表示真實邊界框與預測邊界框的中心點;ρ表示中心點的歐氏距離;c表示包圍真實框與預測框的最小外接矩形的對角線距離;Cω表示該最小外接矩形的寬度;Ch表示該最小外接矩形的高度。
EIOU對于目標框和預測框的長和寬分別進行計算,綜合評估預測框與目標框的中心點距離、重疊面積,使收斂速度更快,回歸精度更高。
網絡訓練在Ubuntu18.04 系統上進行,系統的運行內存為16 GB,顯卡為英偉達RTX3060。 處理器為AMD Ryzen 7 5800H 3.20 GHz,使用深度學習框架PyTorch 編寫改進的YOLOv5 模型進行訓練。 編程環境為Python 3.7。 GPU 的加速庫為CUDA11.3 和CUDNN8.2.1。
在網絡的訓練過程中,使用自適應錨框、圖片尺寸縮放和Mosaic 數據增強技術對輸入圖片進行數據增強,網絡模型的圖片輸入(input size)大小設置為640×640, 動量參數(momentum) 設置為0.9,迭代次數(epoch)設置為100,批量大小(batch size)設置為8。
本文中所使用的安全帽數據集基于網絡圖片和施工現場監控視頻截取,共收集到6 545 張圖片。使用Labelimg 軟件將收集到的圖片進行標注,對于佩戴安全帽的工人標注為“hat”,未佩戴安全帽的工人標注為“person”。 最后將標注信息保存為VOC數據集格式,并按照9 ∶1 的比例劃分為訓練集和測試集,訓練集圖片共有5 890 張,測試集共有655張。
在計算機視覺領域,對于目標檢測的性能通常使用召回率(Recall)、精確率(Precision) 和準確率(Accuracy) 等指標來進行評價。
精確率表示在預測到的正樣本中實際為正樣本的概率,召回率表示在實際的正樣本中預測為正樣本的概率,準確率表示預測正確的概率,研究推得的公式見如下:
以召回率為X軸坐標,以準確率為Y軸坐標,設置相應的閾值后畫出的曲線就是P-R曲線。P-R曲線與坐標軸圍成圖形的面積被稱為平均精確度(AP)。
AP就是平均精準度,對PR曲線上的Precision值求均值。 對于PR曲線來說, 使用積分來進行計算,即:
為了驗證本文改進方法對YOLOv5s 基準檢測模型的性能提升,設計如下消融實驗,所有實驗均在英偉達RTX3060 GPU 和相同數據集下進行。mAP(0.5) 表示在檢測框與真實框交并比大于等于0.5 的情況下,2 種類別檢測結果的平均精度。 消融實驗見表1。

表1 消融實驗Tab. 1 Ablation experiment
從表1 中可以看出,在加入CBAM 注意力機制后,網絡模型的平均精度提升了2.6%,證實了注意力機制是可以關注到圖片中有效特征的,而在使用BiFPN 特征融合機制后平均精度增長了1.3%,這是由于安全帽在圖片中的尺寸較小,使用BiFPN 特征融合機制可以有效地提取特征圖像中的小尺度信息,更有利于安全帽的檢測。 在使用Ghost 卷積計算后,網絡精度僅提升了0.3%,因為Ghost 模塊的加入為輕量化模型做出較多貢獻,對精度的提升有限。 在實驗5 中使用所有改進策略后平均精度較原始網絡提升了4.5%,表明組合改進策略可以有效提升安全帽檢測模型的性能。
為了在不同檢測算法中橫向對比改進網絡的安全帽檢測性能,本文選取了傳統檢測算法和基于深度學習的檢測算法與改進模型進行對比,其中添加所有改進的模型記為I-YOLOv5。
對比實驗結果見表2。 從表2 中可以看出,單階段算法在檢測速度方面具有明顯優勢,其中YOLOv5 算法速度最為突出,改進的算法模型IYOLOv5 與原始算法相比平均精度提高了4.5 個百分點,FPS提升了1.5。 傳統機器學習算法HOG+SVM 檢測效率低下,對于復雜背景下的安全帽目標檢測精度較低。 由于安全帽目標多為小尺寸目標,兩階段安全帽檢測算法Faster RCNN 表現不佳。SDD 算法雖然也達到較高的檢測速度,但是與YOLOv5 算法相比仍存在一定的差距。 本文中IYOLOv5 算法在檢測速度與檢測精度方面表現良好。

表2 對比實驗結果Tab. 2 Comparative experimental results
為了更直觀地對比檢測性能,實驗選取了不同施工環境下的安全帽圖片,分別使用YOLOv5 算法檢測,并與本文I-YOLOv5 算法檢測結果做對比,檢測結果如圖5、圖6 所示。

圖5 YOLOv5s 算法檢測效果Fig. 5 YOLOv5s algorithm detection effect

圖6 I-YOLOv5 算法檢測效果Fig. 6 I-YOLOv5 algorithm detection effect
從圖5 中可以看出,對于圖片中的大部分安全帽YOLOv5 算法都能夠成功檢出,但是將施工人員佩戴的頭套錯誤識別為安全帽,而且在人員遮擋的圖像部分,遮擋部分施工人員未佩戴安全帽沒有被模型檢出。 從圖6 的I-YOLOv5 算法的檢測結果中可以看出,對于遮擋的施工人員也能夠成功檢出,而且佩戴頭套的施工人員也被正確檢出。 在IYOLOv5 模型中,由于添加了CBAM 注意力機制,能夠使模型關注于施工人員頭部以及安全帽特征,抑制背景或遮擋對模型檢測產生的影響。 同時,使用了EIoU損失函數,可以使安全帽檢測框的尺寸更加精準,準確定位到施工人員的頭部。
為了保障施工人員的安全,本文對目前安全帽檢測算法進行分析,并針對復雜環境下的安全帽檢測算法做出改進。 在YOLOv5 骨干網絡部分插入CBAM 注意力機制,讓網絡關注于圖片中的小尺寸特征,提升網絡模型對安全帽區域的敏感程度。 通過使用BiFPN 替換原始特征融合結構,刪去邊緣融合節點來加快網絡計算速度。 使用GhostNet 卷積替換原始網絡中的一般卷積,使模型輕量化,提高檢測速度。 使用EIoU損失函數,改善了定位精度低和訓練過程中檢測框回歸速度慢的問題。 相比于YOLOv5s 算法模型,改進的算法模型的精度提高了4.5%。每秒檢測速度達到48 幀。 未來將在保持安全帽檢測性能的情況下對模型做進一步優化,在保證準確率的前提下,降低模型的復雜度。