王曉龍,江 波
(1.上海華訊網絡系統有限公司 行業數智事業部,上海 200127;2.中國電子科技集團公司第三十二研究所,上海 201808)
近年來,我國電力行業和建筑行業人員在高空作業時,因未佩戴安全帽發生的事故屢見不鮮。目前,施工單位大部分通過人工監控方式現場監控施工人員有無佩戴安全帽,當現場環境惡劣時可能會影響監控人員的主觀情緒和人身安全,并且監控人員難以了解每個高空作業人員具體安全情況,導致人工監控方法效率低、成本高。隨著人工智能技術的發展,基于深度學習的目標檢測算法為安全帽佩戴檢測提供了新的方向。
目前,檢測算法主要包括兩階段目標檢測算法和單階段目標檢測算法,學者們對安全帽檢測進行了一系列研究。文獻[1]提出一種Faster R-CNN[2]來檢測自動非硬帽,該方法相比傳統的安全帽檢測方法具有高精度和高速度的特點,但較其他一階段目標檢測算法實時性較差。文獻[3]先對視頻中采樣的圖像進行預處理操作,通過設計不同的卷積神經網絡進行實驗對比,該方法采用了較多的全連接層,最終導致模型大小和推理速度均有較大的增加。文獻[4]將反向漸進注意力機制融入SSD 單階段檢測算法[5],提升了安全帽檢測精度,并且可以確認顏色是否正確,但該算法對小尺度目標的識別精度較低,在密集場景下不能達到很好的識別效果。文獻[6]通過改進LeNet5[7]提出一種并行雙路卷積神經網絡結合SVM 進行人體和安全帽識別,該方法不能達到實時檢測的效果。文獻[8]針對現有安全帽檢測算法小目標識別效果差等問題,將EfficientDet算法[9]結合優化預設邊框來提高小目標的檢測精度,但該算法延遲較高。文獻[10]基于YOLOv3 算法[11-12]識別安全帽,再結合語義模板和語義規則得出安全帽佩戴的語義描述,但該方法得出的語義描述單一,缺乏句子的多樣性表達。
以上都是基于先驗框的安全帽佩戴檢測算法,由于初始先驗框的設置會對模型的識別效果有影響,因此存在很大的不確定性,導致訓練模型并不能適用于不同的復雜環境[13]。本文基于沒有先驗框的目標檢測網絡YOLOX-m[14]進行改進。首先簡化主干特征網絡結構,在幾乎沒有精度損失的情況下,減小模型大小和降低推理延遲;然后使用改進的重參視覺幾何組(RepVGG)模塊[15]替換主干特征網絡中的卷積塊提升網絡學習能力并提升模型精度,同時在推理時利用重參化來提升推理速度;最后將空間金字塔池化(SPP)結構替換為快速空間金字塔池化(SPPF),并取消最后一層C3Block 內部的殘差結構及調換順序,減少大殘差邊,加快模型推理速度,避免SPPF 處于串行卷積塊之間以影響信息流通,從而提高檢測精度。
YOLOX-m 是基于Anchor Free[16]的目標 檢測網絡,在YOLOv3 的基礎上進行改進。YOLOX-m 網絡結構如圖1 所示(彩色效果見《計算機工程》官網HTML 版,下同)。

