王建波,武友新
南昌大學 數學與計算機學院,南昌 330000
隨著我國經濟的發展和城鎮化道路的建設,城市建筑行業涌入了大量的農民工人員。國家統計局2022年2月發布的統計數據顯示,全國農民工總量2億9 251萬人。全年各類生產安全事故共死亡26 307人[1]。在建筑行業,規范佩戴安全帽十分重要,遇到突發情況時能有效地保護施工人員,僅靠人為方式監督工人是否規范佩戴安全帽效率低下。為此,采用機器視覺的方式去檢測工人安全帽佩戴狀況是具有研究意義及應用價值的。
利用機器視覺技術檢測施工人員是否佩戴安全帽屬于目標檢測類的問題。目標檢測是一種對圖像或視頻中的特定對象進行定位和分類的任務,在神經網絡崛起之前,目標檢測器都是通過人為方式來設計特征提取器,比如直方圖梯度(histogram of oriented gradient,HOG)[2]、Viola-Jones檢測器[3]等。這些模型速度慢,準確率低,泛化性能差,被應用得并不多。2012年,Krizhevsky等人[4]在圖像識別大賽上將卷積神經網絡(convolutional neural network,CNN)應用于圖像領域,并取得了全面超越傳統算法的性能,極大地推動了深度學習在圖像領域的發展。此后很多學者以深度學習技術為基礎,構建出不少優秀的目標檢測算法[5-7]。
近幾年有一些學者利用機器視覺技術進行安全帽識別。例如,劉曉慧等人[8]先使用膚色檢測定位人臉區域,獲取臉部以上區域圖像,再使用SVM 進行分類,得出圖像是否含有安全帽。徐守坤等人[9]使用Faster R-CNN結合多尺度訓練,增強模型對不同大小目標的魯棒性,實現安全帽檢測。肖體剛等人[10]使用深度可分離卷積對YOLOv3 主干網絡進行輕量化,減少模型參數量,提升安全帽檢測速度。這些方法雖然都進行了算法的優化,但仍然存在著參數量大、所需算力大、檢測速度慢等問題。并且采用深度可分離替換主干網絡中的原始卷積的做法,會導致無法采用在大規模數據集上預訓練的模型權值,進而需要從頭訓練整個網絡。
本文提出基于改進YOLOv4-tiny 的輕量級安全帽檢測算法,并針對小目標漏檢過多等問題進行優化,在安全帽數據集上驗證了所提方法的有效性。
YOLOv4-tiny 是YOLOv4 的輕量化模型,相比YOLOv4,雖然精度不足,但參數量僅為YOLOv4的1/10,并且計算速度是YOLOv4 的5 倍,這使得tiny 模型更加適用于計算資源有限、存儲空間不夠充足的邊緣設備。
YOLOv4-tiny 網絡結構如圖1 所示,由主干網絡(backbone)、特征融合網絡(feature pyramid networks,FPN)、預測頭(YOLO head)三部分組成。其特征提取網絡是新一代目標檢測骨干網CSPDarknet53 的縮減版。特征融合部分將經過特征提取網絡得到的高級語義特征圖進行語義融合,相比于YOLOv4,YOLOv4-tiny只使用P4、P5兩個尺度的輸出。因此,特征融合部分也比較簡單,采用FPN網絡的思想,將P5經過一次卷積后再二倍上采樣,與P4 進行通道拼接,豐富P4 的語義信息。預測頭部分,沿用了傳統的YOLO預測算法計算分類損失與回歸損失。

圖1 YOLOv4-tiny結構圖Fig.1 YOLOv4-tiny structure diagram
卷積神經網絡中的注意力機制作為一種特征建模的手段,在本質上可以看作對特征圖進行重加權,讓具有不同語義信息的特征具有不同權重,從而抑制背景信息,使得網絡聚焦于特定區域。由于注意力機制的便捷性和有效性,近幾年對注意力機制的研究層出不窮。胡杰等人[11]在ImageNet 2017 圖像分類大賽中提出SE(squeeze-and-excitation)通道注意力。SE注意力使用全局平均池化(global average pooling,GAP)將特征圖壓縮到通道維度,再使用全連接層計算每個通道的權重。Qin等人[12]證明了GAP是離散余弦變換(discrete cosine transform,DCT)的最低頻率分量,指出僅使用GAP作為通道注意力的降維方式會造成大量語義丟失,并且提出了一種多頻譜通道注意力(multi-spectral channel attention,MSCA)。MSCA 不僅使用了GAP 所含有的信息,也使用了其他頻域的信息,MSCA 模塊與SE 模塊的具體對比如圖2所示。首先,將輸入X沿著通道維度平均劃分成n塊,記為[x0,x1,…,xn-1]。然后為每個塊分配二維DCT分量,具體計算如式(1)所示:

