肖體剛,蔡樂(lè)才,高 祥,黃洪斌,張超陽(yáng)
1.四川輕化工大學(xué) 自動(dòng)化與信息工程學(xué)院,四川 自貢643000
2.宜賓學(xué)院 三江人工智能與機(jī)器人研究院,四川 宜賓644000
在智能監(jiān)控報(bào)警系統(tǒng)中,施工場(chǎng)地安全帽佩戴檢測(cè)問(wèn)題十分重要,安全帽是工作人員腦部的防護(hù)用具,在發(fā)生事故的情況下[1],可以有效地保護(hù)施工人員頭部免受重壓,能強(qiáng)有力地保護(hù)生命財(cái)產(chǎn)安全;那么,急需在智能監(jiān)控報(bào)警系統(tǒng)中對(duì)安全帽佩戴情況進(jìn)行實(shí)時(shí)準(zhǔn)確地檢測(cè),避免事故的發(fā)生[1]。
許多研究者使用機(jī)器學(xué)習(xí)和圖像處理技術(shù)實(shí)現(xiàn)了安全帽佩戴檢測(cè),胡恬等采用YCbCr[2]色彩模型配合膚色定位到人臉,再結(jié)合圖像處理[2]和神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)安全帽佩戴檢測(cè)。劉曉慧等[3]采用hu矩陣和支持向量機(jī)相結(jié)合的方式完成安全帽檢測(cè)。李琪瑞[4]采用Vibe算法進(jìn)行人體檢測(cè),再使用凸字算法檢測(cè)頭部,最后使用HOG算法特征提取后結(jié)合SVM實(shí)現(xiàn)安全帽佩戴檢測(cè)。這些算法利用了膚色、頭部和人臉信息配合圖像處理和機(jī)器學(xué)習(xí)實(shí)現(xiàn)了安全帽檢測(cè),取得了一定的效果,但實(shí)際檢測(cè)環(huán)境存在復(fù)雜背景、復(fù)雜干擾和安全帽體積較小等問(wèn)題,基于傳統(tǒng)特征提取算法的安全帽檢測(cè)可能存在穩(wěn)定性差和泛化能力不足等問(wèn)題,導(dǎo)致安全帽檢測(cè)不準(zhǔn)確。也有研究者采用基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)[5]的目標(biāo)檢測(cè)算法實(shí)現(xiàn)安全帽檢測(cè),實(shí)現(xiàn)了安全帽佩戴檢測(cè),徐守坤等[5]在算法Faster-RCNN的基礎(chǔ)上進(jìn)行改進(jìn),實(shí)現(xiàn)了安全帽佩戴檢測(cè),并且檢測(cè)準(zhǔn)確率高,但是算法實(shí)現(xiàn)復(fù)雜,訓(xùn)練步驟繁瑣,檢測(cè)速率慢;對(duì)比傳統(tǒng)特征提取的目標(biāo)檢測(cè)算法[5],基于CNN的目標(biāo)檢測(cè)算法檢測(cè)準(zhǔn)確率高。
基于CNN的目標(biāo)檢測(cè)算法分為兩步法和一步法,兩步法設(shè)計(jì)思想是:先單獨(dú)采用CNN網(wǎng)絡(luò)或者算法進(jìn)行先驗(yàn)框(anchor box)的獲取,再進(jìn)行分類和位置回歸,代表算法主要有RCNN[6]、Fast-RCNN[7]、Faster-RCNN[8];而一步法是采用端到端(end-to-end)設(shè)計(jì)思想,直接在同一個(gè)CNN中進(jìn)行anchor獲取、類別和位置的預(yù)測(cè),代表算法有YOLO[9]、SSD[10]、YOLOV2[11]以及YOLOv3[12]等等;兩種類別算法相比較,一步法的檢測(cè)速度快,模型訓(xùn)練簡(jiǎn)單,但檢測(cè)準(zhǔn)確率稍弱;YOLOv3算法的檢測(cè)準(zhǔn)確率高檢測(cè)速率也快。
綜上,本文提出一種基于改進(jìn)YOLOv3[12]的安全帽佩戴檢測(cè)算法YOLOv3-WH,通過(guò)增大輸入圖像尺度,改進(jìn)卷積基礎(chǔ)結(jié)構(gòu),增加多尺度預(yù)測(cè),引入多尺度融合,并重新訓(xùn)練獲取先驗(yàn)框等改進(jìn)方法,實(shí)現(xiàn)安全帽佩戴檢測(cè),同時(shí)通過(guò)自制安全帽佩戴數(shù)據(jù)集進(jìn)行改進(jìn)模型的訓(xùn)練和驗(yàn)證;并在相同環(huán)境下與YOLOv3、SSD、Fast-RCNN[7]等檢測(cè)算法進(jìn)行性能對(duì)比,檢驗(yàn)改進(jìn)算法的性能。
YOLOv3匯集了許多深度學(xué)習(xí)目標(biāo)檢測(cè)框架的優(yōu)點(diǎn),運(yùn)用CNN網(wǎng)絡(luò)Darknet-53[13]來(lái)實(shí)現(xiàn)特征提取,Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)使用了殘差結(jié)構(gòu)的設(shè)計(jì)思想,將網(wǎng)絡(luò)層數(shù)設(shè)計(jì)更深但不會(huì)出現(xiàn)梯度爆炸和梯度消失[13]等問(wèn)題,網(wǎng)絡(luò)能夠提取出目標(biāo)更深層的信息;該網(wǎng)絡(luò)有53層,主要由卷積層和最大池化層[13]組成,網(wǎng)絡(luò)有殘差單元,使用3×3和1×1卷積層組成;網(wǎng)絡(luò)包含批標(biāo)準(zhǔn)化(Batch Normalization)[13],Leaky ReLU激活函數(shù)層。另外,YOLOv3采用多尺度進(jìn)行檢測(cè),在三種尺度之間使用了類似于FPN[14](Feature Pyramid Networks)特征金字塔結(jié)構(gòu),實(shí)現(xiàn)不同尺度特征信息的融合;YOLOv3算法分別在13×13、26×26和52×52三個(gè)尺度上實(shí)現(xiàn)類別和位置預(yù)測(cè)。YOLOv3[12]的主要結(jié)構(gòu)如圖1所示。YOLOv3采用K-Means[15]聚類算法,獲取待檢測(cè)目標(biāo)的anchor,然后將獲取的先驗(yàn)框按檢測(cè)尺度進(jìn)行分配,提升模型訓(xùn)練和預(yù)測(cè)的速率,提升檢測(cè)的準(zhǔn)確率。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3是一種檢測(cè)準(zhǔn)確率高且實(shí)時(shí)性好的目標(biāo)檢測(cè)算法,圖2是YOLOv3與主流檢測(cè)算法的性能對(duì)比圖,可以看到Y(jié)OLOv3檢測(cè)速率和準(zhǔn)確率比大部分算法優(yōu)秀。YOLOv3雖然在開(kāi)源數(shù)據(jù)集[16]上檢測(cè)精準(zhǔn)度和速率優(yōu)于其他算法,但是在安全帽佩戴檢測(cè)問(wèn)題上,需要進(jìn)行改進(jìn),安全帽佩戴檢測(cè)主要解決安全帽是否佩戴到人員頭部的問(wèn)題,因此目標(biāo)大多數(shù)都是比較小,檢測(cè)背景也比較復(fù)雜;另外檢測(cè)速率需要實(shí)時(shí)性。為解決這個(gè)問(wèn)題,本文在YOLOv3[16]的基礎(chǔ)上進(jìn)行改進(jìn)優(yōu)化,提出一種安全帽佩戴檢測(cè)算法YOLOv3-WH,通過(guò)實(shí)驗(yàn)和測(cè)試,驗(yàn)證了改進(jìn)算法在安全帽佩戴檢測(cè)上的有效性。
圖2 YOLOv3與其他算法性能對(duì)比
YOLOv3的主干卷積網(wǎng)絡(luò)是Darknet-53[15],Darknet-53網(wǎng)絡(luò)是在Darknet-19[15]的基礎(chǔ)上去掉了全連接層和池化層,再融合了ResNet[16]殘差網(wǎng)絡(luò)的跳躍連接層結(jié)構(gòu)。網(wǎng)絡(luò)結(jié)構(gòu)中主要使用1×1和3×3的卷積層,分別實(shí)現(xiàn)增加特征通道和壓縮特征增強(qiáng)網(wǎng)絡(luò)性能的作用。
本文使用深度可分離卷積(Depth Separable Convolution,DSC)結(jié)構(gòu)的思想替換Darknet-53網(wǎng)絡(luò)里面殘差塊(Residual)[16]的傳統(tǒng)卷積部分,殘差[16]結(jié)構(gòu)使CNN網(wǎng)絡(luò)的層數(shù)更深,提取目標(biāo)深層的語(yǔ)義信息,但會(huì)丟失小目標(biāo)特征信息,降低檢測(cè)精準(zhǔn)度,同時(shí)加倍了計(jì)算量,降低檢測(cè)速率;為了提高算法在安全帽佩戴檢測(cè)上的檢測(cè)準(zhǔn)確率和速率,本文引入深度可分離卷積結(jié)構(gòu),減少CNN網(wǎng)絡(luò)特征提取中目標(biāo)信息的丟失,同時(shí)減少檢測(cè)模型的計(jì)算量,提升檢測(cè)模型的檢測(cè)速率。圖3中(a)圖是Darknet-53網(wǎng)絡(luò)中殘差塊的卷積結(jié)構(gòu),直接使用1×1和3×3連續(xù)卷積,然后使用跳躍連接組合通道輸出;本文的改進(jìn)結(jié)構(gòu)如圖3(b)所示,保留了1×1卷積結(jié)構(gòu),增加3×3的深度可分離卷積[16](DSC)進(jìn)行特征圖通道卷積,然后使用1×1的卷積進(jìn)行點(diǎn)卷積,實(shí)現(xiàn)通道特征層的融合;再使用跳躍式[16]連接組合特征,最后增加1×1卷積平滑特征輸出。
圖3 特征提取結(jié)構(gòu)對(duì)比
深度可分離卷積[17]實(shí)現(xiàn)過(guò)程如圖4(a)圖所示,圖4(b)是傳統(tǒng)卷積實(shí)現(xiàn)過(guò)程,傳統(tǒng)卷積將所有通道一起卷積計(jì)算,深度可分離卷積[17]將輸入特征圖的每個(gè)通道分離,分別實(shí)現(xiàn)卷積操作,最后使用點(diǎn)卷積實(shí)現(xiàn)分離通道卷積的組合,達(dá)到與傳統(tǒng)卷積計(jì)算相同的效果。實(shí)現(xiàn)壓縮計(jì)算量,提升檢測(cè)速率,減少特征丟失的效果。
圖4 兩種卷積對(duì)比
通過(guò)計(jì)算公式對(duì)比效果,公式(1)是傳統(tǒng)卷積計(jì)算量,公式(2)是深度可分離卷積計(jì)算量,公式(3)是計(jì)算量壓縮比值;其中D K×D K是卷積核的大小[18],D F×D F是輸入特征圖的大小,M是輸入通道,N是輸出通道。將深度可分離卷積計(jì)算量和傳統(tǒng)卷積[17]計(jì)算量進(jìn)行比值,如公式(3)所示,可以將計(jì)算量壓縮為原來(lái)的
本文為了提升安全帽檢測(cè)的準(zhǔn)確率和檢測(cè)速率,將在Darknet-53網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行改進(jìn);主要分為兩部分改進(jìn),第一部分上面已敘述,引入深度可分離卷積結(jié)構(gòu);第二部分將輸入圖像尺度從416×416增大為608×608尺度,減少CNN網(wǎng)絡(luò)下采樣時(shí)小目標(biāo)特征的丟失,在Darknet-53網(wǎng)絡(luò)的基礎(chǔ)上,結(jié)合以上兩部分改進(jìn)點(diǎn)進(jìn)行優(yōu)化,優(yōu)化網(wǎng)絡(luò)如圖5所示。
圖5 改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)部分
YOLOv3采用多尺度檢測(cè),獲取13×13、26×26和52×52三種特征層尺度進(jìn)行預(yù)測(cè);分別將13×13特征層2倍上采樣和26×26特征層進(jìn)行融合預(yù)測(cè),將26×26特征層2倍上采樣和52×52特征層進(jìn)行融合預(yù)測(cè),所以YOLOv3相比于SSD等算法,其檢測(cè)準(zhǔn)確率較好。
YOLOv3主要在開(kāi)源數(shù)據(jù)集[18]COCO和VOC[18]進(jìn)行實(shí)驗(yàn),這些數(shù)據(jù)大部分檢測(cè)的目標(biāo)物較大,安全帽作為防護(hù)用具佩戴在人員的頭部位置,大部分檢測(cè)目標(biāo)區(qū)域較小,在經(jīng)過(guò)多次卷積后較小安全帽區(qū)域的信息會(huì)丟失,導(dǎo)致整個(gè)安全帽佩戴檢測(cè)準(zhǔn)確率降低。
為解決這個(gè)問(wèn)題,本文將在多尺度檢測(cè)基礎(chǔ)上進(jìn)行改進(jìn),添加低維的尺度檢測(cè)來(lái)增強(qiáng)對(duì)淺層的特征學(xué)習(xí)能力,在原算法的3尺度檢測(cè)基礎(chǔ)上拓展為4尺度檢測(cè),根據(jù)輸入尺度為608×608,本文將添加152×152的檢測(cè)尺度;另外,原YOLOv3算法采用2倍上采樣,不能很好地融合淺層特征信息,本文將采用2倍上采樣和4倍上采樣相結(jié)合的方式實(shí)現(xiàn)不同淺層特征信息的融合,進(jìn)一步減少卷積過(guò)程中較小安全帽區(qū)域的特征信息丟失,同時(shí)也使得深層特征信息得到更好的利用,提升安全帽佩戴檢測(cè)的準(zhǔn)確率。
本文多尺度檢測(cè)改進(jìn)結(jié)構(gòu)如圖6所示,采用608×608的輸入圖像尺度,改進(jìn)算法將在19×19、38×38、76×76和152×152四類特征尺度上進(jìn)行檢測(cè);在原YOLOv3算法的基礎(chǔ)上增加兩層4倍上采樣結(jié)構(gòu),其中主要改進(jìn)點(diǎn)是將19×19特征層經(jīng)4倍上采樣后與2倍上采樣特征層和76×76特征層進(jìn)行級(jí)聯(lián),將38×38特征層經(jīng)4倍上采樣后與2倍上采樣特征層和152×152特征層進(jìn)行級(jí)聯(lián),另外兩層19×19和38×38與原算法一致;通過(guò)改進(jìn)可以充分地利用安全帽的淺層特征信息,將不同尺度的特征融合后再進(jìn)行安全帽佩戴檢測(cè),進(jìn)一步減少特征的丟失,提升安全帽佩戴檢測(cè)的準(zhǔn)確率。
圖6 多尺度檢測(cè)改進(jìn)結(jié)構(gòu)
YOLOv3[18]中使用了先驗(yàn)框(anchor box)思想,采用了K-Means[18]聚類算法根據(jù)標(biāo)注的目標(biāo)框(ground truth)獲取K個(gè)anchor box;獲取合適的anchor box可以提高檢測(cè)的準(zhǔn)確率和檢測(cè)速率;YOLOv3算法根據(jù)COCO和VOC2007[18]等開(kāi)源數(shù)據(jù)集獲取anchor box,開(kāi)源數(shù)據(jù)集檢測(cè)的目標(biāo)較大,獲取的anchor box也較大,不適合bounding box較小的安全帽檢測(cè)任務(wù),那么就需要重新進(jìn)行anchor box的選取。
在安全帽佩戴檢測(cè)任務(wù)中,聚類的目的是使anchor box與ground truth的IOU[19]越大越好,所以不能采用一般聚類方法的歐式距離,應(yīng)該采用IOU來(lái)作為度量函數(shù),公式(4)是新的度量函數(shù);其中box是標(biāo)注的真實(shí)目標(biāo)框,centroid是聚類的中心點(diǎn),IOU越大,距離越小,anchor box與真實(shí)框越接近。
使用標(biāo)注的安全帽數(shù)據(jù)集進(jìn)行聚類計(jì)算,獲得anchor box個(gè)數(shù)K與IOU的關(guān)系曲線如圖7所示,圖中IOU隨著anchor box數(shù)量增加而增加,在K=12后逐漸居于平穩(wěn),并且IOU值較大;所以本文選擇K=12,統(tǒng)計(jì)的anchor分配如表1所示,獲得12組anchor:(9,10),(12,13),(13,16),(15,18),(15,21),(17,19),(18,21),(22,26),(30,35),(47,54),(89,103),(205,237)。將anchor按照預(yù)測(cè)層尺度進(jìn)行分配,最大感受野特征層19×19上使用(47,54),(89,103),(205,237)這三種anchor來(lái)檢測(cè)較大安全帽佩戴情況;在38×38特征層上使用(18,21),(22,26),(30,35);在76×76特征層上使用(15,18),(15,21),(17,19);在152×152特征層上使用(9,10),(12,13),(13,16),用于檢測(cè)較小安全帽佩戴情況。
圖7 先驗(yàn)框個(gè)數(shù)K與IOU分析圖
YOLOv3-WH的損失函數(shù)公式(8)由位置損失公式(5)、置信度損失公式(6)以及分類損失公式(7)組成,在分類和置信度預(yù)測(cè)中,采用二元交叉熵?fù)p失[18](Binary Cross-Entropy)進(jìn)行分類和置信度預(yù)測(cè),使用多個(gè)獨(dú)立的logistic函數(shù)替換原本的softmax[18]分類;在位置信息回歸中,采用均方差誤差[18](Mean Square Error,MSE)實(shí)現(xiàn)預(yù)測(cè)。損失函數(shù)中λcoord和λnoobj是損失權(quán)重系數(shù),分別代表坐標(biāo)權(quán)重和不包含目標(biāo)的置信度權(quán)重;添加權(quán)重系數(shù)是為了調(diào)節(jié)坐標(biāo)誤差和置信度誤差的權(quán)重,本文參考YOLOv3算法的參數(shù)設(shè)置,調(diào)高位置誤差權(quán)重,將λcoord取值為5;另外,由于檢測(cè)圖像的大部分區(qū)域不包含目標(biāo)物,在檢測(cè)過(guò)程中會(huì)導(dǎo)致網(wǎng)絡(luò)傾向于預(yù)測(cè)單元格不包含物體的情況,所以需要減少不包含目標(biāo)物的計(jì)算權(quán)重,即將λnoobj取值0.5;N是anchor個(gè)數(shù);x i、y i、w i、h i、C i和pi分別是預(yù)測(cè)目標(biāo)橫縱坐標(biāo)、目標(biāo)框?qū)捀?、置信度和類別概率;x?i、y?i、w?i、h?i、C?i和p?i分別是真實(shí)的目標(biāo)信息。
本文的實(shí)驗(yàn)環(huán)境為:Intel?CoreTMi7-9750H CPU@2.60 GB 2.59 GHz,32 GB運(yùn)行內(nèi)存,Nvidia Gefo-rece Gtx1080ti,ubuntu18.04,64位操作系統(tǒng),Tensorflow[18]深度學(xué)習(xí)框架。編程語(yǔ)言是Python,GPU加速軟件CUDA10.0和CUDNN7.6[19]。
實(shí)驗(yàn)數(shù)據(jù)分為兩部分,一部分從網(wǎng)絡(luò)爬取,然后進(jìn)行數(shù)據(jù)清洗選取適合的安全帽佩戴圖片;另一部分通過(guò)視頻幀獲得;大概覆蓋了工廠、工地、礦產(chǎn)以及車間等場(chǎng)所,避免了檢測(cè)背景環(huán)境的單一性,提升模型的泛化能力;兩個(gè)部分?jǐn)?shù)據(jù)集綜合總計(jì)獲得7 000張安全帽佩戴圖像。采用開(kāi)源工具Labelimg[19]標(biāo)注數(shù)據(jù),標(biāo)注數(shù)據(jù)分為兩個(gè)類別,佩戴安全帽樣本標(biāo)注為hat,未佩戴全帽樣本標(biāo)注為person;最后按照5∶1比例分配樣本為訓(xùn)練和測(cè)試樣本,分配情況如圖8所示,其中橫坐標(biāo)表示的是標(biāo)注的樣本數(shù)量。
表1 anchor box分配表
圖8 數(shù)據(jù)集分配統(tǒng)計(jì)
本文的實(shí)驗(yàn)樣本數(shù)據(jù)集采用VOC2007[19]數(shù)據(jù)集的格式進(jìn)行處理,需要對(duì)數(shù)據(jù)圖像進(jìn)行統(tǒng)一的編號(hào)后使用Labelimg[19]標(biāo)注軟件進(jìn)行類別和位置信息標(biāo)注,生成XML[19]腳本文件,圖9是標(biāo)注和腳本數(shù)據(jù)制作過(guò)程;最后編寫(xiě)Python腳本程序?qū)?biāo)注好的數(shù)據(jù)轉(zhuǎn)換成TXT文件用于改進(jìn)算法的訓(xùn)練。
圖9 訓(xùn)練樣本制作
為了驗(yàn)證YOLOv3-WH改進(jìn)算法的性能,本文采用平均精準(zhǔn)度(mean Average Precision,mAP)和每秒檢測(cè)幀數(shù)(FPS)兩個(gè)指標(biāo)對(duì)算法進(jìn)行評(píng)估。其中,mAP是對(duì)所有類別的平均精度(Average Precision,AP)求取均值后獲得。精確度(P)如公式(9)所示,召回率(R)如公式(10)所示,平均精準(zhǔn)度(mAP)如公式(13)所示。其中,TP[20](True Positive)表示檢測(cè)結(jié)果為正的正樣本[20],F(xiàn)P(False Positive)表示被檢測(cè)為負(fù)的正樣本;FN[20](False Negative)表示被檢測(cè)為負(fù)的正樣本。另外,本文統(tǒng)計(jì)了實(shí)驗(yàn)過(guò)程中的FPS參數(shù),以檢驗(yàn)?zāi)P偷臋z測(cè)速率。
使用前面制作的安全帽佩戴數(shù)據(jù)集進(jìn)行訓(xùn)練,一共訓(xùn)練四個(gè)網(wǎng)絡(luò)模型,分別是SSD[10]、Faster-RCNN[8]、YOLOv3[12]和本文改進(jìn)模型YOLOv3-WH,訓(xùn)練的目的是統(tǒng)一做對(duì)比分析。訓(xùn)練的參數(shù)設(shè)置參考了YOLO官網(wǎng)上的訓(xùn)練參數(shù),設(shè)置批訓(xùn)練數(shù)據(jù)量(batch_size)為32,輸入圖像尺度設(shè)置為608×608,權(quán)重衰減值[20](Decay)為0.000 5,訓(xùn)練動(dòng)量配置為0.9,整個(gè)訓(xùn)練過(guò)程有40 000步分200個(gè)epoch(輪次)完成,實(shí)驗(yàn)采用小批量梯度下降法[20]的方式進(jìn)行優(yōu)化參數(shù),其中本文訓(xùn)練過(guò)程中學(xué)習(xí)率(learning rate)呈動(dòng)態(tài)變化,開(kāi)始訓(xùn)練的學(xué)習(xí)率為0.000 1,訓(xùn)練次數(shù)7 000次后,學(xué)習(xí)率動(dòng)態(tài)設(shè)置為0.000 03,訓(xùn)練達(dá)到11 000次時(shí),學(xué)習(xí)率穩(wěn)定為0.000 01。
在對(duì)改進(jìn)模型的訓(xùn)練過(guò)程中,使用Tensorboard[20]統(tǒng)計(jì)訓(xùn)練中的日志信息,并保存訓(xùn)練的權(quán)重參數(shù);通過(guò)統(tǒng)計(jì)的數(shù)據(jù)信息繪制了模型在訓(xùn)練過(guò)程中損失函數(shù)的變化曲線,圖10是實(shí)驗(yàn)過(guò)程原算法與改進(jìn)后的算法損失值變化曲線對(duì)比結(jié)果,黃色曲線是未改進(jìn)YOLOv3損失值變化情況,藍(lán)色曲線改進(jìn)YOLOv3-WH損失值變化情況,橫坐標(biāo)是訓(xùn)練迭代次數(shù)(Iteration),縱坐標(biāo)是總損失值(Loss),可以發(fā)現(xiàn),兩個(gè)算法在初始時(shí)刻的損失值都很大,但是本文改進(jìn)算法YOLOv3-WH初始損失值較??;在訓(xùn)練次數(shù)超過(guò)20 000次后,模型開(kāi)始逐漸收斂,最終訓(xùn)練達(dá)到40 000次后,YOLOv3模型的損失值收斂到2.5,而本文改進(jìn)算法損失值收斂到0.5??芍倪M(jìn)的算法YOLOv3-WH使得最終的損失值收斂更小。
圖10 訓(xùn)練損失曲線對(duì)比
通過(guò)保存訓(xùn)練中預(yù)測(cè)邊界框與真實(shí)邊界框的交并比(IOU)來(lái)評(píng)估模型的性能[20],本文實(shí)驗(yàn)統(tǒng)計(jì)了模型預(yù)測(cè)邊框和真實(shí)邊界框的平均交并比(AVG IOU)變化值,并繪制曲線圖,如圖11所示,可知,模型訓(xùn)練在10 000次以內(nèi),平均交并比在不斷升高,但是YOLOv3-WH變化較未改進(jìn)前穩(wěn)定;30 000~40 000次迭代訓(xùn)練后,本文改進(jìn)算法平均交并比穩(wěn)定在0.92附近,未改進(jìn)YOLOv3算法則穩(wěn)定在0.8附近,可知,本文改進(jìn)算法YOLOv3-WH在針對(duì)安全帽檢測(cè)上的預(yù)測(cè)邊界框更加接近真實(shí)邊界框。
圖11 平均交并比對(duì)比
本文將YOLOv3-WH算法與目標(biāo)檢測(cè)模型[21]Faster-RCNN、SSD和YOLOv3使用相同的測(cè)試數(shù)據(jù)集進(jìn)行對(duì)比實(shí)驗(yàn),統(tǒng)計(jì)并計(jì)算AP[20]指標(biāo)進(jìn)行對(duì)比,如表2所示。同時(shí),將上述算法的檢測(cè)平均精準(zhǔn)度(mAP)、檢測(cè)速率(FPS)和模型大小進(jìn)行對(duì)比統(tǒng)計(jì),如表3所示。
表2 算法的AP值對(duì)比 %
表3 整體檢測(cè)性能對(duì)比
通過(guò)對(duì)統(tǒng)計(jì)的表2和表3分析可知,本文算法YOLOv3-WH的mAP達(dá)到了89%,相對(duì)比與Faster-RCNN[8]、SSD[10]和YOLOv3[12]算法性能分別提高了3.36個(gè)百分點(diǎn)、26.25個(gè)百分點(diǎn)、6.5個(gè)百分點(diǎn),可知本文算法在安全帽佩戴檢測(cè)性能上要優(yōu)于上述三種算法。另外,從統(tǒng)計(jì)的檢測(cè)速率分析上可知,本文算法檢測(cè)速率要優(yōu)于YOLOv3和Faster-RCNN算法,檢測(cè)速率比YOLOv3提高了64%,但是相對(duì)比SSD算法,檢測(cè)速率還遠(yuǎn)不及。并且,本文采用深度可分離卷積結(jié)構(gòu),使得模型的參數(shù)量大大壓縮,比上述三種算法模型參數(shù)都小,相對(duì)比YOLOv3算法,YOLOv3-WH模型參數(shù)量?jī)H為原來(lái)的1/5。
本文進(jìn)行了消融實(shí)驗(yàn)對(duì)比分析,以檢驗(yàn)各個(gè)改進(jìn)點(diǎn)的優(yōu)化作用,實(shí)驗(yàn)統(tǒng)計(jì)結(jié)果如表4所示,其中改進(jìn)點(diǎn)1、2、3分別對(duì)應(yīng)基礎(chǔ)卷積網(wǎng)絡(luò)改進(jìn)、多尺度檢測(cè)改進(jìn)以及anchor優(yōu)化,從表4中可知,引入深度可分離卷積改進(jìn)基礎(chǔ)卷積網(wǎng)絡(luò),可以提升檢測(cè)的速率;多尺度檢測(cè)改進(jìn)點(diǎn)提升了檢測(cè)的平均檢測(cè)準(zhǔn)確度,但是檢測(cè)速率變慢;而改進(jìn)優(yōu)化K-Means后,平均檢測(cè)準(zhǔn)確度和檢測(cè)速率都提升了;結(jié)合上述三類改進(jìn)點(diǎn)后,相對(duì)于YOLOv3,本文算法在安全帽佩戴檢測(cè)上相對(duì)可靠。
表4 消融實(shí)驗(yàn)結(jié)果
下面隨機(jī)選取測(cè)試數(shù)據(jù)集的圖片進(jìn)行檢測(cè)結(jié)果分析,對(duì)YOLOv3和YOLOv3-WH進(jìn)行對(duì)比分析,圖12是YOLOv3算法改進(jìn)前后的效果對(duì)比結(jié)果,從左往右分別是圖(1)、圖(2)、圖(3)和圖(4),可以看到圖(1)存在5個(gè)目標(biāo),并且安全帽目標(biāo)較大,兩種算法都準(zhǔn)確檢測(cè)到安全帽;圖(2)存在5個(gè)目標(biāo),存在圖片清晰度較差、安全帽較小以及部分遮擋等問(wèn)題,YOLOv3檢測(cè)到3個(gè),漏檢2個(gè),YOLOv3-WH檢測(cè)到4個(gè),漏檢了1個(gè),圖(3)存在7個(gè)目標(biāo),圖片中背景復(fù)雜以及部分遮擋等問(wèn)題,YOLOv3漏檢2個(gè)目標(biāo),YOLOv3-WH全部檢測(cè)準(zhǔn)確。圖(4)是安全帽密集數(shù)據(jù),YOLOv3-WH漏檢1個(gè),YOLOv3漏檢6個(gè)。綜上各種環(huán)境下的圖片檢測(cè)結(jié)果可知,YOLOv3-WH可以準(zhǔn)確檢測(cè)到安全帽佩戴情況,雖然存在小部分漏檢,但相比于YOLOv3算法,改進(jìn)算法的檢測(cè)準(zhǔn)確率提升了許多,同時(shí)泛化能力較好。圖13是本文算法YOLOv3-WH部分檢測(cè)結(jié)果,背景包含了建筑、工廠以及施工場(chǎng)所,佩戴或者未佩戴安全帽的人員存在于密集、遮擋或者干擾等位置,可以看到,YOLOv3-WH準(zhǔn)確地檢測(cè)出安全帽佩戴的情況,也說(shuō)明改進(jìn)算法YOLOv3-WH的實(shí)用性。
圖12 改進(jìn)前后效果對(duì)比
圖13 YOLOv3-WH部分檢測(cè)結(jié)果
針對(duì)在智能監(jiān)控中安全帽佩戴檢測(cè)準(zhǔn)確率低和檢測(cè)速率慢的問(wèn)題,本文在YOLOv3的基礎(chǔ)上提出改進(jìn)安全帽佩戴檢測(cè)算法YOLOv3-WH,通過(guò)增大輸入尺度,添加深度可分離卷積結(jié)構(gòu);采用四種尺度檢測(cè),增加4倍上采樣結(jié)構(gòu)層;以及優(yōu)化K-Means聚類算法等改進(jìn)措施。實(shí)驗(yàn)結(jié)果表明,YOLOv3-WH損失函數(shù)收斂值更小,平均IOU值更大,YOLOv3-WH算法的mAP比YOLOv3提高了6.5%,檢測(cè)速率提高了64%,模型大小僅為YOLOv3的1/5,所以YOLOv3-WH安全帽佩戴檢測(cè)算法具有可行性。