圖1 YOLOX-m 網絡結構Fig.1 Structure of the YOLOX-m network
YOLOX-m 網絡由主干特征網絡、特征融合網絡和YOLOHead 檢測頭3 個部分構成。
主干特征網絡用于初始特征的提取,在CSPDarknet 的基礎上添加了Focus 切片結構和空間金字塔池化結構[17]。Focus 切片操作對圖像每隔1 個像素點取1 個值,寬高減半,類似于鄰近下采樣,輸出通道擴充4 倍,且圖像信息沒有丟失。CSPDarknet 結構由多個ResUnit 殘差單元[18]組成,用于特征深層次的提取。SPP 結構由3 個最大池化分支和1 個殘差映射邊組成,用于提取不同尺寸的空間特征信息,可以提升模型對于空間布局和物體不變特征的魯棒性。
特征融合層用于深層特征和淺層特征的多尺度融合,采用自底向上、自頂向下和橫向連接方式。自底向上通過逐層上采樣將深層的語義信息傳遞到淺層,再通過橫向連接與淺層特征相融合。自頂向下通過逐層下采樣特征再與自底向上每層特征橫向連接,解決自底向上中低層特征模糊的情況,彌補并加強了定位信息。
YOLOHead 輸出分類分支、回歸分支和置信度分支的值,訓練時用于損失函數的計算。YOLOX-m有3 個檢測頭,分類分支得到目標的預測類別,回歸分支得到目標的坐標偏移量,置信度分支得到預測類別的置信度值。
YOLOX-m 主干特征網絡是基于原始的YOLOv5 的主干特征網絡,并未作修改,跨階段局部結構(CSP)的重復次數為3、9、9、3,可以通過改變寬度和深度因子來控制模型大小。
為了最大化模型性能,將主干特征網絡的CSP減少為1、3、3、1,如圖2 所示,在精度損失0.35 個百分點的情況下降低了5.0 MB 的模型大小和2 ms 的推理延遲,其中精度損失是因為特征提取不充分導致的。綜合來看,主干特征網絡使用多個C3Block進行堆疊對模型性能只有略微的提升,相反地,少量C3Block 的堆疊已經能夠獲取足夠多的特征信息,因此可以降低殘差塊的堆疊次數來使得重構模型效率最大化。在將模型參數量減少20%后,簡化的主干特征網絡為后續的結構改進提供了基礎架構。

圖2 簡化的YOLOX-m 網絡結構Fig.2 Simplified structure of the YOLOX-m network
原始YOLOX-m主干特征網絡主要由CSPDarknet網絡構成,CSPDarknet 網絡則由一系列3×3 卷積和CSP 殘差結構組成,CSP 殘差結構主要用于特征的提取和組合,3×3 卷積主要用于降采樣,同時擴充特征層的通道數。一系列3×3 卷積的串聯結構借鑒了VGG 網絡的思想。VGG 網絡主要探索了卷積神經網絡性能與其深度之間的關系,采用了多個3×3 卷積替代5×5 等大卷積核來增加網絡的表達能力,證明了增加網絡的深度能夠在一定程度上影響模型最終性能,并且也能使得錯誤率大幅度下降。但隨著網絡的逐漸加深,深層網絡梯度消失問題隨之而來,殘差結構的提出使得深層網絡[19]的問題得以解決。殘差化重參視覺幾何組(Res-RepVGG)結構如圖3 所示,其在RepVGG 網絡的基礎上進行改進[27],具體如下:
1)在VGG[20]的Block 中加入Identity 分支和 殘差分支,利用殘差結構解決VGG 梯度消失的問題,從而構成RepVGG,然后在RepVGG 結構的外側增加一條映射邊,相當于CSP 結構,從而增加模型捕捉特征的能力,如圖3(a)所示。
2)模型推理階段,通過算子融合策略將當前卷積核的殘差層都并入3×3 卷積核結構,便于網絡部署與加速,如圖3(b)所示。
Res-RepVGG 連接方式如式(1)~式(3)所示:
其中:x是當前層的輸入特征表示是由最外層1×1 卷積核實現的殘差邊是由1×1 核在Rep VGG 內部實現的殘差邊表示1×1 核、3×3 核和批量正則化(BN)串聯結構;f(x)是內部RepVGG 結構的輸出特征;F(x)最終由f(x)和大的殘差邊x相加得到,然后通過激活函數SiLU[21]進行非線性映射。
使用Res-RepVGG 替換原始主干特征網絡中的3×3 卷積核使網絡在訓練時更加靈活。原先單一的3×3 卷積塊分支加上1×1 卷積塊分支與Identity 分支和殘差分支將網絡轉換為具有外層大殘差邊的多分支結構,即在網絡中加入多條梯度流路徑。原始訓練單個網絡,現在等價于訓練多個網絡,并將多個網絡融合在一個網絡中使模型集成更簡單,最后在推理階段通過重參化降低模型推理延遲。使用Res-RepVGG 改進模型在參數量略微增加的情況下,模型檢測精度提升了0.75 個百分點,延遲下降了2 ms。
YOLOX-m 主干特征網絡的最后兩層為SPP 和CSPBlock,SPP 能將任意大小的特征圖轉換成固定大小的特征向量,并且可以擴大網絡感受野,融合不同尺度特征圖的信息,完成特征融合,但SPP 需要指定3 次卷積核的大小,且輸入數據并行進行3 次池化拼接,增加了耗時。為了進一步簡化和加速模型,使用快速空間金字塔池化(SPPF)替代SPP,SPPF 結構如圖4 所示,只指定一個卷積核,每次池化后的輸出會成為下一個池化的輸入,再進行拼接。根據ShuffleNetv2[22]理 論,網絡分 支會減 小并行 度,對GPU 這種高度平行計算的設備不友好,由于SPPF 采用串行的池化方式,因此提升了模型檢測精度。將SPPF 結構放在主干特征網絡的最后一層,CSPBlock移動到原先SPP 層的位置,避免之前處于串行卷積塊之間影響卷積塊間信息流通,并且最后一個CSPBlock 結構只使用大殘差邊,在其內部不使用殘差單元,減少了分支數,提升了模型推理速度。通過改進主干特征網絡最后兩層,使得模型的檢測精度提升了0.56 個百分點,延遲下降了1 ms。
Res-RepVGG 模塊和主干特征網絡的最后兩層CSPBlock 和SPPF 結構改進如圖5 所示,模型參數量在增加0.31×106的情況下,精度提升了1.31%,延遲下降了3 ms。

