劉澤西, 張 楠, 連 婷, 馬 駿, 趙 勇, 倪 威
(1.國網(wǎng)新疆電力有限公司巴州供電公司,新疆 庫爾勒 841000;2.華北電力大學 電氣與電子工程學院,北京 102206)
傳統(tǒng)的安全帽佩戴檢測方式主要有視頻監(jiān)控圖像和人工巡檢查看等。查看視頻監(jiān)控圖像的方法需要工作人員長期盯著屏幕,容易出現(xiàn)錯判漏判等情況;人工巡查的方式則在時間和精力上的消耗更大,效率低下。隨著對計算機視覺研究的深入,無人監(jiān)督智能安全帽佩戴檢測方法開始走入人們的視野,因其具有檢測成本低、檢測速度快和檢測精度高的優(yōu)點,故引起了人們關注。傳統(tǒng)檢測方法根據(jù)安全帽和人體的特征來進行人工選取,再設計訓練分類器,過程較為煩瑣,實際應用中存在較大局限性。到目前為止,國內(nèi)外學者對安全帽檢測進行了較多的研究,Shrestha等[1]使用類似Haar的特征檢測人臉,再使用邊緣檢測算法查找安全帽輪廓特征實現(xiàn)對安全帽佩戴的檢測。Rubaiyat和Silva等[2-3]將圖像中的頻域信息和梯度直方圖(Histogram of Oriented Gradient,HOG)算法結(jié)合來對行人進行檢測,再利用圓環(huán)霍夫變換(Circle Hough Transform,CHT)來檢測人員安全帽佩戴情況。劉曉慧等[4]結(jié)合Hu矩陣和支持向量機(Support Vector Machine,SVM)來對人員安全帽佩戴進行檢測。馮國臣等[5]通過選取SIFT角點特征和顏色統(tǒng)計特征的方法進行安全帽佩戴檢測。
目前,基于深度學習的目標檢測算法主要分為兩類:一類是以R-CNN(Region-Based Convolutional Neural Network)[6-8]為代表的雙階段算法,這類算法首先生成大量候選框,之后對各個候選框使用卷積神經(jīng)網(wǎng)絡提取特征,最后使用回歸器修正候選框位置;另外一類是以YOLO(You Only Look Once)[9-11]系列和SSD(Single Shot Multi-Box Detection)[12]等為代表的單階段算法,這類算法采用端到端的設計思想,在單個卷積神經(jīng)網(wǎng)絡中完成候選框獲取、類別分類和位置預測。很多學者針對安全帽佩戴檢查提出的方案是基于YOLOv3改進的,文獻[13]通過對YOLOv3的損失函數(shù)進行改進,在檢測精度上得以提升。文獻[14]改進了YOLOv3網(wǎng)絡結(jié)構,使用深度可分離卷積替代原有主干網(wǎng)中的卷積,并采用多尺度檢測,相較于原網(wǎng)絡其在推理速度和檢測精度上都有明顯提升。文獻[15]通過增加一個輸出特征層的方法增強對小目標檢測效果,使用K-means算法重新聚類生成4個尺度的候選框,在損失函數(shù)中用GIoU(Generalized Intersection over Union)損失作為邊框回歸損失,F(xiàn)ocal Loss作為置信度損失,提高了檢測精度。文獻[16]針對安全帽尺寸不一的問題,采用K-means++算法重新聚類,再引入多光譜通道注意力機制增強信息傳播,從而加強了對前景和背景的區(qū)分能力。
2020年Glenn等提出了YOLOv5系列模型,該模型主干特征提取網(wǎng)絡中增加了Focus結(jié)構,在檢測速度和精度上取得了較好的平衡。本文以YOLOv5s為基礎,對YOLOv5s進行改進,實驗結(jié)果表明改進后的算法在檢測速度上有所提升,滿足施工人員安全帽佩戴檢測要求。
YOLOv5共包含YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x共4種版本,4種版本分別適合部署在算力不同的設備上,各版本模型大小依次遞增,并以Bottleneck結(jié)構的數(shù)量來區(qū)分。YOLOv5s由backbone和head兩部分組成,backbone主要包含F(xiàn)ocus結(jié)構、C3結(jié)構和SPP結(jié)構,head部分主要包含路徑聚合網(wǎng)絡(Path Aggregation Network,PANet)和檢測頭結(jié)構。
在backbone部分,通過一個Focus結(jié)構和4個普通卷積塊實現(xiàn)32倍下采樣,F(xiàn)ocus結(jié)構將輸入圖片切割為4份,在通道維度進行拼接操作之后再進行卷積操作,實現(xiàn)了下采樣并增大了通道維度。C3結(jié)構將輸入特征圖分為2個部分,進行拆分和合并后跨階段結(jié)合,較好地減少了語義信息的損失。由于重復梯度信息的減少,使YOLOv5s網(wǎng)絡具有更好的學習能力,在YOLOv5s中通過設置CSP-true和CSP-false參數(shù)來決定Bottleneck結(jié)構中是否有殘差邊,同時加入SPP結(jié)構后,通過3個多尺度最大池化層來增大網(wǎng)絡感受野范圍。
在head部分,將高層的特征信息通過上采樣的方式與底層信息進行融合,實現(xiàn)自頂向下的信息流動,再通過步長為2的卷積,將底層特征與高層特征進行Concat操作,使底層分辨率高的特征信息易于傳到上層,從而構造路徑聚合網(wǎng)絡結(jié)構,更好地將底層與高層特征優(yōu)勢互補,有效解決網(wǎng)絡模型多尺度問題。
在對YOLOv5s主干網(wǎng)絡進行改進時,主要參考了RepVGG的主干網(wǎng)絡。RepVGG[17]核心思想是通過結(jié)構重參數(shù)化,在訓練時采取多支路結(jié)構來獲得更多的特征,在推理時轉(zhuǎn)換為單路結(jié)構來提高模型推理速度。原VGG網(wǎng)絡[18]是直筒型單路結(jié)構,由于不需要保存中間計算結(jié)果,故該結(jié)構占用內(nèi)存更少,而且并行度高、速度更快。在VGG中共有5段卷積,每段內(nèi)有2~3個卷積層,在每段卷積層尾部會連接一個池化層來縮小特征圖尺寸,每段內(nèi)部卷積核數(shù)目一致,隨著網(wǎng)絡加深,越靠后卷積核數(shù)目越多。RepVGG主體結(jié)構由3×3卷積核、1×1卷積核和identity支路結(jié)合而成,RepVGG訓練時結(jié)構如圖1所示。在訓練過程中,為每一個3×3卷積核添加平行的1×1卷積核和恒等分支映射,其借鑒了ResNet構造殘差塊的思想,以此提高模型的特征分辨能力,獲取更多特征信息;采用identity的分支結(jié)構使模型更易收斂,從而避免出現(xiàn)梯度消失的問題。

