周 瑤 ,周 石
(1.中國移動通信集團湖北有限公司 武漢分公司,武漢 430100;2.武漢紡織大學 機械工程與自動化學院,武漢 430073;3.武漢紡織大學 湖北省數字化紡織裝備重點實驗室,武漢 430073)
鐵路工人佩戴安全帽和穿戴背心,對工作人員的安全至關重要。然而,由于缺乏安全意識,安全帽和背心的重要性往往被忽視[1]。在鐵路上普遍采用人工監督方式,但監督范圍過大,在實踐中不可能及時跟蹤和管理所有工作人員[2]。因此,基于圖像處理[3]的智能監控下的安全帽佩戴和背心穿戴檢測正逐漸成為鐵路實施管理的主要手段。圖像處理又可分為深度學習算法和傳統檢測算法。由于基于深度學習的檢測方法可以有效避免檢測精度和效率低的問題,且泛化性強。因此,基于深度學習的鐵路工人安全帽檢測方法成為近年來的研究熱點。
隨著深度學習和檢測的結合,基于深度學習的檢測算法可以分為兩大類,兩階段網絡和單階段網絡。最具代表性的兩階段網絡包括R-CNN[4]和Faster R-CNN[5],單階段網絡包括SSD[6]和YOLO[7]。同時,無數學者使用深度學習目標檢測算法對安全帽“是否正確佩戴”作了大量的研究,并取得了一定的研究成果。陳松波[8]將K-means++算法融入Faster R-CNN中,更好的適配小尺寸頭盔,提高準確率,但該方法檢測速度較慢,無法滿足實時要求。饒誠[9]通過在YOLOv3-Tiny的特征提取網絡中添加改進的空間金字塔池(SPP)模塊,以提取具有豐富語義信息的局部和全局特征,該方法可以對安全帽佩戴實時性檢測,但檢測精度較低,漏檢率較高無法滿足實際鐵路上的檢測要求。范武[10]利用Densenet在模型參數和技術成本上的優勢,替代YOLOv3骨干網絡進行特征提取,該方法可以有效檢測是否佩戴安全帽,但該方法模型過大,檢測速度較慢。陳俊華[11]在YOLOv4的骨干網絡3個輸出特征層中嵌入坐標注意機制模塊以增強特征信息,并設計了改進的特征融合結構來融合目標信息,該方法可以有效檢測出是否佩戴安全帽,但檢測速度較慢,且檢測精度較低。戴斌[12]對SSD模型進行改進,使用了輕量級網絡結構,減少了模型的參數量和計算量,該模型檢測速度較快,但精度較低。譚石磊[13]等人通過在YOLOv5s的基礎上增加一層檢測層,該方法可以有效降低小目標漏檢率,但該方法模型過大,檢測速度較慢。白培瑞等人[14]提出DS-yolov5模型,在YOLOv5s的基礎上加入了簡化版的Transformer模塊,加強對全局語義信息的特征學習能力,并在Neck層引入雙向特征金字塔融合多尺度的特征,最后模型在公開數據集SHWD上的到驗證,Map達到95.5%,更好適應了工地復雜的生產環境,但該方法模型過大,檢測速度較慢。
基于上述相關文獻研究成果,為了更好地平衡鐵路工人安全帽檢測任務的檢測精度、檢測速度和網絡模型體積,在YOLOv5s模型的基礎上進行相關改進,提出一種新的網絡模型。本文的主要貢獻如下:
1)采用GhostNet模塊替換原始網絡中的卷積Conv,這樣可以減少冗余,使參數量變少,更利于模型的實時檢測和最終部署。
2)采用更高效簡單的多尺度特征融合BiFPN,來對原始FPN進行改進,BiFPN它舍棄了最頂層和底層的兩個神經元,同時在中間各特征層加入一條與輸入輸出特征相連的殘差結構,相較于之前的特征融合方式更加簡單高效。
3)把原始的CIOU損失函數替換為SIOU損失函數,這樣可以充分考慮到所需回歸之間的向量角度,提高收斂速度以及檢測精度。
YOLOv5算法是由Ultralytics公司于2020年在YOLOv4發布不久后推出的。雖然沒有相關的論文,但YOLOv5在前者基礎上借鑒了其他算法的創新和改進思路,因此獲得了一個更高的檢測精度。YOLOv5網絡結構可以簡單地描述為三大部分:特征提取網絡,Neck網絡和檢測頭,其結構如圖1所示。該模型根據輸入通道數C和模塊的復用次數不同可分為4個版本,分別是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,這些不同尺度的模型讓算法工程師更好的選擇不同的模型,權衡精度和速度,簡化了工程的相關落地與部署。一般來說,YOLOv5s模型最小,具有更高的檢測速度;YOLOv5x模型最大,具有更高的檢測準確率,YOLOv5m和YOLOv51是在檢測速度與檢測準確率中均衡的結構模型。為了滿足對鐵路工人實時檢測,選用YOLOv5s模型進行檢測。

