張旭,董紹江,胡小林,牟小燕
(1.重慶交通大學(xué)機(jī)電與車輛工程學(xué)院,重慶 400074;2.重慶工業(yè)大數(shù)據(jù)創(chuàng)新中心有限公司,重慶 404100;3.重慶工業(yè)職業(yè)技術(shù)學(xué)院,重慶401120)
目前,社會安全問題越來越受到重視,但是工業(yè)生產(chǎn)中相關(guān)安全事故仍不斷發(fā)生。安全帽作為許多行業(yè)的關(guān)鍵防護(hù)工具,許多企業(yè)都明令要求員工在施工環(huán)境下必須佩戴[1]。但是由于相關(guān)企業(yè)監(jiān)管不利,員工工作期間不佩戴安全帽的現(xiàn)象仍屢禁不止,致使相關(guān)安全事故頻頻發(fā)生。目前常通過安全員巡檢或者視頻監(jiān)控等方式監(jiān)管員工是否佩戴安全帽[2]。通過人工進(jìn)行巡檢的成本高并且效率低下,而視頻監(jiān)控最終也要依靠人力長時(shí)間觀看監(jiān)控視頻。所以將機(jī)器視覺算法應(yīng)用在檢測工業(yè)環(huán)境中相關(guān)員工是否佩戴安全帽具有極其重要的研究價(jià)值。
目標(biāo)檢測是機(jī)器視覺領(lǐng)域的重要分支,它的出現(xiàn)為自動識別物體開辟了一種創(chuàng)新方式。它具有精確、迅速、可靠等優(yōu)點(diǎn),在安防、智能監(jiān)控、人臉識別[3]、人機(jī)交互、機(jī)器人視覺、自動駕駛等諸多領(lǐng)域有極大的研究價(jià)值和應(yīng)用前景,受到了學(xué)者們的廣泛關(guān)注。目標(biāo)檢測算法的網(wǎng)絡(luò)體系結(jié)構(gòu)一般分為兩大類:一類是以R-CNN[4](Region-Convolutional Neural Network)、Faster R-CNN[5]為代表的基于候選框提取的兩級目標(biāo)檢測算法;另一類是以YOLO[6](You Only Look Once)、SSD[7](Single Shot multibox Detector)、RetinaNet[8]等為代表的基于回歸的一級目標(biāo)檢測算法。兩級目標(biāo)檢測算法包括兩個檢測階段:第一階段使用候選區(qū)域生成網(wǎng)絡(luò)得到一個可能含有目標(biāo)的候選框;第二階段使用卷積神經(jīng)網(wǎng)絡(luò)完成對候選框內(nèi)目標(biāo)的類別預(yù)測以及位置預(yù)測。一級目標(biāo)檢測算法是端到端的算法,直接在卷積神經(jīng)網(wǎng)絡(luò)中提取特征預(yù)測目標(biāo)的分類和位置信息,而不使用候選區(qū)域生成網(wǎng)絡(luò) (Region Proposal Network,RPN)。
在諸多目標(biāo)檢測算法中,YOLOv3算法受到研究人員的青睞。例如胡碩等人[9]提出了一種基于深度學(xué)習(xí)的多車輛跟蹤算法;李澤輝等[10]提出基于改進(jìn)YOLOv3的紋理瓷磚缺陷檢測。這些針對特定場景優(yōu)化后的YOLOv3算法均取得了較好的檢測效果。同時(shí),檢測安全帽佩戴的識別算法也有相關(guān)研究,例如許凱、鄧超[11]提出基于改進(jìn)YOLOv3的安全帽佩戴識別算法,優(yōu)化了YOLOv3算法,提高了安全帽識別的精確率,但其檢測速度相對較慢。本文作者針對工業(yè)現(xiàn)場員工佩戴安全帽檢測任務(wù)中存在目標(biāo)尺度小、背景環(huán)境復(fù)雜以及實(shí)時(shí)性要求高等問題,基于YOLOv3算法提出了一種改進(jìn)網(wǎng)絡(luò)模型。首先優(yōu)化YOLOv3的主干網(wǎng)絡(luò),優(yōu)化原有的Darknet-53、降低網(wǎng)絡(luò)復(fù)雜度以提高檢測速度;再引入空間金字塔池化模塊充分提取復(fù)雜環(huán)境下目標(biāo)的特征;之后將CIoU損失函數(shù)作為定位損失函數(shù)以提高預(yù)測目標(biāo)與真實(shí)目標(biāo)框的擬合效果;最后通過增加第四尺度融合目標(biāo)特征提取,以提高模型檢測小目標(biāo)的能力,針對安全帽數(shù)據(jù)集聚類出特有的先驗(yàn)框。通過以上改進(jìn)來提高YOLOv3算法在安全帽佩戴檢測應(yīng)用中的精確度與檢測速度。
YOLO系列網(wǎng)絡(luò)直接對圖像中的目標(biāo)進(jìn)行回歸檢測,因此對比目標(biāo)檢測中兩級目標(biāo)檢測算法其檢測速度相對較快。通過對比YOLOv1-YOLOv3網(wǎng)絡(luò)的優(yōu)缺點(diǎn)得出:第一代網(wǎng)絡(luò)YOLOv1的檢測精度低;YOLOv2在YOLOv1的基礎(chǔ)上添加了多尺度的訓(xùn)練、高分辨率的分類器、批量標(biāo)準(zhǔn)化三處,使它在YOLOv1的基礎(chǔ)上達(dá)到識別對象更多、速度更快以及預(yù)測更加準(zhǔn)確的效果;YOLOv3基于YOLOv2添加了多尺度融合預(yù)測的方法、替換了骨干網(wǎng)絡(luò)、將單標(biāo)簽分類改進(jìn)為多標(biāo)簽分類。YOLOv3基本體系結(jié)構(gòu)包括 3 個主要部分:特征提取主干網(wǎng)絡(luò)層(Darknet-53)、檢測層和分類層。
特征提取網(wǎng)絡(luò)層為Darknet-53的特征提取算法,它由Convolutional以及Res unit模塊組成,如圖1所示。Convolutional模塊中引入Batch Normalization(BN)算法進(jìn)行數(shù)據(jù)歸一化,加快了模型訓(xùn)練時(shí)的收斂速度,使得模型訓(xùn)練過程更加穩(wěn)定,避免梯度爆炸或者梯度消失。并且起到一定的正則化作用,幾乎代替了Dropout。采用Leaky ReLU激活函數(shù)在負(fù)軸保留了非常小的常數(shù)leak,使得輸入信息小于0時(shí),信息沒有完全丟掉,進(jìn)行了相應(yīng)的保留。其公式如式(1)所示:
(1)
殘差疊加的每個主體賦予不同的系數(shù),分別為 1、2、8、8、4。殘差疊加完成之后,將特征映射輸出到下一個殘差體,繼續(xù)進(jìn)行特征提取操作。加入殘差網(wǎng)絡(luò),一方面,殘差網(wǎng)絡(luò)1×1的卷積減少了參數(shù)量以及計(jì)算量,總共將尺寸減少了32倍;另一方面,保證網(wǎng)絡(luò)在更復(fù)雜的情況下仍然保持收斂。使網(wǎng)絡(luò)結(jié)構(gòu)可以更加深入從而得到更好的特征表達(dá),有效提高了分類檢測的效果,尤其對于小目標(biāo)的識別檢測。
檢測層一共提取3個特征圖,分別位于Darknet-53的中間層、中下層以及底層。最小輸入尺度的特征圖僅在檢測層處理,另外2個尺度的特征圖在被輸入到檢測層之前,先與處理過的較低維映射拼接,然后輸入檢測層。
分類層是以檢測層生成的多尺度融合特征為輸入,經(jīng)過卷積之后輸出特征,最后一層的通道數(shù)如式(2)所示:
δFilters=3?(4+1+δclasses)
(2)
式中:3表示不同大小的預(yù)測尺度13像素×13像素、26像素×26像素、52像素×52像素,其中13像素×13像素對應(yīng)著較大尺寸目標(biāo),26像素×26像素用于中等目標(biāo)的檢測,52像素×52像素對小目標(biāo)進(jìn)行檢測;4和1分別表示最終輸出檢測目標(biāo)類別歸一化后的中心坐標(biāo)(x,y,w,h)以及置信度;δclasses代表檢測目標(biāo)類別數(shù)。此研究中檢測類別為Person以及Hat 2個類別,因此δFilters為21。YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 YOLOv3 network structure
原YOLOv3網(wǎng)絡(luò)的Darknet-53包含了多個殘差模塊,導(dǎo)致其模型相對復(fù)雜,深層次的網(wǎng)絡(luò)可以提取更多的特征信息,但是復(fù)雜的模型實(shí)時(shí)檢測時(shí)速度會更慢。而安全帽以及人的特征信息并不豐富,因此復(fù)雜的網(wǎng)絡(luò)模型反而對此類特征信息較少的目標(biāo)檢測任務(wù)效果并不是很好。針對這一問題,文中將YOLOv3主干網(wǎng)絡(luò)中部分殘差模塊進(jìn)行裁剪,從而降低其模型復(fù)雜度,裁剪之后的主干網(wǎng)絡(luò)最終保留3個殘差模塊以獲取足夠的特征信息。為了保證4個分類層的特征輸出,在主干網(wǎng)絡(luò)中引入4個池化層。裁剪后的主干網(wǎng)絡(luò)(Backbone)如圖3所示。
圖3 改進(jìn)后的BackboneFig.3 Improved Backbone
不同監(jiān)控場景下人員分布不均、遠(yuǎn)近不同導(dǎo)致圖像的尺度變化較大,難以對目標(biāo)特征進(jìn)行全面提取。針對上述問題,文中引入空間金字塔池化[12](Spatial Pyramid Pooling,SPP)模塊進(jìn)一步提升網(wǎng)絡(luò)提取特征信息的能力。SPP是HE等為解決不同圖像尺寸輸入神經(jīng)網(wǎng)絡(luò)之后無法較好地提取特征,影響最終檢測結(jié)果而提出的一種方法。SPP先對圖片進(jìn)行分塊池化,并保證從不同模塊中提取的特征圖維度一致,以解決尺度不統(tǒng)一和信息丟失的問題。同時(shí),因?yàn)樘卣鲌D中的通道數(shù)被擴(kuò)展為三通道,所以引入SPP之后可以使YOLOv3網(wǎng)絡(luò)獲取更為有效的全局信息,不僅解決了檢測層中輸入特征圖尺度變化的問題,還使得特征圖的全局特征以及局部特征得以更好融合。SPP模塊的結(jié)構(gòu)如圖4所示。
圖4 SPP網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 SPP network structure
IoU是目標(biāo)檢測中最重要的性能指標(biāo)之一,表示真實(shí)標(biāo)注目標(biāo)框與預(yù)測目標(biāo)框的交并比,其計(jì)算公式如式(3)所示:
(3)
其中:Ppred表示目標(biāo)預(yù)測框;Ptrue表示目標(biāo)真實(shí)標(biāo)注框。δIoU的大小反映了目標(biāo)的檢測效果。但是如果目標(biāo)預(yù)測框與真實(shí)目標(biāo)框沒有交集,IoU則無法反映此時(shí)真實(shí)框與目標(biāo)框的距離,導(dǎo)致無法計(jì)算傳播梯度。為解決這一問題,文中引入CIoU損失函數(shù)。CIoU損失函數(shù)不僅考慮了重疊率以及目標(biāo)與Anchor之間的距離,還考慮了尺度以及懲罰項(xiàng),從而使目標(biāo)框回歸變得比IoU更穩(wěn)定。CIoU損失函數(shù)不會出現(xiàn)無法計(jì)算梯度的情況,并且CIoU對尺度變換敏感,收斂速度比IoU更快。CIoU損失函數(shù)計(jì)算公式如式(4)所示:
(4)
式中:ρ2(B,Bgt)為真實(shí)框和預(yù)測框中心點(diǎn)的歐氏距離;a為權(quán)重參數(shù);v為衡量長寬比一致性的參數(shù);c為同時(shí)包含真實(shí)框以及預(yù)測框的最小矩陣區(qū)域的對角線距離,如圖5所示,圖中d=ρ2(B,Bgt)。a和v的計(jì)算公式分別如式(5)(6)所示:
圖5 CIoU計(jì)算示意Fig.5 CIoU calculation
(5)
(6)
式中:ωgt和ω、hgt和h分別代表真實(shí)框和預(yù)測框的寬、高。
K-mean聚類算法內(nèi)容如下:隨機(jī)選取k個聚類質(zhì)心,μ1,μ2,…,μk∈Rn,計(jì)算每個樣例i所屬的類:
(7)
重新計(jì)算每一個類j的質(zhì)心:
(8)
重復(fù)式 (6)和 (7)直到收斂。
YOLOv3利用Anchor Boxes對邊界框進(jìn)行定位預(yù)測。由于數(shù)據(jù)集中目標(biāo)圖像之間尺度變化較大,所以需要根據(jù)數(shù)據(jù)集先聚類出其特有的Anchor Box。因?yàn)榇搜芯孔罱K有4個尺度的輸出,所以經(jīng)過K-means聚類后總共生成了12組先驗(yàn)框,各組先驗(yàn)框的大小分別為(5,10)、(6,12)、(7,16)、(8,13)、(8,17)、(10,21)、(14,25)、(18,31)、(24,42)、(34,58)、(51,88)、(92,157)。
目標(biāo)特征的提取是目標(biāo)檢測的基礎(chǔ),YOLOv3通過Darknet-53主干網(wǎng)絡(luò)進(jìn)行特征提取,再通過上采樣以及同維拼接最終輸出3個特征尺度對目標(biāo)進(jìn)行預(yù)測,3個尺度的大小分別是13像素×13像素、26像素×26像素、52像素×52像素。多尺度輸出的特征圖特點(diǎn)不同,低層級特征圖語義含義不夠豐富但精度高,高層級特征圖語義含義豐富但精度低。特征圖越大對應(yīng)輸入圖像中每一網(wǎng)格區(qū)域越小。由于小目標(biāo)的目標(biāo)區(qū)域相對較小,經(jīng)過多層卷積和下采樣之后可能造成有效特征信息的丟失,從而導(dǎo)致檢測精度下降。針對此問題,文中在原始YOLOv3 三個特征尺度的基礎(chǔ)上擴(kuò)展一個104像素×104像素的多尺度融合特征,對小目標(biāo)進(jìn)行預(yù)測。改進(jìn)后的YOLOv3網(wǎng)絡(luò)會提取出4個尺度的圖像特征,然后分別在4個尺度特征層上進(jìn)行目標(biāo)檢測。改進(jìn)后的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。其中Big Target、Medium Target、Small Target、Super Target分別對應(yīng)13像素×13像素、26像素×26像素、52像素×52像素、104像素×104像素4個特征尺度。
圖6 改進(jìn)后的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Improved YOLOv3 network structure
實(shí)驗(yàn)環(huán)境為Windows操作系統(tǒng),11th Gen Intel(R)Core(TM)i5-11400F(CPU),16 GB隨機(jī)存取內(nèi)存(RAM),RTX 3060(GPU),12 GB顯示內(nèi)存,深度學(xué)習(xí)為Pytorch。數(shù)據(jù)集分為佩戴安全帽的工人(Hat)和未佩戴安全帽的工人(Person)2個類別,共計(jì)6 721張圖片,其中驗(yàn)證集和訓(xùn)練集的比例為1∶9。網(wǎng)絡(luò)訓(xùn)練采用帶動量的隨機(jī)梯度下降算法,初始學(xué)習(xí)率為0.01,動量因子為0.9,學(xué)習(xí)率衰減策略為Steps,批量大小為12,輸入圖片大小為416像素×416像素,訓(xùn)練輪數(shù)150。
文中選擇目標(biāo)檢測中常用的評價(jià)指標(biāo)平均精度mAP(mean Average Precision)以及檢測速度FPS對模型進(jìn)行評價(jià)(FPS是指每秒能檢測圖像的數(shù)量,是衡量模型檢測速度的重要指標(biāo))。最終檢測結(jié)果分為4類:真正例(TP)、假正例(FP)、真負(fù)例(TN)和假負(fù)例(FN)。
精確率P以及召回率R是計(jì)算mAP的重要指標(biāo),其中精確率表示模型真實(shí)預(yù)測目標(biāo)總數(shù)和預(yù)測結(jié)果的目標(biāo)總數(shù)的比值,召回率表示真實(shí)預(yù)測目標(biāo)總數(shù)與數(shù)據(jù)集中實(shí)際目標(biāo)總數(shù)的比值。計(jì)算公式如下:
(9)
(10)
以精確率為橫軸、召回率為縱軸可以得到精確率召回曲線,稱為P-R曲線。每一類識別對象的P-R曲線與坐標(biāo)軸圍成的面積為該類的精度值(AP),mAP則是所有AP的平均值。AP與mAP的計(jì)算公式如下:
(11)
(12)
式中:N為2,表示2個目標(biāo)類。
文中將YOLOv3剪切之后集成SPP結(jié)構(gòu)以及改進(jìn)的CIoU損失函數(shù)模型(YOLOv3-tiny-SPP-CIoU,YOLOv3-tsc),在YOLOv3-tiny-SPP-CIoU引入第四檢測尺度的模型(YOLOv3-tiny-SPP-CIoU-obj4,YOLOv3-tsco)以及在YOLOv3-tiny-SPP-CIoU-obj4基礎(chǔ)上改進(jìn)主干網(wǎng)形成的最終網(wǎng)絡(luò)(YOLOv3-tscox)與原YOLOv3進(jìn)行對比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如表1所示。
表1 改進(jìn)的YOLOv3和原YOLOv3對比結(jié)果Tab.1 Improved YOLOv3 and YOLOv3 comparison results
從表1中可以看出:YOLOv3-tsc模型因?yàn)槟P拖鄬唵巍⒕W(wǎng)絡(luò)參數(shù)量很少,所以識別速度最快,每秒可識別147幀并且其訓(xùn)練時(shí)間也相對最短,但是其mAP只有82.49%,無法滿足實(shí)際需求;文中最終模型YOLOv3-tscox相對YOLOv3精度提高了2.37%,其檢測速度能達(dá)到每秒識別65幀,比YOLOv3更快,檢測速度提升了2.7倍。分析結(jié)果表明了文中對YOLOv3的改進(jìn)是有效的,不僅提高了YOLOv3的識別精度,而且還使其FPS得到了較大的提升。
為進(jìn)一步驗(yàn)證所提出的模型在安全帽佩戴檢測上要優(yōu)于其他目標(biāo)檢測算法,使用相同的安全帽佩戴數(shù)據(jù)集對Faster R-CNN、SSD、RetinaNet以及YOLOv3-tscox等目標(biāo)檢測算法進(jìn)行安全帽佩戴檢測任務(wù)的訓(xùn)練與測試,實(shí)驗(yàn)結(jié)果如表2所示。
表2 不同檢測算法結(jié)果對比Tab.2 Results comparison of different algorithms
從表2中可以看出:無論是單級檢測器SSD還是兩級檢測器Faster R-CNN,其平均準(zhǔn)確率均低于改進(jìn)模型,并且訓(xùn)練時(shí)間更長。證明了改進(jìn)的YOLOv3在安全帽佩戴檢測上相比于其他目標(biāo)檢測網(wǎng)絡(luò)檢測效果更好。
分別選取工廠室內(nèi)復(fù)雜環(huán)境、工地室外復(fù)雜環(huán)境、模糊干擾環(huán)境以及目標(biāo)較為密集4種不同環(huán)境下的4張圖片進(jìn)行測試,結(jié)果如圖7所示。
圖7 檢測結(jié)果Fig.7 Test results:(a)indoor complex environment; (b)outdoor complex site environment;(c) fuzzy interference environment;(d)target more dense environment
對比圖7(a)可以看出:在工廠室內(nèi)復(fù)雜環(huán)境中進(jìn)行檢測時(shí),圖7(a1)中出現(xiàn)了將其他物體誤檢為頭盔,而圖7(a2)準(zhǔn)確識別出3個目標(biāo)對象;圖7(b1)中在室外復(fù)雜的工地環(huán)境下漏檢了一個目標(biāo),圖7(b2)完全識別出4個目標(biāo);圖7(c1)在相對模糊并具有干擾的環(huán)境YOLOv3也出現(xiàn)了漏檢的情況,而改進(jìn)的網(wǎng)絡(luò)則檢測無誤;圖7(d)為密集環(huán)境下進(jìn)行目標(biāo)檢測,此時(shí)圖7(d1)不僅出現(xiàn)了漏檢還將戴有頭盔的工人誤檢成了未戴頭盔,而圖7(d2)則識別無誤。分析以上檢測結(jié)果可以得出:此研究中的模型降低了安全帽識別的漏檢率以及誤檢率,模型檢測效果明顯優(yōu)于原YOLOv3。
針對目前通用目標(biāo)檢測算法在工業(yè)環(huán)境下的安全帽檢測上精確度低、誤檢率、漏檢率高以及檢測速度慢的缺點(diǎn),作者提出了基于YOLOv3的安全帽佩戴檢測方法。首先將原YOLOv3進(jìn)行裁剪,改進(jìn)之后大大提高了檢測速度,但是精確度降低了很多;為了提取更多的特征信息,在裁剪的YOLOv3基礎(chǔ)上引入了空間金字塔池化結(jié)構(gòu),使淺層與深層的特征信息更好地融合;通過增加第四融合尺度提高小目標(biāo)的識別精度,解決了小目標(biāo)漏檢問題;同時(shí)使用CIoU替換IoU提升了目標(biāo)預(yù)測框與真實(shí)目標(biāo)框的擬合效果。結(jié)果表明:改進(jìn)的網(wǎng)絡(luò)模型對安全帽佩戴的檢測有更高的檢測精度以及更快的檢測速度,并且相對于原網(wǎng)絡(luò)的訓(xùn)練時(shí)間也更短。下一步工作將研究基于YOLOv3改進(jìn)算法的MES系統(tǒng)在復(fù)雜工廠環(huán)境下的實(shí)際應(yīng)用,以網(wǎng)絡(luò)攝像頭實(shí)時(shí)檢測代替人眼目視檢查。