圖1 RepVGG訓練時結(jié)構圖
在推理階段,通過參數(shù)重構化的方式,將1×1的卷積核及identity分支轉(zhuǎn)換為3×3卷積核與ReLU激活層堆疊的方式,單線型的結(jié)構有助于提高模型推理速度,減少內(nèi)存的占用。RepVGG推理時網(wǎng)絡結(jié)構如圖2所示。

圖2 RepVGG推理時網(wǎng)絡結(jié)構圖
結(jié)構重參數(shù)化主要體現(xiàn)在批量歸一化(Batch Normalization,BN)層與卷積層的融合,在神經(jīng)網(wǎng)絡中,BN層常被用于加速神經(jīng)網(wǎng)絡的收斂,有效緩解了梯度消失和梯度爆炸問題,這里將BN層與卷積層合并,能夠達到減少網(wǎng)路層數(shù)和提升網(wǎng)絡性能的效果。卷積層計算公式為
Conv(x)=W(x)+b
(1)
式中:W(x)為權重函數(shù);b為偏置;x為輸入。
BN層計算公式為
(2)
式中:σ為對卷積層輸出求得的標準差;ε為防止標準差為0而加入的正則化參數(shù);μ為對卷積層輸出求得的均值;β為平移因子;γ為尺度縮放因子。其中,β與γ都是可學習參數(shù)。
將卷積層計算公式代入BN層計算公式可得:
(3)
BN(x)=Wfused+Bfused
(4)
在RepVGG結(jié)構中有1×1卷積核和identity兩種分支結(jié)構。對于1×1卷積核而言,可以通過填充的方式將其等效為3×3卷積核,等效的3×3卷積核除了卷積核中心位置,其他位置都為0,即將1×1卷積核移動至3×3卷積核中心。而對于identity分支而言,可利用權重為1的卷積核,將identity結(jié)構構造為一個1×1卷積,同時該卷積的權重值為1。再通過設置一個3×3卷積核,對輸入特征映射相乘后,使identity分支前后值不變。此時1×1卷積核和identity均可轉(zhuǎn)變?yōu)?×3卷積核,而根據(jù)卷積的特點,卷積核在大小形狀相同時滿足可加性。此時3個卷積分支可以融合,過程如圖3所示。選擇將3×3的卷積塊重構為RepVGG模塊,改進后的網(wǎng)絡結(jié)構如圖4所示。

