徐春鴿
(廣東培正學(xué)院數(shù)字科學(xué)與計(jì)算機(jī)學(xué)院,廣東 廣州 510830)
智能施工現(xiàn)場[1],目標(biāo)檢測技術(shù)在智能監(jiān)控系統(tǒng)中起著至關(guān)重要的作用,其中安全帽和反光背心檢測成為研究熱點(diǎn)[2]。目前,安全帽和反光背心檢測已經(jīng)從傳統(tǒng)的機(jī)器學(xué)習(xí)方法轉(zhuǎn)向深度學(xué)習(xí)方法。
許多學(xué)者提出將YOLO 算法應(yīng)用于頭盔和反光背心的實(shí)時檢測。目前,利用YOLO 算法對頭盔和反光背心進(jìn)行檢測時,精度還無法滿足實(shí)時性要求,容易出現(xiàn)漏檢,同時存在精度和速度無法兼顧等問題。
為了解決這些問題,本文提出了一種頭盔和反光背心的檢測模型,選擇YOLOv5s 網(wǎng)絡(luò)模型作為主體,采用GhostNet 模塊代替原始的卷積Conv,以及采用C3Ghost 替換C3 模塊,這樣可以極大減少冗余,提高檢測速度;用CAFAFE 模塊替代原上采樣Upsample,來提高模型的檢測精度。
YOLOv5 是由Ultralytics 提出的,其在YOLOv4基礎(chǔ)上進(jìn)行了改進(jìn)。YOLOv5吸收了先前版本和其他網(wǎng)絡(luò)(例如CSPNet 和PANet[3-4])的優(yōu)點(diǎn),并在準(zhǔn)確性和速度之間取得了良好的效果。YOLOv5利用深度倍數(shù)和寬度倍數(shù)來控制網(wǎng)絡(luò)的寬度和深度。YOLOv5s是這個系列中深度最小,特征圖寬度最小的網(wǎng)絡(luò),其他網(wǎng)絡(luò)版本也在這個基礎(chǔ)上不斷深化和拓寬。YOLOv5s 主要由以下幾個部分構(gòu)成:①輸入(馬賽克數(shù)據(jù)增強(qiáng)、自適應(yīng)anchorbox計(jì)算和自適應(yīng)圖像縮放);②骨干網(wǎng)絡(luò)(CSPNet和Focus模塊);③頸部網(wǎng)絡(luò)(FPN和PANet);④檢測端(CIoU損失函數(shù))。如圖1所示。
圖1 YOLOv5s結(jié)構(gòu)圖
YOLOv5s中有很多上采樣方法,其中最近鄰法和雙線性插值法通過現(xiàn)有像素的空間關(guān)系進(jìn)行插值,實(shí)現(xiàn)簡單,但前者會改變圖像元素值的幾何連續(xù)性,后者會導(dǎo)致邊緣被平滑,都不能有效地保持特征。雖然反卷積可以通過參數(shù)學(xué)習(xí)來減少特征失真,但不可避免地引入了大量的參數(shù)。為了在上采樣期間保持特征而不引起參數(shù)峰值,本文使用CARAFE 算子進(jìn)行上采樣。輕量級上采樣算子CARAFE[5]結(jié)構(gòu)如圖2所示。
圖2 CARAFE結(jié)構(gòu)圖
CARAFE 由兩個模塊組成即采樣核預(yù)測模塊和內(nèi)容感知特征重組模塊。采樣核預(yù)測模塊主要用于生成重組核,假設(shè)輸入特征映射大小為H×W×C,采樣多重度為σ(=2)。首先,使用1*1卷積層將輸入特征通道從C壓縮到Cm,以減少參數(shù)數(shù)量和計(jì)算成本。然后,執(zhí)行內(nèi)容編碼以生成重組內(nèi)核。這是通過使用大小為kencoder×kencoder的卷積層來預(yù)測壓縮特征圖的采樣內(nèi)核,以獲得輸出通道數(shù)為σ2×的采樣內(nèi)核。設(shè)置kup=5和kencoder=3作為性能和效率之間的折衷。將其在空間維度上展開,可以得到一個大小為σH×σW×kup×kup的重組核。最后,使用Softmax 函數(shù)在空間維度上對生成的大小為kup×kup的每個重組核進(jìn)行歸一化操作,歸一化操作之后兩核之間相加小于1。內(nèi)容感知特征重組模塊先將不同位置映射到輸入特征上,并且在中心位置處取一塊kup大小的區(qū)域,然后與該處的上采樣做乘積得到輸出值。對于一個目標(biāo)位置l'和對應(yīng)的以l=(i,j)為中心的正方形區(qū)域N(χl,kup),計(jì)算方法如下:
其中,χ'表示新的特征映射,wl'表示重組內(nèi)核,r=[kup/2]。
GhostNet 是一種神經(jīng)網(wǎng)絡(luò)架構(gòu),旨在平衡高精度和低計(jì)算成本。GhostNet[6]的出現(xiàn)解決傳統(tǒng)深度神經(jīng)網(wǎng)絡(luò)模型過于復(fù)雜而無法在資源受限的設(shè)備上運(yùn)行的缺點(diǎn)。本文對YOLOv5s 網(wǎng)絡(luò)進(jìn)行改進(jìn),將原來的C3 模塊替換為來自GhostNet 的C3Ghost 模塊,該模塊可以通過在多個卷積層之間共享權(quán)重來降低模型的計(jì)算復(fù)雜性。因此,采用GhostNet 可以在保持準(zhǔn)確率的同時具有更少的參數(shù)。并且本文還將CBS 模塊替換為Ghost Conv 模塊,該模塊可以減少模型參數(shù)量。圖3描述了Ghost模塊的操作。
圖3 GhostNet卷積過程圖
與傳統(tǒng)的卷積塊不同,GhostConv 分兩步對圖像進(jìn)行特征圖提取。第一步還是用普通的卷積計(jì)算,此時得到的特征圖通道較少。第二步使用廉價操作(depthwise conv)再次進(jìn)行特征提取,得到更多的特征圖,然后使用concat兩次得到新的特征圖,形成新的輸出。
從圖3 可以看出,廉價操作將在每個通道上執(zhí)行廉價計(jì)算,以增強(qiáng)特征獲取并增加通道數(shù)量。與傳統(tǒng)的卷積計(jì)算相比,這種模式需要的計(jì)算量要少得多。
改進(jìn)的YOLOv5s的網(wǎng)絡(luò)結(jié)結(jié)構(gòu),主要在骨干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)進(jìn)行改進(jìn)。骨干網(wǎng)絡(luò)和部分頸部網(wǎng)絡(luò)采用GhostConv 和C3Ghost 模塊組成,以此降低模型的復(fù)雜性,提高模型的檢測效率。頸部網(wǎng)絡(luò)的上采樣Upsample 是用CAFAFE 模塊所替代,CARAFE 模塊是由內(nèi)核預(yù)測模塊(KPM)和內(nèi)容感知重組模塊(CaRM)兩部分組成,其功能是通過上采樣核預(yù)測和特征重組。相當(dāng)于是用內(nèi)核預(yù)測模塊(KPM)和內(nèi)容感知重組模塊(CaRM)來替代其Upsample 上采樣模塊中的FPN 和PAN 結(jié)構(gòu),來提高模型的檢測精度。本文將融入GhostNet模塊、CAFAFE模塊的YOLOv5s算法稱為YOLOv5s-GhostNet-CAFAFE 算法(簡稱YOLOv5s-GC算法),其算法結(jié)構(gòu)如圖4所示。
圖4 YOLOv5s-GC結(jié)構(gòu)圖
實(shí)驗(yàn)的電腦設(shè)備使用了NVIDIA GeForce RTX 3060,顯卡類型為GDDR6,顯存容量為16 GB。在虛擬環(huán)境使用Anaconda 3,IDE 環(huán)境使用了PyCharm Community,開源框架使用了CUDA11.1 對應(yīng)的PyTorch,開發(fā)環(huán)境為Python 3.9。
本文采用了Kaggle[7]的鐵路工人安全帽和反光衣數(shù)據(jù)集,數(shù)據(jù)集有三個類別,涉及人、安全帽和反光衣,數(shù)據(jù)集總數(shù)量為1898張。數(shù)據(jù)集中的大部分?jǐn)?shù)據(jù)為小目標(biāo)。
為了驗(yàn)證改進(jìn)算法的有效性,本文采用精度率(P)、召回率(R)和平均精度(mAP)這三個評價指標(biāo)對模型進(jìn)行評估。在目標(biāo)檢測中,mAP 是一個關(guān)鍵的綜合指標(biāo),它能夠?qū)δP蜋z測的準(zhǔn)確性進(jìn)行全面評估。精確率P和召回率R可以表示如下:
其中,TP、FP和FN分別表示真陽性、假陽性和假陰性。要計(jì)算mAP,必須計(jì)算出每個類的平均精度(AP),該值可以通過全點(diǎn)插值方法計(jì)算,并繪制精確率和召回率曲線。此外,通過對每個類取AP 的平均值來計(jì)算mAP。公式可以表示如下:
其中,i 是指標(biāo)值,P 和R 分別表示精確率和召回率,N數(shù)據(jù)的類別數(shù),APi是第i 類的平均精度。此外,本文還引入了每秒幀數(shù)(FPS)和模型的參數(shù)大小作為模型性能的評價指標(biāo)之一。速度越高,就越能滿足安全帽和反光衣實(shí)時檢測的需求。
在對模型進(jìn)行訓(xùn)練時,需要對超參數(shù)進(jìn)行設(shè)置,超參數(shù)的好壞直接影響模型訓(xùn)練的結(jié)果,具體設(shè)置的參數(shù)如表1所示。
表1 網(wǎng)絡(luò)訓(xùn)練參數(shù)設(shè)置取值
2.5.1 YOLOv5s-GC和YOLOv5s算法P、R對比
為了更好地理解兩種算法之間的性能差異,對訓(xùn)練過程中P、R 進(jìn)行打印。具體來說,對YOLOv5s-GC算法和原YOLOv5s 算法訓(xùn)練過程中P 和R 的變化進(jìn)行打印,對比如圖5所示。
圖5 YOLOv5s-GC和YOLOv5s算法P、R對比圖
圖5a 可以看出,YOLOv5s-GC 和YOLOv5s 算法P 精確率相比,其收斂速度和精確率的值相似。圖5b可以看出,YOLOv5s-GC 和YOLOv5s算法R召回率相比,其收斂速度和召回率的值更高更快。因此,YOLOv5s-GC 和YOLOv5s 算法相比,其實(shí)際檢測安全帽和反光衣佩戴情況的準(zhǔn)確率更高。
2.5.2 消融實(shí)驗(yàn)
為了深入探究不同的改進(jìn)方案對YOLOv5 算法性能的影響而設(shè)計(jì)了三組實(shí)驗(yàn),以研究各種不同的改進(jìn)方案。其中“√”表示在模型中引入了改進(jìn)方法,“×”表示在模型中沒有引入改進(jìn)方法。其消融實(shí)驗(yàn)的性能對比表如表2所示。
表2 消融實(shí)驗(yàn)性能對比
從表2 可以看出,YOLOv5s-G 相比YOLOv5s 采用GhostNet 模塊代替原始的卷積Conv,以及采用C3Ghost 替換C3模塊,其F1 和mAP 略微有所下降,但模型大小減少了一半,檢測速度提升了8fps,可以證明采用GhostNet 模塊可以降低模型的復(fù)雜性,提高模型的檢測效率。YOLOv5s-C 相比YOLOv5s 采用CAFAFE 模塊替代原上采樣Upsample,其F1 提升了6%,mAP 提升了6.71%,模型大小略微有所增加,檢測速度持平。YOLOv5s-GC 融入GhostNet 模塊、CAFAFE 模塊,其F1 提升了4%,mAP 提升了5.8%,模型大小減少了24.3M,檢測速度提升了8fps。實(shí)驗(yàn)結(jié)果表明,采用CARAFE 方法進(jìn)行改進(jìn),可以提高精度。采用GhostNet 模塊方法進(jìn)行改進(jìn),可以降低模型的復(fù)雜性,提高模型的檢測效率。
為了看出模型對三類的檢測效果,分別打印出YOLOv5s 和YOLOv5s-GC 在測試集上混淆矩陣圖,如圖6(a)YOLOv5s 混淆矩陣和圖6(b)YOLOv5s-GC混淆矩陣。
圖6 YOLOv5s-GC和YOLOv5s混淆矩陣對比圖
混淆矩陣圖對角線上深色方塊代表了預(yù)測正確類別的比例,圖6(b)可以看出YOLOv5s-GC 識別為hamlet 的概率為92%,圖6(a)可以看出YOLOv5s 識別為hamlet 的概率為77%,可以說明本文改進(jìn)算法YOLOv5s-GC 相比YOLOv5s 識別正確率更高,效果更好。
通過前文可知,YOLOv5s-GC 算法精確率、效率較高,且更易于部署,更滿足工業(yè)檢測要求。為了更加直觀的看出效果,將本文改進(jìn)算法YOLOv5s-GC 與原YOLOv5s 對實(shí)際圖片進(jìn)行測試,得到檢測結(jié)果如圖7、圖8 所示。其中圖7 為YOLOv5s 檢測圖,圖8 為YOLOv5s-GC檢測圖。
圖7 為YOLOv5s檢測圖
圖8 YOLOv5s-GC檢測圖
通過檢測結(jié)果圖8(a)、圖8(b)和圖7(a)、圖7(b)對比表明,YOLOv5s-GC 算法相比YOLOv5s 算法,檢測精度有所提升,對實(shí)際場景的檢測效果較好。
由于原YOLOv5s算法存在模型復(fù)雜、準(zhǔn)確率低等局限性,本文提出了一種基于YOLOv5s 的改進(jìn)算法YOLOv5s-GC。該算法首先采用GhostConv和C3Ghost模塊替換Conv 卷積,以此降低模型的復(fù)雜性,提高模型的檢測效率。其次將頸部網(wǎng)絡(luò)的上采樣Upsample用CAFAFE 模塊替代,其功能為通過上采樣核預(yù)測和特征重組。即用內(nèi)核預(yù)測模塊(KPM)和內(nèi)容感知重組模塊(CaRM)來替代其Upsample 上采樣模塊中的FPN 和PAN 結(jié)構(gòu),以提高模型的檢測精度。實(shí)驗(yàn)結(jié)果表明,本文提出的YOLOv5s-GC 算法相比原YOLOv5s 算法,其F1、mAP、檢測速度均有所提升,且模型大小減少了一半,更利于模型的實(shí)時檢測和部署,更適合安全帽和反光背心佩戴的實(shí)時檢測。