圖1 YOLOv5s模型結構圖
由于原始的YOLOv5s骨干網絡過于復雜,參數量多,不利于模型的實時檢測和最終部署,而采用GhostNet[15]模塊替換原始網絡中的卷積Conv,這樣可以減少冗余,使參數量變少,更利于模型的實時檢測和最終部署。
GhostNet是華為諾亞方舟實驗室于2020年[15]提出的輕量級特征提取網絡,它采用端到端神經網絡架構,外表為MoblieNetv3[16],GhostNet的核心是Ghost模塊,如圖2所示顯示了Ghost模塊之間的卷積過程。Ghost模塊引入了線性運算而不是部分卷積,與標準卷積相比,它分為3個步驟:1)使用標準卷積生成少量的本征圖;2)在第一步生成的特征圖的基礎上,使用深度卷積或移位等線性操作,用少量參數獲得更多的Ghost特征圖;3)將前兩步生成的特征映射進行合并,得到Ghost模塊的輸出特征映射。在輸入和輸出特征映射大小相同的情況下,Ghost模塊的計算量遠低于普通卷積,實現了用更少的計算獲取更多的特征信息,并且不會對模型的性能產生負面影響。

圖2 Ghost模塊的卷積過程
基于Ghost模塊的輕量級優勢,Ghost-BottleNeck由兩個Ghost模塊堆疊構成。當步長為1時,第一個Ghost模塊是擴展層,參考MobileNetV2的結構,在第二個Ghost模塊之后沒有使用ReLU激活函數,在彼此層之后引入BN和ReLU激活函數。當步長為2時,捷徑由下采樣層和步長=2的深度可分離卷積組成,其中深度可分離卷積可以減少通道數。
通常,由于鐵路工人檢測過程中,背景較為復雜,采用原始的YOLOv5s會導致深淺層的信息會互相干擾,對檢測的精度會產生影響[17]。因此,對于多尺度的受到影響,對頸部網絡進行改進,以提高檢測精度。
雖然YOLOv5s中的PANet通過上采樣和下采樣在多尺度融合方面取得了很好的效果,但其計算量很大[18]。然而,雙向特征金字塔網(BiFPN)[19]可以實現簡單快速的多尺度特征融合。它采用跨尺度連接去除PANet中對特征融合貢獻較小的節點,并在同一級別的輸入和輸出節點之間添加額外的連接。本次研究我們使用BiFPN對Neck模塊進行改進,利用一層結構的BiFPN來提高模型的訓練效率,如圖3所示。

圖3 BiFPN結構圖
利用BiFPN改進YOLOv5s的頸部,可以實現更簡單、更快的多尺度特征融合。此外,在BiFPN中引入可學習權重,使其能夠學習不同輸入特征的重要性,并反復應用自頂向下和自底向上的多尺度特征融合。與YOLOv5s的頸部網絡PANet相比,BiFPN具有更少參數和FLOPS[20]的性能。因此,它可以更好地實時檢測鐵路工人。
損失函數在模型性能中起著重要作用[21],它是衡量深度卷積神經網絡預測值與真實值之間差異的重要指標,對于目標檢測算法尤為重要。因此,損失函數決定了模型參數訓練的好壞。
原始的YOLOv5s中的CIOU Loss[22]在之前損失函數的基礎上增加了對縱橫比的考慮,但是沒有考慮需要回歸的矢量角度,即所需真實框和預測框之間的方向不匹配。此外,采用CIOU Loss會導致預測框在訓練過程中出現游走的問題,降低實驗訓練速度。文獻[23]在CIOU Loss的基礎上提出了一種新的損失函數SIOU Loss,它不僅依賴邊界框回歸指標的聚合,而且在損失函數cost中引入方向性,重新定義懲罰指標。如圖4所示,虛線為YOLOv5s-SIOU訓練效果,實線為YOLOv5s-CIOU訓練效果。實驗證明,與CIOU相比,SIOU收斂速度更快,訓練效果更好,且精確率更高。

