史潤(rùn)發(fā),潘 偉,朱 镕,高 慶,胡國(guó)華
(1.合肥學(xué)院 先進(jìn)制造工程學(xué)院,安徽 合肥 230601;2.合肥移瑞通信技術(shù)有限公司,安徽 合肥 230013)
在施工作業(yè)中佩戴安全帽能夠很好的承受和分散物體撞擊,起到保護(hù)作用。由于工人不安全行為的跟隨現(xiàn)象較為嚴(yán)重[1],安全事故難以避免。為了滿足實(shí)際需求,國(guó)內(nèi)外學(xué)者研究機(jī)器視覺(jué)技術(shù)來(lái)輔助人員進(jìn)行管理。傳統(tǒng)的機(jī)器視覺(jué)方法是采用人工進(jìn)行特征提取,但是由于施工現(xiàn)場(chǎng)環(huán)境復(fù)雜,傳統(tǒng)方法檢測(cè)慢、識(shí)別率不高,從而難以勝任艱巨的檢測(cè)任務(wù)。近年來(lái)隨著神經(jīng)網(wǎng)絡(luò)的快速發(fā)展,深度學(xué)習(xí)逐漸走入應(yīng)用領(lǐng)域。
針對(duì)目標(biāo)檢測(cè)任務(wù),深度學(xué)習(xí)模型可以分為一階段算法和二階段算法。其中,一階段算法包括SSD[2]、YOLO[3]等系列,二階段算法中較典型的如Faster R-CNN[4]。相比較下,一階段算法的檢測(cè)速度更快,更適應(yīng)于實(shí)際應(yīng)用場(chǎng)合。由于SSD算法層數(shù)較淺,特征提取不夠深入,因此本文選用YOLO系列進(jìn)行研究。秦子豪等[5]在Tiny-YOLO v3的基礎(chǔ)上使用深層可分離卷積替代網(wǎng)絡(luò)主干相關(guān)部分以減少參數(shù)量。楊永波等[6]使用MobileNetv3結(jié)構(gòu)替換YOLOv5的主干網(wǎng)絡(luò),并用知識(shí)蒸餾的方式進(jìn)一步提升準(zhǔn)確率。王建波等[7]加入融入空間信息的MSCA模塊加強(qiáng)了網(wǎng)絡(luò)特征提取能力。通過(guò)上述方法,檢測(cè)速率得到提高,具備較高的檢測(cè)實(shí)時(shí)性,但在精度上不能很好的平衡,并且由于是在主干網(wǎng)絡(luò)進(jìn)行改進(jìn),不能使用已有的大規(guī)模訓(xùn)練權(quán)重,導(dǎo)致了網(wǎng)絡(luò)收斂時(shí)間長(zhǎng)。本文基于YOLOX網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn),采用BiFPN結(jié)構(gòu)減少模型大小、提升檢測(cè)速率,使用衡量更為全面的CIoU損失函數(shù),并在檢測(cè)頭前加入ECA注意力機(jī)制提升檢測(cè)精準(zhǔn)率,同時(shí)保留了主干網(wǎng)絡(luò)結(jié)構(gòu),便于模型的遷移學(xué)習(xí)。
YOLOX是曠世公司提出的新型目標(biāo)檢測(cè)算法,在目標(biāo)檢測(cè)方面相較以往YOLO系列有更強(qiáng)的優(yōu)勢(shì)[8-10]。YOLOX由三個(gè)組件構(gòu)成:主干特征提取網(wǎng)絡(luò)(Backbone)、加強(qiáng)特征提取網(wǎng)絡(luò)(Neck)和檢測(cè)頭(Head)。Backbone采用CSPDarknet結(jié)構(gòu),其繼承了YOLOv5的Focus結(jié)構(gòu),使用性能優(yōu)于ReLU的SiLU激活函數(shù),并加入了YOLOv4的SPP(Spatial Pyramid Pooling)[11]結(jié)構(gòu)。Neck使用FPN[12]+PAN結(jié)構(gòu),在融合深層特征和淺層細(xì)節(jié)的基礎(chǔ)上輸出三個(gè)特征圖。Head取消了多錨框確定物體位置和類別,將分類和回歸任務(wù)分開(kāi),使用分支解耦的方式分別在模塊Cls、Reg、Obj計(jì)算目標(biāo)的類別概率、位置和置信度。此外,YOLOX還采用了Mosaic和Mixup兩種數(shù)據(jù)增強(qiáng)策略。Mosaic會(huì)將4張圖片拼接在一起,Mixup則是隨機(jī)混合兩張不同的圖片。由于YOLOX系列中YOLOX-S的參數(shù)量和權(quán)重較小且具有代表性,適合部署在移動(dòng)設(shè)備,因此選擇在其基礎(chǔ)上進(jìn)行改進(jìn)研究。
在YOLOX模型中,采用了特征金字塔結(jié)構(gòu)和路徑聚合網(wǎng)絡(luò)PAN來(lái)加強(qiáng)對(duì)于Neck部分的特征提取,該方法通過(guò)自頂向下的方式傳遞語(yǔ)義特征,同時(shí)從底部向上傳遞位置特征,在不同主干層進(jìn)行不同檢測(cè)層的特征聚合,以實(shí)現(xiàn)更好的特征提取結(jié)果。FPN+PAN結(jié)構(gòu)如圖1所示。
圖1 FPN+PAN
本文采用BiFPN[13]結(jié)構(gòu)替代原來(lái)的加強(qiáng)特征提取網(wǎng)絡(luò),BiFPN是由谷歌團(tuán)隊(duì)提出的一種加強(qiáng)雙向特征金字塔網(wǎng)絡(luò),具有較好的性能特點(diǎn)。首先,BiFPN使用快速歸一化融合,快速歸一化融合相比Softmax效率提升了30%,如式(1)所示。
(1)
式(1)中,I和O分別代表輸入和輸出特征,權(quán)重ω≥0,由激活函數(shù)ReLU來(lái)保證。學(xué)習(xí)率ε=0.0001保證數(shù)值穩(wěn)定。其次,BiFPN取消了只有一個(gè)輸入的節(jié)點(diǎn)(如圖1所示P3和P7右側(cè)第一個(gè)節(jié)點(diǎn)),這些節(jié)點(diǎn)提供的特征信息貢獻(xiàn)較少,因此取消部分節(jié)點(diǎn)以簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)。之后加入跳躍連接,使得同層之間少量增加計(jì)算量并融合更多特征。最后,此雙向結(jié)構(gòu)封裝為一個(gè)特征網(wǎng)絡(luò)模塊,重復(fù)多次連接,達(dá)到更好層次的特征融合。BiFPN結(jié)構(gòu)如圖2所示。
圖2 BiFPN
由于YOLOX網(wǎng)絡(luò)在Neck部分只有三個(gè)輸入,因此本文首先將BiFPN調(diào)整為P3、P4、P5三個(gè)輸入,之后采取卷積方式調(diào)整輸入通道數(shù),以便進(jìn)行后續(xù)的快速歸一化融合。然后在每個(gè)節(jié)點(diǎn)輸出時(shí)加入深度可分離卷積,并于中間層加入殘差模塊,從而進(jìn)一步提升模型的性能。最后再次調(diào)整通道數(shù)作為預(yù)測(cè)端的輸入。改進(jìn)后的結(jié)構(gòu)命名為BiFPN-S,如圖3所示。
圖3 BiFPN-S
(2)
(3)
(4)
(5)
(6)
注意力機(jī)制本質(zhì)在于對(duì)不同語(yǔ)義信息進(jìn)行加權(quán),通過(guò)計(jì)算出不同特征的重要性,對(duì)重要任務(wù)傾向更多關(guān)注,從而抑制背景信息。ECA[14]是一種超輕量級(jí)注意力模塊,只涉及個(gè)位數(shù)的參數(shù),對(duì)于部署移動(dòng)設(shè)備有較強(qiáng)的優(yōu)勢(shì)。ECA是基于SE[15]的改進(jìn)版,考慮到SE用全連接層捕獲非線性跨通道交互作用較為低效,ECA采取了無(wú)降維的局部跨通道策略,只考慮每個(gè)通道與其卷積核k近鄰之間的交互作用,通過(guò)所有通道共享傾斜參數(shù)將參數(shù)量由k*C降低為k,權(quán)重ωi如式(7)所示。
(7)
式(7)中,σ代表sigmoid函數(shù),α是傾斜參數(shù),y是輸入特征,Ωk表示y的k個(gè)相鄰?fù)ǖ赖募稀A硗庠贓CA中卷積核k的大小由通道數(shù)C決定,在給定通道數(shù)C的情況下,自適應(yīng)k的大小如式(8)所示。
(8)
式(8)中,γ取值為2,b取值為1,||odd表示取值最近的奇數(shù)。當(dāng)通道數(shù)越大,核k的取值越大。ECA模塊如圖4所示。
圖4 ECA
輸入特征首先進(jìn)行全局平均池化(Global Average Pooling,GAP),得到未降維的所有特征。然后經(jīng)過(guò)大小為k的快速一維卷積捕獲非線性跨通道交互,k由上述公式(8)得到。之后加入激活函數(shù)sigmoid,獲得通道權(quán)重。最后再和輸入相乘構(gòu)造殘差網(wǎng)絡(luò)提升模型整體性能得到輸出。經(jīng)過(guò)實(shí)驗(yàn),最終選擇在檢測(cè)頭之前加入ECA注意力模塊。
YOLOX-S中在Cls和Obj部分的損失函數(shù)都使用交叉熵?fù)p失(BCE_Loss),由于其有較好的效果故本文仍使用BCE_Loss,YOLOX-S在Reg部分使用LossIoU[16],本文則采用LossCIoU[17],相比較IoU和GIoU,CIoU關(guān)注目標(biāo)框的重疊面積、中心點(diǎn)距離和長(zhǎng)寬比多項(xiàng)尺度,衡量邊界框損失更加全面,擁有很好的收斂速度和穩(wěn)定性。LossCIoU的計(jì)算式如式(9)-式(12)所示。
(9)
(10)
(11)
(12)
式(9)-式(12)中,A為預(yù)測(cè)框,B為真實(shí)框,A∩B代表預(yù)測(cè)框和真實(shí)框相交的面積,A∪B代表預(yù)測(cè)框和真實(shí)框的并集面積,IoU即A與B的交并比。預(yù)測(cè)框的中心點(diǎn)由b表示,真實(shí)框的中心點(diǎn)由bgt表示。ρ2(b,bgt)計(jì)算出真實(shí)框與預(yù)測(cè)框中心點(diǎn)之間的歐式距離。c代表兩框之間外接矩形的對(duì)角線距離。α是平衡系數(shù),υ計(jì)算出預(yù)測(cè)框和真實(shí)框長(zhǎng)寬比的相似性,υ中wgt和hgt代表真實(shí)框的寬高比,w和h代表預(yù)測(cè)框的寬高比。
通過(guò)以上方法改進(jìn),改進(jìn)YOLOX-S的最終結(jié)構(gòu)如圖5所示。改進(jìn)YOLOX-S模型結(jié)構(gòu)的工作原理如下。
圖5 改進(jìn)YOLOX-S模型結(jié)構(gòu)
第一步,圖像輸入到Backbone,并經(jīng)過(guò)如下算法流程:(1)圖像經(jīng)過(guò)Focus結(jié)構(gòu)進(jìn)行切片操作,再通過(guò)堆疊(Concat)得到通道數(shù)為12的下采樣特征圖;(2)經(jīng)過(guò)由卷積Conv2D+BN層+激活函數(shù)SiLU構(gòu)成的CBS結(jié)構(gòu)提取特征并調(diào)整大小和通道數(shù);(3)經(jīng)過(guò)殘差結(jié)構(gòu)CSP進(jìn)一步加深網(wǎng)絡(luò)層次提高特征提取能力,并通過(guò)SPP結(jié)構(gòu)的最大池化作用提升網(wǎng)絡(luò)的感受野。
第二步,Backbone得到三個(gè)輸出到達(dá)改進(jìn)后的Neck部分,經(jīng)過(guò)如下算法流程:(1)從Backbone得到的特征圖進(jìn)行卷積調(diào)整,并將深層特征經(jīng)過(guò)上采樣與淺層特征進(jìn)行加權(quán)融合,使語(yǔ)義豐富的深層信息與淺層細(xì)節(jié)結(jié)合;(2)中間層的特征信息通過(guò)殘差結(jié)構(gòu)提高特征提取深度,有效避免梯度消失;(3)通過(guò)深度可分離卷積提取融合后的信息,并經(jīng)過(guò)下采樣不斷加強(qiáng)特征提取構(gòu)建完成整個(gè)BiFPN-S結(jié)構(gòu)。第三步,得到的三個(gè)輸出經(jīng)過(guò)注意力機(jī)制ECA到達(dá)檢測(cè)頭,經(jīng)過(guò)如下算法流程:(1)在ECA中計(jì)算特征信息的權(quán)重從而提高對(duì)重點(diǎn)任務(wù)的關(guān)注度;(2)檢測(cè)頭中邊界框采用CIoU損失計(jì)算預(yù)測(cè)框與真實(shí)框的偏差,得到結(jié)果再和分類損失、置信度損失進(jìn)行結(jié)合作為L(zhǎng)oss總損失;(3)整個(gè)網(wǎng)絡(luò)根據(jù)損失度反向傳播計(jì)算調(diào)整權(quán)值。
數(shù)據(jù)集是來(lái)自現(xiàn)場(chǎng)施工現(xiàn)場(chǎng)拍攝和網(wǎng)頁(yè)抓取,篩選出不符合要求的圖片,共保留5000張圖片用于實(shí)驗(yàn)。使用Labeligg工具對(duì)數(shù)據(jù)集進(jìn)行標(biāo)記,分為佩戴安全帽的工人(hat)和不佩戴安全帽的工人(person)。將數(shù)據(jù)集按照8:1:1劃分為三個(gè)部分,最終得到訓(xùn)練集圖片4000張,驗(yàn)證集圖片500張,測(cè)試集圖片500張。實(shí)驗(yàn)環(huán)境的配置如表1所示。
表1 實(shí)驗(yàn)環(huán)境配置
本實(shí)驗(yàn)中,選用的評(píng)價(jià)指標(biāo)為平均精準(zhǔn)率(AP),平均精準(zhǔn)率均值(mAP)和檢測(cè)速率(FPS)。其中AP是通過(guò)計(jì)算精準(zhǔn)率(Precision)和召回率(Recall)得到的,mAP則是不同目標(biāo)AP的均值,FPS為每秒檢測(cè)的幀數(shù)。相關(guān)指標(biāo)計(jì)算如式(13)-式(16)所示。
(13)
(14)
(15)
(16)
式(13)-式(16)中,TP(真正例)表示正樣本中被正確預(yù)測(cè)的數(shù)量,FP(假正例)表示負(fù)樣本中被錯(cuò)誤預(yù)測(cè)為正的數(shù)量。FN(假反例)表示正樣本中被錯(cuò)誤預(yù)測(cè)為負(fù)的數(shù)量。公式(15)中的p是Precision,r是Recall,AP是P-R曲線以Precision和Recall為坐標(biāo)軸圍成的面積。N代表類別種類數(shù)量,n則代表不同的類別。
通過(guò)消融實(shí)驗(yàn)驗(yàn)證各個(gè)模塊的改進(jìn)效果,以YOLOX-S為基礎(chǔ)模型,逐漸增加模塊測(cè)試模型性能。消融實(shí)驗(yàn)結(jié)果如表2所示。對(duì)比YOLOX-S,在采用CIoU損失后mAP提升了0.33%,FPS減少了0.2f/s。
表2 消融實(shí)驗(yàn)
其中檢測(cè)工人佩戴安全帽(hat)和未佩戴安全帽(person)的平均精準(zhǔn)率均有所提升,綜合來(lái)看選取CIoU作為損失函數(shù)是較為合理的。Neck部分使用BiFPN-S作為加強(qiáng)特征提取結(jié)構(gòu)后,模型大小較YOLOX-S減少22.17%,更加方便移動(dòng)端部署,對(duì)于基礎(chǔ)模型和采用CIoU后的模型,FPS分別增加了3.67f/s和3.87f/s,mAP分別提升了0.46%、0.13%,其中對(duì)于未佩戴安全帽(person)工人的檢測(cè)效果更好,AP分別提升了1.09%、0.76%,可以看出本文設(shè)計(jì)的BiFPN-S結(jié)構(gòu)在完成了輕量化任務(wù)的同時(shí)保證了mAP。對(duì)于ECA注意力的添加位置,選取了BiFPN-S頭部(位置1)、BiFPN-S內(nèi)部(位置2)、BiFPN-S尾部(位置3)進(jìn)行對(duì)比,如圖6-圖8所示。
圖6 添加位置1
圖7 添加位置2
圖8 添加位置3
可以看出ECA注意力機(jī)制有很好的性能效果,在幾乎不增加模型大小的同時(shí),添加在位置1、2、3處均明顯提升了mAP,可以看到位置2和位置3的添加效果更加優(yōu)異,因此對(duì)位置2和位置3進(jìn)一步分析比較。添加位置2后檢測(cè)速率相較位置3差別不大,但mAP比添加位置3少了0.11%,且添加位置2對(duì)于hat的檢測(cè)效果比基礎(chǔ)模型YOLOX-S減少了0.77%。而添加位置3在保證了hat檢測(cè)效果(僅和基礎(chǔ)模型相差0.06%)的同時(shí),對(duì)于person的檢測(cè)效果提升優(yōu)異,較YOLOX-S+BiFPN-S+CIoU模型和基礎(chǔ)模型分別提升了0.79%和1.88%,因此本文將ECA注意力機(jī)制添加至位置3作為最終的改進(jìn)模型。
為進(jìn)一步衡量本文算法的性能,選取了目標(biāo)檢測(cè)領(lǐng)域主流模型進(jìn)行對(duì)比。對(duì)比的模型有Faster R-CNN、YOLOv3、YOLOv4、Efficientnet-YOLOv3、Mobilenet-YOLOv4、YOLOv5s和YOLOX-S。其中Faster R-CNN是二階段算法,YOLOv3、YOLOv4、Efficientnet-YOLOv3、Mobilenet-YOLOv4、YOLOv5s是基于錨框的一階段算法,YOLOX-S是無(wú)錨框的檢測(cè)算法。結(jié)果如表3所示,其中mPre代表hat和person精準(zhǔn)率的均值,mRecall代表hat和person召回率的均值。從表中可以看出二階段法Faster R-CNN和一階段法YOLOv3、YOLOv4的mAP都達(dá)到了85%以上,但模型較大,檢測(cè)速率較慢,不適合部署在移動(dòng)設(shè)備上。Efficientnet-YOLOv3和Mobilenet-YOLOv4模型都在100MB以下,也有較好的精準(zhǔn)率,但召回率(recall)不夠理想,不能很好地檢測(cè)出所有的目標(biāo)。YOLOv5s模型輕便,有優(yōu)異的檢測(cè)速率,FPS更是達(dá)到了80.94f/s,mAP也達(dá)到了90.97%,適合移動(dòng)端部署。YOLOX-S雖然在檢測(cè)速率上不如YOLOv5s,但也有較高的數(shù)值以滿足實(shí)際需求,且在召回率上強(qiáng)于YOLOv5s達(dá)到89.08%,能夠更大程度地檢測(cè)出工人佩戴安全帽的情況。本文的改進(jìn)YOLOX-S的模型大小僅有27.09MB,在所有模型中最輕便,且mAP、mPre、mRecall均優(yōu)于其他算法,FPS僅次于YOLOv5s和Mobilenet-YOLOv4,高達(dá)74.12f/s并強(qiáng)于YOLOX-S,整體來(lái)看具有較高的實(shí)用價(jià)值。
表3 對(duì)比實(shí)驗(yàn)結(jié)果
選擇性能最好的YOLOXv5s、YOLOX-S和改進(jìn)的YOLOX-S來(lái)比較它們的PR曲線,如圖9所示。
佩戴安全帽工人的AP指標(biāo)中,YOLOX的Precision軸和Recall軸包圍的區(qū)域最大,即AP值最高。改進(jìn)型YOLOX的AP值略低,YOLOXv5s的性能最差。在不戴頭盔工人的AP指數(shù)中,改進(jìn)YOLOX的PR曲線面積比YOLOXv5s和YOLOX-S高出近兩個(gè)百分點(diǎn)。
為進(jìn)一步達(dá)到對(duì)比改進(jìn)效果的目的,選取多張工地現(xiàn)場(chǎng)圖像進(jìn)行比較。圖10(a)、圖10(b)、圖10(c)、圖10(d)中分別表示輸入圖像、YOLOXv5s檢測(cè)效果圖、YOLO X-S檢測(cè)效果圖和改進(jìn)YOLOX-S檢測(cè)效果圖。一、二兩組圖中工人全部佩戴安全帽,第一組圖為無(wú)遮擋情況,第二組圖為有遮擋情況,YOLOXv5s、YOLOX-S和改進(jìn)YOLOX-S均正確檢測(cè)出所有目標(biāo),三者表現(xiàn)優(yōu)異。第三組圖為復(fù)雜環(huán)境,YOLOXv5s和YOLOX-S檢測(cè)出了3個(gè)目標(biāo),漏檢2位未佩戴安全帽的工人,改進(jìn)YOLOX-S檢測(cè)出了4個(gè)目標(biāo),漏檢1位未佩戴安全帽的工人。第四組圖為人員密集環(huán)境,YOLOXv5s檢測(cè)出了4位佩戴安全帽的人員和9位未佩戴安全帽的人員,YOLOX-S檢測(cè)出了4位佩戴安全帽的人員和11位未佩戴安全帽的人員,改進(jìn)YOLOX-S檢測(cè)出了4位佩戴安全帽的人員和12位未佩戴安全帽的人員。以上對(duì)比可以看出改進(jìn)YOLOX-S在減少模型大小、提升檢測(cè)速率的同時(shí)擁有更好的檢測(cè)性能。
(a)輸入圖像 (b)YOLOXv5s (c)YOLOX-S (d)改進(jìn)YOLOX-S 圖10 檢測(cè)效果對(duì)比
為了更好的保障施工人員安全、滿足實(shí)際部署的需求,本文在YOLOX-S的基礎(chǔ)上進(jìn)行了改進(jìn)。Neck部分采用BiFPN-S代替了原先的加強(qiáng)特征提取結(jié)構(gòu),提升了檢測(cè)性能。經(jīng)過(guò)對(duì)比實(shí)驗(yàn)在BiFPN-S尾部加入了ECA注意力機(jī)制,提升了識(shí)別準(zhǔn)確率。檢測(cè)頭中的邊界框損失函數(shù)則采用了衡量更為全面的CIoU。實(shí)驗(yàn)結(jié)果表明,本文的算法具有較好的實(shí)用價(jià)值,能夠檢測(cè)出更多工人安全帽的佩戴情況,在平衡精度的同時(shí)提升了檢測(cè)速率、減小了模型大小。后續(xù)將考慮進(jìn)一步提升準(zhǔn)確率,并研究實(shí)際部署到移動(dòng)端。