圖3 分支合并過程

圖4 改進后網(wǎng)絡結(jié)構圖
在檢測的后置處理階段,非極大值抑制(Non Maximum Suppression,NMS)算法常被用于移除多余的檢測框,但是NMS在每輪迭代中會抑制所有與預測框交并比大于給定閾值的檢測框,從而造成目標漏檢和誤檢。同時,交并比給定閾值的選取對最后預測結(jié)果也有較大影響。NMS的計算公式為
(5)
式中:Si為檢測框的得分;M為當前得分最高的檢測框;bi為剩余待處理檢測框;Nt為人工設定的閾值;IoU(M,bi)為2個檢測框的重疊度。當IoU大于或等于給定閾值時,該檢測框得分清零,導致與目標框相鄰的檢測框被強制清零,造成漏檢和誤檢。在此基礎上Soft-NMS[19]對重疊度高的檢測框進行識別,當待處理檢測框與得分最高的檢測框交并比大于給定閾值時,通過添加非線性懲罰項的方法來降低其得分,而不是直接清零,從而在檢測時降低對遮擋目標的漏檢可能性,Soft-NMS計算公式為
Si=Sie-IoU(M,bi)2/σ
(6)
式中:σ為超參數(shù),越接近高斯分布的中心,懲罰影響越大。同時該函數(shù)是平滑且連續(xù)的函數(shù),避免了檢測框集合中得分出現(xiàn)巨大翻轉(zhuǎn)。
數(shù)據(jù)增強常被用于深度學習中,對于提高樣本魯棒性、改善模型性能有著重要作用。Mixup[20]數(shù)據(jù)增強與傳統(tǒng)數(shù)據(jù)增強方法不一樣,Mixup通過逐像素級別線性相加將圖像混合,對2個樣本-標簽按比例相加后生成新的樣本-標簽,通過服從貝塔分布的參數(shù)λ來調(diào)整不同樣本-標簽對應的權重,即通過對特征向量進行插值實現(xiàn)對應標簽的線性插值。用該方法能夠拓展訓練分布,提升模型訓練的魯棒性。插值過程如下:
(7)
(8)
λ~β(α,α),α∈(0,∞)
(9)


圖5 不同混合系數(shù)下數(shù)據(jù)增強效果圖
本文的實驗環(huán)境為:處理器AMD Ryzen 5 4600H@3.00 GHz,機帶RAM 16.0 GB,GPU為NVIDIA GeForce GTX 1650,Windows 10操作系統(tǒng),PyTorch深度學習框架,編程語言為Python,GPU加速庫為CUDA 11.4和CUDNN 8.04。