圖4 YOLOv5s模型的SIOU和CIOU訓練效果對比
SIOU損失包括4個成本:角度、距離、形狀和IOU。角度將真實框和預測框之間的角度差表示為一個變量。角度成本對損失函數的貢獻為圖5,定義如式(1)所示。
(1)

圖5 角度成本對損失函數的貢獻
(2)
距離成本的定義如式(3)所示。
(3)
ρx和ρy都測量了真實框和預測框之間的距離,它們的定義如等式(4)和(5)所示。更進一步,Λ表示角度代價,將角度代價作為一個變量融入到距離損失中,可以更準確地表達損失。
(4)
(5)
γ=2-Λ
(6)
形狀成本的定義如式(7)所示。
(7)
其中:(w,h) 和 (wgt,hgt) 分別表示預測框和真實框的寬度和高度。θ表示控制損失函數對形狀成本的關注程度。
IOU表示真實框和預測框之間聯合比率的交集,IOU成本的定義如式(8)所示。
(8)
其中:B和Bgt分別代表預測框區域和真實框區域。
SIOU loss的定義如式(9)所示。
(9)
對于方程(9),△表示修改后的距離成本,而Ω和IOU表示形狀成本和距離成本。
將融入GhostNet模塊、BiFPN、SIOU損失函數的YOLOv5s算法稱為YOLOv5s-GhostNet-BiFPN-SIOU算法(簡稱YOLOv5s-GBS算法),其算法結構如圖6所示。

圖6 本文改進算法YOLOv5s-GBS結構圖
本文采用的操作系統為Windows10,模型訓練采用Pytorch深度學習框架,采用GPU加速,型號為NVIDIA GeForce GTX 1070Ti,本文實驗所使用的計算機配置具體如表1所示。

表1 實驗環境配置
實驗步驟如下:1)數據集增強。對鐵路工人數據集進行數據增強處理,提高模型泛化能力。2)實驗評價指標的確定。確定一系列指標,用來判斷模型的好壞。3)模型訓練及參數設置。加載模型配置文件以及超參數,將輸入的數據進行預處理。4)將數據集數據輸入到模型進行訓練。隨著訓練次數的不斷增加,將使用SGD進行網絡參數的更新優化。5)選出最優的模型權重,通過檢測檢測腳本,對測試集進行預測。
2.2.1 數據集介紹
本文數據集采用kaggle[24]的鐵路工人檢測,該數據集一共分為三類,有工人、安全帽、背心。Kaggle成立于2010年,是一個進行數據發掘和預測競賽的在線平臺。將數據集分成訓練集、驗證集和測試集,其中訓練集含有2 609張圖片,驗證集含有483張圖片,測試集含有130張圖片。如圖7所示為數據集可視化分析圖,(a)為目標框位置分布圖,橫縱坐標代表中心位置;(b)為目標框大小分布圖。橫縱坐標代表標注的寬和高。

