于秋波,萬 擎,胡文宇,趙 寧
(1.天津津鐵供電有限公司,天津 300381;2.天津津鐵電子科技有限公司,天津 300381)
安全帽是一種使用廣泛、實用性強的勞動安全防護用品,可有效避免頭部遭受外界危險帶來的傷害。由于施工環(huán)境的復雜多變,工人在實際施工過程中往往忽視佩戴安全帽,導致人身傷害事故發(fā)生。特別在作業(yè)面較大的施工中,監(jiān)控范圍較傳統(tǒng)施工更大,監(jiān)控時間也更長,加之視覺疲勞和誤判等問題,傳統(tǒng)的人工監(jiān)管已不能滿足安全管理的要求。據住房和城鄉(xiāng)建設部公布的數據,全國在2012~2016 年間,建筑施工事故導致的建筑工人死亡人數約為2850 人,平均每天1.57 人死亡[1]。因此,實現對安全帽的自動化檢測對于提高施工安全管理的效率和準確性具有重要意義。
YOLOv5s(也被稱為YOLOv5 Small)是YOLOv5系列中的一個變種模型,它是YOLOv5 系列中最小和最輕量級的模型。在保證檢測精度的基礎上,實現更小的參數量和更快的檢測速度,適用于實時安全帽佩戴檢測的需求。因此,本文選擇在YOLOv5s 的基礎上進行改進,提出了用于檢測佩戴安全帽的SH-YOLO(SafetyHelmet-YOLO)。在SH-YOLO 的網絡結構中引入無參數注意力機制模塊SimAM[2]來增強特征提取網絡的性能。同時,采用串聯Maxpooling網絡結構和Shortcut 融合特征的方式以SPPFCSPC[3]替換原模型的SPPCSPC,從而快速獲取不同尺寸的感受野。
從網絡結構方面而言,在此提出的SH-YOLO算法主要由五個部分構成,分別為:輸入層(Input)、主干網絡(Backbone)、頸部網絡(Neck)、頭部網絡(Head)和預測層(Prediction)。整體網絡結構如圖1所示。
圖1 SH-YOLO 網絡結構
其中,Input 負責對數據集進行多種數據增強操作,以提高算法的魯棒性,包括Mosaic 數據增強、自適應錨框和自適應圖片縮放等處理。
Backbone 由數個CBL 模塊、C5 模塊、MP 模塊和SimAM 共同組成。在這當中,CBL 模塊由Conv層、BN 層和LeakyReLU 激活函數構成;MP 模塊為Maxpooling 層。
Neck 采用SPPFCSPC 模塊與特征金字塔結構融合,由各層特征檢測不同類尺度的目標。結構由CBL 模塊、MP 模塊、SPPFCSPC 模塊、C5 模塊組成。SPPFCSPC 模塊連接Backbone 與Neck,其由眾多CBL 模塊與三個相同的Maxpooling 層組成。
Head 由三個CBL 模塊組成,分別輸出3 個不同尺度的特征圖。
Prediction 則是采用CIOU_Loss 函數計算定位信息損失,并使用NMS 保留最優(yōu)預測框,去除多余預測框[4]。
SimAM 被應用在安全帽檢測任務中,但因為施工場景存在大量的干擾因素和復雜的背景,可能會使模型難以識別和提取關鍵特征,從而影響模型的準確性。在施工場景中,如何讓模型更好地關注場景中的重要區(qū)域是一個必須要解決的問題。Backbone是模型的核心組成部分,它的主要作用是對輸入圖像進行特征提取,因此,新設計與優(yōu)化皆是針對此模型進行。對Backbone 進行優(yōu)化,加強模型對重要特征的學習并抑制不必要特征的能力,從而實現模型關注場景中的重要區(qū)域。在Backbone 中引入Sim AM 注意力機制,使得主干網絡更加專注于施工場景的重要特征信息[5]。SimAM 整體結構如圖2 所示。
圖2 SimAM 注意力機制
相比于以往提出的通道注意力機制和空間注意力,SimAM 模塊有著獨特的特點。SimAM 是一種結合通道維度和空間維度的三維注意力模塊,它的特點在于它能夠同時考慮通道、高度和寬度三個維度來計算注意力權重,從而可以定義通道維度和空間維度的三維注意力權重。它不需要額外的參數,將其加入網絡也不會增加網絡的復雜度。這一點從SimAM 注意力機制的實現方法中可以看出。SimAM注意力機制是源于神經科學理論,該理論表明,在神經系統(tǒng)中傳遞信息豐富的神經元通常與周圍其他神經元不同,信息豐富的神經元呈現出獨特的放電模式。被激活的神經元通過空間抑制機制來抑制周圍神經元,這種現象在神經科學中被稱為空域抑制[6]。因此,這類神經元通常具有較高的重要性,可以通過度量神經元之間的線性可分性來找到它們。
具體的實現,則是通過SimAM 中定義的能量函數et,公式為:
輸入特征張量X 由目標神經元t 和其他神經元xi組成,且有X∈RCHW,其中C、H、W 分別代表特征張量的通道數、高度和寬度;i 和M 分別表示某個通道上的神經元索引和所有神經元的個數,且有M=H×W。公式中所有值為標量;通過最小化上述方程實現同一通道內目標神經元t 和其他神經元xi之間的線性可分性;是目標神經元t 和其他神經元xi線性變換得到的,其變換公式為:
式中wt代表線性變化的權重,bt為線性變化偏置。
為便于計算,引用二元標簽(yt=1,y0=-1)并添加正則化項,λ 為正則化系數。轉換得到能量函數:
由公式(3)解出wt和bt:
將得到的wt和bt代入轉化后的能量函數,可求出最小能量
其中,X 為輸入的特征張量,E 為et在所有通道和空間維度的總和,⊙為Hadamard 乘積。通過在公式中添加Sigmoid 函數可以限制能量函數E 的值不會過大,從而避免訓練時出現梯度問題。添加Sigmoid 函數并不會影響每個神經元的相對重要性,因為此函數是逐元素應用的,即每個神經元的輸出會單獨經過Sigmoid 函數的處理[7]。
在安全帽佩戴情況的檢測目標中具有不同的尺度,這會使得模型在處理這些目標時難以捕捉其細節(jié)信息,在處理不同尺度的特征圖時就會增加計算量,拖慢模型的檢測速度。因此,為了增強處理不同尺度目標的能力,并且減少計算量和提升檢測速度,提出一種高效的SPPFCSPC 模塊。SPPFCSPC 的網絡結構如圖3 所示。
圖3 SPPFCSPC 網絡結構
SPPFCSPC 網絡采用特征金字塔結構來處理不同尺度的特征圖,將主干網絡提取到的深層次特征圖分為兩個分支進行處理,最后通過Shortcut 方式融合不同感受野的特征。
其一分支經過兩個1×1 大小的CBL 模塊和SPPF網絡結構的處理。SPPF 網絡結構的設計是采用串行Maxpooling 方式進行池化,將這些串行Maxpooling操作得到的池化結果拼接在一起,得到具有不同感受野的特征圖,以此提高網絡對多尺度目標的檢測能力。
在另一分支中,將生成的特征圖與主干網絡提取的特征圖結合,采用CBL 模塊完成融合,得到一個更加豐富的特征圖。CSPC 模塊的特征融合操作可提取不同方向的特征,且利用不同分支信息的互相補充,提高對不同尺度大小目標的檢測能力[8]。
將輸入特征圖傳遞到多個相同的Maxpooling層中進行操作,每個Maxpooling 層只需對其上一層的輸出進行操作,因此計算量相對較小。Maxpooling并聯操作需要對多個不同大小的特征圖進行池化,會帶來巨大的計算量。同時,SPPFCSPC 網絡結構采用Shortcut 操作替代Concat 操作,能夠有效減少模型參數的數量。該操作將某一層的輸出直接與后面某一層的輸入相加,能更好地保留原始輸入的信息,提高網絡性能。
實驗PC 端配置的實驗環(huán)境如下:中央處理器采用Intel i5-9400F,該處理器擁有六個核心,適用于常規(guī)應用和輕度游戲;顯卡選用GeForce RTX 3060,提供先進的圖形渲染和深度學習加速能力;操作系統(tǒng)運行在穩(wěn)定且開放的Linux 發(fā)行版Ubuntu 20.04;深度學習任務由PyTorch 1.13 框架負責,為研究員和開發(fā)者提供了豐富的工具,用于構建、訓練和部署深度學習模型;編程語言方面采用Python 3.8,這是一種強大且易于學習的語言。此外,為優(yōu)化深度學習性能,特別安裝CUDA 11.7 和CUDNN 8.4,分別提供了GPU 并行計算能力和深度學習加速庫。
學習率、權重衰減、動量、學習周期被稱為超參數,因為它們不是由網絡訓練得到的參數,而是人為設定好的。超參數可以在模型訓練期間進行調優(yōu),為模型提供最佳結果。學習周期與模型的泛化能力有關。當發(fā)現模型的訓練誤差小但泛化誤差大時,說明學習周期長,導致模型過擬合,此時應當降低學習周期。學習周期不足,表現為訓練誤差大,模型沒有得到充分優(yōu)化。當不想重復多次試驗來確定最優(yōu)學習周期時,可以使用提前終止策略,即在訓練過程中,若發(fā)現泛化誤差基本穩(wěn)定不變,即提前終止訓練。動量的作用是對那些當前梯度方向與上一次梯度方向不同的參數進行削減,即在這些方向上減慢了。權重衰減是正規(guī)化的一種形式,其作用是防止過擬合。學習率的作用是控制梯度下降的速度。具體的參數設置如表1 所示。
表1 實驗參數設置
實驗所使用的數據集SafetyHelmet Dataset 共有6000 張圖片,分辨率為640×640,其中包括安全帽和行人兩種類型。安全帽圖片數量為4000 張,摔倒圖片數量為2000 張。這些圖片既有通過現場拍攝獲取的,也有從網絡中搜集而來的,并且也涵蓋了不同的光照條件、拍攝距離、拍攝角度以及畫質清晰度,保證了多樣性。
為了確保數據集的可靠性和有效性,對安全帽和行人數據集進行細致的篩選和標注,并將數據集劃分為5400 張訓練集和600 張測試集。
在制作數據集時,首先使用LabelImg 工具進行標注,需要對圖片中所有需要檢測的目標進行框選,并用相應的類別標簽加以命名。這些標注信息將被保存為與圖片名稱一致的.xml 標簽文件。
當所有圖片標注完成后,將原始圖片存儲在一個名為JPEGImages 的文件夾中,并將所有標簽文件存儲在另一個名為Annotations 的文件夾中,確保圖片和標簽信息互相對應。
然后將得到的VOC 數據集轉換為YOLO 數據集格式用于訓練。XML 文件中包括目標的類別、中心坐標、寬、高(class_id、x、y、w、h),按照已知參數帶入轉換公式進行歸一化處理,得到所需的中心坐標、寬度和高度數值大小。
Safety Helmet Dataset 的格式轉換由下式實現:
式中,(xmax-xmin)、(ymax-ymin)分別表示框的寬度和高度;xc、yc表示中心點坐標;Width、Heigth 為寬度和高度。
將標注數據轉化為可讀取的格式需要將標注數據轉化為模型可讀取的格式。此處將XML 格式的標簽文件轉換為TXT 格式標簽文件,并將其保存在一個名為Labels 的文件夾中。
此外,按照ImageSets/Main 文件夾中的TXT 文件設置將安全帽和行人圖片進行了數據集劃分,分為訓練集、驗證集和測試集。最后,需要將已劃分好的數據集的圖片復制到一個名為Images 的文件夾下,并將它們對應的標注TXT 文件復制到一個名為Labels 的文件夾下,以便后續(xù)模型訓練和評估使用。
在實驗軟硬件環(huán)境、超參數設置、訓練集與測試集劃分比例全相同的條件下進行對比實驗,從Precision、Pecall、mAP、FPS、參數量和計算量等指標來證明SH-YOLO 相對于原始算法的優(yōu)越性。檢測效果對比結果匯總為表2。
表2 不同模型檢測效果對比
由表2 數據可見,SH-YOLO 在安全帽和行人兩種類別的檢測精度AP 數值方面均高于YOLOv5s 算法,分別獲得了6.7% 和2.4%的提高。在檢測速率方面,與YOLOv5s 算法相比,SH-YOLO的FPS 提高了2 f/s。在參數量和計算量方面,SHYOLO 都小于YOLOv5s 算法。
SH-YOLO 的實際檢測效果如圖4 所示,可見其在SafetyHelmet 數據集上表現優(yōu)異。在復雜的施工場景中,算法能夠準確檢測出人員是否佩戴了安全帽。不僅如此,該算法還成功地將佩戴普通帽子的情況識別為行人,展現出較強的抗干擾能力。
圖4 實際檢測效果
SH-YOLO 基于模型融合的策略被提出,增強了原YOLOv5s 模型的檢測能力。結合了SimAM 模塊的特性,并將其融入到模型的Backbone 網絡中,進一步提升了模型對關鍵特征的提取能力,改善了模型在復雜任務中的性能表現。SPPFCSPC 模塊算法的引入,加快了感受野的獲取過程,降低整個網絡的計算量,提高網絡的計算速度。SH-YOLO 很好地平衡了準確度和速度這兩個在安全帽佩戴檢測算法中最為重要的評估指標,為安全帽佩戴檢測提供了高效準確的技術支持,為施工場景下的人員安全監(jiān)控提供了有效而可靠的解決方案,對于改善工地安全管理具有重要意義。