沈希忠,戚 成
(上海應用技術大學 電氣與電子工程學院,上海 201418)
在建筑工地的安全生產規范中,不允許未佩戴安全帽的情況下進入施工現場。佩戴安全帽可以有效地降低安全事故發生后因墜落、物體墜擊對頭部造成的損傷,可以最大限度地保護施工人員的生命安全[1]。在大多數施工場地,往往采用人工監督的方法判斷是否佩戴安全帽[2],然而依賴人力監管的方式存在耗時長、效率低等諸多不利因素,遠達不到現代施工安全管理的要求,而采用計算機視覺的方法可以對現場安全監管進行有效部署。當前的目標檢測的方法主要分為兩類:基于傳統圖像處理的目標檢測方法和基于深度學習的目標檢測算法。傳統的圖像檢測算法通過搜索目標圖像的特征從而得到檢測結果,如Rubaiyat等[3]首先利用梯度方向直方圖(Histogram of oriented gradient,HOG)搜索圖像中工人的位置,然后使用顏色和圓環霍夫變換(Circle hough transform,CHT)來檢測安全帽的佩戴情況;劉曉慧等[4]采用膚色檢測的方法定位到人臉區域,以此獲得臉部以上的區域圖像,利用圖像矩(Hu mome nts,Hu矩)檢測安全帽的佩戴情況。傳統的目標檢測算法雖然取得了一定的效果,但是在高復雜度、強干擾的施工環境下,基于傳統特征提取算法的安全帽檢測表現效果較差,無法在實際的檢測中保證檢測的精度和實時性。隨著深度學習的快速發展,卷積神經網絡成為目標檢測新的研究方向。現階段的目標檢測算法有兩類:雙階段檢測算法和單階段檢測算法。雙階段檢測算法主要是以RCNN[5],FastR-CNN[6],FasterR-CNN[7]為代表的基于候選區域的目標檢測算法;單階段檢測算法是以YOLO[8]系列、SSD[9]為代表的基于回歸分析的目標檢測算法。蔣潤熙等[10]以YOLOV5為基礎,基于Inverted resblock結構對主干網絡進行了重構,并對BN層進行稀疏訓練實現了安全帽的快速檢測。趙紅成等[11]針對數據集類別不平衡以及模型推理時間長這兩個問題,設計了混合場景數據增強方法,采用MobileNetV2替換YOLOv5s主干網絡,并對BN層進行剪枝,實現了安全帽的快速檢測。徐先峰等[12]使用MobileNet對SSD算法進行改進,并采用遷移學習策略克服模型訓練困難問題,相較于原算法檢測速率有所提升。
在實際的工程作業環境中,不但要求網絡有較好的檢測精度,而且對于模型的運行速度、檢測的實時性都有著較高的要求。現有的卷積神經網絡存在著參數量過多、模型運行速度慢以及對不同場景的泛化能力差等問題,不利于實際的應用部署。針對上述問題,筆者提出一種基于改進的YOLOX的安全帽佩戴檢測算法,通過實驗證明筆者算法可以準確、高效地檢測各種場景下的安全帽佩戴情況,具有較好的實時性和魯棒性。
許凱等[1]提出的改進YOLOV3的安全帽佩戴識別算法,主要針對檢測精度對網絡進行改進,通過增加一個尺度的有效特征層、重新聚類先驗錨框以及改進損失函數對網絡加以優化,以實現對安全帽目標更好的檢測,然而這樣的改動導致模型的結構變得復雜,檢測速率降低。筆者所提出的改進的YOLOX安全帽佩戴檢測算法,對YOLOX的主干網絡進行輕量化處理以及對特征融合網絡進行加強,不僅提高了網絡對小目標的檢測能力,而且減少了模型參數。
YOLOV3算法由主干網絡Darknet53、特征提取網絡FPN以及Coupled head所組成。YOLOX算法由主干網絡CSPDarknet、特征提取網絡PANet以及Decoupled head構成。兩者的區別在于:1)YOLOV3的主干網絡Darknet53由ResNe(X)t結構所組成,而YOLOX的主干網絡使用了CSPResNe(X)t結構,兩者結構如圖1所示。CSPResNe(X)t相較于ResNe(X)t增加了一個大的殘差邊,這一做法可以分割梯度流,使梯度流通過不同的網絡路徑傳播,通過切換串聯和過渡步驟,傳播的梯度信息可以具有較大的相關性差異,從而增強網絡的學習能力、實現更豐富的梯度組合以及減少計算量。2)YOLOV3的特征提取網絡FPN和YOLOX的PANet結構如圖2所示,圖2(a)中的FPN是自頂向下的路線,通過側向連接,將高層的強語言特征傳遞下來,只增強了特征金字塔的語義信息。例如,當底層特征到P5時,中間經過非常多層的網絡,此時底層的目標信息已經非常模糊,因此PANet對FPN進行了擴展,如圖2(b)所示,加入了自底向上的路線,彌補并加強了定位信息。3)Coupled head和Decoupled head結構如圖3所示,Coupled head雖然將分類和回歸通過一個卷積操作來實現,但是分類和回歸的特征不太相同,分類更加關注所提取的特征與已有類別哪一類最為接近,而回歸則更多是一些輪廓邊界特征。如果將兩者放在一起反向傳播可能會導致網絡收斂速度變慢,精度降低。Decoupled head將分類和回歸分開進行,可以避免Coupled head所造成的問題。綜上,YOLOX算法的性能優于YOLOV3,因此選擇YOLOX進行改進。

