史潤發,潘 偉,朱 镕,高 慶,胡國華
(1.合肥學院 先進制造工程學院,安徽 合肥 230601;2.合肥移瑞通信技術有限公司,安徽 合肥 230013)
在施工作業中佩戴安全帽能夠很好的承受和分散物體撞擊,起到保護作用。由于工人不安全行為的跟隨現象較為嚴重[1],安全事故難以避免。為了滿足實際需求,國內外學者研究機器視覺技術來輔助人員進行管理。傳統的機器視覺方法是采用人工進行特征提取,但是由于施工現場環境復雜,傳統方法檢測慢、識別率不高,從而難以勝任艱巨的檢測任務。近年來隨著神經網絡的快速發展,深度學習逐漸走入應用領域。
針對目標檢測任務,深度學習模型可以分為一階段算法和二階段算法。其中,一階段算法包括SSD[2]、YOLO[3]等系列,二階段算法中較典型的如Faster R-CNN[4]。相比較下,一階段算法的檢測速度更快,更適應于實際應用場合。由于SSD算法層數較淺,特征提取不夠深入,因此本文選用YOLO系列進行研究。秦子豪等[5]在Tiny-YOLO v3的基礎上使用深層可分離卷積替代網絡主干相關部分以減少參數量。楊永波等[6]使用MobileNetv3結構替換YOLOv5的主干網絡,并用知識蒸餾的方式進一步提升準確率。王建波等[7]加入融入空間信息的MSCA模塊加強了網絡特征提取能力。通過上述方法,檢測速率得到提高,具備較高的檢測實時性,但在精度上不能很好的平衡,并且由于是在主干網絡進行改進,不能使用已有的大規模訓練權重,導致了網絡收斂時間長。本文基于YOLOX網絡結構改進,采用BiFPN結構減少模型大小、提升檢測速率,使用衡量更為全面的CIoU損失函數,并在檢測頭前加入ECA注意力機制提升檢測精準率,同時保留了主干網絡結構,便于模型的遷移學習。
YOLOX是曠世公司提出的新型目標檢測算法,在目標檢測方面相較以往YOLO系列有更強的優勢[8-10]。YOLOX由三個組件構成:主干特征提取網絡(Backbone)、加強特征提取網絡(Neck)和檢測頭(Head)。Backbone采用CSPDarknet結構,其繼承了YOLOv5的Focus結構,使用性能優于ReLU的SiLU激活函數,并加入了YOLOv4的SPP(Spatial Pyramid Pooling)[11]結構。Neck使用FPN[12]+PAN結構,在融合深層特征和淺層細節的基礎上輸出三個特征圖。Head取消了多錨框確定物體位置和類別,將分類和回歸任務分開,使用分支解耦的方式分別在模塊Cls、Reg、Obj計算目標的類別概率、位置和置信度。此外,YOLOX還采用了Mosaic和Mixup兩種數據增強策略。Mosaic會將4張圖片拼接在一起,Mixup則是隨機混合兩張不同的圖片。由于YOLOX系列中YOLOX-S的參數量和權重較小且具有代表性,適合部署在移動設備,因此選擇在其基礎上進行改進研究。
在YOLOX模型中,采用了特征金字塔結構和路徑聚合網絡PAN來加強對于Neck部分的特征提取,該方法通過自頂向下的方式傳遞語義特征,同時從底部向上傳遞位置特征,在不同主干層進行不同檢測層的特征聚合,以實現更好的特征提取結果。FPN+PAN結構如圖1所示。

圖1 FPN+PAN
本文采用BiFPN[13]結構替代原來的加強特征提取網絡,BiFPN是由谷歌團隊提出的一種加強雙向特征金字塔網絡,具有較好的性能特點。首先,BiFPN使用快速歸一化融合,快速歸一化融合相比Softmax效率提升了30%,如式(1)所示。
(1)
式(1)中,I和O分別代表輸入和輸出特征,權重ω≥0,由激活函數ReLU來保證。學習率ε=0.0001保證數值穩定。其次,BiFPN取消了只有一個輸入的節點(如圖1所示P3和P7右側第一個節點),這些節點提供的特征信息貢獻較少,因此取消部分節點以簡化網絡結構。之后加入跳躍連接,使得同層之間少量增加計算量并融合更多特征。最后,此雙向結構封裝為一個特征網絡模塊,重復多次連接,達到更好層次的特征融合。BiFPN結構如圖2所示。