圖5 Res-RepVGG 和SPPF 對主干特征網絡的改進Fig.5 Improvement of the backbone feature network by the Res-RepVGG and SPPF
在安全帽佩戴檢測數據集上模型改進前后的檢測效果對比如圖6 所示。由圖6 可以看出:改進前的YOLOX-m 檢測效果較好,且沒有漏檢的情況,包括較小的目標,置信度達到0.8 以上;改進后的YOLOX-m 使用Res-RepVGG 模塊和主干特征簡化網絡作為最后兩層,檢測精度更高。

圖6 YOLOX-m 改進前后的檢測效果對比Fig.6 Comparison of detection effect before and after the YOLOX-m improvement
由此可見,改進后的YOLOX-m 在簡化主干特征網絡的基礎上,更新CSP 結構的重疊次數為1、3、3、1,通過Res-RepVGG 和SPPF 的結構替換,在少量增加模型參數量的情況下提高了檢測精度和推理速度,但模型大小仍低于原始YOLOX-m 模型。
在實際生產過程中環境是復雜多變的,訓練好的模型可能得到較差的檢測效果。針對域遷移差異問題[23-24],設計一種多階段網絡訓練策略來增加模型魯棒性,如圖7 所示,具體步驟如下:

圖7 多階段網絡訓練策略Fig.7 Multi-stage network training strategy
1)將原缺陷絕緣子訓練集N分為S個子訓練集集,第Ni個子訓練集的樣本數為MNi,其中i=0,1,…,S-1;將原缺陷絕緣子測試集C分為H個子數據集,第Cj個子數據集的樣本數為MCj,其中j=0,1,…,H-1。需要注意的是,在保證子測試集用完時,子訓練集也使用完畢,H和S相等。
3)初始模型推理未標記的測試集Cj得到偽標簽數據集Pj,得到的偽標簽數據集Pj初步具備缺陷絕緣子的位置信息,但還和真實標簽有一定的差距,因此再結合子訓練集Ni+1對初始模型進行微調,微調完成后得到微調模型,結合方式是在微調模型的訓練過程中進行Mosaic 數據增強時以隨機概率K來抽取偽標簽數據集上子訓練集Ni+1中的圖像湊成4 張圖片,如式(6)~式(8)所示:
4)跳回步驟3)進入循環迭代,將微調模型賦予初始模型作為下一步循環中微調的模型,并且子測試集數j通過加1 遍歷到下一個子測試集Cj+(1j=0,1,…,H-1),子測試集Cj+1再結合推理得到的偽標簽數據集Pj+1,偽標簽數據集Pj+1結合子訓練集Ni+1(i=0,1,…,S-1)對初始模型進行微調得到微調模型,直到遍歷完子訓練集和子測試集,即直到子訓練集和子測試集為NS-1和CH-1后循環迭代結束,得到最終的訓練模型。
將改進的YOLOX-m 網絡模型與多階段訓練策略相結合構成了完整的W-YOLOX 網絡模型。多階段訓練策略可以看作是一種數據增強方法,將遷移學習與偽標簽相結合,有效降低了域遷移帶來的差異性。
選取公開的安全帽佩戴檢測數據集,包含helmet 和head 2 個類別,共13 638 張 圖像,安全帽佩戴檢測數據集類別數據分布如圖8 所示。篩選前在數據集中的分布如圖8(a)所示,helmet 和head 目標個數之比約為1∶7,數據分布不平衡,在訓練中模型收斂困難。為了解決類別不均衡問題,篩選原始數據集,每張圖片至少含有1 個頭盔,篩選后的數據集中helmet 和head 目標個數之比約為1∶5,篩選后在數據集中的分布如圖8(b)所示,共10 189 張圖像,在訓練中模型收斂順利,解決了類別不均衡導致的模型收斂困難、精度低下的問題,并將此數據集作為基準數據集用于實驗對比。