圖1 ResNe(X)t和CSPResNe(X)t結構圖

圖2 FPN和PANet結構圖

圖3 Coupledhead和Decouplehead結構圖
采用改進的YOLOX目標檢測算法對建筑工人安全帽的佩戴情況進行檢測,將YOLOX的主干特征提取網絡(Backbone)替換為輕量級的GhostNet[13],達到減少網絡模型參數以降低計算量加快檢測速度的效果。對PANet[14]特征融合網絡(Neck)進行尺度以及融合方式兩方面的加強,將特征融合網絡的有效特征輸入擴展為160×160,80×80,40×40,20×20這4個尺度,增強對特征圖淺層信息的利用,并在原2倍上采樣的基礎上增加4倍上采樣的間隔融合結構,進一步實現淺層信息和深層信息的融合,減少卷積過程中安全帽信息的特征丟失。改進后的YOLOX網絡如圖4所示。

圖4 改進的YOLOX網絡結構圖
為了實現網絡的輕量化部署,需要減少網絡的計算量和參數量,選擇性能較好的輕量化網絡GhostNet替換原YOLOX的CSPDarknet主干特征提取網絡。
YOLOX的CSPDarknet主干特征提取網絡主要是由跨階段局部網絡結構(Cross stage partial,CSP)[15]組成,并在CSP1結構中包含了殘差單元,CSP1以及殘差單元結構如圖5所示。這些殘差單元由兩部分組成:主干部分是一次1×1的常規卷積和一次3×3的常規卷積;殘差邊部分不做任何處理,直接與主干部分的輸出相結合得到最后的輸出。殘差網絡的特點是容易優化,并且能夠通過增加相當的深度來提高準確率,其內部的殘差單元使用了跳躍連接,緩解了在深度神經網絡中增加深度帶來的梯度消失問題。整個CSPDarknet包含了幾十個這樣的殘差單元,而太多的卷積操作會導致網絡參數量龐大、計算度復雜。鑒于此問題,首先將殘差單元中的常規卷積替換為計算量少的Ghost模塊,組合成Ghost bottleneck殘差結構,然后再進行下一步的堆疊得到GhostNet網絡,利用較少的參數生成與普通卷積相同數量的特征圖。這樣既減少了參數量加快模型運行速度,又保留了殘差模塊容易優化、可以緩解梯度消失的優點,可以很好地對主干特征提取網絡進行性能的優化。