圖2 模塊對比示意圖Fig.2 Module comparison diagram
這里,DCTi表示xi對應的頻率分量,Concat 表示按通道維度拼接,F表示全連接層,Xout表示輸入X經過MSCA模塊的輸出。
目前對注意力機制的研究主要從通道、空間和頻域三個方向開展。SE注意力僅考慮了在通道維度對輸入信息進行建模得到注意力權重。MSCA 注意力雖然同時考慮了通道與頻域兩個維度的建模信息,但沒有利用空間維度的信息,在一定程度上會丟失空間信息。為解決該問題,本文將空間維度融入MSCA 中,有效增強注意力模塊捕獲上下文以及空間信息的能力。MSCA 可以看作SE 通道注意力的變體,因此本文借鑒CBAM(convolutional block attention module)[13]模塊的思想將空間維度融入MSCA中得到新的注意力模塊MSCBAM(multi-spectral convolutional block attention module),其結構如圖3所示。

圖3 MSCBAM結構圖Fig.3 MSCBAM structure diagram
輸入的特征圖向量進入MACBAM模塊中,先通過MSCA模塊得到通道注意力權重FC,具體運算如式(2)所示:
經過MSCA 模塊后的特征圖向量進入空間注意力模塊得到空間注意力權重FS,具體計算如式(3)所示:
對于輸入張量X∈RC×H×W,C、H、W分別代表通道數、寬以及高度,式(2)中δ表示Sigmoid非線性激活,MLP 表示全連接層操作,DCT 表示選取二維DCT 分量,式(3)中Conv 表示空間注意力中的卷積操作。AvgPool 和MaxPool 分別代表平均池化和最大池化操作。
YOLOv4-tiny 的特征融合網絡使用的是自底向上的FPN,為充分利用多級特征圖所蘊含的語義信息,可以將FPN替換為更加有效的融合方式。YOLOv4中的特征融合方式為路徑聚合網絡(path aggregation network,PAN),YOLOv5中使用的是CSP-PAN,但直接將PAN或者CSP-PAN 引入YOLOv4-tiny 中會使得網絡參數大幅度上升,模型檢測速度顯著降低。
為此,在PAN 的基礎上,本文設計了一種輕量級的特征融合網絡Shuffle-PAN,在不顯著增加網絡參數量的條件下,實現了更加有效的特征融合。特征融合模塊中,在將相鄰特征圖按通道維度融合之后,容易造成語義混疊,不利于網絡學習,因此在特征融合操作之后需要使用卷積進行特征的重提取。這一部分在YOLOv4中采用的是五次卷積,YOLOv5 中采用的是CSP(cross stage partial)模塊。本文采用的是由Shuffle卷積[14]構建的Shuffle Unit,具體結構如圖4 所示。Shuffle-PAN 在相鄰尺度的特征圖拼接之后使用Shuffle Unit進行信息融合。表1 展示了Shuffle-PAN 與其他特征融合網絡的參數量對比,可以看到為YOLOv4 這種大模型設計的PAN直接引入輕量級模型中,參數量會顯著增加。而本文設計的Shuffle-PAN 模塊增加的參數量是最小的,適合用在輕量級模型中。

圖4 Shuffle Unit結構圖Fig.4 Shuffle Unit structure diagram

表1 特征融合模塊對比Table 1 Feature fusion module comparison
傳統的YOLO Head 采取的都是耦合頭部(coupled head),即在網絡的輸出端采用同一個卷積完成分類與定位的任務。文獻[15-16]指出,在目標檢測任務中,分類和回歸任務之間是存在沖突的,采用耦合頭進行分類與回歸任務很可能會降低模型的性能。YOLOX算法首次將解耦頭應用于YOLO 算法中,并取得了顯著的成效。為此,本文用解耦頭(decoupled head,DCHead)替換YOLOv4-tiny模型中的原耦合頭,以緩解這種沖突的負面影響。圖5 展示了耦合頭與解耦頭的區別。解耦的預測頭先使用1×1 卷積將特征融合網絡輸出的P3、P4、P5 三個不同維度的特征圖都映射成統一的通道數。隨后再使用兩個并行分支,每個分支增加了兩個3×3 的卷積層分別用于分類與回歸任務。這樣就將兩個任務解耦合了,避免了兩個任務之間的不協調性。為避免參數增加過多,每個分支增加的3×3卷積采用的是深度可分離卷積。