圖2 BiFPN
由于YOLOX網絡在Neck部分只有三個輸入,因此本文首先將BiFPN調整為P3、P4、P5三個輸入,之后采取卷積方式調整輸入通道數,以便進行后續的快速歸一化融合。然后在每個節點輸出時加入深度可分離卷積,并于中間層加入殘差模塊,從而進一步提升模型的性能。最后再次調整通道數作為預測端的輸入。改進后的結構命名為BiFPN-S,如圖3所示。

圖3 BiFPN-S

(2)
(3)
(4)
(5)
(6)

注意力機制本質在于對不同語義信息進行加權,通過計算出不同特征的重要性,對重要任務傾向更多關注,從而抑制背景信息。ECA[14]是一種超輕量級注意力模塊,只涉及個位數的參數,對于部署移動設備有較強的優勢。ECA是基于SE[15]的改進版,考慮到SE用全連接層捕獲非線性跨通道交互作用較為低效,ECA采取了無降維的局部跨通道策略,只考慮每個通道與其卷積核k近鄰之間的交互作用,通過所有通道共享傾斜參數將參數量由k*C降低為k,權重ωi如式(7)所示。
(7)
式(7)中,σ代表sigmoid函數,α是傾斜參數,y是輸入特征,Ωk表示y的k個相鄰通道的集合。另外在ECA中卷積核k的大小由通道數C決定,在給定通道數C的情況下,自適應k的大小如式(8)所示。
(8)
式(8)中,γ取值為2,b取值為1,||odd表示取值最近的奇數。當通道數越大,核k的取值越大。ECA模塊如圖4所示。

圖4 ECA
輸入特征首先進行全局平均池化(Global Average Pooling,GAP),得到未降維的所有特征。然后經過大小為k的快速一維卷積捕獲非線性跨通道交互,k由上述公式(8)得到。之后加入激活函數sigmoid,獲得通道權重。最后再和輸入相乘構造殘差網絡提升模型整體性能得到輸出。經過實驗,最終選擇在檢測頭之前加入ECA注意力模塊。
YOLOX-S中在Cls和Obj部分的損失函數都使用交叉熵損失(BCE_Loss),由于其有較好的效果故本文仍使用BCE_Loss,YOLOX-S在Reg部分使用LossIoU[16],本文則采用LossCIoU[17],相比較IoU和GIoU,CIoU關注目標框的重疊面積、中心點距離和長寬比多項尺度,衡量邊界框損失更加全面,擁有很好的收斂速度和穩定性。LossCIoU的計算式如式(9)-式(12)所示。
(9)
(10)
(11)
(12)
式(9)-式(12)中,A為預測框,B為真實框,A∩B代表預測框和真實框相交的面積,A∪B代表預測框和真實框的并集面積,IoU即A與B的交并比。預測框的中心點由b表示,真實框的中心點由bgt表示。ρ2(b,bgt)計算出真實框與預測框中心點之間的歐式距離。c代表兩框之間外接矩形的對角線距離。α是平衡系數,υ計算出預測框和真實框長寬比的相似性,υ中wgt和hgt代表真實框的寬高比,w和h代表預測框的寬高比。
通過以上方法改進,改進YOLOX-S的最終結構如圖5所示。改進YOLOX-S模型結構的工作原理如下。