圖8 安全帽數據集類別數據分布Fig.8 Category data distribution of safety helmet dataset
實驗硬件配置如表1 所示。

表1 硬件配置Table 1 hardware configuration
選用YOLOX-m 為基準模型,將數據集劃分成訓練集、驗證集和測試集,比例為8.0∶0.5∶1.5。訓練次 數(epoch)設置為300,訓練批次為64,前3 個epoch 進行模型預熱,初始學習率為0.01,訓練和測試圖像的輸入尺寸設置為416×416 像素,優化器采用AdamW[25],采用概率為1 的Mosaic 數據增強和概率為0.2 的Mixup 數據增強[26],增加的實驗超參數設置如表2 所示。

表2 超參數設置Table 2 Hyperparameter setting
采用推理延遲、模型大小、平均精度均值(mAP)、召回率和精準率作為實驗評價指標。模型推理延遲表示一張圖片輸入模型再輸出測試結果的時間,反映了模型的運行速度。模型大小表示模型參數量的數值,反映了模型容量。召回率表示樣本中有多少正例被預測正確,反映了模型的漏檢比例。精準率表示預測為正的樣本中有多少是正確的,反映了模型的錯檢比例。mAP 作為精準率和召回率的積分結果,表示模型預測目標的準確度,一般交并比(IoU)設置為0.5,即mAP0.5,mAP0.5-0.95表示閾值為0.5~0.95的平均結果,mAP 計算如式(9)所示:
其 中:C表示類別數,分 為head 和helmet 2 個類別;表示第i個類別的精準率。
為了證明改進方法的有效性,進行消融實驗來驗證各個功能模塊對YOLOX-m 模型性能的影響,如表3 所示。