圖7 數據集可視化圖
從圖7(a)可以看出目標框中心位置分布均勻,從圖7(b)可以看出目標框大小較小。因此,分析可知數據集中的大部分數據為小目標。
2.2.2 Copy-Pasting數據增強
在對小目標檢測過程中,導致小目標漏檢率高,除了網絡本身可能存在缺陷,還有一大原因就是訓練數據中小目標的再現性較差。因此,本文將采用Copy-Pasting[25]數據增強策略,來對數據集中的小目標進行過采樣、復制、粘貼,以此來提供足夠的小目標來和 anchor 進行匹配,以此實現提高小目標檢測的性能。
Copy-Pasting數據增強由Fang等人[25]在2017年提出,該增強方法通過對小目標樣本進行 Oversampling(過采樣),然后在對樣本里的小目標進行 Copy-Pasting(復制粘貼)操作來提高小目標檢測的性能。
對小目標的圖像進行Oversampling(過采樣),來改善小目標圖像較少的問題,及將含有小目標的圖片通過多次反復訓練,采用這種方法不僅簡單,還很有效果。其中,復制的次數就是過采樣率。
在進行過采樣操作之后,然后通過混合粘貼( Copy-Pasting),利用以下公式(10)將兩幅圖混合在一起。
I1×α+I2×(1-α)
(10)
式中,I1代表粘貼對象圖像,I2代表被粘貼對象圖像,α代表mask掩模。通俗的意思就是,將I1中的mask部分像素扣出來,然后隨機粘貼在I2中。
本文采用Precision、Recall、F1-score和mean Average Precision(mAP)作為評價指標,設置0.5 IOU閾值。具體計算公式如下:
(11)
(12)
(13)
(14)
其中:TP是正確識別鐵路工人,FP是誤檢鐵路工人,FN是漏檢鐵路工人的數量。c是代表種類數;M和N表示IOU閾值和IOU閾值的數量;P(k)和R(k)是準確率和召回率。F1是Precision和Recall之間的權衡,用來表示模型的性能,mAP是不同置信度閾值下的總體性能。參數和浮點運算(FLOPs)用于測量模型的網絡復雜性,較小的值表示模型的網絡復雜度較低。
模型訓練過程中,對超參數進行設置,超參數的設置好壞會對模型的好壞產生一定的影響,具體設置參數如表2所示。

表2 超參數設置
2.5.1 本文YOLOv5s-GBS算法與原YOLOv5s算法的p、r對比
本文提出的YOLOv5s-GBS算法是基于YOLOv5s進行改進的,因此為了更好的看到改進前后算法性能之間的差異,將YOLOv5s算法和本文改進YOLOv5s-GBS算法在訓練過程中的P、R進行比較,如圖8所示。

圖8 改進算法YOLOv5s-GBS與原始YOLOv5s算法P、R對比圖
從圖8(a)、(b)可以看出YOLOv5s-GBS與YOLOv5s算法收斂速度相差不大,但精確率P、召回率R的值更高。因此,說明本文提出的YOLOv5s-GBS算法在保證收斂速度的情況下,且精確率P、召回率R更高。
2.5.2 消融實驗
為了分析每個模塊的作用和有效性,采用鐵路工人數據集進行消融實驗。通過設計三組實驗對不同的改進進行分析,每組實驗均在相同訓練參數,不同算法內容上進行測試。消融實驗的具體結果如表3所示。“√”是指使用相應的策略來改進模型,以及“-“意思是不使用相應的策略。原始YOLOv5s模型大小為13.7 MB,當采用GhostNet模塊后及YOLOv5s-G算法,雖然F1和mAP略微有所降低,但是YOLOv5s-G模型大小減小將近一半,且網絡的參數和浮點數也有大幅度降低,訓練速度和檢測速度都有一定上升。當在YOLOv5s-G模型的基礎上,融入BiFPN模塊對Neck模塊進行改進及YOLOv5s-G-B算法,其模型大小基本持平,F1提升了0.9%,mAP提升了0.5%,訓練速度提升了0.012 s·張-1,檢測速度提升了4 fps。當在YOLOv5s-G-B模型的基礎上,將CIOU損失函數替換為SIOU損失函數及YOLOv5s-GBS算法,其模型大小、訓練速度和檢測速度一致,但F1提升了5.1%,mAP提升了6%。綜上所述,本文提出YOLOv5s-GBS算法與原始的YOLOv5s相比,各項性能都有大幅提升。

表3 消融實驗對比結果
2.5.3 不同算法性能對比
為驗證所提算法具有更好的效果,在相同配置條件下采用相同數量的訓練集,并使用現階段流行的幾種目標檢測網絡進行對比實驗:Faster RCNN、SSD、YOLOv3、YOLOv5s、文獻[26]、文獻[27]、YOLOv5s-GBS算法。其中,SSD、YOLOv3、YOLOv5s、文獻[26]、文獻[27]、YOLOv5s-GBS算法均屬于單階段檢測算法,Faster RCNN屬于兩階段檢測算法。使用mAP、F1、訓練速度和檢測速度4個評價指標對實驗結果進行評價,實驗結果如表4所示。