圖5 CSP1以及殘差單元結構圖
通過殘差網絡生成的特征圖一般都有豐富甚至冗余的特征圖信息來保證對輸入的理解,Ghost模塊的功能就是代替其中的普通卷積,將相似的特征圖看作彼此的ghost,并提出可以使用一些計算量更低的操作去生成這些冗余的特征圖,這樣可以保證在良好檢測效果的情況下,減少模型的參數量且提高模型的執行速度。圖6(b)所示Ghost模塊將普通卷積分為3部分,首先使用一個1×1的少量常規卷積操作對特征圖進行特征整合,生成輸入特征層的特征濃縮;然后使用深度可分離卷積(Depthwise seperable conv)或者其他的一些線性操作進行逐層卷積,利用上一步獲得的特征濃縮生成Ghost特征圖;最后將特征濃縮層和Ghost特征層拼接得到完整的輸出特征層,這樣就可以在保證良好檢測效果的情況下,減少模型的參數量與提高模型的執行速度。

圖6 常規卷積和Ghost模塊結構對比圖
當輸入特征圖的尺寸為c×h×w,常規卷積的輸出尺寸為h′×w′×n,卷積核大小為c×k×k×n;Ghost模塊的原始卷積輸出特征圖尺寸為h′×w′×m,使用的卷積核為c×k×k×m,線性操作后產生的Ghost特征維數為s。假設Ghost模塊包含1個identity mapping和個線性操作,每個線性操作的核大小為d×d。則
常規卷積的計算量為
F1=n×h′×w′×c×k2
(1)
常規卷積的參數量為
P1=n×c×k2
(2)
Ghost模塊的計算量為
(3)
Ghost模塊的參數量為
(4)
將兩者的計算量和參數量分別進行比值計算,則
(5)
(6)
通過式(5,6)可以明顯地看出:當輸入特征圖的尺寸相同時,Ghost模塊的參數量和計算量都比普通殘差結構中的常規卷積更低,理論上可以達到更快的模型推理速度。
Ghost bottlenecks是由Ghost模塊組成的殘差結構,其本質上就是用Ghost模塊代替殘差結構里面的常規卷積。Ghost bottlenecks可以分為兩個部分,分別是主干部分和殘差邊部分。Ghost bottlenecks有兩類,如圖7所示,當需要對特征層的寬高進行壓縮時,設置Ghost bottlenecks的Stride=2,即步長為2。此時會在Bottlenecks里面多添加一些卷積層,在主干部分里,在兩個Ghost模塊中添加一個步長為2×2的深度可分離卷積進行特征層的寬高壓縮。在殘差邊部分,也會添加上一個步長為2×2的深度可分離卷積和1×1的普通卷積。

圖7 Ghost bottlenecks結構圖
GhostNet由Ghostbottlenecks堆疊而成,其構建方式如表1所示。當輸入特征圖尺寸為640×640×3時,首先進行一個16通道的普通1×1卷積塊(卷積+標準化+激活函數),開始Ghostbottlenecks的堆疊,利用Ghostbottlenecks,得到一個20×20×160的特征層;其次利用1×1的卷積塊進行通道數的調整,獲得20×20×960的特征層,將這些特征層平均全局池化;再次利用一個1×1的卷積塊進行通道數的調整,得到一個1×1×1 280的特征層;最后平鋪進行全連接進行分類。

表1 GhostNet網絡結構
原YOLOX采用3個不同尺度的特征圖進行特征融合,在輸入圖片尺寸為640×640的情況下將主干網絡獲得的20×20、40×40以及80×80這3種尺寸的特征圖作為特征融合網絡的有效特征層,將20×20的特征層2倍上采樣和40×40的特征層融合,再將融合后的40×40的特征層經過2倍上采樣與80×80的特征層進行特征融合,隨后將80×80特征層經過兩次下采樣、兩次特征融合獲得3個尺度的輸出層。
所檢測的安全帽目標體積較小,且在實際的工程環境中,施工人員可能距離檢測設備較遠以及存在遮擋等情況。在通過網絡的多次卷積操作之后安全帽的特征信息會存在局部丟失,導致檢測效果不佳。
為解決上述問題,在原PANet的基礎上增加160×160的低維有效特征層,提高網絡對特征圖淺層信息的泛化能力。原特征融合網絡采用2倍上采樣的遞進融合結構,不能很好地將深層信息和淺層信息融合,在2倍上采樣的基礎上增加了4倍上采樣的間隔融合結構,能夠有效地融合不同維度的特征信息,同時可以緩解卷積操作所帶來的安全帽區域的特征丟失。用深度可分離卷積(Depthwise seperable conv)替代常規卷積,減少模型參數,保證網絡的輕量化。
改進后的多尺度特征融合網絡結構如圖8所示,將原網絡的3個有效特征輸入擴展為4個尺度。當輸入圖片為640×640時,P2,P3,P4,P5所對應的有效特征層尺寸為160×160,80×80,40×40和20×20。在原PANet的基礎上增加4倍上采樣的間隔融合結構,主要改進為將最底層的20×20有效特征層經過4倍上采樣與兩次2倍上采樣后的80×80特征層進行間隔融合;將40×40有效特征層經過4倍上采樣與兩次2倍上采樣后的160×160特征層進行間隔融合,后續的下采樣融合結構與原網絡保持一致。