圖5 耦合頭與解耦頭的區別Fig.5 Difference between coupled head and decoupled head
YOLOv4-tiny 算法雖然是目前主流的輕量級目標檢測算法,但是仍然存在不足之處。同時為了方便使用大規模數據集上的預訓練模型權值進行遷移學習,只對網絡的融合部分以及預測頭部分進行改進。
具體做法為,在增加檢測小物體尺度的基礎上,結合前面章節所提出的模塊,對YOLOv4-tiny算法進行增強,將得到的算法命名為HM-YOLO。HM-YOLO 網絡結構如圖6 所示,HM-YOLO 在19×19、38×38、76×76 三個不同尺度的特征圖上進行目標物體預測。特征融合部分使用了第2.2 節提出的Shuffle-PAN 模塊,并將第2.3 節提出的優化的注意力模塊融入網絡中,使網絡能更好地捕獲輸入圖像的目標區域。同時,對YOLO Head 部分進行了重構,原YOLOv4-tiny 算法在Head 部分使用一個3×3卷積和1×1卷積這種耦合的預測頭,并且3×3 卷積對應的輸出通道數為512,大于輸入通道數。本文認為對于安全帽檢測這種只有兩類檢測對象的任務,在Head 部分使用通道數上升的3×3 卷積是沒有必要的,會產生冗余參數。因此將預測頭部分替換為深度可分離卷積搭建的解耦頭,在預測頭的輸入端利用1×1 卷積將輸入通道數統一調整為128,隨后使用解耦頭的兩個并行分支進行分類與回歸任務,降低模型參數量的同時,也加強了模型的預測性能。

圖6 HM-YOLO結構圖Fig.6 HM-YOLO structure diagram
在安全帽佩戴檢測方面,公開的數據集有SHWD(safety helmet wearing datasets)。SHWD 數據集樣本分為兩類“hat”和“person”,表示目標是否佩戴安全帽。但是SHWD數據集中未佩戴安全帽的圖像有相當一部分來自SCUT-HEAD[17]數據集,該數據集是一個人頭檢測的數據集,其中的圖像來源于教室場景下的監控數據,不適合作為安全帽檢測任務的負樣本。為此剔除了SHWD數據集中這些不合理的圖像,并且補充了工地場景下正樣本的數量,最終得到的數據集有6 538張圖片,以8∶2 的比例劃分訓練集和測試集。數據集標注情況如表2 所示,其中包含佩戴安全帽的對象11 780 個,未佩戴安全帽的對象45 218個,共56 998個標注對象。

表2 數據集標注數量Table 2 Number of annotations in dataset
采用COCO數據集標準按照目標大小進行分類,各類目標數量如表3所示。可以看到,在訓練集和測試集中小目標的數量均是最多的,分別占據了總目標數量的41.0%、43.4%。

表3 數據集中目標數量Table 3 Number of object in dataset
3.2.1 實驗設置
訓練安全帽數據集時,網絡輸入的圖片大小固定為608×608,采用隨機水平翻轉和亮度調節進行實時數據增強,增加樣本多樣性,防止模型過擬合。選用Adam優化器,權重衰減設置為5E-4。批處理大小為8,訓練時加載YOLOv4-tiny 的COCO 預訓練權重以加快模型收斂,初始學習率為5E-4,學習率衰減比例為0.94。本文所有實驗均在同一環境下進行,操作系統為Windows10,CPU 型號為Intel?CoreTMi5-9400 CPU@2.90 GHz,GPU 型號為NVIDIA GeForce GTX 1660Ti,顯存大小為6 GB,內存大小為16 GB。模型基于Pytorch1.7.1 框架,使用cuDNN進行加速訓練。
3.2.2 評價指標
為了評估算法性能,本文采用mAP、FPS 和模型參數量三個指標評價模型的精度、速度以及大小。mAP是由所有類別的平均精度(AP)取均值得到的,而每個類別的AP 是指不同召回率下精確度的平均值。AP 計算如式(5)所示,mAP 計算如式(6)所示,FPS 計算如式(7)所示。
其中,TP表示檢測結果為正的正樣本,FP表示檢測結果為正的負樣本,r表示所有召回率的可能取值,SUM表示總類別數。
其中,fn表示檢測的圖片總數,T表示所用的總時間。
3.2.3 實驗結果與分析
對HM-YOLO 和YOLOv4-tiny 算法在測試集上的準確率與召回率進行評價,繪制P-R曲線如圖7所示。

圖7 兩種算法的P-R曲線Fig.7 P-R curves of two algorithms
為了驗證HM-YOLO的有效性,將HM-YOLO算法與主流的RFBNet、YOLOv4-tiny、MobileNetv3-YOLOv4、Ghost-YOLOv5s以及最新的YOLOX-s等通用改進模型進行對比。同時選取安全帽檢測問題的研究工作[18-19],根據文獻中所提的改進點搭建了改進的模型,并與本文模型進行了對比,表4 展示了各算法的性能對比結果。由表4中可以看出,與主流檢測器RFBNet、YOLOv4-tiny、MobileNetv3-YOLOv4、Ghost-YOLOv5s相比,HM-YOLO算法的平均檢測精度分別提升了13.45個百分點、14.20個百分點、7.2 個百分點、2.68 個百分點;與最新的單階段檢測器YOLOX-s相比,平均精度略低,但是在未規范佩戴安全帽的類別上,HM-YOLO算法的結果取得了比YOLOX-s 更高的精度。與文獻[18-19]相比,佩戴安全帽類別精度略低,但是未佩戴安全帽的類別取得了最高精度。這說明了HM-YOLO 算法在檢測精度上達到了現有算法的先進水平。