圖5 改進YOLOX-S模型結構
第一步,圖像輸入到Backbone,并經過如下算法流程:(1)圖像經過Focus結構進行切片操作,再通過堆疊(Concat)得到通道數為12的下采樣特征圖;(2)經過由卷積Conv2D+BN層+激活函數SiLU構成的CBS結構提取特征并調整大小和通道數;(3)經過殘差結構CSP進一步加深網絡層次提高特征提取能力,并通過SPP結構的最大池化作用提升網絡的感受野。
第二步,Backbone得到三個輸出到達改進后的Neck部分,經過如下算法流程:(1)從Backbone得到的特征圖進行卷積調整,并將深層特征經過上采樣與淺層特征進行加權融合,使語義豐富的深層信息與淺層細節結合;(2)中間層的特征信息通過殘差結構提高特征提取深度,有效避免梯度消失;(3)通過深度可分離卷積提取融合后的信息,并經過下采樣不斷加強特征提取構建完成整個BiFPN-S結構。第三步,得到的三個輸出經過注意力機制ECA到達檢測頭,經過如下算法流程:(1)在ECA中計算特征信息的權重從而提高對重點任務的關注度;(2)檢測頭中邊界框采用CIoU損失計算預測框與真實框的偏差,得到結果再和分類損失、置信度損失進行結合作為Loss總損失;(3)整個網絡根據損失度反向傳播計算調整權值。
數據集是來自現場施工現場拍攝和網頁抓取,篩選出不符合要求的圖片,共保留5000張圖片用于實驗。使用Labeligg工具對數據集進行標記,分為佩戴安全帽的工人(hat)和不佩戴安全帽的工人(person)。將數據集按照8:1:1劃分為三個部分,最終得到訓練集圖片4000張,驗證集圖片500張,測試集圖片500張。實驗環境的配置如表1所示。

表1 實驗環境配置
本實驗中,選用的評價指標為平均精準率(AP),平均精準率均值(mAP)和檢測速率(FPS)。其中AP是通過計算精準率(Precision)和召回率(Recall)得到的,mAP則是不同目標AP的均值,FPS為每秒檢測的幀數。相關指標計算如式(13)-式(16)所示。
(13)
(14)

(15)
(16)
式(13)-式(16)中,TP(真正例)表示正樣本中被正確預測的數量,FP(假正例)表示負樣本中被錯誤預測為正的數量。FN(假反例)表示正樣本中被錯誤預測為負的數量。公式(15)中的p是Precision,r是Recall,AP是P-R曲線以Precision和Recall為坐標軸圍成的面積。N代表類別種類數量,n則代表不同的類別。
通過消融實驗驗證各個模塊的改進效果,以YOLOX-S為基礎模型,逐漸增加模塊測試模型性能。消融實驗結果如表2所示。對比YOLOX-S,在采用CIoU損失后mAP提升了0.33%,FPS減少了0.2f/s。

表2 消融實驗
其中檢測工人佩戴安全帽(hat)和未佩戴安全帽(person)的平均精準率均有所提升,綜合來看選取CIoU作為損失函數是較為合理的。Neck部分使用BiFPN-S作為加強特征提取結構后,模型大小較YOLOX-S減少22.17%,更加方便移動端部署,對于基礎模型和采用CIoU后的模型,FPS分別增加了3.67f/s和3.87f/s,mAP分別提升了0.46%、0.13%,其中對于未佩戴安全帽(person)工人的檢測效果更好,AP分別提升了1.09%、0.76%,可以看出本文設計的BiFPN-S結構在完成了輕量化任務的同時保證了mAP。對于ECA注意力的添加位置,選取了BiFPN-S頭部(位置1)、BiFPN-S內部(位置2)、BiFPN-S尾部(位置3)進行對比,如圖6-圖8所示。

圖6 添加位置1

圖7 添加位置2

