劉雪純,劉大銘*,劉若晨
(1. 寧夏大學(xué) 電子與電氣工程學(xué)院,寧夏 銀川 750000;2. 寧夏大學(xué) 沙漠信息智能感知重點實驗室,寧夏 銀川 750000)
建筑工程安全工作是工程建設(shè)管理中不可或缺的一部分。佩戴安全帽可以有效減輕高空墜物對工人頭部的傷害[1],然而有些工人安全意識淡薄,不按要求佩戴安全帽,導(dǎo)致事故的發(fā)生。因此,對施工現(xiàn)場進行安全帽佩戴檢測具有一定的現(xiàn)實意義。早期的檢測主要依賴人工,但監(jiān)視人員不會時刻處于施工現(xiàn)場,并且由于疲勞以及其他原因,漏檢的現(xiàn)象經(jīng)常發(fā)生[2]。近年來,隨著計算機視覺技術(shù)的發(fā)展,不少學(xué)者對安全帽佩戴檢測做了大量工作。傳統(tǒng)的檢測算法采取了支持向量機算法以及方向梯度直方圖特征先檢測人體,再基于安全帽的顏色特征檢測出頭盔[3]。但實際作業(yè)環(huán)境復(fù)雜多變且安全帽體積較小,傳統(tǒng)檢測方法的魯棒性和泛化性較差。
2012 年,基于深度學(xué)習(xí)[4]的檢測算法時期到來。卷積神經(jīng)網(wǎng)絡(luò)的檢測算法分為兩階段和一階段。兩階段的代表算法主要有R-CNN[5]、Fast-RCNN[6]、Faster-RCNN[7],核心思想是將被檢測圖像分割成一個個區(qū)域,形成候選框,然后在此基礎(chǔ)上做分類或者回歸。徐守坤等在算法Faster-RCNN 的基礎(chǔ)上增加錨點數(shù)量,優(yōu)化原始模型,解決了目標尺寸差異大、遮擋等因素的影響,完成了安全帽佩戴檢測且檢測準確率高,但檢測速率慢,無法滿足實時監(jiān)控的需求[8]。2015 年,Redmon 提出了一階段檢測算法YOLO(You Only Look Once)[9],核心思想是無需提取候選框,直接對圖像進行端到端的回歸,一次性完成物體的分類與位置回歸,提高了訓(xùn)練效率和檢測速度。2020 年,YOLOv5 以最高140 FPS 的檢測速度問世,真正實現(xiàn)了實時監(jiān)測。雖然YOLOv5 可以實現(xiàn)多種物體的實時監(jiān)測,但是對于小目標仍有漏檢現(xiàn)象,且參數(shù)量多、模型較大,難以應(yīng)用在嵌入式設(shè)備端。為了解決以上問題,本文在YOLOv5 的基礎(chǔ)上提出了一種基于注意力機制和多尺度特征融合的輕量級安全帽佩戴檢測算法YOLOv5-Q,主要改進了以下3 個方面:
(1)采用輕量級的GhostNet 網(wǎng)絡(luò)代替原主干網(wǎng)絡(luò)。GhostNet 網(wǎng)絡(luò)先用普通的1×1 卷積核生成部分真實特征層,實現(xiàn)對輸入圖片通道數(shù)的壓縮;再使用深度可分離卷積(DW)對真實特征層的每個通道進行低成本計算,得到Ghost 特征層;最后將Ghost 特征層和真實特征層組合形成的特征層作為輸出。GhostNet 網(wǎng)絡(luò)大幅減少了網(wǎng)絡(luò)計算量,實現(xiàn)了輕量化。
(2)提出了四尺度特征融合的檢測方法。首先,在原網(wǎng)絡(luò)80×80 的特征圖上進行2 倍上采樣操作形成160×160 的特征圖;其次,為了獲得更加豐富的語義信息,增強淺層和深層的特征信息,將新特征圖融合原模型的3 層特征信息,形成四尺度檢測,提升了密集目標及小目標的檢測精度。
(3)添加了CA 注意力機制。通過提升特征圖中重要信息的權(quán)重并抑制非相關(guān)信息的權(quán)重,對權(quán)重進行重新分配使得網(wǎng)絡(luò)更好地學(xué)習(xí)原圖目標物體的特征信息,使輕量級的模型具有復(fù)雜網(wǎng)絡(luò)模型的學(xué)習(xí)能力,增加模型檢測的召回率,從而提升模型的精度。
YOLOv5 經(jīng)過不斷更新迭代,現(xiàn)官方根據(jù)模型的大小推出了YOLOv5s、YOLOv5m、YOLOv5l以及YOLOv5x[10],各個模型的不同之處僅在于網(wǎng)絡(luò)的寬度與深度,采用縮放因子控制模型的大小,其中,YOLOv5s 模型的深度和寬度最小,運算速度最快。
YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)由4 部分組成,分別是輸入端、骨干網(wǎng)絡(luò)(Backbone)、頸部(Neck)及輸出端。輸入是640×640 的彩色圖像,采用了Mosaic進行數(shù)據(jù)增強、初始錨框計算、自適應(yīng)圖片縮放等[11]。骨干網(wǎng)絡(luò)使用Focus、CSP 結(jié)構(gòu)[12]和空間金字塔池化(SPP)結(jié)構(gòu)提取圖像的特征。Focus進行2 倍下采樣,將輸入圖像640×640×3 切分為4 個320×320 結(jié)構(gòu),然后通過拼接操作得到12 維的特征圖,再經(jīng)過卷積生成32 維的特征圖。YOLOv5 的第6 個版本將focus 結(jié)構(gòu)修改為一個卷積操作,增加了導(dǎo)出功能,方便網(wǎng)絡(luò)結(jié)構(gòu)的可視化。將SPP 結(jié)構(gòu)改為SPPF 結(jié)構(gòu),旨在增強特征圖的特征表達能力。其次,YOLOv5 中設(shè)計了兩種CSP 結(jié)構(gòu),分別是CSP1_X 和CSP2_X。CSP1_X 應(yīng) 用 于Backbone 主 干 網(wǎng) 絡(luò),CSP2_X 應(yīng)用于Neck。第6 版中CSP 結(jié)構(gòu)用C3 替換,加強網(wǎng)絡(luò)特征融合的能力。在Neck 中,YOLOv5 加入了FPN(Feature pyramid networks)+PAN(Path Aggregation Network)結(jié)構(gòu)。FPN 自頂向下地將高層特征通過上采樣與低層的特征做融合得到特征圖。PAN 在FPN 的后面添加一個自下向上的金字塔,將低層的定位特征傳遞上去。FPN+PAN 結(jié)合了底層和高層的圖像特征融合。輸出端對圖像進行預(yù)測,可以對生成的3 個特征圖進行多尺度預(yù)測。YOLOv5 的結(jié)構(gòu)圖如圖1所示。
圖1 YOLOv5 結(jié)構(gòu)圖Fig.1 YOLOv5 structure
YOLOv5 作為單階段檢測算法,集成了速度與精度,可以一次性實現(xiàn)目標分類與定位任務(wù),滿足目標檢測的實時性要求,在PASCAL VOC 與COCO(Common Objects in Context)數(shù)據(jù)集上[13]取得了較好的效果,但針對特定場景的小目標檢測的泛化性還有待提高。本文針對小目標的漏檢以及移植性困難等問題對YOLOv5 模型進行改進,提出了一種基于注意力機制和多尺度特征融合的輕量級安全帽佩戴檢測算法YOLOv5-Q。
YOLOv5 中采用了跨區(qū)域特征融合算法,融合了多層特征圖的信息,參數(shù)較多,但是安全帽佩戴檢測的環(huán)境復(fù)雜,需要移植在嵌入式端實現(xiàn)目標檢測,只有較少的參數(shù)量和計算量才能實現(xiàn)遠程網(wǎng)絡(luò)部署。本文選擇輕量級的GhostNet[14]代替YOLOv5 的主干網(wǎng)絡(luò)實現(xiàn)特征提取。
在網(wǎng)絡(luò)輕量級改進過程中,主流思想是保留特征信息中的顯著部分,將冗余信息從網(wǎng)絡(luò)中剔除,雖然達到了輕量級的特點,但是精度卻有所下降。GhostNet 網(wǎng)絡(luò)考慮到冗余的信息也可能是成功模型的重要組成部分,在設(shè)計改進輕量化時并沒有去除這些冗余,而是用更低成本的計算量來獲取特征。如圖2 所示。
圖2 GhostNet 網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 GhostNet network structure
圖2(a)是普通卷積示意圖,h×w×Ci是輸入特征圖,h'×w'×Co是輸出特征圖。卷積核大小為k×k。普通卷積計算量如式(1)所示:
圖2(b)是GhostNet 網(wǎng)絡(luò)的卷積過程[15]。對于輸入的特征層,首先用普通的1×1 卷積核生成部分真實特征層,實現(xiàn)對輸入圖片通道數(shù)的壓縮;再使用深度可分離卷積(DW)對真實特征層的每個通道進行低成本計算,得到Ghost 特征層;最后將Ghost 特征層和真實特征層組合形成的特征層作為輸出。GhostNet卷積的計算量如式(2)所示:
其中,m表示輸入特征圖分為m份。
普通卷積與GhostNet 卷積的比例為:
因此GhostNet 卷積方法比普通的卷積運算量減少了m倍,縮短了網(wǎng)絡(luò)訓(xùn)練的時間,降低了計算的成本。YOLOv5-Q 主干提取網(wǎng)絡(luò)結(jié)構(gòu)如表1 所示。
表1 YOLOv5-Q 主干提取網(wǎng)絡(luò)結(jié)構(gòu)Tab.1 YOLOv5-Q backbone extraction network structure
表1 中From 列的-1 表示輸入來自上一層輸出[16],Number 列的1 表示只進行一次Ghost 運算,GhostBottleneck 后Arguments 列的值分別表示該模塊的輸入通道數(shù)、輸出通道數(shù)、1×1 卷積升維后的通道數(shù)、卷積核大小以及步長。GhostBottleneck 分別采用步長是1、步長是2 的兩種結(jié)構(gòu)的Bottleneck,如圖3 所示。
圖3(a)是步長為1 的結(jié)構(gòu),采用兩個Ghost module(GM)串聯(lián)組成,殘差邊部分借鑒ResNet網(wǎng)絡(luò),第一個GM 用于擴大輸入通道數(shù),第二個GM將輸出通道數(shù)降低至與輸入通道數(shù)一致。步長為1 不支持下采樣,用于加深網(wǎng)絡(luò)的深度。圖3(b)是步長為2 的結(jié)構(gòu),在圖3(a)的基礎(chǔ)上增加了步長為2 的深度可分類卷積(DW),對特征圖的高和寬進行壓縮,實現(xiàn)下采樣功能。
GhostNet 代替主干網(wǎng)絡(luò)實現(xiàn)輕量化的模型,在保證精度降低最少的情況下,大幅減少了參數(shù)量、模型大小,滿足嵌入式部署的要求。表2 是YOLOv5m 與改進的輕量級模型的對比結(jié)果
經(jīng)計算,用GhostNet 替換原YOLOv5m 主干網(wǎng)絡(luò)的模型大小是24.93 MB,參數(shù)量共計12 187 951 個。YOLOv5m 模型大小是24.93 MB,參數(shù)量共計20 856 975 個。由此可知,輕量化后的模型參數(shù)量減少了41.6%,模型大小降低了40.8%,滿足嵌入式端部署的需求。
YOLOv5 中使用了3 個尺寸的特征圖融合進行預(yù)測,分別是20×20、40×40 和80×80。由于這3 個特征圖經(jīng)過了多次卷積和下采樣操作,導(dǎo)致丟失了較小目標的特征信息,對于占據(jù)圖像位置信息較少的安全帽會造成漏檢現(xiàn)象[17]。為了解決以上問題,本文在三尺寸檢測的基礎(chǔ)上新添加了160×160 的特征圖,形成了四尺度檢測,如圖4 所示。
YOLOv5 中輸入圖像經(jīng)過2 倍下采樣、4 倍下采樣、8 倍下采樣、16 倍下采樣以及32 倍下采樣得到20×20 的特征圖,再分別經(jīng)過兩個上采樣得到40×40 和80×80 的特征圖[18]。本文在80×80 的特征圖基礎(chǔ)上,進行一次上采樣得到160×160 的特征信息,再將此特征與4 倍下采樣的特征層進行融合形成第四個160×160 的特征圖。4 倍下采樣得到的特征圖屬于淺層卷積,目標位置信息精確,感受野較小,可以提高小目標檢測的檢測精度。32 倍下采樣得到的20×20 的特征圖的感受野最大,用來檢測大目標。所以大尺度的特征圖應(yīng)該用小尺寸的先驗框檢測,小尺寸的特征圖應(yīng)該用大尺度的先驗框檢測。本文采用四尺度檢測結(jié)構(gòu),4 個尺度的特征圖大小與先驗框尺寸的對應(yīng)關(guān)系如表3 所示[19]。
注意力機制借鑒人類視覺對于事物選擇性關(guān)注的特點,傾向于關(guān)注事物相關(guān)的信息,忽略不相關(guān)的信息。同樣,在深度學(xué)習(xí)中。注意力機制通過對權(quán)重的重新分配使網(wǎng)絡(luò)能夠更好地學(xué)習(xí)原圖目標物體的特征信息。
CA(Coordinate attention)是將注意力分解沿著不同方向聚合的特征編碼過程,其中一個方向捕獲長程依賴,另一個空間方向保留精確的位置信息。兩個方向獲得的信息分別編碼形成一對方向感知和位置敏感的特征圖,可以互補地應(yīng)用到輸入特征圖中來增強相關(guān)的目標。
CA 為獲取圖像寬度和高度上的注意力,將輸入特征圖沿著寬度和高度兩個方向分別進行全局平均池化,獲得兩個方向的特征圖,公式如式(4)和式(5)所示:
隨后將兩個方向的特征圖進行拼接,送入卷積核為1×1 的卷積模塊,使維度降為原來的C/r,再經(jīng)過批量歸一化處理。接著使用1×1 卷積核按原來的高度和寬度進行卷積,分別得到與原來一致的特征圖。經(jīng)過Sigmoid 激活函數(shù)后,分別得到特征圖在高度上的注意力權(quán)重gh和在寬度方向上的注意力權(quán)重gw。公式如式(6)和式(7)所示:
最后通過乘法加權(quán)計算,得到兩個方向上帶有注意力權(quán)重的特征圖,公式如式(8)所示:
CA 注意力機制的實現(xiàn)方式如圖5 所示。
圖5 CA 實現(xiàn)原理Fig.5 CA implementation principle
本實驗采用YOLOv5m 為預(yù)訓(xùn)練模型,設(shè)置初始學(xué)習(xí)率為0.01,優(yōu)化器為SGD,動量參數(shù)為0.937,最終學(xué)習(xí)率為0.1,BatchSize 為16,總迭代次數(shù)為100,并在訓(xùn)練模型時采用動量參數(shù)為0.8、epoch 為3 的warm-up 方法預(yù)熱學(xué)習(xí)[11],從而防止模型在初始階段出現(xiàn)過擬合現(xiàn)象,保證模型的穩(wěn)定性。在warm-up 階段時采用一維線性插值更新學(xué)習(xí)率,預(yù)熱結(jié)束后采用余弦退火對學(xué)習(xí)率進行更新。實驗運行環(huán)境如表4 所示。
表4 實驗運行環(huán)境Tab.4 Experimental operating environment
本文使用的數(shù)據(jù)集是目前開源的SHWD(Safety Helmet Wearing-Dataset)[20],其中一部分未佩戴安全帽的類別來自于學(xué)生上課的監(jiān)控照片,不符合施工環(huán)境,對其進行剔除,并通過現(xiàn)場采集與網(wǎng)絡(luò)爬蟲的方式在數(shù)據(jù)集中加入多組背景復(fù)雜、目標密集的數(shù)據(jù)集進行補充,總計5 121 張圖片,分辨率大小為640×640。按照8∶2的方式分成了訓(xùn)練集和驗證集,其中訓(xùn)練集4 038 張,驗證集1 083 張。使用開源標記軟件Labelimg 標注數(shù)據(jù),分為兩個標記類別,佩戴安全帽標記為hat,未佩戴安全帽標記為 person。
為增強檢測結(jié)果的泛化性能,本文在實驗前使用了mosaic 數(shù)據(jù)增強的方法增加圖片的數(shù)量以及多樣性。核心思想是將4 張圖片隨機剪裁,拼接為1 張圖進行訓(xùn)練,極大豐富了圖片的背景,變相增加了batch_size,如圖6 所示。
圖6 Mosaic 數(shù)據(jù)增強Fig.6 Mosaic data enhancement
為驗證改進的YOLOv5-Q 的性能,本文采用召回率(Recall,R)、精確率(Precision,P)、平均精度(Average precision,AP)、平均精度均值(mean AP,mAP)和每秒檢測圖片的幀數(shù)(Frames per second,F(xiàn)PS)等作為評價檢測指標。公式如式(9)~(12)所示。
其中,TP(True Positive)表示正確判斷成正樣本,指工人佩戴了安全帽且正確檢測的數(shù)量[16];FP(False Positive)表示錯誤判斷成正樣本,指工人未佩戴安全帽但檢測錯誤的數(shù)量;TN(True Negative)表示正確判斷成負樣本,指工人未佩戴安全帽且正確檢測的數(shù)量;FN(False Negative)表示錯誤判斷成負樣本,指工人佩戴了安全帽但檢測錯誤的數(shù)量;平均精度(AP)是召回率的可能取值下所有準確度的平均值,指的是P-R曲線所圍成的面積;mAP 是對AP 求均值得到的數(shù)值,mAP 的數(shù)值越大表明算法的精度越高,檢測效果越好。
為驗證YOLOv5-Q 算法的有效性,本文在相同環(huán)境下使用相同的數(shù)據(jù)集與目前比較流行的目標檢測算法(SSD、Faster R-CNN、YOLOv5)進行對比實驗。其中,SSD和YOLOv5為一階段檢測算法,F(xiàn)aster R-CNN 為兩階段檢測算法[10]。具體實驗結(jié)果見表5。由表5 可知,本文提出的算法YOLOv5-Q 的模型大小是26.47 MB,對比SSD、Faster-RCNN 和YOLOv5 算法,模型大小分別降低了64.63,81.53,15.7 MB。由此可知,本文提出的YOLOv5-Q 算法在保證精確度的情況下滿足嵌入式設(shè)備端移植的需求,在輕量化方面優(yōu)于SSD、Faster-RCNN 和YOLOv5 算法。
表5 實驗結(jié)果對比Tab.5 Comparison of experimental results
為了進一步驗證改進算法YOLOv5-Q 的有效性,本文進行了消融實驗對比分析[21]以檢測各個改進點的優(yōu)化效果,結(jié)果如表6所示。其中改進點1 對應(yīng)主干網(wǎng)絡(luò)的改進,改進點2 對應(yīng)多尺度特征融合的改進,改進點3 對應(yīng)注意力機制的改進。
表6 消融實驗Tab.6 Ablation experiments
從表6 可知,本文提出的YOLOv5-Q 引入GhostNet 改進基礎(chǔ)卷積網(wǎng)絡(luò),可以大幅度減少運算量,降低模型大?。凰某叨忍卣魅诤蠙z測改進點增加了復(fù)雜環(huán)境下的漏檢數(shù)量;引入注意力機制提升了模型的檢測準確度。結(jié)合以上3 類改進點,相對于YOLOv5,本文提出的YOLOv5-Q 模型大小由原來的42.17 MB 降至26.47 MB,降低了37.2%,但是模型精度僅下降了1.2%,完全滿足移植在嵌入式設(shè)備端的要求。
為了體現(xiàn)本文提出的YOLOv5-Q 檢測算法的實用性,本文制作了交互式檢測界面,方便移植到嵌入式設(shè)備端。嵌入式設(shè)備采用NVIDIA Jetson Xavier NX。交互式檢測界面如圖7 所示。
圖7 交互式檢測界面Fig.7 Interactive inspection interface
其中,圖7(a)是圖片檢測,圖7(b)是攝像頭實時監(jiān)測及視頻文件檢測。由圖7 可知,移植到嵌入式設(shè)備端后其功能仍然可以正常運行。因此,本文實現(xiàn)了在嵌入式平臺上實時檢測安全帽的佩戴情況,改進的YOLOv5 模型的檢測效果也得到了驗證,可以應(yīng)用在施工現(xiàn)場。
為了更直觀地看出YOLOv5-Q 檢測算法的優(yōu)越性,本文對有背景遮擋的小目標頭盔檢測以及雨霧環(huán)境下的檢測結(jié)果進行了可視化分析。背景遮擋的小目標頭盔檢測可視化結(jié)果如圖8 所示,降雨環(huán)境下的可視化結(jié)果如圖9 所示,大霧環(huán)境下的可視化結(jié)果如圖10所示。其中的圖(a)、(b)分別是相同檢測場景下YOLOv5m 和YOLOv5-Q的可視化結(jié)果。
圖8 背景遮擋的可視化分析結(jié)果Fig.8 Results of visual analysis of background occlusion
圖9 降雨環(huán)境下的可視化分析結(jié)果Fig.9 Results of visualisation analysis in a rainfall environment
圖10 大霧環(huán)境下的可視化分析結(jié)果Fig.10 Results of visualisation analysis in foggy conditions
從圖8 可以看出,YOLOv5 模型在識別過程中對小目標頭盔有漏檢的情況,本文提出的YOLOv5-Q 模型在相互有遮擋的背景下可以識別出頭盔的佩戴情況,識別準確率優(yōu)于原YOLOv5。由圖9 可知,降雨環(huán)境下的精度并未出現(xiàn)大幅降低,且本文的YOLOv5-Q 在降雨環(huán)境下的識別準確率優(yōu)于原YOLOv5,對于小目標檢測的識別率也優(yōu)于原YOLOv5。圖10 表明大霧對于安全帽的識別精度有一定的影響,但相比于原YOLOv5,本文的YOLOv5-Q 在大霧環(huán)境下的識別準確率更高,對于小目標的識別也更齊全,準確地識別出了大霧環(huán)境下安全帽的佩戴情況。圖8、圖9、圖10 測試了3 種復(fù)雜環(huán)境下安全帽的佩戴情況,針對漏檢現(xiàn)象提出了四尺度特征融合,提升了小目標的檢測精度,證實了YOLOv5-Q在對應(yīng)環(huán)境下的魯棒性和泛化性,表現(xiàn)出了更好的性能[22]。
本文提出一種改進YOLOv5 算法以解決安全帽佩戴檢測中密集目標和小目標的漏檢現(xiàn)象以及計算量大不適合部署在嵌入式設(shè)備端等問題。采用Ghost 代替原YOLOv5 特征提取網(wǎng)絡(luò)使模型得以輕量化。將原來的檢測網(wǎng)絡(luò)改進為四尺度特征融合檢測,提升了小目標的檢測精度。引入CA 注意力機制提升了特征圖中重要信息的權(quán)重并抑制非相關(guān)信息的權(quán)重,從而提升了模型的精度。實驗結(jié)果表明,本文改進算法YOLOv5-Q 的模型大小為26.47 MB,參數(shù)量為12 696 640,精度為0.937。與原YOLOv5 算法相比,本文算法提高了小目標的識別率,極大地降低了模型的參數(shù),可以移植在嵌入式設(shè)備端。