郭安文,權冀川
(陸軍工程大學指揮控制工程學院,江蘇 南京 210007)
施工人員佩戴安全帽是安全施工的必要措施。因此,需要對施工人員是否佩戴安全帽進行監測及管理。
本文探討利用計算機視覺技術自動監測工人是否佩戴了安全帽。具體來說,是借助目標檢測算法檢測監控圖像或視頻中人員的頭部,并利用分類算法判斷頭部是否佩戴了安全帽。常用的目標檢測算法包括SSD、Faster R-CNN、YOLO 系列算法等,這些算法可以檢測圖像中的目標位置和類別信息。對于安全帽檢測任務,需要在檢測結果中提取出人員頭部的位置和安全帽的位置,對這些位置信息進行比對,以判斷是否佩戴安全帽。
但是施工環境通常比較惡劣,無法保證標準的機房條件,溫濕度不穩定,同時還有灰塵、震動、噪聲等不良因素,會對高性能設備的穩定性和計算性能產生很大的影響。而便攜式、低性能的設備通常比較耐用,適應性強,能夠在惡劣的環境下正常運行。因此,在施工環境中,適合選用低性能設備,以保證設備的穩定性和可靠性。
由于施工環境中適用的設備性能有限,因此需要選擇合適的檢測模型,即較少的參數量、較小的計算量和精度適中的檢測模型,并且保證在一些簡單的應用場景中能夠使用。YOLOv5算法相較于其他目標檢測模型更加方便配置。它的配置文件簡單、支持多種數據集、使用的預訓練模型簡單、易于調試,這些特點使得用戶可以快速地配置和訓練模型,大幅提高工作效率。所以本文選擇在YOLOv5 算法模型的基礎上改進和優化,提出一種可以在低性能設備上實現高效安全帽佩戴檢測的系統。
根據主干網絡的depth_multiple(深度)參數和width_multiple(寬度)參數的不同,YOLOv5 算法默認提供了五個模型,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x,圖1 是深度和寬度均為1 的YOLOv5模型結構圖。隨著模型的深度與寬度依次增加,模型的精度會不斷提高,但訓練、推理的速度也會顯著下降。YOLOv5算法網絡模型的結構總體上可以分為四個部分:輸入端、Backbone網絡、Neck特征融合網絡以及Head輸出端。

圖1 寬度和深度均為1的YOLO結構圖
⑴Mosaic 數據增強:Mosaic 數據增強是對四張圖片進行隨機色域變換,再通過隨機縮放、隨機裁減、隨機排布的方式進行拼接形成訓練數據。這種操作方式極大豐富了圖片的背景數量,變相地實現了更大的batch size,同時經過隨機縮放增加了很多小目標,提高了模型的泛化能力和魯棒性。
⑵自適應圖片縮放:常見目標檢測模型對于輸入圖片的處理方式是將原始輸入圖片的尺寸統一調整為固定大小,再輸入到檢測網絡中。但像這樣僅僅使用resize 操作來調整圖片的大小,很容易導致圖片失真。而且在縮放填充后,如果填充過多,就會存在信息冗余,影響模型的推理速度。為了避免信息冗余,同時提高模型運算速度,YOLOv5 算法采用了自適應的縮放方法,在待檢測圖片的兩端填充最少的黑邊,然后將其輸入網絡模型中進行訓練,保證在提高模型運算速度的同時,又不會引入過多的冗余信息。
⑶自適應錨定框計算:YOLOv5算法除了使用默認的錨定框外,還可以在模型訓練前對數據集的標注信息進行統計,計算出數據集默認錨定框的最佳召回率。如果最佳召回率大于或等于某一設定閾值(一般取為0.98),則不會更新錨定框;如果最佳召回率小于該閾值,則自動重新計算更符合此數據集特征的錨定框。更新錨定框采用k-means算法和遺傳算法對數據集進行解析,并預先設置固定的Anchor;網絡訓練時,算法基于初始錨定框輸出預測框,并與真實值進行比較,計算這兩者的誤差;最后采用反向更新的方法迭代網絡參數,降低損失函數的值。如果計算得到的錨定框的效果不好,也可以在代碼中關閉自動計算錨定框的功能。
⑴CBS 結構:CBS 是由卷積(Conv)、批量歸一化(BN)和SiLU 激活函數(Silu)組成的結構。卷積層用于提取圖像的不同特征,批量歸一化層對特征數據進行歸一化處理以減少訓練過程中可能產生的梯度消失現象,而SiLU激活函數則是對輸入數據進行非線性變換,使其具有更平滑的梯度,保證模型更加靈活和具有更強的表達能力。CBS 結構可以有效提高模型的準確率。
⑵ C3 結構:在YOLOv5-6.0 版本中,使用了C3模塊替代早期的BottleneckCSP[3]模塊。C3 結構與CSP 結構基本相同,如圖2,都使用了分支結構來處理網絡的不同特征,但在修正單元的選擇上略有不同。C3結構由三個連續的卷積層組成,第一個卷積層的輸出通道數為輸入通道數的一半,第二個卷積層的輸出通道數等于第一個卷積層的輸出通道數,第三個卷積層的輸出通道數等于輸入通道數。這種設計可以有效地減少模型的參數量和計算量,同時也能提高模型的學習能力和精度。C3 模塊的使用使得YOLOv5-6.0版本的模型更加輕量化和高效,可以更快地執行目標檢測任務,實用性更好。