表3 消融實驗對比Table 3 Comparison of ablation experiment
由表3 可以看出,以YOLOX-m 為基準模型對模型進行改進,+代表在之前的模型基礎上進行改進,原始的YOLOX-m 的召回率、精準率、mAP0.5、推理延遲和模型大小分別為85.52%、89.87%、92.15%、21 ms和25.3 MB,之后的每一次改進都至少會提升模型的某一性能指標,基準模型通過3 次改進后,召回率、精準率和mAP0.5分別提升了1.92、2.33 和0.96 個百分點,推理延遲和模型大小分別減小了5 ms 和4.7 MB,在基準模型精度較高的前提下進一步提升了模型性能。
改進模型的訓練過程如圖9 所示,迭代次數設置為300,以原始YOLOX-m 為基準模型進行訓練,其召回率隨著迭代次數的增加波動較大,在90 次迭代時達到最高點,之后召回率隨迭代次數增加逐漸降低,150 次迭代為拐點,召回率逐漸增加,且精準率也在180 次迭代時達到飽和;第1 次改進(+簡化主干特征網絡)通過略微的精度損失換取了推理延遲和模型大小的減少,其mAP0.5、召回率和精準率與其他曲線相比均位于最低值;第2 次改進(+Res-RepVGG模塊)提高了模型精度并降低了推理延遲,可見3 個精度指標明顯提高,其精準率和召回率在210 次迭代達到最大值,隨著訓練迭代次數的增加,指標值穩定性均高于前兩個模型;第3 次改進(W-YOLOX),通過替換SPPF 模塊和對主干特征網絡最后兩層進行調整,使得模型的mAP0.5、推理延遲和模型大小都有所改善,其召回率和精準率也較第2 次改進有所增加,減少了模型的錯檢與漏檢。

圖9 改進模型的訓練過程Fig.9 Training process of the improved model
在簡化的網絡結構中,以W-YOLOX 為基礎模型的參數調整實驗如表4 所示,改進前每層CSPBlock的堆疊次數為{3,9,9,3}。

表4 簡化主干特征網絡的參數設計實驗Table 4 Parameter design experiment of simplified feature backbone network
由表4 可以看出,通過比例設置減少每層的堆疊次數構成其他5 種參數設計,可以發現每一層CSPBlock 堆疊次數的減少僅有少量的精度損失,這是因為在主干特征網絡中只需少量卷積塊的堆疊學習到的有效特征就能達到飽和條件[11]。同樣地,多余卷積塊的堆疊僅提升了少量精度,但會導致模型推理延遲和參數量的顯著增加,降低網絡設計性能。通過消融實驗對比,當主干特征網絡每層CSPBlock 的堆疊次數為{1,3,3,1}時,模型參數量在大幅度減少的情況下精度和速度均為最優值。需要注意的是,中間兩層的通道信息較為豐富,當卷積塊堆疊次數為1 次時,精度損失會加劇,模型性能急劇下降。
為了驗證W-YOLOX 網絡結構在安全帽檢測上的性能優勢,將其與近幾年的SOTA 模型進行對比實驗,訓練中超參數設置采用本文設置,實驗結果如表5 所示。

表5 W-YOLOX 與現有模型的檢測性能對比Table 5 Comparison of detection performance between W-YOLOX and existing models
由表5 可以看出:在綜合性能指標上,W-YOLOX相較于其他模型達到了最優;在模型大小上,YOLOv5m 與其近似,但由于結構冗余,召回率、準確率和mAP0.5均下降了約3 個百分點;在精度指標上,與YOLOX-l 和PP-YOLO_MobileNetV3 相 近,但W-YOLOX 的模型大小和推理延遲都有較大幅度的下降,受益于網絡結構的改進。
W-YOLOX 和YOLOv5m、PP-YOLO_MobileNetV3、YOLOX-l 在測試集上的實驗結果對比如圖10 所示,從左到右分別展示了白天小目標、夜晚小目標、遮擋和分類4 個場景。由圖10 可以看出,W-YOLOX 在4 個場景中檢測精度均達到最高,在夜晚小目標檢測中相比于其他3 種模型不存在漏檢的情況,在第4 個場景中能夠識別出遠距離不戴安全帽的人,說明了W-YOLOX 能夠更好地擬合不同場景下的數據集,具有更低的訓練損失,同時分類能力也有所提高??梢?,W-YOLOX 適用于遮擋、分類和遠距離小目標場景下的安全帽佩戴檢測。