表4 不同算法性能對比結果
1)多種不同的算法在相同的數據集下,YOLOv5s-GBS算法最優權重大小最小為7.57 M,其余的按從小到大的順序進行排列分別是文獻[27]、YOLOv5s、文獻[26]、SSD、YOLOv3、Faster RCNN,它們權重大小分別為:7.7、13.7、41.9、90.1、240、625 M。由此可知,本文的改進算法YOLOv5s-GBS的復雜度最低,可以很好的部署。Faster RCNN算法模型復雜度最高,需要較高算力的計算機來運行。
2)YOLOv5s-GBS算法與Faster RCNN算法相比,F1提升了32.8%,mAP提升了31.4%,且Faster R-CNN檢測速度FPS、訓練速度過慢,無法滿足實時要求。SSD算法精度過低,無法滿足精度要求。相比YOLOv3算法,F1提升了25.7%,mAP提升了21.5%,訓練速度提升了0.054 s·張-1,檢測速度提升了15 fps。相比YOLOv5s,F1提升了3.6%,mAP提升了4.5%,訓練速度提升了0.022 s·張-1,檢測速度提升了10 fps。相比文獻[26],F1提升了7%,mAP提升了5.7%,檢測速度提升了9.8 fps。相比文獻[27],F1提升了3.3%,mAP提升了2.2%,檢測速度提升了8 fps。通過這些結果可以看出,本文提出的改進算法YOLOv5s-GBS相比其他主流算法來說,在性能上均有較大的提升,更加滿足實際檢測要求。
為了更直觀地看出YOLOv5s-GBS算法與原YOLOv5s算法的檢測差距,將測試集對改進算法進行測試。使用YOLOv5s-GBS算法和YOLOv5s算法分別進行測試,部分檢測結果如下圖9原YOLOv5s檢測結果、圖10 YOLOv5s-GBS算法檢測結果所示。

圖9 原YOLOv5s檢測結果

圖10 本文YOLOv5s-GBS算法檢測結果
通過圖10(a)與圖9(a)對比可知,YOLOv5s-GBS算法檢測精度相比YOLOv5s有所提升。圖10(b)與圖9(b)對比可知,YOLOv5s-GBS算法檢測精度相比YOLOv5s有所提升,且對小目標檢測更好。圖10(c)與圖9(c)對比可知,YOLOv5s-GBS算法檢測精度相比YOLOv5s有所提升。圖10(d)與圖9(d)對比可知,YOLOv5s-GBS算法檢測精度相比YOLOv5s有所提升,且圖9(d)A位置處,出現了漏檢,而圖10(d)圖上A位置處未出現漏檢。實驗表明,本文改進算法YOLOv5s-GBS相比原始YOLOv5s算法,在檢測精度上有明顯提升,對實際場景中工人檢測效果更好。
本文提出的基于融入GhostNet模塊、BiFPN、SIOU的改進YOLOv5s鐵路工人佩戴安全帽和穿戴背心檢測算法及(YOLOv5s-GBS算法)。針對原YOLOv5s算法網絡過于復雜,參數量多,不利于模型的實時檢測和最終部署等問題,首先采用GhostNet模塊替換原始網絡中的卷積Conv,這樣可以減少冗余,使參數量變少,更利于模型的實時檢測和最終部署。其次采用更高效簡單的多尺度特征融合BiFPN,來對原始FPN進行改進,BiFPN它舍棄了最頂層和底層的兩個神經元,同時在中間各特征層加入一條與輸入輸出特征相連的殘差結構,相較于之前的特征融合方式更加簡單高效。最后把原始的CIOU損失函數替換為SIOU損失函數,這樣可以充分考慮到所需回歸之間的向量角度,提高收斂速度以及檢測精度。研究表明,本文提出的YOLOv5s-GBS算法的調和平均數F1、均值平均精度mAP均有較為顯著的提升,同時模型大小相比原YOLOv5s減少了一半,更利于模型的實時檢測和最終部署,更適合對鐵路工人佩戴安全帽和穿戴背心進行檢測。