表4 主流算法性能對比Table 4 Performance comparison of mainstream algorithms
同時模型檢測速度與模型大小也是非常重要的指標,決定了模型能否很好地應用于實際場景下。可以看到HM-YOLO算法的檢測速度與表4中各算法相比,僅次于最快的YOLOv4-tiny,而相較于其他算法均有較大的提升。與YOLOv4-tiny相比,雖然速度下降了12 FPS,但是仍然滿足大多數工業場景下實時性的要求。同時HM-YOLO模型參數量最少,僅為YOLOX-s、文獻[18]、文獻[19]的53%、67%、66%,對于部署在空間有限的邊緣設備上更加友好。
3.2.4 改進過程的對比實驗
本文通過消融實驗驗證所提各方法的有效性,具體結果如表5 所示。可以看到,YOLOv4-tiny 在增加了76×76 的檢測尺度P3 后,檢測精度顯著提升。分析認為,這是由于安全帽數據集中含有較多的小目標,僅在19×19、38×38 兩個尺度上進行預測會導致模型易忽略小目標,增加了76×76尺度的P3后,模型對小目標檢測能力顯著提升,能更好地完成安全帽佩戴檢測任務。同時將模型預測頭替換為更加輕量級的DCHead,模型參數量有了顯著的降低。并將模型特征融合部分替換為Shuffle-PAN 且融入MSCBAM 注意力模塊后得到HM-YOLO 算法,模型平均精度達到92.82%,在精度方面僅比YOLOX-s相差不到1個百分點。

表5 消融實驗Table 5 Ablation experiments
為了驗證改進后的注意力模塊的有效性,本文做了一組注意力模塊的橫向對比實驗。以引入了解耦頭和輕量級特征融合模塊的模型為基礎模型,分別融入SE、CBAM、MSCA 與MSCBAM 在安全帽數據集上進行實驗對比。從表6中可以看到,融入不同注意力均能提升模型精度,而同時利用通道頻率信息與空間信息的MSCBAM 模塊取得了最佳精度,充分驗證了該注意力模塊在安全帽檢測任務中的有效性。
為了更直觀地感受HM-YOLO算法的效果,選取了幾張密集場景和光照欠佳等復雜場景的圖片進行檢測效果對比,檢測結果如圖8 和圖9 所示??梢钥吹?,HM-YOLO算法在密集遮擋場景下能檢測出更多目標,具有更高的召回率。且在光線不好的情況下,HM-YOLO算法對物體的檢測置信度均高于YOLOv4-tiny 算法。說明本文提出的HM-YOLO 算法在精度和穩定性方面都超過了原算法。

圖8 HM-YOLO檢測結果Fig.8 HM-YOLO test results

圖9 YOLOv4-tiny檢測結果Fig.9 YOLOv4-tiny test results
為了定量分析HM-YOLO在復雜場景下的性能,從測試集數據中選取了100 張復雜場景下的圖片進行mAP 評估,評估結果如表7 所示??梢钥吹?,在復雜場景下,各算法精度與整個測試集精度相比,均有所下降。其中HM-YOLO、YOLOX-s 算法在復雜場景下精度下降最少,分別只下降了0.50 個百分點、0.44 個百分點,說明模型的魯棒性更好,能更好地應對復雜環境下的檢測任務。

表7 復雜場景精度對比Table 7 Performance comparison in complex background
本文針對安全帽佩戴檢測任務,使用YOLOv4-tiny模型作為基準,增加檢測小目標的尺度,解決小目標丟失過多問題;將本文所提的輕量級特征融合模型與注意力模塊融入YOLOv4-tiny 中,增強模型的學習能力;并將預測頭解耦,緩解分類與回歸任務之間的沖突,得到輕量級HM-YOLO模型。實驗表明,HM-YOLO算法能較好地完成安全帽佩戴檢測任務,檢測mAP達92.82%,檢測速度達63 FPS,且模型參數量僅為4.79×106,更加適用于資源有限的邊緣設備和移動設備。
目前訓練模型仍然需要大量的標注樣本,在很多情況下,對大量樣本進行標注是費時費力的。因此,下一步工作是研究半監督學習,通過少量標注樣本達到較好的訓練效果。