圖8 多尺度特征融合網絡結構
原YOLOX算法主要在COCO數據集上進行驗證,而這些數據大部分需要檢測的目標都比較大,改進后的算法充分利用了目標不同尺度的特征信息,提高網絡對淺層信息的感知能力。安全帽佩戴在施工人員的頭部位置,檢測目標較小,針對特征融合網絡的改進可以加強算法對小目標的檢測能力。
實驗環境為:win10操作系統,Intel Corei5-11400 CPU,32 G運行內存,NVIDIA GeForce RTX 3060 GPU,CUDA11.0,CUDNN8.0,所用的深度學習框架為Pytorch。
實驗所用數據集圖片主要來源于開源數據集、施工現場監控視頻采集圖像以及網絡爬蟲獲取。數據集包含了不同施工場景下的不同作業環境、不同清晰度、有無遮擋等條件下的施工人員佩戴安全帽和未佩戴兩類圖片,且在數據集中加入佩戴棒球帽、佩戴警帽、手持安全帽等的干擾圖片,防止圖片類別單一,增加模型的泛化能力。數據集樣本如圖9所示。

圖9 安全帽樣本示例
最終整理得到的數據集共9 000張,將圖片統一編號后,采用Labelimg標注工具對數據集進行標注,將數據集標注為VOC格式,生成xml標注文件。數據統一清洗為hat和person兩類,按照9∶1的比例將數據集劃分為訓練集和測試集。
為檢測改進后的YOLOX算法的性能,采用平均準確率(Average precision,AP)、平均準確率均值(Mean average precision,MAP)、每秒檢測幀數(Frames per second,FPS)以及模型大小等指標對算法性能進行評估。
準確率(Precision):被正確檢測的正樣本占所有檢出(預測為正樣本)樣本的百分比,即
(7)
召回率(Recall):被正確檢測的正樣本占所有正樣本(Ground truth)的比例,即
(8)
AP為預測樣本的準確率均值,精確率—召回率曲線(Precision-recall curve)下的面積,即
(9)
MAP為對每個類別的AP求平均,即
(10)
式中:TP(True positive)表示將正樣本預測為正,即正確檢測佩戴安全帽人員;FP(False positive)表示將負樣本預測為正,即未佩戴安全帽人員被檢測未佩戴;FN(False negative)表示將正樣本預測未負,即佩戴安全帽人員被檢測為未佩戴。
實驗所傳入的圖片大小設置為640×640,格式為JPG,batch_size和學習率分別設置為8和0.001。采用Mosaic數據增強對圖片進行拼接處理,增加背景復雜度以獲得多尺度的檢測目標,實驗設置為在前80%個epoch使用Mosaic,避免因其大量crop操作帶來的不準確的標注框而對實驗結果產生負面的影響。使用余弦退火學習率在網絡訓練時對學習率進行微調。
為得到每個改進點所帶來的不同的效果,設置消融實驗來進行對比觀察,實驗結果如表2所示。表2中:改進1為主干特征提取網絡改進;改進2為特征融合網絡改進;FPS(Frames per second)為每秒傳輸幀數。由表2中可以看出:采用GhostNet替換原CSPDarknet主干特征提取網絡雖然可以有效提升模型檢測的速度,但是平均精度降低了5.9%;特征融合網絡的改進雖然使得檢測的平均精度提高了3.5%,但是檢測速率降低。結合上述改進得到筆者提出的算法,相較于原YOLOX網絡,在平均精度基本不變的情況下,提升了網絡的檢測速度,可進行實時高效的安全帽佩戴檢測。

