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