圖2 C3模塊結構與CSP模塊結構
⑶SPPF 結構:SPP[4(]空間金字塔池化)能夠將任意大小的特征圖轉換成固定大小的特征向量,可以增強特征圖的表達能力。在YOLOv5-6.0 中,SPP 結構被SPPF(SPP-Fast)結構所取代。如圖3,SPPF 只用了一種卷積核,串行以后等效SPP 的計算結果,速度比SPP更快。

圖3 SPP模塊結構與SPPF模塊結構
YOLOv5 算法模型的Neck 特征融合網絡部分首先使用FPN 結構構建特征金字塔,然后通過PAN 結構進行特征融合。FPN 結構采用自頂向下的側邊連接構建多種尺度的高級語義特征圖。PAN 結構則通過自底向上的路線加強低級語義特征圖的定位信息,并將不同尺度的特征圖進行融合。兩種結構融合后,能夠充分利用多尺度的特征圖信息,兼具自頂向下和自底向上特征融合策略的優勢,實現更加準確和魯棒的物體檢測。
YOLOv5 算法模型的Head 部分用來輸出目標檢測的結果,其主體是三個檢測器,分別處理不同尺度的特征圖。當輸入圖片分辨率為640×640時,三個尺度上的特征圖分別為80×80、40×40、20×20,基于網格的anchor 會在這些提取出的特征圖上進行目標檢測,以捕捉不同尺度的目標信息,提高模型的準確性和魯棒性。每個檢測器部分都采用了非極大值抑制NMS 機制以篩選出目標框,可以有效去除冗余框,提高算法的效率和速度,并采用了CIOU_Loss 作為損失函數,進一步提升了算法的檢測精度。
YOLOv5 算法模型的主干特征提取網絡采用C3結構,在精度方面表現優異,但具有較大的參數量,面臨模型過于龐大、內存要求高、檢測速度慢等問題。在低性能設備上,如此大而復雜的模型很難有用武之地。由于模型過于龐大,經常面臨內存不足的問題。而工地場景中的檢測設備性能有限,需要小巧、適用度高的模型,而且還可能缺少高性能的GPU 支撐。MobileNet v3 是一種輕量級網絡,采用了深度可分離卷積等輕量化技術,具有較小的模型參數量和計算復雜度,適合在計算能力較弱的設備上運行。還可以通過減少卷積核的數量以縮減通道數,從而降低計算量和存儲空間要求。這些優化策略可以進一步提高MobileNet v3的計算速度。本文提出將主干特征提取網絡替換為更輕量的MobileNet v3 網絡(圖4),以實現網絡模型的輕量化,平衡速度和精度的要求。

