劉澤西, 張 楠, 連 婷, 馬 駿, 趙 勇, 倪 威
(1.國(guó)網(wǎng)新疆電力有限公司巴州供電公司,新疆 庫(kù)爾勒 841000;2.華北電力大學(xué) 電氣與電子工程學(xué)院,北京 102206)
傳統(tǒng)的安全帽佩戴檢測(cè)方式主要有視頻監(jiān)控圖像和人工巡檢查看等。查看視頻監(jiān)控圖像的方法需要工作人員長(zhǎng)期盯著屏幕,容易出現(xiàn)錯(cuò)判漏判等情況;人工巡查的方式則在時(shí)間和精力上的消耗更大,效率低下。隨著對(duì)計(jì)算機(jī)視覺(jué)研究的深入,無(wú)人監(jiān)督智能安全帽佩戴檢測(cè)方法開(kāi)始走入人們的視野,因其具有檢測(cè)成本低、檢測(cè)速度快和檢測(cè)精度高的優(yōu)點(diǎn),故引起了人們關(guān)注。傳統(tǒng)檢測(cè)方法根據(jù)安全帽和人體的特征來(lái)進(jìn)行人工選取,再設(shè)計(jì)訓(xùn)練分類器,過(guò)程較為煩瑣,實(shí)際應(yīng)用中存在較大局限性。到目前為止,國(guó)內(nèi)外學(xué)者對(duì)安全帽檢測(cè)進(jìn)行了較多的研究,Shrestha等[1]使用類似Haar的特征檢測(cè)人臉,再使用邊緣檢測(cè)算法查找安全帽輪廓特征實(shí)現(xiàn)對(duì)安全帽佩戴的檢測(cè)。Rubaiyat和Silva等[2-3]將圖像中的頻域信息和梯度直方圖(Histogram of Oriented Gradient,HOG)算法結(jié)合來(lái)對(duì)行人進(jìn)行檢測(cè),再利用圓環(huán)霍夫變換(Circle Hough Transform,CHT)來(lái)檢測(cè)人員安全帽佩戴情況。劉曉慧等[4]結(jié)合Hu矩陣和支持向量機(jī)(Support Vector Machine,SVM)來(lái)對(duì)人員安全帽佩戴進(jìn)行檢測(cè)。馮國(guó)臣等[5]通過(guò)選取SIFT角點(diǎn)特征和顏色統(tǒng)計(jì)特征的方法進(jìn)行安全帽佩戴檢測(cè)。
目前,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為兩類:一類是以R-CNN(Region-Based Convolutional Neural Network)[6-8]為代表的雙階段算法,這類算法首先生成大量候選框,之后對(duì)各個(gè)候選框使用卷積神經(jīng)網(wǎng)絡(luò)提取特征,最后使用回歸器修正候選框位置;另外一類是以YOLO(You Only Look Once)[9-11]系列和SSD(Single Shot Multi-Box Detection)[12]等為代表的單階段算法,這類算法采用端到端的設(shè)計(jì)思想,在單個(gè)卷積神經(jīng)網(wǎng)絡(luò)中完成候選框獲取、類別分類和位置預(yù)測(cè)。很多學(xué)者針對(duì)安全帽佩戴檢查提出的方案是基于YOLOv3改進(jìn)的,文獻(xiàn)[13]通過(guò)對(duì)YOLOv3的損失函數(shù)進(jìn)行改進(jìn),在檢測(cè)精度上得以提升。文獻(xiàn)[14]改進(jìn)了YOLOv3網(wǎng)絡(luò)結(jié)構(gòu),使用深度可分離卷積替代原有主干網(wǎng)中的卷積,并采用多尺度檢測(cè),相較于原網(wǎng)絡(luò)其在推理速度和檢測(cè)精度上都有明顯提升。文獻(xiàn)[15]通過(guò)增加一個(gè)輸出特征層的方法增強(qiáng)對(duì)小目標(biāo)檢測(cè)效果,使用K-means算法重新聚類生成4個(gè)尺度的候選框,在損失函數(shù)中用GIoU(Generalized Intersection over Union)損失作為邊框回歸損失,F(xiàn)ocal Loss作為置信度損失,提高了檢測(cè)精度。文獻(xiàn)[16]針對(duì)安全帽尺寸不一的問(wèn)題,采用K-means++算法重新聚類,再引入多光譜通道注意力機(jī)制增強(qiáng)信息傳播,從而加強(qiáng)了對(duì)前景和背景的區(qū)分能力。
2020年Glenn等提出了YOLOv5系列模型,該模型主干特征提取網(wǎng)絡(luò)中增加了Focus結(jié)構(gòu),在檢測(cè)速度和精度上取得了較好的平衡。本文以YOLOv5s為基礎(chǔ),對(duì)YOLOv5s進(jìn)行改進(jìn),實(shí)驗(yàn)結(jié)果表明改進(jìn)后的算法在檢測(cè)速度上有所提升,滿足施工人員安全帽佩戴檢測(cè)要求。
YOLOv5共包含YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x共4種版本,4種版本分別適合部署在算力不同的設(shè)備上,各版本模型大小依次遞增,并以Bottleneck結(jié)構(gòu)的數(shù)量來(lái)區(qū)分。YOLOv5s由backbone和head兩部分組成,backbone主要包含F(xiàn)ocus結(jié)構(gòu)、C3結(jié)構(gòu)和SPP結(jié)構(gòu),head部分主要包含路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PANet)和檢測(cè)頭結(jié)構(gòu)。
在backbone部分,通過(guò)一個(gè)Focus結(jié)構(gòu)和4個(gè)普通卷積塊實(shí)現(xiàn)32倍下采樣,F(xiàn)ocus結(jié)構(gòu)將輸入圖片切割為4份,在通道維度進(jìn)行拼接操作之后再進(jìn)行卷積操作,實(shí)現(xiàn)了下采樣并增大了通道維度。C3結(jié)構(gòu)將輸入特征圖分為2個(gè)部分,進(jìn)行拆分和合并后跨階段結(jié)合,較好地減少了語(yǔ)義信息的損失。由于重復(fù)梯度信息的減少,使YOLOv5s網(wǎng)絡(luò)具有更好的學(xué)習(xí)能力,在YOLOv5s中通過(guò)設(shè)置CSP-true和CSP-false參數(shù)來(lái)決定Bottleneck結(jié)構(gòu)中是否有殘差邊,同時(shí)加入SPP結(jié)構(gòu)后,通過(guò)3個(gè)多尺度最大池化層來(lái)增大網(wǎng)絡(luò)感受野范圍。
在head部分,將高層的特征信息通過(guò)上采樣的方式與底層信息進(jìn)行融合,實(shí)現(xiàn)自頂向下的信息流動(dòng),再通過(guò)步長(zhǎng)為2的卷積,將底層特征與高層特征進(jìn)行Concat操作,使底層分辨率高的特征信息易于傳到上層,從而構(gòu)造路徑聚合網(wǎng)絡(luò)結(jié)構(gòu),更好地將底層與高層特征優(yōu)勢(shì)互補(bǔ),有效解決網(wǎng)絡(luò)模型多尺度問(wèn)題。
在對(duì)YOLOv5s主干網(wǎng)絡(luò)進(jìn)行改進(jìn)時(shí),主要參考了RepVGG的主干網(wǎng)絡(luò)。RepVGG[17]核心思想是通過(guò)結(jié)構(gòu)重參數(shù)化,在訓(xùn)練時(shí)采取多支路結(jié)構(gòu)來(lái)獲得更多的特征,在推理時(shí)轉(zhuǎn)換為單路結(jié)構(gòu)來(lái)提高模型推理速度。原VGG網(wǎng)絡(luò)[18]是直筒型單路結(jié)構(gòu),由于不需要保存中間計(jì)算結(jié)果,故該結(jié)構(gòu)占用內(nèi)存更少,而且并行度高、速度更快。在VGG中共有5段卷積,每段內(nèi)有2~3個(gè)卷積層,在每段卷積層尾部會(huì)連接一個(gè)池化層來(lái)縮小特征圖尺寸,每段內(nèi)部卷積核數(shù)目一致,隨著網(wǎng)絡(luò)加深,越靠后卷積核數(shù)目越多。RepVGG主體結(jié)構(gòu)由3×3卷積核、1×1卷積核和identity支路結(jié)合而成,RepVGG訓(xùn)練時(shí)結(jié)構(gòu)如圖1所示。在訓(xùn)練過(guò)程中,為每一個(gè)3×3卷積核添加平行的1×1卷積核和恒等分支映射,其借鑒了ResNet構(gòu)造殘差塊的思想,以此提高模型的特征分辨能力,獲取更多特征信息;采用identity的分支結(jié)構(gòu)使模型更易收斂,從而避免出現(xiàn)梯度消失的問(wèn)題。
圖1 RepVGG訓(xùn)練時(shí)結(jié)構(gòu)圖
在推理階段,通過(guò)參數(shù)重構(gòu)化的方式,將1×1的卷積核及identity分支轉(zhuǎn)換為3×3卷積核與ReLU激活層堆疊的方式,單線型的結(jié)構(gòu)有助于提高模型推理速度,減少內(nèi)存的占用。RepVGG推理時(shí)網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 RepVGG推理時(shí)網(wǎng)絡(luò)結(jié)構(gòu)圖
結(jié)構(gòu)重參數(shù)化主要體現(xiàn)在批量歸一化(Batch Normalization,BN)層與卷積層的融合,在神經(jīng)網(wǎng)絡(luò)中,BN層常被用于加速神經(jīng)網(wǎng)絡(luò)的收斂,有效緩解了梯度消失和梯度爆炸問(wèn)題,這里將BN層與卷積層合并,能夠達(dá)到減少網(wǎng)路層數(shù)和提升網(wǎng)絡(luò)性能的效果。卷積層計(jì)算公式為
Conv(x)=W(x)+b
(1)
式中:W(x)為權(quán)重函數(shù);b為偏置;x為輸入。
BN層計(jì)算公式為
(2)
式中:σ為對(duì)卷積層輸出求得的標(biāo)準(zhǔn)差;ε為防止標(biāo)準(zhǔn)差為0而加入的正則化參數(shù);μ為對(duì)卷積層輸出求得的均值;β為平移因子;γ為尺度縮放因子。其中,β與γ都是可學(xué)習(xí)參數(shù)。
將卷積層計(jì)算公式代入BN層計(jì)算公式可得:
(3)
BN(x)=Wfused+Bfused
(4)
在RepVGG結(jié)構(gòu)中有1×1卷積核和identity兩種分支結(jié)構(gòu)。對(duì)于1×1卷積核而言,可以通過(guò)填充的方式將其等效為3×3卷積核,等效的3×3卷積核除了卷積核中心位置,其他位置都為0,即將1×1卷積核移動(dòng)至3×3卷積核中心。而對(duì)于identity分支而言,可利用權(quán)重為1的卷積核,將identity結(jié)構(gòu)構(gòu)造為一個(gè)1×1卷積,同時(shí)該卷積的權(quán)重值為1。再通過(guò)設(shè)置一個(gè)3×3卷積核,對(duì)輸入特征映射相乘后,使identity分支前后值不變。此時(shí)1×1卷積核和identity均可轉(zhuǎn)變?yōu)?×3卷積核,而根據(jù)卷積的特點(diǎn),卷積核在大小形狀相同時(shí)滿足可加性。此時(shí)3個(gè)卷積分支可以融合,過(guò)程如圖3所示。選擇將3×3的卷積塊重構(gòu)為RepVGG模塊,改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖3 分支合并過(guò)程
圖4 改進(jìn)后網(wǎng)絡(luò)結(jié)構(gòu)圖
在檢測(cè)的后置處理階段,非極大值抑制(Non Maximum Suppression,NMS)算法常被用于移除多余的檢測(cè)框,但是NMS在每輪迭代中會(huì)抑制所有與預(yù)測(cè)框交并比大于給定閾值的檢測(cè)框,從而造成目標(biāo)漏檢和誤檢。同時(shí),交并比給定閾值的選取對(duì)最后預(yù)測(cè)結(jié)果也有較大影響。NMS的計(jì)算公式為
(5)
式中:Si為檢測(cè)框的得分;M為當(dāng)前得分最高的檢測(cè)框;bi為剩余待處理檢測(cè)框;Nt為人工設(shè)定的閾值;IoU(M,bi)為2個(gè)檢測(cè)框的重疊度。當(dāng)IoU大于或等于給定閾值時(shí),該檢測(cè)框得分清零,導(dǎo)致與目標(biāo)框相鄰的檢測(cè)框被強(qiáng)制清零,造成漏檢和誤檢。在此基礎(chǔ)上Soft-NMS[19]對(duì)重疊度高的檢測(cè)框進(jìn)行識(shí)別,當(dāng)待處理檢測(cè)框與得分最高的檢測(cè)框交并比大于給定閾值時(shí),通過(guò)添加非線性懲罰項(xiàng)的方法來(lái)降低其得分,而不是直接清零,從而在檢測(cè)時(shí)降低對(duì)遮擋目標(biāo)的漏檢可能性,Soft-NMS計(jì)算公式為
Si=Sie-IoU(M,bi)2/σ
(6)
式中:σ為超參數(shù),越接近高斯分布的中心,懲罰影響越大。同時(shí)該函數(shù)是平滑且連續(xù)的函數(shù),避免了檢測(cè)框集合中得分出現(xiàn)巨大翻轉(zhuǎn)。
數(shù)據(jù)增強(qiáng)常被用于深度學(xué)習(xí)中,對(duì)于提高樣本魯棒性、改善模型性能有著重要作用。Mixup[20]數(shù)據(jù)增強(qiáng)與傳統(tǒng)數(shù)據(jù)增強(qiáng)方法不一樣,Mixup通過(guò)逐像素級(jí)別線性相加將圖像混合,對(duì)2個(gè)樣本-標(biāo)簽按比例相加后生成新的樣本-標(biāo)簽,通過(guò)服從貝塔分布的參數(shù)λ來(lái)調(diào)整不同樣本-標(biāo)簽對(duì)應(yīng)的權(quán)重,即通過(guò)對(duì)特征向量進(jìn)行插值實(shí)現(xiàn)對(duì)應(yīng)標(biāo)簽的線性插值。用該方法能夠拓展訓(xùn)練分布,提升模型訓(xùn)練的魯棒性。插值過(guò)程如下:
(7)
(8)
λ~β(α,α),α∈(0,∞)
(9)
圖5 不同混合系數(shù)下數(shù)據(jù)增強(qiáng)效果圖
本文的實(shí)驗(yàn)環(huán)境為:處理器AMD Ryzen 5 4600H@3.00 GHz,機(jī)帶RAM 16.0 GB,GPU為NVIDIA GeForce GTX 1650,Windows 10操作系統(tǒng),PyTorch深度學(xué)習(xí)框架,編程語(yǔ)言為Python,GPU加速庫(kù)為CUDA 11.4和CUDNN 8.04。
圖6 訓(xùn)練過(guò)程損失曲線
本實(shí)驗(yàn)所用數(shù)據(jù)集為已經(jīng)開(kāi)源的安全帽佩戴檢測(cè)數(shù)據(jù)集(Safety Helmet Wearing Dataset,SHWD),這里選取了該數(shù)據(jù)集中partB的1500張圖片,按照7∶3的比例劃分為訓(xùn)練集和驗(yàn)證集,在訓(xùn)練時(shí)采用Mixup數(shù)據(jù)增強(qiáng)方法對(duì)數(shù)據(jù)進(jìn)行擴(kuò)充,最終訓(xùn)練集共包含佩戴安全帽類6745個(gè)、未佩戴安全帽類6591個(gè),驗(yàn)證集共包含佩戴安全帽類3212個(gè)、未佩戴安全帽類3457個(gè)。
在進(jìn)行訓(xùn)練時(shí)批訓(xùn)練數(shù)據(jù)量(Batchsize)設(shè)置為16,輸入圖像大小為640像素×640像素,權(quán)重衰減(Decay)為0.005,訓(xùn)練動(dòng)量(Momentum)配置為0.937,初始學(xué)習(xí)率為0.001,每個(gè)模型分別訓(xùn)練150個(gè)epoch,訓(xùn)練損失變化如圖8所示。從圖8中可以看到隨著訓(xùn)練的進(jìn)行,損失曲線在慢慢收斂,進(jìn)行到第150個(gè)epoch時(shí),模型的損失基本收斂,說(shuō)明訓(xùn)練有效。
本文主要采用平均精度(Mean Average Precision,mAP)和每秒檢測(cè)幀數(shù)這2個(gè)指標(biāo)對(duì)模型進(jìn)行評(píng)估。AP值由準(zhǔn)確率(Precision)和召回率(Recall)生成的Precision-召回率曲線和坐標(biāo)軸組成的面積計(jì)算得到,mAP表示對(duì)所有AP求得的均值。召回率和準(zhǔn)確率的計(jì)算公式為
(10)
式中:TP為檢測(cè)為正樣本并且確實(shí)為正樣本數(shù)量;FP為檢測(cè)為正樣本但實(shí)際不是正樣本數(shù)量;FN為檢測(cè)為負(fù)樣本但實(shí)際不是負(fù)樣本數(shù)量;Precision為檢測(cè)為正樣本且確實(shí)為正樣本占所有檢測(cè)為正樣本的比例;Recall為檢測(cè)為正樣本且確實(shí)為正樣本占所有確實(shí)為正樣本的比例。訓(xùn)練完成后將模型的AP值、參數(shù)量、模型大小與原YOLOv5模型進(jìn)行對(duì)比,結(jié)果如表1所示。由表1結(jié)果可知,本文方法在檢測(cè)佩戴安全帽時(shí)AP值變化不大,在檢測(cè)未佩戴安全帽時(shí)AP值變化較大。由于主干網(wǎng)絡(luò)的優(yōu)化,本文方法的參數(shù)量為5.4×106,比原YOLOv5s模型減少了22.86%,模型大小壓縮了22.62%。
表1 模型性能對(duì)比
同時(shí)為了驗(yàn)證本文所做改進(jìn)的有效性,在測(cè)試數(shù)據(jù)集下進(jìn)行相應(yīng)的消融實(shí)驗(yàn),消融實(shí)驗(yàn)結(jié)果如表2所示。在YOLOv5s模型中分別引入Soft-NMS和Mixup數(shù)據(jù)增強(qiáng)后,模型計(jì)算量會(huì)有所增加,推理速度略低。采用本文所提出的方法,即引入RepVGG模塊改進(jìn)主干網(wǎng),并同時(shí)引入Soft-NMS和Mixup數(shù)據(jù)增強(qiáng)后,推理速度得到加快,但因模型的特征提取能力有所下降,導(dǎo)致檢測(cè)精度略下降。
表2 消融實(shí)驗(yàn)結(jié)果
在變電站場(chǎng)景下,用本文所提改進(jìn)后的模型對(duì)施工人員佩戴安全帽進(jìn)行檢測(cè),效果圖如圖7所示。在密集人群場(chǎng)景下安全帽佩戴檢測(cè)效果較好,沒(méi)有誤檢漏檢的發(fā)生。在安全帽大小不一場(chǎng)景下檢測(cè)精度較高,能夠滿足實(shí)際工作中安全帽檢測(cè)需要。
圖7 改進(jìn)模型檢測(cè)效果圖
針對(duì)變電站工人安全帽佩戴檢測(cè)情況,提出了基于深度學(xué)習(xí)的解決方法,克服了傳統(tǒng)方法人工設(shè)計(jì)特征提取器泛化性差的弊端。該方法以YOLOv5s為基礎(chǔ),通過(guò)引入RepVGG模塊的方法對(duì)網(wǎng)絡(luò)進(jìn)行改進(jìn),同時(shí)利用Soft-NMS和Mixup算法來(lái)優(yōu)化,在保持較高精度的前提下對(duì)模型大小進(jìn)行壓縮,大幅減少了網(wǎng)絡(luò)的參數(shù)量,加快了網(wǎng)絡(luò)推理速度,但是在目標(biāo)尺度大小不一的情況下還會(huì)出現(xiàn)漏檢問(wèn)題。針對(duì)多尺度目標(biāo)檢測(cè)問(wèn)題,考慮從改進(jìn)網(wǎng)絡(luò)neck部分入手,目前BiFPN在多種網(wǎng)絡(luò)neck部分改進(jìn)效果較好,可以有效解決多尺度問(wèn)題,降低漏檢率。