雷源毅, 朱文球, 廖 歡
(湖南工業(yè)大學計算機學院, 湖南 株洲 412007)
由于建筑行業(yè)施工環(huán)境復雜,高空物體墜落的傷害風險高,因此要求工人在施工現(xiàn)場佩戴安全帽,最大限度地降低工人被墜落物體傷害的風險,保護工人的生命安全。目前,用于工地經典的目標檢測算法分為兩種,即一階段目標檢測算法和兩階段目標檢測算法。一階段目標檢測算法包括YOLO系列算法[1]、SSD(單激發(fā)多框檢測)算法[2]等。兩階段目標檢測算法包括R-CNN[3](基于區(qū)域的卷積神經網(wǎng)絡)、Faster R-CNN[4]、Mask R-CNN等。YOLO系列算法是目前為止發(fā)展最快、最好的算法,尤其是2023年發(fā)布的最新的YOLOv8算法,達到了目前為止最高的檢測準確率。然而,YOLO雖然檢測全尺寸的目標效果較好,但是當目標為具有不同尺寸的特殊場景時,其性能不如當前的一些小尺寸目標檢測算法。工地安全帽目標的尺寸較小,使得檢測器很難準確、全面地提取其特征,并且當前各種算法對小物體的檢測準確率普遍較低。
安全帽圖像具有目標分布密集、目標尺度變化大及背景復雜等特點,給安全帽佩戴檢測帶來了很大的難度。孫國棟等[5]通過在Faster R-CNN中添加自注意力機制獲取多尺度的全局信息,強化網(wǎng)絡對小目標的表達信息,但該方法的檢測速度較低。許凱等[6]使用參數(shù)量較少的輕量化模型YOLOv3-tiny,采用增加網(wǎng)絡層數(shù)、添加注意力機制到特征金字塔中的方法,減少噪音等冗余信息對安全帽檢測結果的影響,但在密集情況下,出現(xiàn)較多漏檢情況。杜曉剛等[7]在YOLOv5的基礎上選擇性能更好的Swin Transformer作為主干網(wǎng)絡,提取更深層次的語義信息,捕獲更多的安全帽細節(jié)特征,但在顏色相同情況下存在誤檢問題。趙敏等[8]通過在YOLOv7-tiny的基礎上設計參數(shù)量更少的tiny-BiFPN結構,作為原模型特征融合模塊中的特征金字塔結構,增強模型多尺度特征融合,但在反光情況下漏檢較多。上述改進算法的檢測精度仍不夠準確,背景特征提取也不夠豐富,未能很好地解決建筑工地中小目標密集、安全帽和背部同色等場景下的漏檢、誤檢問題。針對這些問題,提出一種改進的RDCA-YOLO方法,該方法能夠提高建筑工地復雜場景中小目標的檢測精度,對正常尺度目標的檢測精度也有較大的提高,實現(xiàn)了工地工人安全帽佩戴的自動化檢測。
Ultralytics于2023年發(fā)布了YOLOv8算法,與之前的網(wǎng)絡相比,YOLOv8在減少網(wǎng)絡參數(shù)量的同時,提高了檢測精度和實時性。針對建筑工地實際場景,選擇一個輕量版本的YOLOv8n作為基礎網(wǎng)絡進行改進。YOLOv8的特點在于融合了許多實時目標檢測中優(yōu)異的技術,仍然采用了YOLOv5中的CSP(跨階段局部網(wǎng)絡)思想、特征融合方法(PAN-FPN)和SPPF模塊;其主要改進如下:(1)提供了全新的基準模型,包括分辨率為640×640的P5和分辨率為1 280×1 280的P6目標檢測網(wǎng)絡。為了滿足不同項目的需求,還基于與YOLOv5相似的比例系數(shù)設計了不同比例的模型。(2)在保留YOLOv5原有思想的前提下,參考YOLOv7中的ELAN(高效層聚合網(wǎng)絡)結構設計了C2f(跨階段局域網(wǎng)絡卷積塊)模塊。(3)檢測頭部分也采用了目前流行的方法,將分類頭和檢測頭分開,其他大部分仍然是基于YOLOv5的思想。(4)分類損失使用BCE損失(多標簽分類任務的損失函數(shù)),回歸損失的形式為CIoU損失函數(shù)。與以往的YOLO算法相比,YOLOv8具有很強的擴展性。
在YOLOv8n算法的基礎上,建立了一個RDCA-YOLO復雜建筑工地情況下的安全帽檢測模型。通過改進Backbone主干結構,在網(wǎng)絡中嵌入CBAM注意力機制,提出一種Coord-BiFPN結構,增強網(wǎng)絡的特征融合能力,設計了一種OD-C2f結構代替head中的C2f組件,提出一種新的FR-DyHead檢測頭替換原始的Detect結構,其網(wǎng)絡結構如圖1所示,該方法可以適應建筑工地復雜場景,并獲得了更好的安全帽檢測精度。
圖1 RDCA-YOLO網(wǎng)絡結構圖Fig.1 Diagram of RDCA-YOLO network structure
原始網(wǎng)絡中的主干網(wǎng)絡較為復雜,提取信息的能力較低,因此模型通過ResNet-18[9]網(wǎng)絡改進原有的Backbone結構,該網(wǎng)絡由一個卷積層和八個殘差塊組成,能夠大幅度提高模型的特征提取能力,殘差塊是組成網(wǎng)絡的基本結構,輸出如公式(1)所示:
y=F(x)+x
(1)
其中:F(·)表示殘差函數(shù),x和y分別表示輸入和輸出。網(wǎng)絡由17個卷積層、一個濾波器大小為3×3的最大池化層(max pooling)和一個全連接層組成。傳統(tǒng)的ResNet-18模型涉及3 316萬個參數(shù),其中ReLU激活函數(shù)和批量歸一化(Batch Normalization)應用于整個卷積層的后面,ResNet-18結構如表1所示。
表1 ResNet-18結構表
通過在網(wǎng)絡中Head前嵌入CBAM注意力機制[10],使網(wǎng)絡更加關注感興趣的目標,CBAM原理圖如圖2所示,其中x表示中間變量。
圖2 CBAM原理圖Fig.2 Diagram of CBAM principle
通道注意力實現(xiàn)原理:輸入H×W×C的特征圖,H和W表示輸入圖像的高和寬,C表示通道數(shù),使用全局平均池化和最大平均池化收集空間信息,然后用兩個1×1的卷積(MLP,多層感知機)和Sigmoid激活函數(shù)獲得每個通道的權重,通道注意力模型結構圖如圖3所示。
圖3 通道注意力模型結構圖Fig.3 Diagram of channel attention model structure
空間注意力實現(xiàn)原理:首先對通道信息進行最大池化和平均池化操作,并將結果連接起來,其次由一個7×7的卷積和Sigmoid激活函數(shù)得到每個點的坐標權重,設置填充Padding為3,空間注意力模型結構圖如圖4所示。
注意力模塊的計算方法如公式(2)和公式(3)所示,F為輸入特征矩陣,Mc(F)和Ms(F′)分別表示通道注意力和空間注意力所獲得的權重,?表示逐元素相乘,F′表示通道加權結果,F″表示CBAM的最終結果。
F′=F?Mc(F)
(2)
F″=F′?Ms(F′)
(3)
空間注意力模塊和通道注意力模塊的具體計算方法如公式(4)和公式(5)所示,fn×n表示一個n×n的卷積?!皑挕北硎酒唇硬僮?“+”表示逐元素求和。
(4)
(5)
模型設計了一個Coord-BiFPN的頸部網(wǎng)絡,融合添加了BiFPN[11]和CoordConv[12],增強了網(wǎng)絡的特征融合能力和特征映射的魯棒性。Coord-BiFPN的特點在于高效的雙向跨尺度連接和加權特征融合(圖5)。首先,從主干網(wǎng)絡輸入P1、P2、P3三個不同大小的特征圖,P1和P3的特征直接融合到輸出,這兩個階段中只有一個輸出邊緣,并且對合并不同的特征信息影響很小。其次,在P2層的輸出節(jié)點上添加一條額外的邊,融合更多特征的同時,也不會增加計算成本。最后,增加P3和P2的輸入層與P1的輸出層之間的連接,以獲得更高級別的特征融合。
圖5 Coord-BiFPN結構圖Fig.5 Diagram of Coord-BiFPN structure
當融合不同分辨率的特征時,通常的做法是將它們調整到相同的分辨率,然后將它們相加。然而,當輸入特征出現(xiàn)變化時,它們的輸出特征的權重通常是不同的。向Coord-BiFPN的每個輸入添加額外的權重,讓網(wǎng)絡學習每個輸入特征的重要性,利用快速歸一化融合調整Coord-BiFPN中的權重,如公式(6)所示:
(6)
其中:wi為可學習的權重,并且通過在每個wi后應用SiLU激活函數(shù)保證wi≥0,并且設置ε=0.000 1是為了防止值不穩(wěn)定,歸一化權重的每個值為0~1。Coord-BiFPN的每個模塊的輸出特征圖可以表示如下:
(7)
(8)
(9)
(10)
其中,w1和w2為對應的權重。Coord-BiFPN在同一層的輸入和輸出特征之間增加了跳躍連接,由于尺度相同,因此增加跳躍連接可以更好地提取和傳遞特征信息。此外,使用加權特征融合可以融合不同分辨率的輸入層,不同分辨率的輸入層對應的權重也不同。將改進后的雙向特征金字塔網(wǎng)絡Coord-BiFPN模塊引入特征融合部分,在不增加過多計算量的情況下,能夠更好地實現(xiàn)多尺度特征融合。各輸入層的權值參數(shù)通過網(wǎng)絡自動學習,能更好地表示整體特征信息。
動態(tài)卷積[13]基于卷積層的輸入確定每個卷積核的權重,并且使用注意力機制對這些卷積核進行加權和求和,以獲得適合該輸入的動態(tài)卷積核,動態(tài)卷積輸出可以表示如下:
Output(y)=x×(α1W1+α2W2+…+αnWn)
(11)
其中:x和y分別表示輸入特征和輸出特征變量,αi(i=1,2,…,n)為注意力標量,n為卷積核數(shù)量,并且每個卷積核Wi(i=1,2,…,n)具有與標準卷積核相同的大小。
多維動態(tài)卷積ODConv利用多維注意力機制和并行策略,學習沿著內核空間的所有四個維度的任何卷積層處卷積內核的互補注意力。四個注意力為卷積核的輸入通道數(shù)量、卷積核的感受野、卷積核輸出通道數(shù)以及卷積核數(shù)量。這四個注意力相互補充,并且按照位置、通道、濾波器和內核的順序與卷積內核相乘,顯著增強了對上下文信息的捕獲,ODConv的輸出可以用公式(12)表示:
Output(y)=x×(αw1⊙αf1⊙αc1⊙αs1⊙W1+…+αwn⊙αfn⊙αcn⊙αsn⊙Wn)
(12)
公式(12)中αwi、αfi、αci、αsi(i=1,2,…,n)表示四種注意力,卷積核Wi(i=1,2,…,n)為變量,表示卷積核沿著空間中不同維度進行乘法運算。
RDCA-YOLO安全帽檢測模型在ODConv和C2f的基礎上提出了一種新的OD-C2f結構,將C2f的Bottleneck的普通卷積優(yōu)化為ODConv動態(tài)卷積,根據(jù)不同的輸入圖像數(shù)據(jù)自適應調整卷積核,并針對性地提取安全帽的特征,顯著增強了模型的特征提取能力,加強了網(wǎng)絡的學習能力,提高了模型的識別精度,OD-C2f結構如圖6所示。
圖6 OD-C2f結構圖Fig.6 Diagram of OD-C2f structure
在復雜的工地場景下,工人安全帽佩戴檢測面臨位置變化、角度切換、尺度變化的挑戰(zhàn)。YOLOv8n的檢測頭不能很好地收集并融合多尺度信息、空間信息和任務信息。研究人員嘗試改進已有目標檢測器的檢測頭,以增強模型性能,導致不同的檢測頭對應不同對象檢測器。然而,還沒有一種方法可以標準化檢測頭的結構。
良好的目標檢測頭應該具有三種能力。一是尺度感知能力。圖像中往往存在多個不同尺度的物體,一些物體檢測器使用特征金字塔網(wǎng)絡增強模型的尺度感知,但并不能提高檢測頭本身的尺度感知。二是空間感知能力。在不同的視點下,物體會發(fā)生變形和旋轉,其輪廓和位置也會發(fā)生變化。增強空間感知能力可以使檢測器具有更強的泛化能力。三是任務感知能力。由于待檢測對象可以用不同的形式(錨框、中心點、角點)表示,這使得相應的檢測頭具有不同的結構和損失函數(shù),增強模型的任務感知能力可以使模型檢測不同形式的對象。FR-DyHead通過在每個維度使用三種不同的注意力機制進行統(tǒng)一分別為特征圖、空間和通道三種感知,從而使模型能夠以更深的尺度關注信息。動態(tài)檢測頭DyHead[14]是一個新穎的動態(tài)檢測頭結構,它使用了多個注意力。本研究在動態(tài)頭DyHead的基礎上設計了FR-DyHead檢測頭,運用FReLU[15]激活函數(shù)替換原有的ReLU激活函數(shù),增強了模型對目標檢測任務的適應性,提高了檢測的精確度。改進的FR-DyHead結構如圖7所示。
圖7 FR-DyHead結構圖Fig.7 Diagram of FR-DyHead structure
圖7中,πL是尺度感知注意力;πS是空間感知注意力;πC是任務感知注意力;offset表示偏移量;(1,0,0,0)為超參數(shù),用于控制激活閾值。
模型基于PyTorch框架,使用GPU進行訓練,實驗所使用的GPU為NVIDIA GTX 2070,CUDA版本11.1,PyTorch版本1.7.1,Python版本3.7,CPU為i5-9400F,操作系統(tǒng)為Windows 10家庭中文版。
實驗所用安全帽數(shù)據(jù)集為GDUT-HWD,該數(shù)據(jù)集共有3 174張圖像,實驗分別以7∶2∶1的比例將圖片劃分為訓練集、驗證集和測試集,共包含18 893個對象,包括建筑工地常見的大部分場景,代表性和廣泛性較強。所有對象實例根據(jù)安全帽的顏色分為藍色、白色、黃色、紅色和無類別,不同顏色代表不同人員的工作屬性,無類別表示個人未戴安全帽,共5個類別。設置實驗迭代次數(shù)為200次,訓練批次為8,學習率為0.01,優(yōu)化器為SGD,decay(學習率衰減因子)為0.000 5。
評估網(wǎng)絡性能的指標主要有準確率(Precision,P),召回率(Recall,R),平均準確率(Average Precision,AP),平均準確率均值(mean Average Precision,mAP),計算方法如公式(13)和公式(14)所示:
(13)
(14)
其中:TP為預測正確的正樣本數(shù)量,FP為預測錯誤的正樣本數(shù),FN為預測錯誤的負樣本數(shù)。模型使用mAP@0.5作為評估模型準確性的指標,表示將IoU(Intersection over Union)閾值取50%時的mAP值,通過平均每個類別的AP計算得到,計算方法如公式(15)和公式(16)所示。
(15)
(16)
針對GDUT-HWD數(shù)據(jù)集設計消融實驗,均采用“4.2”小節(jié)中的實驗參數(shù),本文方法在GDUT-HWD數(shù)據(jù)集的消融實驗結果比較如表2所示。其中:模型2表示改進Backbone結構,模型3表示嵌入CBAM注意力機制,模型4表示設計一種Coord-BiFPN結構,模型5表示在動態(tài)卷積的基礎上設計了OD-C2f結構,模型6表示提出了一種新的FR-DyHead檢測頭替換原始的Detect結構。從表2中的數(shù)據(jù)可以看出,與原YOLOv8n算法相比,本文模型的mAP提高了2.6%。
表2 本文方法在GDUT-HWD數(shù)據(jù)集的消融實驗結果比較
為驗證改進模型的有效性,采用相同的驗證集做了相關對比實驗,將其與目前主流的目標檢測算法進行對比,不同算法在GDUT-HWD數(shù)據(jù)集的檢測結果比較如表3所示,表明改進后的方法獲得了最優(yōu)的mAP值。
表3 不同算法在GDUT-HWD數(shù)據(jù)集的檢測結果比較
為更加直觀地評價改進前后的效果,使用GDUT-HWD數(shù)據(jù)集中部分圖片進行測試。對比圖8(a)、圖8(b)可以看出,YOLOv8n在密集目標場景下存在1處漏檢,沒有將圖中遠處的紅色安全帽檢測到。對比圖8(c)、圖8(d)可以看出,YOLOv8n在小目標場景下存在誤檢,將圖中欄桿誤檢為紅色安全帽。對比圖8(e)、圖8(f)可以看出,YOLOv8n在反光場景下存在漏檢,沒有將圖中的白色安全帽檢測到。對比圖8(g)、圖8(h)可以看出,YOLOv8n在黑暗場景下存在漏檢,沒有將圖中沒戴安全帽的人員情況檢測到??梢钥闯?改進后的模型檢測準確率更高,檢測性能明顯提升。
(a)YOLOv8n密集場景下檢測結果
針對復雜工地場景下安全帽檢測存在的模型識別精度低易出現(xiàn)漏檢以及誤檢等問題。相比于原始的YOLOv8n模型,RDCA-YOLO模型在GDUT-HWD數(shù)據(jù)集上的mAP提升了2.6%、R提高了2.5%,證明本文所提方法在工人安全帽佩戴檢測中有效,與其他目標檢測模型相比具有顯著優(yōu)勢,實現(xiàn)了工地工人安全帽佩戴的自動化檢測。