李達 劉輝
摘? 要:針對當(dāng)前YOLOv5難以檢測小目標(biāo)、目標(biāo)識別效果差等問題,提出了一種基于YOLOv5的改進模型。針對開源數(shù)據(jù)集小目標(biāo)樣本數(shù)量不足的問題,重新構(gòu)建安全帽數(shù)據(jù)集,擴充小目標(biāo)數(shù)量。引入輕量化的通道注意力ECA模塊,提高模型對安全帽的識別能力。將邊界框損失函數(shù)替換為SIoU加速模型收斂。最后改進Neck部分的特征融合方式,并增加一個小目標(biāo)檢測層。改進算法在自建安全帽數(shù)據(jù)集上mAP@0.5、mAP@0.5:0.95相較于YOLOv5s分別提高2.6%、1.7%。
關(guān)鍵詞:安全帽佩戴檢測;YOLOv5;ECA注意力;邊界框損失函數(shù);小目標(biāo)檢測
中圖分類號:TP391.4;TP18 文獻標(biāo)識碼:A 文章編號:2096-4706(2023)09-0009-05
Abstract: Aiming at the problems of small target detection difficulty and poor target recognition effect of YOLOv5 at present, an improved model based on YOLOv5 is proposed. In view of the problem of shortage of small target samples in open source data set, the safety helmet data set is rebuilt to expand the number of small targets. A lightweight ECA module is introduced to improve the identification ability of the model to the helmet. The bounding box loss function is replaced by SIoU to accelerate the convergence of the model. Finally, the feature fusion mode of Neck part is improved, and a small target detection layer is added. Compared with YOLOv5s, the improved algorithm on the self-built safety helmet data set mAP@0.5 and mAP@0.5:0.95 respectively increases 2.6% and 1.7%.
Keywords: safety helmet wearing detection; YOLOv5; ECA attention; bounding box loss function; small object detection
0? 引? 言
隨著我國基礎(chǔ)設(shè)施的快速發(fā)展,在建筑工地工作的工人數(shù)也逐漸上升。在安全生產(chǎn)規(guī)范中,明確指出在施工場地必須佩戴安全帽。佩戴安全帽可以在工程作業(yè)中有效保護施工人員頭部,保障工人的生命安全。但在眾多施工場地中,安全帽的佩戴很容易被施工人忽略,從而引發(fā)人身傷害的事故。我國大多數(shù)施工場所中采用人工進行安全帽的佩戴檢測,這種原始的檢測方法不僅耗時耗力,而且容易產(chǎn)生誤差。為了解決現(xiàn)有施工場地存在的這一安全問題,對施工場地進行智能化的管理,對施工人員進行安全帽佩戴狀態(tài)的精確檢測是很有必要的,具有重大的研究意義。
近年來,基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)飛速發(fā)展,目標(biāo)檢測算法也越來越廣泛的應(yīng)用于各個方面。小目標(biāo)檢測一直以來是目標(biāo)檢測技術(shù)中的重難點,針對安全帽的目標(biāo)檢測通常應(yīng)用于施工現(xiàn)場采集到的遠距離照片,目標(biāo)密集易出現(xiàn)阻擋,且像素點小,屬于小目標(biāo)的范疇。對于小目標(biāo)安全帽的目標(biāo)檢測算法分以YOLO[1](You Only Look Once)系列為代表的單階段算法和以R-CNN[2](Region-based Convolutional Neural Network)系列為代表的兩階段算法。吳冬梅等[3]在Faster R-CNN的基礎(chǔ)上,改進特征融合的方式,顯著地降低了對安全帽的誤檢和漏檢率,但檢測速度上相比于單階段算法仍有一定差距。YOLO和SSD[4](Single Shot multibox Detector)是典型的單階段目標(biāo)檢測算法。李明山等[5]將特征融合的分支網(wǎng)絡(luò)添加進SSD算法中,通過可變參數(shù)調(diào)節(jié)先驗框大小,提升了安全帽檢測的速率和實時性;為了進一步提高檢測的準(zhǔn)確性,徐傳運等[6]基于YOLOv4算法進行改進,提出一種數(shù)據(jù)增廣的算法,增強了檢測模型對小目標(biāo)物體的檢測能力。王玲敏等[7]人將坐標(biāo)注意力加入YOLOv5算法中,并將特征金字塔替換為加權(quán)雙向特征金字塔,增強了模型對密集物體的檢測效果。但是在實際場景中對小目標(biāo)安全帽檢測仍存在不足。
因此,為了提高安全帽檢測的性能,本文針對YOLOv5s模型進行改進研究,主要的改進方式如下。
首先,針對開源數(shù)據(jù)集的局限性,對開源數(shù)據(jù)集進行篩選過濾,去除開源數(shù)據(jù)集中簡單重復(fù)的樣本,并通過網(wǎng)絡(luò)爬取技術(shù)擴充數(shù)據(jù)集,豐富小目標(biāo)數(shù)量,使模型能夠?qū)W習(xí)更多的特征,提升對小目標(biāo)的檢測能力。
其次,在主干網(wǎng)絡(luò)引入高效通道注意力ECA(Efficient Channel Attention)模塊[8],使模型更加關(guān)注安全帽的特征信息,增強模型對小目標(biāo)的檢測性能。
然后將邊界框損失函數(shù)由CIoU Loss替換為SIoU Loss,提升模型的收斂速度和推理的準(zhǔn)確性。
最后針對小目標(biāo)樣本,改進Neck部分的特征融合方式,加強特征金字塔的特征提取能力[9],同時增加一個160×160尺度的小目標(biāo)檢測層。以提高算法在復(fù)雜密集的場景中對小目標(biāo)的檢測精度。
1? YOLOv5s模型
YOLOv5算法模型主要包括4類不同深度和寬度的網(wǎng)絡(luò)結(jié)構(gòu),而綜合目前的需求,選用深度最小,參數(shù)量最小的YOLOv5s模型進行安全帽佩戴檢測研究,主要網(wǎng)絡(luò)結(jié)構(gòu)由四部分組成,依次為輸入端Input、主干Backbone,頸部Neck和輸出端Head,YOLOv5s結(jié)構(gòu)圖如圖1所示[10]。
1.1? 輸入端
輸入端負責(zé)對輸入網(wǎng)絡(luò)的圖片進行預(yù)處理,YOLOv5s的輸入端采用自適應(yīng)錨框計算、Mosaic數(shù)據(jù)增強方法以及圖像縮放等策略。
1.2? 主干網(wǎng)絡(luò)Backbone
主干網(wǎng)絡(luò)主要負責(zé)對經(jīng)過預(yù)處理的圖片進行特征提取,主要包含卷積模塊(Conv)、瓶頸層(C3)、以及空間金字塔池化(SPPF)三個模塊。
1.3? 頸部Neck
頸部是特征融合網(wǎng)絡(luò),由FPN(特征金字塔)和PAN(路徑聚合網(wǎng)絡(luò))結(jié)構(gòu)構(gòu)成,負責(zé)將主干網(wǎng)絡(luò)提取到的特征進行多尺度特征融合,實現(xiàn)對特征的充分利用,從而提高網(wǎng)絡(luò)的檢測性能。
1.4? 輸出端
輸出端包含三個檢測層,檢測尺寸分別為80×80、40×40、20×20,三個檢測層負責(zé)對圖片進行類別預(yù)測并生成邊界框。檢測層采用非極大值抑制(NMS)消除冗余的預(yù)測框,輸出置信度得分最高的預(yù)測類別,并返回邊框坐標(biāo)。
2? YOLOv5s算法改進
2.1? 主干網(wǎng)絡(luò)引入通道注意力ECA
注意力機制能夠通過權(quán)重聚焦位置,產(chǎn)生更具有分辨性的特征,使網(wǎng)絡(luò)獲取更多的上下文信息。為了加強特征信息的利用率,本文引入一種高效通道注意力ECA模塊。ECA是Wang等在2020年對經(jīng)典的Squeeze and Excitation(SE)模塊進行改進、提出來的一種高效輕量通道注意力機制模塊。ECA注意力模塊如圖2所示。
圖中,H、W、C分別表示輸入特征圖的高、寬和通道數(shù),GAP(Global Average Pooling)為全局平均池化層,σ為Sigmoid激活函數(shù),k為自適應(yīng)卷積核大小,k的大小通過一個函數(shù)來自適應(yīng)變化并與通道數(shù)C有關(guān),本文中k設(shè)置為5。
ECA注意力機制的實現(xiàn)過程如下:
1)輸入的特征圖經(jīng)過全局平均池化之后,特征圖大小由[H,W,C]變成[1,1,C]。再對特征圖進行卷積核大小為k的一維卷積操作,并經(jīng)過Sigmoid激活函數(shù)得到特征圖每個通道的權(quán)重。
2)將歸一化權(quán)重與原輸入特征圖逐通道相乘,輸出加權(quán)后的特征圖。
本文對YOLOv5s特征提取階段的結(jié)構(gòu)進行改進,將ECA注意力模型嵌入到SPPF模塊之前,對經(jīng)過主干網(wǎng)絡(luò)進行特征提取之后的特征圖進行進一步的加強,在降低參數(shù)量的同時大大提升網(wǎng)絡(luò)對特征的利用效果。引入ECA注意力模塊的主干結(jié)構(gòu)網(wǎng)絡(luò)圖如圖3所示。
2.2? 損失函數(shù)改進
本文采用SIoU Loss作為邊界框損失函數(shù),替代YOLOv5使用的CIoU Loss。其公式為:
其中Δ表示距離損失,Ω表示形狀損失,Λ表示角度損失,σ為真實框和預(yù)測框中心點的距離,cw,ch為真實框和預(yù)測框最小外接矩形的寬和高,, 為真實框中心坐標(biāo),, 為預(yù)測框中心坐標(biāo),ω,h,ωgt,hgt分別為預(yù)測框和真實框的寬和高,θ控制對形狀損失的關(guān)注程度本文中參數(shù)范圍定為[2,6]。SIoU(Scylla Intersection over Union)在CIoU的基礎(chǔ)上重新定義了懲罰度量,考慮了期望回歸之間的向量夾角,提升了模型收斂速度的同時,提升了模型對于安全帽檢測的精度。
2.3? 改進特征融合方式并增加小目標(biāo)檢測頭
原始的YOLOv5模型在Neck模塊對SPPF模塊輸出的20×20大小的特征圖進行兩次上采樣,并通過四次Concat操作,輸出特征圖大小為80×80、40×40和20×20的三個尺寸,分別用于檢測小目標(biāo),中等目標(biāo),大目標(biāo),但是在實際情況中施工人員遍布整個施工現(xiàn)場,在工人離的距離比較遠時就會成為極小目標(biāo),此時80×80的檢測頭對于極小目標(biāo)的檢測很容易出現(xiàn)漏檢誤檢。針對這個問題,本文提出一種新的特征融合方式,并增加一個極小目標(biāo)檢測層,改進的Neck部分與Head部分如圖4所示。
原始YOLOv5算法在第二次Concat操作后經(jīng)過一個C3模塊輸出特征圖大小為80×80的小目標(biāo)檢測層用以檢測小目標(biāo),本文在兩次上采樣與Concat操作后,再進行一次上采樣得到160×160的特征圖,將上采樣后的特征圖與骨干網(wǎng)絡(luò)第二層的輸出進行Concat,再經(jīng)過一個不改變特征圖大小的C3模塊,最終輸出特征圖大小為160×160的極小目標(biāo)檢測層,改良后的小目標(biāo)檢測層Concat拼接也由原來的主干網(wǎng)絡(luò)第四層變?yōu)榈谌紊喜蓸忧暗奶卣鲌D輸出,融合路徑的改進加強了Neck的特征融合能力,提升了模型對于小目標(biāo)與極小目標(biāo)的檢測性能。
3? 實驗結(jié)果與分析
3.1? 數(shù)據(jù)收集與預(yù)處理
針對安全帽數(shù)據(jù)集,網(wǎng)上比較常用的開源數(shù)據(jù)集有SafetyHelmetWearing-Dataset,共有7 581張圖片[11],該數(shù)據(jù)集中包含大量的簡單重復(fù)樣本不符合實際工地場景,手動剔除數(shù)據(jù)集中的簡單重復(fù)樣本并通過網(wǎng)絡(luò)爬蟲與自主拍攝,共收集圖片12 159張,自主收集的圖片使用LabelImg標(biāo)注工具標(biāo)注為VOC格式,針對佩戴安全帽與未佩戴安全帽設(shè)置兩個分類:helmet(佩戴安全帽),head(未佩戴安全帽)。通過腳本將數(shù)據(jù)集轉(zhuǎn)換為YOLO格式并按訓(xùn)練集:驗證集=8:2的比例進行隨機劃分,得到訓(xùn)練集數(shù)據(jù)9 669張,驗證集數(shù)據(jù)2 490張。
3.2? 實驗環(huán)境及參數(shù)設(shè)置
本次實驗在AutoDL服務(wù)器上運行,操作系統(tǒng)為Ubuntu 18.04,CPU為12核 Intel(R) Xeon(R) Platinum 8255C,內(nèi)存43 GB,GPU為一塊RTX 2080 Ti,顯存為11 GB,框架選用Pytorch。具體環(huán)境配置如表1所示。
使用SGD優(yōu)化器進行訓(xùn)練,圖片輸入大小為640×640,batch-size設(shè)置為16,數(shù)據(jù)加載器數(shù)量設(shè)置為8,訓(xùn)練輪數(shù)為250輪,其他超參數(shù)均為默認值,所有對比實驗均采用相同參數(shù)。
3.3? 衡量指標(biāo)
采用精確率P(Precision)、召回率R(Recall)以及平均精確率(mAP)作為衡量模型性能的指標(biāo)。
實驗中對真實情況和預(yù)測情況的分類如表2所示。其中TP表示被模型預(yù)測為正類的正樣本,F(xiàn)P被模型預(yù)測為正類的負樣本,F(xiàn)N被模型預(yù)測為負類的正樣本,TN被模型預(yù)測為負類的負樣本。
精確率(P)是分類正確的數(shù)量占總分類數(shù)量的比值,召回率(R)是分類正確的數(shù)量占總樣本的數(shù)量,平均精確度(Average precision, AP)是對精確率—召回率曲線(PR曲線)上的Precision值求均值,平均精確率mAP是對所有類別計算出的AP值求平均值,mAP@0.5表示IoU=0.5時mAP的值,mAP@0.5越大表示模型的檢測效果越好,mAP@0.5:0.95指IoU的值從0.5按照0.05的步長增長到0.95時所有mAP的平均值。mAP@0.5:0.95的值越大,表示模型預(yù)測框和真實框越契合,檢測效果越好。以上指標(biāo)的計算公式為:
其中式中S表示檢測類別數(shù),本文中為2,APi代表第i個類別的精確率。
3.4? 實驗結(jié)果
改進后的模型在制作好的訓(xùn)練集上訓(xùn)練250輪,訓(xùn)練結(jié)果曲線圖如圖5所示,從圖中可以得知,在訓(xùn)練40代之后模型迅速收斂,在后續(xù)訓(xùn)練過程中緩慢上升,最終趨于穩(wěn)定,在訓(xùn)練過程中模型沒有出現(xiàn)過擬合與欠擬合現(xiàn)象,驗證了模型改進的可行性。
3.5? 消融實驗
為了驗證優(yōu)化后模型的訓(xùn)練效果,設(shè)計消融實驗,實驗結(jié)果如表3所示??梢钥吹?,原始YOLOv5s算法的精確率,召回率以及平均精確率分別為90.8%、80.4%和85.2%,在對YOLOv5s進行改進后,無論是單獨增加ECA注意力,替換損失函數(shù)還是增加極小目標(biāo)檢測層都在一定程度上提升了模型的性能。綜合來看,在原始YOLOv5s算法中同時進行添加ECA注意力機制,替換SIoU損失函數(shù),以及添加極小目標(biāo)檢測層的改進方式對模型的提升最為顯著,與原始模型相比,精確率提升0.6%,召回率提升2.9%,平均精確率提升2.6%,mAP0.5:0.95提升1.7%,進一步驗證了改進方案的可行性。
3.6? 與其他模型對比實驗
為了進一步驗證改進模型的可能性,將本文的改進模型與YOLOv3-spp、YOLOX-s、YOLOv7-l等現(xiàn)有安全帽檢測算法進行對比實驗,在本文自建的數(shù)據(jù)集上進行測試,實驗結(jié)果如表4所示。從實驗結(jié)果可以看出,本文改進算法精確率與召回率均高于YOLOv5m,以更小參數(shù)量取得了更好的檢測性能,驗證了改進方法的可行性。雖然精度要略低于最新的YOLOX-s與YOLOv7-l模型,但召回率相較于YOLOX-s模型提高了4.58%,相較于YOLOv7-l模型提升了2.65%,在降低少量精度的情況下,明顯提升了模型的召回率。mAP@0.5達到87.8,比YOLOX-s模型與YOLOv7-l模型相比,分別提高2.41%與1.2%,訓(xùn)練結(jié)果比較理想,說明了本文算法的可行性。
3.7? 檢測結(jié)果對比
為了驗證改進模型的實際檢測效果,設(shè)計改進模型與原始YOLOv5s的檢測對比實驗,實驗結(jié)果如圖6和圖7所示。
可以看到,在圖6(a)中最左側(cè)的未佩戴安全帽的工人并沒有被模型檢測出來,出現(xiàn)了漏檢,本文的改進模型成功將其檢測出來,并分類正確。在圖7(a)中,手抬鋼板的六名工人只有四名工人被成功檢測出來,另外兩名沒被檢測出來的工人因為出現(xiàn)遮擋,并且安全帽顏色與鋼板顏色相近而被模型漏檢,本文的改進模型將六名工人全部成功檢測且置信度高于原始模型,原始YOLOv5s右側(cè)遠處的小目標(biāo)全部漏檢,本文的改進算法成功檢測出兩人。以上結(jié)果表明本文的改進模型對于密集場景與小目標(biāo)檢測場景下泛化能力更強。
4? 結(jié)? 論
針對現(xiàn)有安全帽檢測算法在密集場景與小目標(biāo)場景下檢測效果不佳的情況,本文在YOLOv5s算法的基礎(chǔ)上進行改進,引入高效注意力模塊ECA,優(yōu)化邊界框損失函數(shù),改進特征融合方式并增加小目標(biāo)檢測層,與原始算法相比減少了漏檢情況,提高了分類置信度得分,并得到更高的平均精確率。與原始算法相比,本文改進算法更適用于實際施工現(xiàn)場中密集目標(biāo)與小目標(biāo)的檢測,提升了安全帽監(jiān)管的可靠性。但是,本文仍然存在一些缺陷,參數(shù)量與計算量與原算法相比均有增加,增大了顯存與內(nèi)存開銷。在后續(xù)實驗的重點是對模型進行壓縮枝剪,獲得更輕量化的結(jié)構(gòu)減少模型對算力的需求。
參考文獻:
[1] REDMON J,DIVVALA S,GIRSHICK R,et al. You Only Look Once: Unified,Real-Time Object Detection [C]//2016 IEEE Conference on Computer Vision and Pattern Recognition(CVPR).Las Vegas:IEEE,2016:779-788.
[2] GIRSHICK R,DONAHUE J,DARRELL T,et al. Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation [C]//2014 IEEE Conference on Computer Vision and Pattern Recognition.Columbus:IEEE,2014:580-587.
[3] 吳冬梅,王慧,李佳.基于改進Faster RCNN的安全帽檢測及身份識別 [J].信息技術(shù)與信息化,2020(1):17-20.
[4] LIU W,ANGUELOV D,ERHAN D,et al. SSD: Single Shot MultiBox Detector [J/OL].arXiv:1512.02325 [cs.CV].(2015-12-08).https://arxiv.org/abs/1512.02325.
[5] 李明山,韓清鵬,張?zhí)煊睿?改進SSD的安全帽檢測方法 [J].計算機工程與應(yīng)用,2021,57(8):192-197.
[6] 徐傳運,袁含香,李剛,等.使用場景增強的安全帽佩戴檢測方法研究 [J].計算機工程與應(yīng)用,2022,58(19):326-332.
[7] 王玲敏,段軍,辛立偉.引入注意力機制的YOLOv5安全帽佩戴檢測方法 [J].計算機工程與應(yīng)用,2022,58(9):303-312.
[8] WANG Q L,WU B G,ZHU P F,et al. ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks [J/OL].arXiv:1910.03151 [cs.CV].(2019-10-08).https://arxiv.org/abs/1910.03151v1.
[9] 楊真真,鄭藝欣,邵靜,等.基于改進路徑聚合和池化YOLOv4的目標(biāo)檢測 [J].南京郵電大學(xué)學(xué)報:自然科學(xué)版,2022,42(5):1-7.
[10] 伏德粟,高林,劉威,等.基于改進YOLOv5算法的電力工人作業(yè)安全關(guān)鍵裝備檢測 [J].湖北民族大學(xué)學(xué)報:自然科學(xué)版,2022,40(3):320-327.
[11] 許鎖鵬,盧健,許心怡,等.基于YOLOv5的安全帽佩戴檢測系統(tǒng)設(shè)計 [J].黑龍江科學(xué),2022,13(22):49-51.
作者簡介:李達(1998—),男,漢族,湖南邵陽人,碩士研究生在讀,研究方向:圖像處理、計算機視覺;通訊作者:劉輝(1964—),女,漢族,湖南常德人,副教授,碩士,研究方向:圖像處理、目標(biāo)檢測、計算機視覺。