圖10 W-YOLOX 與3 種模型的檢測效果對比Fig.10 Comparison of detection effects between W-YOLOX and three models
將安全帽佩戴檢測數據集中的10 189 張圖像以8.0∶0.5∶1.5 的比例劃分為訓練集、驗證集和測試集,得到8 151 張訓練集和1 528 張測試集,測試模型為W-YOLOX,訓練方法采用多階段網絡訓練策略且訓練參數設置相同取值均為2。設置子集數S為1、2、3、4 和5,分為均勻拆分和非均勻拆分2 種情況,mAP0.5和mAP0.5-0.95均為最終訓練模型的平均精度均值,實驗結果如表6 所示。

表6 多階段網絡訓練實驗結果(均勻拆分)Table 6 Results of multi-stage network training experimen(tuniform split)
由表6 可以看出,當拆分子集個數S=2 時mAP0.5達到最高值,比不拆分的mAP0.5提高了0.37 個百分點,但是當拆分次數變多時,如當S取3、4、5 時,訓練精度大幅度下降,原因是拆分數據集過少所致,導致每一次訓練模型時都不能學習到足夠多的特征,使用偽標簽微調也會降低訓練精度。
非均勻拆分實驗驗證了第1 個子訓練集拆分多而其余子集以均勻的方式拆分的情況,實驗結果如表7 所示。

表7 多階段網絡訓練實驗結果(非均勻拆分)Table 7 Results of multi-stage network training experimen(tnon-uniform split)
在 表7 中,MN0和MC0表示第1 個子訓 練集或者子測試集的數量,其值為訓練集或者測試集的3/2;MNi和MCj表示第i個子訓練集或者子測試集的數量,其中i不等于0,其值的計算如式(10)所示。當拆分數量為3 時,mAP0.5達到最大值,比不拆分提高了0.72 個百分點,也高于均勻拆分的最高精度,說明第1 次訓練的模型對后面的訓練影響較大,當初始模型學習了足夠多的特征后有利于后面的數據訓練,且當S取4、5 時,mAP0.5-0.95均高于不拆分的相同指標,證明了多階段網絡訓練策略可以提高模型魯棒性。

表8 α 對W-YOLOX 模型性能的影響Table 8 Effect of α on W-YOLOX model performance
為了驗證多階段網絡訓練后模型的測試魯棒性,在訓練迭代過程的驗證集上W-YOLOX 和多階段訓練策略+W-YOLOX 的損失變化曲線如圖11 所示。在訓練初始階段,后者損失值低了近1 個百分點,在40 次迭代后,多階段訓練策略的優勢逐漸顯現,使驗證集損失值降低并保持在最低水平上,提高了在不同域的新場景數據集上的檢測精度。

圖11 非均勻拆分的多階段網絡訓練實驗結果(S=3)Fig.11 Experiment results of multi-stage network training with non-uniform spli(tS=3)
為了進一步提升現有安全帽檢測算法的檢測精度與速度,本文建立一種基于多階段網絡訓練策略的改進YOLOX-m 模型,通過簡化并重新設計主干特征網絡結構,在降低模型推理延遲和減小模型大小的同時提高了檢測精度,并結合多階段網絡訓練策略提升改進模型在不同場景下的檢測能力來最大化模型性能。實驗結果表明,與其他相同規模的模型相比,改進YOLOX-m 模型的各項評價指標均有所提升。由于多階段訓練使用的數據集場景較為單一,在后續工作中將增加暗光、雨雪等條件下的惡劣場景數據集,進行復雜場景下的安全帽佩戴檢測研究。