圖4 替換為MobileNet主干網絡后的結構圖
將YOLOv5 的主干網絡替換為MobileNet v3 是一種有效的輕量化方法,可以大幅減少模型的參數量和計算復雜度。但是,替換后模型的檢測精度下降,為了提高模型的性能同時又不過度增加模型的參數量與計算量,就需要引入注意力機制。
目前的輕量級網絡中,使用SE[5]模塊作為注意力機制的例子比較常見,然而,SE 模塊僅僅考慮了通道間的信息,忽略了位置信息。BAM[6]和CBAM[7]等注意力機制通過卷積來提取位置注意力信息,但卷積只能提取局部關系,缺乏長距離關系提取的能力。因此采用能夠將橫向和縱向的位置信息編碼到注意力通道中的coordinate attention,如圖5,使網絡能夠關注大范圍的位置信息又不會帶來過多的計算量開銷,可以在模型輕量化的同時提高目標檢測性能。

圖5 在SPPF結構后加入CA注意力機制的結構圖
實驗環境采用的操作系統為Ubuntu20.04.06 LTS,使用的CPU 為Intel(R) Core(TM) i9-9920X,主頻 為3.50GHz,GPU 為3 塊NVIDIA GeForce RTX 2080 Ti顯卡,配置12GB顯存,使用Pytorch 1.10.1框架。
實驗采用的數據集為公開的Kaggle 數據集YOLO helmet/head[8]。YOLO helmet/head 數據集共包含22789 張圖片,按照7:2:1 的比例劃分訓練集、驗證集和測試集,數據集標注采用YOLO 格式,標簽為head 與helmet。實驗中使用的Batch size 大小為50,epoch為100。
為了降低模型參數量和計算量,本文選擇將YOLOv5模型的主干網絡替換為MobileNet v3 Small(即MobileNet v3_1)的主干網絡,通過修改MobileNet v3 Small 主干網絡中隱藏層的數量,生成了四種不同大小的MobileNet v3_X 主干網絡,分別與不同寬度、深度的YOLO Neck 特征融合網絡相結合。基于這些網絡模型測試安全帽佩戴情況檢測的性能。
此外,本文在修改后的模型上加入了CA 注意力模塊,以進一步提升模型的性能,同時不會影響模型的參數量與計算量。
模型訓練過程在100輪后停止。訓練過程中的指標變化如圖6所示。

圖6 100輪訓練指標變化
為了更直觀地驗證改進后的YOLOv5 模型的檢測效果,使用模型對測試集中的圖像進行安全帽佩戴情況檢測,并獲得檢測結果,如圖7 所示。實驗結果表明,改進后的輕量化模型能夠滿足任務要求。

圖7 安全帽佩戴情況檢測結果
表1 給出了實驗結果的對比數據。將YOLOv5模型的主干網絡替換為MobileNet v3 Small 網絡后,模型的參數量和計算量都有顯著的下降,但mAP 值也下降了3.95%。盡管如此,替換后的模型仍然需要較高的運行環境條件。因此,本文進一步修改了MobileNet v3 Small 的隱藏層和YOLOv5 模型的Neck 層寬度及深度,以獲得更好的模型性能。這樣組合而成的模型不僅在參數量和計算量上都有大幅度的下降,而且經過訓練后的mAP 值也能滿足任務要求。實驗數據的對比表明,加入注意力模塊的模型不僅能夠提升性能,而且對參數量和計算量幾乎沒有實質性的影響。可見,加入注意力機制是一種有效的提高模型性能的方法,特別是在參數量和計算量都有限制的情況下。因此,建議實際應用中要根據具體情況選擇是否加入注意力機制,以達到最佳的檢測性能。上述實驗結果可以為后續的目標檢測研究提供參考和借鑒。

表1 實驗結果對比
大規模深度學習模型在數據集上往往能達到比較高的性能。但在實際的生產應用中,為了適應特定的任務和環境,需要選擇更加適合的模型,以降低成本或提高效率。本文研究了YOLOv5 算法模型的改進方法。在滿足任務要求的模型性能條件下,將其主干網絡替換為MobileNet v3 Small 網絡,同時調整了各層的參數,使得模型的參數量和計算量大幅降低,以滿足特定任務的環境條件要求;最后,通過引入CA注意力模塊提高模型的性能,而不會增加模型的參數量和計算量,以滿足任務的性能要求。