圖8 添加位置3
可以看出ECA注意力機制有很好的性能效果,在幾乎不增加模型大小的同時,添加在位置1、2、3處均明顯提升了mAP,可以看到位置2和位置3的添加效果更加優異,因此對位置2和位置3進一步分析比較。添加位置2后檢測速率相較位置3差別不大,但mAP比添加位置3少了0.11%,且添加位置2對于hat的檢測效果比基礎模型YOLOX-S減少了0.77%。而添加位置3在保證了hat檢測效果(僅和基礎模型相差0.06%)的同時,對于person的檢測效果提升優異,較YOLOX-S+BiFPN-S+CIoU模型和基礎模型分別提升了0.79%和1.88%,因此本文將ECA注意力機制添加至位置3作為最終的改進模型。
為進一步衡量本文算法的性能,選取了目標檢測領域主流模型進行對比。對比的模型有Faster R-CNN、YOLOv3、YOLOv4、Efficientnet-YOLOv3、Mobilenet-YOLOv4、YOLOv5s和YOLOX-S。其中Faster R-CNN是二階段算法,YOLOv3、YOLOv4、Efficientnet-YOLOv3、Mobilenet-YOLOv4、YOLOv5s是基于錨框的一階段算法,YOLOX-S是無錨框的檢測算法。結果如表3所示,其中mPre代表hat和person精準率的均值,mRecall代表hat和person召回率的均值。從表中可以看出二階段法Faster R-CNN和一階段法YOLOv3、YOLOv4的mAP都達到了85%以上,但模型較大,檢測速率較慢,不適合部署在移動設備上。Efficientnet-YOLOv3和Mobilenet-YOLOv4模型都在100MB以下,也有較好的精準率,但召回率(recall)不夠理想,不能很好地檢測出所有的目標。YOLOv5s模型輕便,有優異的檢測速率,FPS更是達到了80.94f/s,mAP也達到了90.97%,適合移動端部署。YOLOX-S雖然在檢測速率上不如YOLOv5s,但也有較高的數值以滿足實際需求,且在召回率上強于YOLOv5s達到89.08%,能夠更大程度地檢測出工人佩戴安全帽的情況。本文的改進YOLOX-S的模型大小僅有27.09MB,在所有模型中最輕便,且mAP、mPre、mRecall均優于其他算法,FPS僅次于YOLOv5s和Mobilenet-YOLOv4,高達74.12f/s并強于YOLOX-S,整體來看具有較高的實用價值。

表3 對比實驗結果
選擇性能最好的YOLOXv5s、YOLOX-S和改進的YOLOX-S來比較它們的PR曲線,如圖9所示。
佩戴安全帽工人的AP指標中,YOLOX的Precision軸和Recall軸包圍的區域最大,即AP值最高。改進型YOLOX的AP值略低,YOLOXv5s的性能最差。在不戴頭盔工人的AP指數中,改進YOLOX的PR曲線面積比YOLOXv5s和YOLOX-S高出近兩個百分點。
為進一步達到對比改進效果的目的,選取多張工地現場圖像進行比較。圖10(a)、圖10(b)、圖10(c)、圖10(d)中分別表示輸入圖像、YOLOXv5s檢測效果圖、YOLO X-S檢測效果圖和改進YOLOX-S檢測效果圖。一、二兩組圖中工人全部佩戴安全帽,第一組圖為無遮擋情況,第二組圖為有遮擋情況,YOLOXv5s、YOLOX-S和改進YOLOX-S均正確檢測出所有目標,三者表現優異。第三組圖為復雜環境,YOLOXv5s和YOLOX-S檢測出了3個目標,漏檢2位未佩戴安全帽的工人,改進YOLOX-S檢測出了4個目標,漏檢1位未佩戴安全帽的工人。第四組圖為人員密集環境,YOLOXv5s檢測出了4位佩戴安全帽的人員和9位未佩戴安全帽的人員,YOLOX-S檢測出了4位佩戴安全帽的人員和11位未佩戴安全帽的人員,改進YOLOX-S檢測出了4位佩戴安全帽的人員和12位未佩戴安全帽的人員。以上對比可以看出改進YOLOX-S在減少模型大小、提升檢測速率的同時擁有更好的檢測性能。

(a)輸入圖像 (b)YOLOXv5s (c)YOLOX-S (d)改進YOLOX-S 圖10 檢測效果對比
為了更好的保障施工人員安全、滿足實際部署的需求,本文在YOLOX-S的基礎上進行了改進。Neck部分采用BiFPN-S代替了原先的加強特征提取結構,提升了檢測性能。經過對比實驗在BiFPN-S尾部加入了ECA注意力機制,提升了識別準確率。檢測頭中的邊界框損失函數則采用了衡量更為全面的CIoU。實驗結果表明,本文的算法具有較好的實用價值,能夠檢測出更多工人安全帽的佩戴情況,在平衡精度的同時提升了檢測速率、減小了模型大小。后續將考慮進一步提升準確率,并研究實際部署到移動端。