宋曉鳳,吳云軍,劉冰冰,張青林
1.華中師范大學 物理科學與技術(shù)學院,武漢430079
2.火箭軍裝備部駐武漢地區(qū)第一軍事代表室,武漢430079
安全帽作為一種最常見和最實用的個人防護用具,能夠有效地防止和減輕外來危險對頭部的傷害。但在眾多施工場地中,安全帽的佩戴很容易被施工人員忽略,從而引發(fā)人身傷害的事故。然而在我國大多數(shù)施工場所中采用人工進行安全帽的佩戴檢測,這種原始的檢測方法不僅耗時耗力,而且容易產(chǎn)生誤差。為了解決現(xiàn)有施工場地存在的這一安全管理問題,對施工場地進行智能化的管理,因此對施工人員進行安全帽佩戴狀態(tài)的實時檢測具有重大的研究意義。
目標檢測被應用于人臉識別[1]、監(jiān)控安全、自動駕駛[2]等眾多領域?,F(xiàn)有的目標檢測算法包括傳統(tǒng)目標檢測算法和基于深度學習的目標檢測算法。傳統(tǒng)目標檢測算法步驟為先通過滑動窗口選擇候選區(qū)域,然后使用手工設計的特征提取器提取特征,最后將提取得到的特征送入分類器中進行檢測。同時隨著卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)的快速發(fā)展,利用CNN網(wǎng)絡的基于深度學習的目標檢測算法利用大量的數(shù)據(jù)集對模型進行訓練,使其具備更強的泛化能力,更適合復雜多變的場景。
本文將目標檢測算法應用于安全帽佩戴檢測中。目前基于深度學習的安全帽佩戴檢測算法可以分為兩種,一種是基于Region-proposal的兩階段方法;另一種是基于回歸的一階段方法。兩階段方法首先生成一組候選區(qū)域框,然后對它們進一步去分類和回歸,代表性的方法有R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5]等。在傳統(tǒng)目標檢測算法中文獻[6]利用梯度方向直方圖(histogram of oriented gradient,HOG)對施工人員進行檢測,然后利用原霍夫變換進行特征提取,最后利用分類器實現(xiàn)對安全帽的檢測。在基于Region-proposal的兩階段方法中,文獻[7]孫國棟等人通過在Faster R-CNN中添加自注意力機制來獲取多尺度的全局信息,使其得到更豐富的高層語義特征信息并將更大的感受野范圍引入模型,然后再對錨框進行改進,強化網(wǎng)絡對小目標的表達信息,改進后的Faster R-CNN算法在不同場景和不同尺度的安全帽上都有著很好的檢測效果?;诨貧w的一階段方法則是直接進行目標的類別和位置的回歸,代表方法有SDD[8]、YOLO[9-12]系列等。在一階段算法中,文獻[13]張勇等人在YOLOv3結(jié)構(gòu)中采用DenseNet(密集卷積網(wǎng)絡)方法處理低分辨率的特征層,在保持特征提取充足的同時降低了計算的復雜度,從而提高了算法的檢測和收斂性能,改進后的YOLOv3算法符合安全帽佩戴檢測的要求。文獻[14]王雨生等人在YOLOv4結(jié)構(gòu)的基礎上通過對膚色特征識別和頭部檢測獲取頭部區(qū)域,并進行交叉實驗,最后通過實驗對比分析安全帽檢測的性能。文獻[15]王英酈在YOLOv5結(jié)構(gòu)中引入輕量級注意力模塊CBAM,同時使用SIoU_Loss損失函數(shù)替代原始的損失函數(shù),以此來提高模型的收斂效果。最終提升了安全帽佩戴檢測的準確性。
在實際應用中,在保證安全帽佩戴檢測精度的前提下,也應盡可能地提高安全帽佩戴檢測的速度,因此本文以輕量級的YOLOv5s為基礎來進行安全帽佩戴檢測的研究。首先,針對特征提取不充分等問題,采用在YOLOv5s中加入CoordAtt坐標注意力機制,使其重新分配每個空間和通道的權(quán)重,增強特征間的信息傳播。其次針對原主干網(wǎng)對細粒度特征融合不充分的問題,采用Res2NetBlock中的殘差塊去替代YOLOv5s中的殘差塊,使其能夠在更細粒度的層面上對特征進行有效的融合。實驗結(jié)果表明,本文改進后的算法在安全帽佩戴檢測中取得了良好的檢測效果。
YOLOv5檢測算法是由Ultralytics公司于2020年發(fā)布的,是一種輕量級的模型,并且YOLOv5s使用depth_multiple和width_multiple兩個參數(shù)來控制四種結(jié)構(gòu),這四種結(jié)構(gòu)分別是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。YOLOv5s如圖1所示,包含輸入端、Backbone(主干網(wǎng))、Neck(多尺度特征融合網(wǎng)絡),以及Prediction(檢測頭)。
圖1 YOLOv5s結(jié)構(gòu)圖Fig.1 YOLOv5s structure diagram
YOLOv5s的輸入端采用了Mosaic數(shù)據(jù)增強、自適應圖片縮放等技術(shù)。首先,Mosaic數(shù)據(jù)增強將四張圖像通過隨機縮放、剪切和排列等方式組合在一起。使用Mosaic數(shù)據(jù)增強具有豐富數(shù)據(jù)集、減少GPU使用的數(shù)量等優(yōu)點。其次,輸入端采用自適應圖片縮放的技術(shù)。在常用的目標檢測算法中所采用的壓縮填充方式,導致圖像兩端的黑色填充較多,出現(xiàn)信息冗余,影響推理的速度。在YOLOv5算法中,自適應地在原始圖像上添加最小的黑邊。圖像兩端的黑色邊緣高度變小,推理時計算量減小,即目標檢測速度提高。
Backbone主干網(wǎng)主要由Focus結(jié)構(gòu)和CSP結(jié)構(gòu)組成。Focus結(jié)構(gòu)中最核心的就是切片操作。在YOLOv5中,網(wǎng)絡的輸入圖像是大小為640×640×3,然后將圖片輸入Focus結(jié)構(gòu),進行切片操作,先變成320×320×12的特征圖,再經(jīng)過32個卷積核的卷積操作,最終變成320×320×32的特征圖。
CSP結(jié)構(gòu)借鑒了CSPNet[16]的設計思路,YOLOv5s在主干網(wǎng)絡和Neck中設計了兩種不同的CSP結(jié)構(gòu)。Backbone中采用CSP結(jié)構(gòu)先將原始輸入分成兩個分支,分別進行卷積操作和N個殘差塊的操作,最后將兩個分支進行拼接,在減少計算量的同時也可以保護準確率。
Neck部分采用的是SPP+PANet[17]結(jié)構(gòu),其中PANet由FPN+PAN結(jié)構(gòu)組成。為了更一步提高特征提取的能力。結(jié)合FPN和PAN,F(xiàn)PN層自頂向下傳達強語義特征,而特征金字塔則自底向上傳達強定位特征,從不同的主干層聚合不同檢測層的參數(shù),采用的不再是普通的卷積操作,而是采用的CSP結(jié)構(gòu),從而進一步提高網(wǎng)絡特征融合的能力。SPP模塊在主干網(wǎng)之后,采用K={1×1,5×5,9×9,13×13}的最大池化的方式,對不同尺度的特征圖進行Concat操作。采用SPP模塊比單純使用K×K最大池化的方式,更有效地增加主干特征的可接受性,并顯著地分離了最重要的上下文信息。
目標檢測任務的損失函數(shù)一般由Classificition Loss(分類損失函數(shù))和Bounding Box Regeression Loss(回歸損失函數(shù))兩部分組成。Bounding Box Regeression的Loss近些年的發(fā)展過程是由2016年提出的IOU_Loss[18]:主要考慮檢測框和目標框的重疊面積;到2019年提出的GIOU_Loss[19]:在IOU的基礎上,解決邊界框不重合時所出現(xiàn)的問題;到2020年提出的DIOU_Loss[20]:在IOU和GIOU的基礎上,考慮邊界框中心點距離的信息;最后到2020年提出的CIOU_Loss:在DIOU的基礎上,考慮邊界框?qū)捀弑鹊某叨刃畔?。在YOLOv5中Prediction采用了CIOU_Loss做Bounding box的損失函數(shù),使得預測框回歸的速度和精度更高一些。
文獻[21]提出了通道注意力機制SE(squeeze-andexcitation attention),對于建模非常有效,然而它往往忽視了位置信息的重要性,而視覺中目標的空間結(jié)構(gòu)是非常重要的。文獻[22]提出了卷積塊注意力機制CBAM(convolutional block attention module),CBAM通過在通道上進行全局池化引入位置信息,但該方法只能獲取局部信息,不能獲取長范圍依賴的信息。CBAM是通過每個位置的多個通道來取最大值和平均值作為加權(quán)系數(shù),因此這種加權(quán)方式考慮到的只是局部信息。
CoordAtt坐標注意力機制如圖2所示。
圖2 CoordAtt坐標注意力機制結(jié)構(gòu)圖Fig.2 CoordAtt coordinate attention mechanism structure diagram
CoordAtt坐標注意力機制是一種新穎、高效的注意力機制,通過將位置信息嵌入到通道注意力中,可以在更大的范圍內(nèi)獲取信息,避免引入較大的開銷。為了避免造成損失位置信息,該注意力機制不是引入2D全局池化,而是提出分解通道注意力為兩個并行的1D特征編碼,分別沿著垂直和水平方向?qū)⑤斎胩卣骶酆蠟閮蓚€單獨的方向感知特征映射,來高效地整合空間坐標信息。這兩個具有嵌入方向特定信息的特征映射隨后分別特征編碼為兩個注意映射,每個注意映射捕獲輸入特征圖沿一個空間方向的遠距離依賴關(guān)系。因此,位置信息可以存儲在生成的注意映射中。然后,將兩個注意映射相乘應用于輸入特征映射,強調(diào)興趣表達。
具體來說,給定輸入X,使用兩個空間范圍的池化核(H,1)或(1,W)分別沿水平坐標和垂直坐標對每個通道進行編碼。因此,第c通道在高度h的輸出可以公式化為:
類似地,寬度為w的第c個通道的輸出可以寫為:
上述兩者變換分別沿兩個空間方向聚合特征,生成一對方向感知特征映射,給定由公式(1)和公式(2)生成的聚合特征映射,首先將它們拼接起來,然后將它們傳到共享的1×1卷積變換函數(shù)F1,得到:其中,[zh,zw]表示沿空間維度的拼接操作,δ是一個非線性激活函數(shù),f∈RC/r×(H+W)是在水平方向和垂直方向?qū)臻g信息進行編碼的中間特征映射。然后再將f沿空間維度拆分為兩個獨立的張量f h∈RC/r×H和f w∈RC/r×W。再使用兩個1×1卷積變換Fh和Fw被分別用于轉(zhuǎn)換f h和f w為與輸入X具有一樣通道數(shù)的張量,得到:
輸出gh和gw分別展開并用作注意權(quán)重。最后,坐標注意力機制的輸出Y可以表示為:
加入CoordAtt坐標注意力機制后的主干網(wǎng)網(wǎng)絡的詳細參數(shù)如表1所示以及主干網(wǎng)結(jié)構(gòu)圖如圖3所示。
圖3 集成CoordAtt后的主干網(wǎng)結(jié)構(gòu)圖Fig.3 Backbone network structure after CoordAtt integration
表1 集成CoordAtt后的主干網(wǎng)參數(shù)Table 1 Backbone parameters after CoordAtt integration
對于目標檢測來說,在多尺度上表示特征是很關(guān)鍵的。在卷積神經(jīng)網(wǎng)絡(CNNs)迅速發(fā)展的同時,其也顯現(xiàn)出較強的多尺度表示能力,在應用中也獲得了較好的結(jié)果。在YOLOv5中,使用BottleNeck結(jié)構(gòu)傳播梯度信息使其達到差異最大化。但是文獻[16]則表明,這樣的傳播方式,網(wǎng)絡中仍存在著大量的梯度信息重復。如果能夠充分減少梯度信息的重復,則網(wǎng)絡的學習能力將會得到很大的提升。為了使網(wǎng)絡可以在更細粒度的層次上增強特征融合的能力,從而有效地減少信息梯度重復的可能性。文獻[23]提出的Res2Net網(wǎng)絡,在一個殘差塊內(nèi)構(gòu)造分層的類殘差連接。Res2Net以粒度級別表示多尺度的特征,同時也增加了感受野的范圍。為了使網(wǎng)絡的學習能力有所提高,因此重新構(gòu)建了新的殘差塊Res2NetBlock去替代YOLOv5s算法的殘差塊Bottleneck。Res2NetBlock結(jié)構(gòu)如圖4所示。
圖4 Res2NetBlock結(jié)構(gòu)圖Fig.4 Structure diagram of Res2NetBlock
Res2NetBlock沒有像以往一樣使用一組3×3的濾波器來提取特征,而是發(fā)現(xiàn)具有更強的多尺度特征提取能力的替代框架,同時保持類似的計算負載。將一組3×3的濾波器替換為一組較小的濾波器,同時用一個梯度殘差塊連接不同的濾波器組。
如圖4所示,將特征圖通過1×1的卷積后,被均勻地分割為S個特征映射子集,用xi表示,其中i∈{1,2,…,}s與輸入特征圖相比,每個特征子圖xi的空間大小相同,與輸入的特征圖進行比較時,有個通道數(shù)。除x1外,每個xi都有對應的3×3卷積變換,記作Ki(),然后用yi表示Ki()的輸出。特征子圖xi與Ki-1()的輸出相加,然后輸入給Ki()。為了在增加s的同時減少參數(shù),不再對x1進行3×3的卷積操作。
每個3×3的卷積運算符Ki()都可以從所有特征分割{xj,j<i}中接收特征信息。
因此yi可以表示為公式(7):
在Res2NetBlock模塊中,采用多尺度分割,便于全局和局部信息的提取。為了更好地融合不同大小的信息,將所有的分割合并在一起,并對它進行1×1卷積傳遞。分割和級聯(lián)策略可以有效執(zhí)行卷積來增強處理功能。為了減少參數(shù)的數(shù)量,省略了第一個分割的卷積。在Res2NetBlock中使用s作為比例尺寸來控制參數(shù)。較大的s可能允許學習更豐富的特征,而級聯(lián)帶來的計算/內(nèi)存開銷可以進行忽略。
因此,Res2NetBlock的設計目的是增強特征融合能力,在單個殘差塊中使用分層殘差塊連接,以更細粒度的層次上捕獲接收域變化的細節(jié)和全局特征。與此同時,多條支路融合的設計,能夠有效降低信息梯度的重復性。把Res2NetBlock模塊與YOLOv5s集成在一起,以進一步提高安全帽的檢測性能。
集成CoordAtt注意力機制和Res2Net-Block后的整體的主干網(wǎng)詳細參數(shù)如表2所示以及結(jié)構(gòu)框圖如圖5所示。
圖5 集成后整體的主干網(wǎng)結(jié)構(gòu)圖Fig.5 Overall backbone network structure diagram after integration
表2 集成后整體的主干網(wǎng)參數(shù)Table 2 Overall backbone network parameters after integration
數(shù)據(jù)集的質(zhì)量對于深度學習的結(jié)果來說至關(guān)重要?,F(xiàn)已開源的安全帽數(shù)據(jù)集只有SHWD(safely helmet wearing-dataset),但該數(shù)據(jù)集中佩戴安全帽的類別圖片中有不符合實際工地場景的數(shù)據(jù),同時沒有佩戴安全帽的類別圖片為學生上下課的數(shù)據(jù),也不符合實際工地生產(chǎn)的需求。
因此本文自制數(shù)據(jù)集,由已開源的SHWD數(shù)據(jù)集中符合工地場景的圖片和工地的實際場景拍攝制成的圖片組成,具有更好的實用價值。同時使用labelImg對圖片進行標注,并保存為YOLO格式,其中數(shù)據(jù)集共有5 813張圖片,訓練集有5 181張圖片,測試集有632張圖片,訓練集和測試集嚴格獨立。
本文實驗平臺的硬件環(huán)境為GPU:NVIDIA GeForce GTX 1060,CPU:Intel?CoreTMi7-6700,內(nèi)存:8.00 GB,顯存:6 GB;操作系統(tǒng)及軟件環(huán)境為Windows10+CUDA 10.2+cudnn 7.6.5+python 3.8.10+pytorch 1.7.0。
送入網(wǎng)絡訓練的圖片大小均被設置為640×640,batch_size設置為8,為增加訓練樣本的多樣性,提高網(wǎng)絡的泛化能力,采用Mosaic數(shù)據(jù)增強方式;采用SGD函數(shù)優(yōu)化參數(shù),動量因子0.937,權(quán)重衰減系數(shù)0.000 5,訓練100個epoch。
本文基于自制數(shù)據(jù)集使用平均精度(average precision,AP)和均值平均精度(mean average mAP)作為模型檢測準確性能的評價指標,平均精度綜合考慮了目標檢測的精確率(precision,P)和召回率(recall,R),使用每秒處理的圖片數(shù)量(FPS)作為模型檢測速度的評價指標,各評價指標的計算公式如下:
為了驗證CoordAtt坐標注意力機制和Res2NetBlock殘差塊的有效性,進行實驗比對。
實驗1對比加入注意力機制的YOLOv5s結(jié)構(gòu)與原結(jié)構(gòu)的效果,結(jié)果如表3所示。從實驗結(jié)果可以看出,SE注意力機制值考慮內(nèi)部通道信息而忽略了位置信息的重要性,在主干網(wǎng)加入SE注意力機制后,mAP從78.2%提升到了79.2%,提升了1個百分點;CBAM注意力機制包含空間注意力機制和通道注意力機制兩部分,但這種方法只能捕獲局部的信息,無法獲取長范圍的信息,在主干網(wǎng)加入CBAM注意力機制后,mAP從78.2%提升到了78.6%,提升了0.4個百分點;CoordAtt注意力機制通過把位置信息嵌入到通道注意力中,從而使移動網(wǎng)絡獲取更大區(qū)域的信息而避免引入大的開銷。在主干網(wǎng)加入CoordAtt注意力機制后,mAP從78.2%提升到了79.4%,提升了1.2個百分點;因此可以表明CoordAtt注意力機制通過把位置信息嵌入到通道注意力中,增加對安全帽的權(quán)重值,以此來提升安全帽的檢測精度最有效。故最后確定在YOLOv5s的主干網(wǎng)中加入CoordAtt坐標注意力機制。
表3 加入CoordAtt坐標注意力機制前后性能對比Table 3 Performance comparison before and after adding CoordAtt coordinate attention mechanism
實驗2對比以Res2NetBlock的殘差塊去替代YOLOv5s中的殘差塊的效果,結(jié)果如表4所示。從實驗結(jié)果來看,使用Res2NetBlock殘差塊的結(jié)構(gòu)使網(wǎng)絡的mAP從78.2%提升到了79.7%,mAP提升了1.5個百分點,說明由Res2NetBlock殘差塊構(gòu)成的主干網(wǎng)以粒度級別表示多尺度的特征,同時也增加了感受野的范圍,對于安全帽的佩戴檢測精度是有提升的。
表4 R-YOLOv5s的性能對比Table 4 Performance comparison of R-YOLOV5s
實驗3將主干網(wǎng)中加入CoordAtt注意力機制以及使用Res2NetBlock的殘差塊去替代YOLOv5s中的殘差塊這兩種改進進行融合,結(jié)果如表5所示。實驗結(jié)果表明,CoordAtt注意力機制和Res2NetBlock的殘差塊使網(wǎng)絡的mAP從78.2%提升到了80.5%,提升了2.3個百分點,速度由119 FPS提升到了137 FPS,說明兩者的改進對于安全帽的佩戴檢測精度和速度來說都有很大的提升。因此表明CoordAtt坐標注意力機制和Res2NetBlock殘差塊對于YOLOv5s的有效性。
表5 CR-YOLOv5s算法的性能Table 5 Performance of CR-YOLOv5s algorithm
圖6給出了引入CoordAtt坐標注意力機制與YOLOv5s算法檢測結(jié)果對比,引入CoordAtt坐標注意力機制可以在更大范圍內(nèi)讓網(wǎng)絡更加關(guān)注圖片中的小目標,使其提高網(wǎng)絡對安全帽的檢測能力。
圖6 加入CoordAtt坐標注意力機制檢測結(jié)果Fig.6 Detection results of CoordAtt coordinate attention mechanism
圖7給出了引入Res2NetBlock殘差塊與YOLOv5s算法檢測結(jié)果對比,引入Res2NetBlock殘差塊可以在更細粒度上表示多尺度特征,并增加了每個網(wǎng)絡層的感受野。從圖7中可以看出Res2NetBlock殘差塊可以在目標遮擋的時候檢測出目標從而提高檢測精度,同時檢測速度也有所提升。
圖7 Res2NetBlock設計檢測結(jié)果對比Fig.7 Comparison of Res2NetBlock design detection results
圖8給出了本文最終改進的算法與YOLOv5s算法的檢測結(jié)果對比,從實驗結(jié)果對比可以得知,本文最終改進的算法能夠提高安全帽佩戴檢的精度,同時在速度上也有所提升。
圖8 本文改進算法檢測結(jié)果對比Fig.8 Comparison of detection results of improved algorithm in this paper
為了比較YOLOv5s算法,本文改進YOLOv5s算法以及深度學習主流方法的性能,進行了對比實驗,實驗結(jié)果如表6所示。
表6給出了二階段網(wǎng)絡Faster R-CNN,一階段無anchor網(wǎng)絡FCOS,一階段基于anchor網(wǎng)絡SSD與本文選擇的一階段基于anchor網(wǎng)絡的YOLOv5s網(wǎng)絡檢測性能的對比結(jié)果,同時與YOLO系列的網(wǎng)絡YOLOv3以及輕量級的網(wǎng)絡YOLOv3-Mobilenet進行了對比。
表6 改進的YOLOv5s算法與深度學習主流網(wǎng)絡性能對比Table 6 Performance comparison between improved YOLOv5s algorithm and deep learning mainstream network
通過比較YOLOv5s網(wǎng)絡與Faster R-CNN網(wǎng)絡以及FCOS網(wǎng)絡檢測結(jié)果可以知道,YOLOv5s網(wǎng)絡在更少參數(shù)量與計算量的情況下得到了與Faster R-CNN以及FCOS網(wǎng)絡相當?shù)臋z測精度,同時檢測速度遠快于這兩個網(wǎng)絡,本文改進的YOLOv5s算法在各方面都優(yōu)于Faster R-CNN與FCOS。
通過比較YOLOv5s網(wǎng)絡與一階段基于anchor網(wǎng)絡SSD300、SDD512和SSD-Mobilenet檢測結(jié)果可以知道,YOLOv5s網(wǎng)絡與SSD300和SSD512相比,在較小參數(shù)量與計算量的情況下得到遠超SDD的檢測精度以及檢測速度,同時與SSD-Mobilenet相比可知,參數(shù)量雖然比SSD-Mobilene大一些,但其檢測精度與檢測速度都是遠超SSD-Mobilenetv2的。
YOLOv5與YOLO系列中的YOLOv3和輕量級網(wǎng)絡YOLOv3-Mobilenet進 行 比 較,YOLOv5s網(wǎng) 絡 與YOLOv3相比,在相當?shù)臋z測精度的情況下,卻擁有更少的參數(shù)量,與YOLOv3-Mobilenet相比,YOLOv5的參數(shù)量雖然比YOLOv3-Mobilenet大一些,但檢測精度與速度均高于YOLOv3-Mobilenet。
針對現(xiàn)有的安全帽佩戴檢測算法中出現(xiàn)的對小目標的漏檢以及對遮擋目標檢測準確率低等問題,本文提出了一種基于YOLOv5s算法的改進算法CR-YOLOv5s。首先引入CoordAtt坐標注意力機制增強感受野,把位置信息嵌入到通道注意力中,從而使移動網(wǎng)絡獲取更大區(qū)域的信息,以此來提升網(wǎng)絡對小目標的檢出率。同時針對原網(wǎng)絡的主干網(wǎng)中仍存在大量的梯度信息重復,以及對特征融合不充分等問題,提出了Res2NetBlock中的殘差塊去替代YOLOv5s算法中的殘差塊,以此來降低梯度信息的重復以及改善對特征融合不充分的問題,實驗結(jié)果也表明這樣的改進確實提升了在目標遮擋時的檢出率。實驗結(jié)果表明,CR-YOLOv5s算法具有較好的檢測精度,速度也較原YOLOv5s算法有所提升,同時在遮擋目標以及小目標的檢出上有很大的提升,因此能夠較好地應用于安全帽佩戴檢測中。