郭安文,權(quán)冀川
(陸軍工程大學(xué)指揮控制工程學(xué)院,江蘇 南京 210007)
施工人員佩戴安全帽是安全施工的必要措施。因此,需要對施工人員是否佩戴安全帽進(jìn)行監(jiān)測及管理。
本文探討利用計算機(jī)視覺技術(shù)自動監(jiān)測工人是否佩戴了安全帽。具體來說,是借助目標(biāo)檢測算法檢測監(jiān)控圖像或視頻中人員的頭部,并利用分類算法判斷頭部是否佩戴了安全帽。常用的目標(biāo)檢測算法包括SSD、Faster R-CNN、YOLO 系列算法等,這些算法可以檢測圖像中的目標(biāo)位置和類別信息。對于安全帽檢測任務(wù),需要在檢測結(jié)果中提取出人員頭部的位置和安全帽的位置,對這些位置信息進(jìn)行比對,以判斷是否佩戴安全帽。
但是施工環(huán)境通常比較惡劣,無法保證標(biāo)準(zhǔn)的機(jī)房條件,溫濕度不穩(wěn)定,同時還有灰塵、震動、噪聲等不良因素,會對高性能設(shè)備的穩(wěn)定性和計算性能產(chǎn)生很大的影響。而便攜式、低性能的設(shè)備通常比較耐用,適應(yīng)性強(qiáng),能夠在惡劣的環(huán)境下正常運行。因此,在施工環(huán)境中,適合選用低性能設(shè)備,以保證設(shè)備的穩(wěn)定性和可靠性。
由于施工環(huán)境中適用的設(shè)備性能有限,因此需要選擇合適的檢測模型,即較少的參數(shù)量、較小的計算量和精度適中的檢測模型,并且保證在一些簡單的應(yīng)用場景中能夠使用。YOLOv5算法相較于其他目標(biāo)檢測模型更加方便配置。它的配置文件簡單、支持多種數(shù)據(jù)集、使用的預(yù)訓(xùn)練模型簡單、易于調(diào)試,這些特點使得用戶可以快速地配置和訓(xùn)練模型,大幅提高工作效率。所以本文選擇在YOLOv5 算法模型的基礎(chǔ)上改進(jìn)和優(yōu)化,提出一種可以在低性能設(shè)備上實現(xiàn)高效安全帽佩戴檢測的系統(tǒng)。
根據(jù)主干網(wǎng)絡(luò)的depth_multiple(深度)參數(shù)和width_multiple(寬度)參數(shù)的不同,YOLOv5 算法默認(rèn)提供了五個模型,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x,圖1 是深度和寬度均為1 的YOLOv5模型結(jié)構(gòu)圖。隨著模型的深度與寬度依次增加,模型的精度會不斷提高,但訓(xùn)練、推理的速度也會顯著下降。YOLOv5算法網(wǎng)絡(luò)模型的結(jié)構(gòu)總體上可以分為四個部分:輸入端、Backbone網(wǎng)絡(luò)、Neck特征融合網(wǎng)絡(luò)以及Head輸出端。
圖1 寬度和深度均為1的YOLO結(jié)構(gòu)圖
⑴Mosaic 數(shù)據(jù)增強(qiáng):Mosaic 數(shù)據(jù)增強(qiáng)是對四張圖片進(jìn)行隨機(jī)色域變換,再通過隨機(jī)縮放、隨機(jī)裁減、隨機(jī)排布的方式進(jìn)行拼接形成訓(xùn)練數(shù)據(jù)。這種操作方式極大豐富了圖片的背景數(shù)量,變相地實現(xiàn)了更大的batch size,同時經(jīng)過隨機(jī)縮放增加了很多小目標(biāo),提高了模型的泛化能力和魯棒性。
⑵自適應(yīng)圖片縮放:常見目標(biāo)檢測模型對于輸入圖片的處理方式是將原始輸入圖片的尺寸統(tǒng)一調(diào)整為固定大小,再輸入到檢測網(wǎng)絡(luò)中。但像這樣僅僅使用resize 操作來調(diào)整圖片的大小,很容易導(dǎo)致圖片失真。而且在縮放填充后,如果填充過多,就會存在信息冗余,影響模型的推理速度。為了避免信息冗余,同時提高模型運算速度,YOLOv5 算法采用了自適應(yīng)的縮放方法,在待檢測圖片的兩端填充最少的黑邊,然后將其輸入網(wǎng)絡(luò)模型中進(jìn)行訓(xùn)練,保證在提高模型運算速度的同時,又不會引入過多的冗余信息。
⑶自適應(yīng)錨定框計算:YOLOv5算法除了使用默認(rèn)的錨定框外,還可以在模型訓(xùn)練前對數(shù)據(jù)集的標(biāo)注信息進(jìn)行統(tǒng)計,計算出數(shù)據(jù)集默認(rèn)錨定框的最佳召回率。如果最佳召回率大于或等于某一設(shè)定閾值(一般取為0.98),則不會更新錨定框;如果最佳召回率小于該閾值,則自動重新計算更符合此數(shù)據(jù)集特征的錨定框。更新錨定框采用k-means算法和遺傳算法對數(shù)據(jù)集進(jìn)行解析,并預(yù)先設(shè)置固定的Anchor;網(wǎng)絡(luò)訓(xùn)練時,算法基于初始錨定框輸出預(yù)測框,并與真實值進(jìn)行比較,計算這兩者的誤差;最后采用反向更新的方法迭代網(wǎng)絡(luò)參數(shù),降低損失函數(shù)的值。如果計算得到的錨定框的效果不好,也可以在代碼中關(guān)閉自動計算錨定框的功能。
⑴CBS 結(jié)構(gòu):CBS 是由卷積(Conv)、批量歸一化(BN)和SiLU 激活函數(shù)(Silu)組成的結(jié)構(gòu)。卷積層用于提取圖像的不同特征,批量歸一化層對特征數(shù)據(jù)進(jìn)行歸一化處理以減少訓(xùn)練過程中可能產(chǎn)生的梯度消失現(xiàn)象,而SiLU激活函數(shù)則是對輸入數(shù)據(jù)進(jìn)行非線性變換,使其具有更平滑的梯度,保證模型更加靈活和具有更強(qiáng)的表達(dá)能力。CBS 結(jié)構(gòu)可以有效提高模型的準(zhǔn)確率。
⑵ C3 結(jié)構(gòu):在YOLOv5-6.0 版本中,使用了C3模塊替代早期的BottleneckCSP[3]模塊。C3 結(jié)構(gòu)與CSP 結(jié)構(gòu)基本相同,如圖2,都使用了分支結(jié)構(gòu)來處理網(wǎng)絡(luò)的不同特征,但在修正單元的選擇上略有不同。C3結(jié)構(gòu)由三個連續(xù)的卷積層組成,第一個卷積層的輸出通道數(shù)為輸入通道數(shù)的一半,第二個卷積層的輸出通道數(shù)等于第一個卷積層的輸出通道數(shù),第三個卷積層的輸出通道數(shù)等于輸入通道數(shù)。這種設(shè)計可以有效地減少模型的參數(shù)量和計算量,同時也能提高模型的學(xué)習(xí)能力和精度。C3 模塊的使用使得YOLOv5-6.0版本的模型更加輕量化和高效,可以更快地執(zhí)行目標(biāo)檢測任務(wù),實用性更好。
圖2 C3模塊結(jié)構(gòu)與CSP模塊結(jié)構(gòu)
⑶SPPF 結(jié)構(gòu):SPP[4(]空間金字塔池化)能夠?qū)⑷我獯笮〉奶卣鲌D轉(zhuǎn)換成固定大小的特征向量,可以增強(qiáng)特征圖的表達(dá)能力。在YOLOv5-6.0 中,SPP 結(jié)構(gòu)被SPPF(SPP-Fast)結(jié)構(gòu)所取代。如圖3,SPPF 只用了一種卷積核,串行以后等效SPP 的計算結(jié)果,速度比SPP更快。
圖3 SPP模塊結(jié)構(gòu)與SPPF模塊結(jié)構(gòu)
YOLOv5 算法模型的Neck 特征融合網(wǎng)絡(luò)部分首先使用FPN 結(jié)構(gòu)構(gòu)建特征金字塔,然后通過PAN 結(jié)構(gòu)進(jìn)行特征融合。FPN 結(jié)構(gòu)采用自頂向下的側(cè)邊連接構(gòu)建多種尺度的高級語義特征圖。PAN 結(jié)構(gòu)則通過自底向上的路線加強(qiáng)低級語義特征圖的定位信息,并將不同尺度的特征圖進(jìn)行融合。兩種結(jié)構(gòu)融合后,能夠充分利用多尺度的特征圖信息,兼具自頂向下和自底向上特征融合策略的優(yōu)勢,實現(xiàn)更加準(zhǔn)確和魯棒的物體檢測。
YOLOv5 算法模型的Head 部分用來輸出目標(biāo)檢測的結(jié)果,其主體是三個檢測器,分別處理不同尺度的特征圖。當(dāng)輸入圖片分辨率為640×640時,三個尺度上的特征圖分別為80×80、40×40、20×20,基于網(wǎng)格的anchor 會在這些提取出的特征圖上進(jìn)行目標(biāo)檢測,以捕捉不同尺度的目標(biāo)信息,提高模型的準(zhǔn)確性和魯棒性。每個檢測器部分都采用了非極大值抑制NMS 機(jī)制以篩選出目標(biāo)框,可以有效去除冗余框,提高算法的效率和速度,并采用了CIOU_Loss 作為損失函數(shù),進(jìn)一步提升了算法的檢測精度。
YOLOv5 算法模型的主干特征提取網(wǎng)絡(luò)采用C3結(jié)構(gòu),在精度方面表現(xiàn)優(yōu)異,但具有較大的參數(shù)量,面臨模型過于龐大、內(nèi)存要求高、檢測速度慢等問題。在低性能設(shè)備上,如此大而復(fù)雜的模型很難有用武之地。由于模型過于龐大,經(jīng)常面臨內(nèi)存不足的問題。而工地場景中的檢測設(shè)備性能有限,需要小巧、適用度高的模型,而且還可能缺少高性能的GPU 支撐。MobileNet v3 是一種輕量級網(wǎng)絡(luò),采用了深度可分離卷積等輕量化技術(shù),具有較小的模型參數(shù)量和計算復(fù)雜度,適合在計算能力較弱的設(shè)備上運行。還可以通過減少卷積核的數(shù)量以縮減通道數(shù),從而降低計算量和存儲空間要求。這些優(yōu)化策略可以進(jìn)一步提高M(jìn)obileNet v3的計算速度。本文提出將主干特征提取網(wǎng)絡(luò)替換為更輕量的MobileNet v3 網(wǎng)絡(luò)(圖4),以實現(xiàn)網(wǎng)絡(luò)模型的輕量化,平衡速度和精度的要求。
圖4 替換為MobileNet主干網(wǎng)絡(luò)后的結(jié)構(gòu)圖
將YOLOv5 的主干網(wǎng)絡(luò)替換為MobileNet v3 是一種有效的輕量化方法,可以大幅減少模型的參數(shù)量和計算復(fù)雜度。但是,替換后模型的檢測精度下降,為了提高模型的性能同時又不過度增加模型的參數(shù)量與計算量,就需要引入注意力機(jī)制。
目前的輕量級網(wǎng)絡(luò)中,使用SE[5]模塊作為注意力機(jī)制的例子比較常見,然而,SE 模塊僅僅考慮了通道間的信息,忽略了位置信息。BAM[6]和CBAM[7]等注意力機(jī)制通過卷積來提取位置注意力信息,但卷積只能提取局部關(guān)系,缺乏長距離關(guān)系提取的能力。因此采用能夠?qū)M向和縱向的位置信息編碼到注意力通道中的coordinate attention,如圖5,使網(wǎng)絡(luò)能夠關(guān)注大范圍的位置信息又不會帶來過多的計算量開銷,可以在模型輕量化的同時提高目標(biāo)檢測性能。
圖5 在SPPF結(jié)構(gòu)后加入CA注意力機(jī)制的結(jié)構(gòu)圖
實驗環(huán)境采用的操作系統(tǒng)為Ubuntu20.04.06 LTS,使用的CPU 為Intel(R) Core(TM) i9-9920X,主頻 為3.50GHz,GPU 為3 塊NVIDIA GeForce RTX 2080 Ti顯卡,配置12GB顯存,使用Pytorch 1.10.1框架。
實驗采用的數(shù)據(jù)集為公開的Kaggle 數(shù)據(jù)集YOLO helmet/head[8]。YOLO helmet/head 數(shù)據(jù)集共包含22789 張圖片,按照7:2:1 的比例劃分訓(xùn)練集、驗證集和測試集,數(shù)據(jù)集標(biāo)注采用YOLO 格式,標(biāo)簽為head 與helmet。實驗中使用的Batch size 大小為50,epoch為100。
為了降低模型參數(shù)量和計算量,本文選擇將YOLOv5模型的主干網(wǎng)絡(luò)替換為MobileNet v3 Small(即MobileNet v3_1)的主干網(wǎng)絡(luò),通過修改MobileNet v3 Small 主干網(wǎng)絡(luò)中隱藏層的數(shù)量,生成了四種不同大小的MobileNet v3_X 主干網(wǎng)絡(luò),分別與不同寬度、深度的YOLO Neck 特征融合網(wǎng)絡(luò)相結(jié)合。基于這些網(wǎng)絡(luò)模型測試安全帽佩戴情況檢測的性能。
此外,本文在修改后的模型上加入了CA 注意力模塊,以進(jìn)一步提升模型的性能,同時不會影響模型的參數(shù)量與計算量。
模型訓(xùn)練過程在100輪后停止。訓(xùn)練過程中的指標(biāo)變化如圖6所示。
圖6 100輪訓(xùn)練指標(biāo)變化
為了更直觀地驗證改進(jìn)后的YOLOv5 模型的檢測效果,使用模型對測試集中的圖像進(jìn)行安全帽佩戴情況檢測,并獲得檢測結(jié)果,如圖7 所示。實驗結(jié)果表明,改進(jìn)后的輕量化模型能夠滿足任務(wù)要求。
圖7 安全帽佩戴情況檢測結(jié)果
表1 給出了實驗結(jié)果的對比數(shù)據(jù)。將YOLOv5模型的主干網(wǎng)絡(luò)替換為MobileNet v3 Small 網(wǎng)絡(luò)后,模型的參數(shù)量和計算量都有顯著的下降,但mAP 值也下降了3.95%。盡管如此,替換后的模型仍然需要較高的運行環(huán)境條件。因此,本文進(jìn)一步修改了MobileNet v3 Small 的隱藏層和YOLOv5 模型的Neck 層寬度及深度,以獲得更好的模型性能。這樣組合而成的模型不僅在參數(shù)量和計算量上都有大幅度的下降,而且經(jīng)過訓(xùn)練后的mAP 值也能滿足任務(wù)要求。實驗數(shù)據(jù)的對比表明,加入注意力模塊的模型不僅能夠提升性能,而且對參數(shù)量和計算量幾乎沒有實質(zhì)性的影響??梢?,加入注意力機(jī)制是一種有效的提高模型性能的方法,特別是在參數(shù)量和計算量都有限制的情況下。因此,建議實際應(yīng)用中要根據(jù)具體情況選擇是否加入注意力機(jī)制,以達(dá)到最佳的檢測性能。上述實驗結(jié)果可以為后續(xù)的目標(biāo)檢測研究提供參考和借鑒。
表1 實驗結(jié)果對比
大規(guī)模深度學(xué)習(xí)模型在數(shù)據(jù)集上往往能達(dá)到比較高的性能。但在實際的生產(chǎn)應(yīng)用中,為了適應(yīng)特定的任務(wù)和環(huán)境,需要選擇更加適合的模型,以降低成本或提高效率。本文研究了YOLOv5 算法模型的改進(jìn)方法。在滿足任務(wù)要求的模型性能條件下,將其主干網(wǎng)絡(luò)替換為MobileNet v3 Small 網(wǎng)絡(luò),同時調(diào)整了各層的參數(shù),使得模型的參數(shù)量和計算量大幅降低,以滿足特定任務(wù)的環(huán)境條件要求;最后,通過引入CA注意力模塊提高模型的性能,而不會增加模型的參數(shù)量和計算量,以滿足任務(wù)的性能要求。