表2 消融實驗結果
將筆者提出的算法與YOLOX,YOLOX-tiny,YOLOv4,YOLOv4-Mobilenet等YOLO系列算法在相同實驗環境下使用相同數據集進行對比實驗,其中YOLOX-tiny,YOLOv4-Mobilenet都是輕量級網絡,YOLOX是筆者所改進的原始算法。統計各算法的平均準確率AP、平均準確率均值MAP、FPS和模型大小等指標,對各類算法的檢測效果進行對比分析,各算法檢測結果如表3所示。由表3可以看出:相較于YOLOX,筆者算法和YOLOX都表現較高的檢測精度。筆者算法在AP和MAP上基本保持不變,MAP僅僅下降了0.4個百分點,而在模型的輕量級評價指標方面,參數量、模型大小僅為YOLOX的1/5。在檢測速度方面,筆者算法比YOLOX快23.9 ms。與YOLOv4相比,筆者算法在檢測精度和檢測速度上都有一定提升。與YOLOX-tiny,YOLOv4-Mobilenet這兩個輕量級網絡相比,筆者算法的MAP分別提升了10.9%和7.9%,檢測速度上筆者算法比YOLOv4-Mobilenet快2.8 ms。筆者算法在不犧牲檢測精度的情況下,對網絡進行輕量化處理,相較于所對比的輕量化網絡,可以達到準確且快速的檢測效果。

表3 不同檢測算法結果對比
為了更加直觀地體現出不同算法之間的性能區別,選取YOLOX、YOLOX-tiny以及筆者算法在測試集上的部分檢測結果進行對比說明,檢測結果如圖10所示,其中佩戴安全帽的人員識別為“hat”,未佩戴安全帽的人員識別為“person”,從左向右第1列到第3列分別為YOLOX、YOLOX-tiny和筆者算法的檢測結果。圖10(a)為施工環境鋼筋遮擋情況下的目標檢測,觀察可以看出YOLOX-tiny在遮擋部分存在兩處漏檢,而YOLOX和筆者算法全部檢出;圖10(b)為遠距離小目標情況下的檢測,可看出YOLOX-tiny只檢出一處人員,YOLOX有兩處漏檢,而筆者算法針對特征融合網絡進行改進,加強了算法對小目標的檢測能力,使得在這一情況下表現良好,全部檢出;圖10(c)為昏暗模糊場景下的檢測,對比可知,YOLOX和筆者算法沒有漏檢、誤檢的情況,而YOLOX-tiny存在兩處誤檢;圖10(d)為人員密集情況下的安全帽佩戴檢測,可以明顯看出YOLOX-tiny存在多處漏檢,而筆者算法和YOLOX全部檢出,筆者算法僅存在一處誤檢。由上述對比實驗以及結果分析可知:筆者算法在輕量化的同時,能夠保持在各種復雜場景下的良好檢測效果。
為解決實際工作環境下安全帽佩戴檢測速率低、實時性差以及精確度不高等問題,提出了一種基于改進YOLOX的輕量級安全帽佩戴檢測方法。在YOLOX網絡的基礎上,采用GhostNet替代原網絡的CSPDarknet主干特征提取網絡,對網絡進行輕量化處理,大幅提升模型的檢測速度,改進特征融合網絡網絡,采用4個尺度的有效特征層進行特征融合,對特征圖的淺層信息進行充分利用,提高對小目標的檢測能力。經對比實驗分析,筆者算法在不同場景下檢測效果良好,在保證檢測精度的情況下,檢測速率相較于原網絡提升了52.4%;相較于YOLOX-tiny等輕量級網絡,檢測速率基本持平,檢測精度獲得大幅提升。后續將進一步研究如何減小網絡參數,提升在移動端的推理速度。