圖6 訓練過程損失曲線
本實驗所用數(shù)據(jù)集為已經(jīng)開源的安全帽佩戴檢測數(shù)據(jù)集(Safety Helmet Wearing Dataset,SHWD),這里選取了該數(shù)據(jù)集中partB的1500張圖片,按照7∶3的比例劃分為訓練集和驗證集,在訓練時采用Mixup數(shù)據(jù)增強方法對數(shù)據(jù)進行擴充,最終訓練集共包含佩戴安全帽類6745個、未佩戴安全帽類6591個,驗證集共包含佩戴安全帽類3212個、未佩戴安全帽類3457個。
在進行訓練時批訓練數(shù)據(jù)量(Batchsize)設置為16,輸入圖像大小為640像素×640像素,權重衰減(Decay)為0.005,訓練動量(Momentum)配置為0.937,初始學習率為0.001,每個模型分別訓練150個epoch,訓練損失變化如圖8所示。從圖8中可以看到隨著訓練的進行,損失曲線在慢慢收斂,進行到第150個epoch時,模型的損失基本收斂,說明訓練有效。
本文主要采用平均精度(Mean Average Precision,mAP)和每秒檢測幀數(shù)這2個指標對模型進行評估。AP值由準確率(Precision)和召回率(Recall)生成的Precision-召回率曲線和坐標軸組成的面積計算得到,mAP表示對所有AP求得的均值。召回率和準確率的計算公式為
(10)
式中:TP為檢測為正樣本并且確實為正樣本數(shù)量;FP為檢測為正樣本但實際不是正樣本數(shù)量;FN為檢測為負樣本但實際不是負樣本數(shù)量;Precision為檢測為正樣本且確實為正樣本占所有檢測為正樣本的比例;Recall為檢測為正樣本且確實為正樣本占所有確實為正樣本的比例。訓練完成后將模型的AP值、參數(shù)量、模型大小與原YOLOv5模型進行對比,結(jié)果如表1所示。由表1結(jié)果可知,本文方法在檢測佩戴安全帽時AP值變化不大,在檢測未佩戴安全帽時AP值變化較大。由于主干網(wǎng)絡的優(yōu)化,本文方法的參數(shù)量為5.4×106,比原YOLOv5s模型減少了22.86%,模型大小壓縮了22.62%。

表1 模型性能對比
同時為了驗證本文所做改進的有效性,在測試數(shù)據(jù)集下進行相應的消融實驗,消融實驗結(jié)果如表2所示。在YOLOv5s模型中分別引入Soft-NMS和Mixup數(shù)據(jù)增強后,模型計算量會有所增加,推理速度略低。采用本文所提出的方法,即引入RepVGG模塊改進主干網(wǎng),并同時引入Soft-NMS和Mixup數(shù)據(jù)增強后,推理速度得到加快,但因模型的特征提取能力有所下降,導致檢測精度略下降。

表2 消融實驗結(jié)果
在變電站場景下,用本文所提改進后的模型對施工人員佩戴安全帽進行檢測,效果圖如圖7所示。在密集人群場景下安全帽佩戴檢測效果較好,沒有誤檢漏檢的發(fā)生。在安全帽大小不一場景下檢測精度較高,能夠滿足實際工作中安全帽檢測需要。

圖7 改進模型檢測效果圖
針對變電站工人安全帽佩戴檢測情況,提出了基于深度學習的解決方法,克服了傳統(tǒng)方法人工設計特征提取器泛化性差的弊端。該方法以YOLOv5s為基礎,通過引入RepVGG模塊的方法對網(wǎng)絡進行改進,同時利用Soft-NMS和Mixup算法來優(yōu)化,在保持較高精度的前提下對模型大小進行壓縮,大幅減少了網(wǎng)絡的參數(shù)量,加快了網(wǎng)絡推理速度,但是在目標尺度大小不一的情況下還會出現(xiàn)漏檢問題。針對多尺度目標檢測問題,考慮從改進網(wǎng)絡neck部分入手,目前BiFPN在多種網(wǎng)絡neck部分改進效果較好,可以有效解決多尺度問題,降低漏檢率。