王子元, 王國中, 顧嘉城
(上海工程技術(shù)大學(xué)電子電氣工程學(xué)院, 上海 201620)
安全帽對(duì)于建筑施工人員的人身安全保護(hù)至關(guān)重要,對(duì)于施工場(chǎng)所的意外墜物,安全帽的外殼可以有效減緩沖擊,緩解高空墜物對(duì)工人頭部的傷害,保護(hù)施工人員的安全。 在以往的施工場(chǎng)所中,通常采用人工監(jiān)督的方式來保證施工人員佩戴安全帽,但由于施工范圍大,施工人員多,部分人員安全意識(shí)薄弱,經(jīng)常出現(xiàn)未按規(guī)定佩戴安全帽作業(yè)的施工人員。考慮到人工監(jiān)督方法耗費(fèi)大量人力物力,并且效率低下,因此本文利用施工場(chǎng)所的監(jiān)控視頻畫面設(shè)計(jì)了一種自動(dòng)檢測(cè)施工人員是否佩戴安全帽的方法。
傳統(tǒng)的安全帽檢測(cè)方法主要是利用人工構(gòu)造的特征來完成檢測(cè)任務(wù)。 如HOG 特征與SVM[1]相結(jié)合的方法,Harr 特征與Adaboost[2]相結(jié)合的方法等。這些傳統(tǒng)機(jī)器學(xué)習(xí)的安全帽檢測(cè)算法需要人為設(shè)計(jì)檢測(cè)特征和訓(xùn)練分類,對(duì)于復(fù)雜的施工環(huán)境來說主觀性較強(qiáng),魯棒性差且不易泛化。
基于深度學(xué)習(xí)的安全帽檢測(cè)方法[3],不需要人工設(shè)置特征,實(shí)現(xiàn)方法較為簡(jiǎn)潔。 以R-CNN[4]為代表的雙階段檢測(cè)算法[5]雖然檢測(cè)精度較高,但檢測(cè)速度較慢。 以SSD[6]和YOLO[7]為代表的單階段算法在檢測(cè)速度方面具有優(yōu)勢(shì),徐凱等學(xué)者通過改進(jìn)YOLOv3 的損失函數(shù)來降檢測(cè)模型的誤差。 Zhou 等學(xué)者[8]通過替換YOLOv4 的骨干網(wǎng)絡(luò)使模型輕量化,提高了檢測(cè)效率。
以上網(wǎng)絡(luò)模型雖然都具有較好的檢測(cè)精度,但是模型較大,不能滿足施工環(huán)境下低算力設(shè)備的部署需求。 因此,本文基于YOLOv5[9-10]網(wǎng)絡(luò)設(shè)計(jì)了一種輕量級(jí)安全帽檢測(cè)算法:
(1)提取原網(wǎng)絡(luò)模型特征圖中的通道注意力特征和空間注意力特征,將CBAM[11]模塊融合到骨干網(wǎng)絡(luò)的卷積后,讓網(wǎng)絡(luò)關(guān)注于圖片中出現(xiàn)安全帽的特定區(qū)域,加快網(wǎng)絡(luò)訓(xùn)練時(shí)的收斂速度。
(2)在原模型的頸部網(wǎng)絡(luò)部分使用雙向特征金字塔(BiFPN)[12]結(jié)構(gòu)代替原網(wǎng)絡(luò)中的特征金字塔結(jié)構(gòu),融合不同層級(jí)的特征并保留特征圖中淺層信息,提高模型的計(jì)算效率。
(3)使用GhostConv[13]模塊替換原始網(wǎng)絡(luò)中的普通卷積,減少網(wǎng)絡(luò)的參數(shù)量,輕量化模型,并使用EIoU[14]作為網(wǎng)絡(luò)的損失函數(shù),提高改進(jìn)模型的識(shí)別準(zhǔn)確率。
YOLO 系列算法是具有代表性的單階段目標(biāo)檢測(cè)算法,與其他兩階段和單階段算法相比具有檢測(cè)速度快、檢測(cè)精度高等優(yōu)點(diǎn)。 YOLOv5 算法將網(wǎng)絡(luò)模型分為4 個(gè)不同的尺寸,模型由小到大分別是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,隨著模型的深度和寬度增加,模型體積也依次增大。 本文中選擇尺寸較小的YOLOv5s 模型作為基準(zhǔn)模型進(jìn)行實(shí)驗(yàn),YOLOv5s 的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。

圖1 YOLOv5s 網(wǎng)絡(luò)結(jié)構(gòu)Fig. 1 YOLOv5s network structure
從YOLOv5s 的網(wǎng)絡(luò)結(jié)構(gòu)圖中可以看出,YOLOv5s 網(wǎng)絡(luò)模型主要由4 部分構(gòu)成,分別是圖片輸入端(Input)、骨干網(wǎng)絡(luò)(Backbone)、頸部模塊(Neck)、預(yù)測(cè)模塊(Prediction)。 在圖片輸入端使用Mosaic 數(shù)據(jù)增強(qiáng)、圖片縮放和自適應(yīng)錨框計(jì)算增強(qiáng)輸入數(shù)據(jù)的多樣性。 骨干網(wǎng)絡(luò)由Focus 下采樣、CSP結(jié)構(gòu)和SPP 池化金字塔結(jié)構(gòu)組成,用于提取圖像特征信息。 頸部模塊使用特征金字塔(FPN)[15]與金字塔注意力網(wǎng)絡(luò)(PAN)[16]相結(jié)合的方式融合特征,傳遞不同尺度的特征信息。 預(yù)測(cè)模塊輸出3 組不同尺寸的預(yù)測(cè)信息。
CBAM(Convolutional Block Attention Module)是一種集成了通道注意力和空間注意力的輕量型混合注意力機(jī)制。 通過學(xué)習(xí)關(guān)注特征圖中與安全帽相關(guān)的信息,抑制不重要的特征來提升檢測(cè)效率。CBAM 的結(jié)構(gòu)如圖2 所示。

圖2 CBAM 結(jié)構(gòu)圖Fig. 2 CBAM structure diagram
在施工環(huán)境中,由于安全帽的背景復(fù)雜多樣,原始網(wǎng)絡(luò)對(duì)無效信息的剔除能力有限,而背景信息對(duì)網(wǎng)絡(luò)的檢測(cè)性能影響較大,因此通過在Focus 下采樣后引入CBAM 注意力機(jī)制來確定模型重點(diǎn)關(guān)注的安全帽特征。
在YOLOv5 原始網(wǎng)絡(luò)的特征融合部分,使用自下而上和自上而下的方式融合高層級(jí)的特征信息如圖3 所示。 而對(duì)于安全帽檢測(cè)網(wǎng)絡(luò)來說,安全帽在畫面中多為小尺寸目標(biāo),使用FPN+PAN 結(jié)構(gòu)會(huì)丟失圖像中的小尺度特征信息,局限了網(wǎng)絡(luò)模型的小尺度檢測(cè)能力。

圖3 改進(jìn)特征融合結(jié)構(gòu)Fig. 3 Improved feature fusion structure
本文中使用BiFPN 替換原始特征融合結(jié)構(gòu)見圖3,通過刪去邊緣融合節(jié)點(diǎn)來加快網(wǎng)絡(luò)計(jì)算速度,并使用跳躍連接傳遞底層特征信息,通過融合底層特征與高級(jí)特征的信息來增強(qiáng)網(wǎng)絡(luò)對(duì)安全帽尺度目標(biāo)的檢測(cè)能力。
BiFPN 對(duì)不同的輸入特征分配不同的權(quán)重,使網(wǎng)絡(luò)通過調(diào)整權(quán)重來衡量不同特征的重要程度,并采用快速歸一化方法,可按式(1)來計(jì)算:
其中,Out表示輸出特征;In表示輸入特征;ωi采用ReLU激活函數(shù);ε=0.000 1 為數(shù)值穩(wěn)定小量。
GhostModel 是一種新型的卷積計(jì)算方法,基于原始特征圖使用一系列的線性變換從原始特征圖中生成相似特征,使用該方法可以減少網(wǎng)絡(luò)模型的參數(shù)量,搭建輕量化網(wǎng)絡(luò)模型。 GhostModel 的結(jié)構(gòu)如圖4 所示。

圖4 Ghost 模塊Fig. 4 Ghost model
對(duì)于給定輸入數(shù)據(jù),X∈?c×h×w,c表示輸入通道數(shù),w和h分別表示輸入數(shù)據(jù)的寬度和高度。GhostNet 的輸出特征圖可以表示為:
其中,Y'∈w'×h'×m使用一般卷積f '∈c×k×k×m生成m個(gè)特征圖,然后對(duì)m個(gè)特征圖進(jìn)行線性運(yùn)算可以生成s×m個(gè)特征圖,用到的數(shù)學(xué)公式為:
其中,y'i表示Y'中第i個(gè)原始特征圖;Φi,j表示第j個(gè)線性運(yùn)算;yij表示生成的特征圖。 最終得到n=m·s個(gè)特征圖Y=[y11,y12,…,yms],計(jì)算可得GhostModel 的計(jì)算量和參數(shù)量約為一般卷積的。 因此,使用Ghost 模塊可以在保證輸出特征圖一致的情況下,降低模型的計(jì)算量和參數(shù)量。
Ghost bottleneck 可以根據(jù)步長(zhǎng)分為2 種結(jié)構(gòu)。當(dāng)步長(zhǎng)為1 時(shí),在輸入端的首個(gè)GhostModule 增加通道數(shù), 起到擴(kuò)展作用。 在經(jīng)過靠近輸出端的GhostModule 后,數(shù)據(jù)通道數(shù)減少與輸入相匹配并與輸入相加。 對(duì)于步長(zhǎng)為2 的情況,添加了步長(zhǎng)為2的深度卷積來實(shí)現(xiàn)。
在本文中使用步長(zhǎng)為1 的Ghost bottleneck 代替原YOLOv5 模型中的CSP2 模塊,使用步長(zhǎng)為2 的Ghost bottleneck 代替原模型中的CBL 卷積模塊。
YOLOv5 中使用GIoU(Generalized IoU loss)作為損失函數(shù)。 當(dāng)預(yù)測(cè)框與標(biāo)簽框未完全重疊的情況下GIoU的方法可以衡量2 個(gè)標(biāo)簽框的重疊程度,但是當(dāng)預(yù)測(cè)框在標(biāo)簽框內(nèi)部的時(shí)候,GIoU退化成了IoU,無法衡量預(yù)測(cè)框與標(biāo)簽框之間的距離。
本文中使用了EIOU(Efficient IOU)作為邊界框損失函數(shù),EIOU損失函數(shù)可以分為3 個(gè)部分,分別是:預(yù)測(cè)框與真實(shí)框之間的中心距離損失、重疊損失和寬高損失,數(shù)學(xué)定義公式具體如下:
其中,bgt與b分別表示真實(shí)邊界框與預(yù)測(cè)邊界框的中心點(diǎn);ρ表示中心點(diǎn)的歐氏距離;c表示包圍真實(shí)框與預(yù)測(cè)框的最小外接矩形的對(duì)角線距離;Cω表示該最小外接矩形的寬度;Ch表示該最小外接矩形的高度。
EIOU對(duì)于目標(biāo)框和預(yù)測(cè)框的長(zhǎng)和寬分別進(jìn)行計(jì)算,綜合評(píng)估預(yù)測(cè)框與目標(biāo)框的中心點(diǎn)距離、重疊面積,使收斂速度更快,回歸精度更高。
網(wǎng)絡(luò)訓(xùn)練在Ubuntu18.04 系統(tǒng)上進(jìn)行,系統(tǒng)的運(yùn)行內(nèi)存為16 GB,顯卡為英偉達(dá)RTX3060。 處理器為AMD Ryzen 7 5800H 3.20 GHz,使用深度學(xué)習(xí)框架PyTorch 編寫改進(jìn)的YOLOv5 模型進(jìn)行訓(xùn)練。 編程環(huán)境為Python 3.7。 GPU 的加速庫為CUDA11.3 和CUDNN8.2.1。
在網(wǎng)絡(luò)的訓(xùn)練過程中,使用自適應(yīng)錨框、圖片尺寸縮放和Mosaic 數(shù)據(jù)增強(qiáng)技術(shù)對(duì)輸入圖片進(jìn)行數(shù)據(jù)增強(qiáng),網(wǎng)絡(luò)模型的圖片輸入(input size)大小設(shè)置為640×640, 動(dòng)量參數(shù)(momentum) 設(shè)置為0.9,迭代次數(shù)(epoch)設(shè)置為100,批量大小(batch size)設(shè)置為8。
本文中所使用的安全帽數(shù)據(jù)集基于網(wǎng)絡(luò)圖片和施工現(xiàn)場(chǎng)監(jiān)控視頻截取,共收集到6 545 張圖片。使用Labelimg 軟件將收集到的圖片進(jìn)行標(biāo)注,對(duì)于佩戴安全帽的工人標(biāo)注為“hat”,未佩戴安全帽的工人標(biāo)注為“person”。 最后將標(biāo)注信息保存為VOC數(shù)據(jù)集格式,并按照9 ∶1 的比例劃分為訓(xùn)練集和測(cè)試集,訓(xùn)練集圖片共有5 890 張,測(cè)試集共有655張。
在計(jì)算機(jī)視覺領(lǐng)域,對(duì)于目標(biāo)檢測(cè)的性能通常使用召回率(Recall)、精確率(Precision) 和準(zhǔn)確率(Accuracy) 等指標(biāo)來進(jìn)行評(píng)價(jià)。
精確率表示在預(yù)測(cè)到的正樣本中實(shí)際為正樣本的概率,召回率表示在實(shí)際的正樣本中預(yù)測(cè)為正樣本的概率,準(zhǔn)確率表示預(yù)測(cè)正確的概率,研究推得的公式見如下:
以召回率為X軸坐標(biāo),以準(zhǔn)確率為Y軸坐標(biāo),設(shè)置相應(yīng)的閾值后畫出的曲線就是P-R曲線。P-R曲線與坐標(biāo)軸圍成圖形的面積被稱為平均精確度(AP)。
AP就是平均精準(zhǔn)度,對(duì)PR曲線上的Precision值求均值。 對(duì)于PR曲線來說, 使用積分來進(jìn)行計(jì)算,即:
為了驗(yàn)證本文改進(jìn)方法對(duì)YOLOv5s 基準(zhǔn)檢測(cè)模型的性能提升,設(shè)計(jì)如下消融實(shí)驗(yàn),所有實(shí)驗(yàn)均在英偉達(dá)RTX3060 GPU 和相同數(shù)據(jù)集下進(jìn)行。mAP(0.5) 表示在檢測(cè)框與真實(shí)框交并比大于等于0.5 的情況下,2 種類別檢測(cè)結(jié)果的平均精度。 消融實(shí)驗(yàn)見表1。

表1 消融實(shí)驗(yàn)Tab. 1 Ablation experiment
從表1 中可以看出,在加入CBAM 注意力機(jī)制后,網(wǎng)絡(luò)模型的平均精度提升了2.6%,證實(shí)了注意力機(jī)制是可以關(guān)注到圖片中有效特征的,而在使用BiFPN 特征融合機(jī)制后平均精度增長(zhǎng)了1.3%,這是由于安全帽在圖片中的尺寸較小,使用BiFPN 特征融合機(jī)制可以有效地提取特征圖像中的小尺度信息,更有利于安全帽的檢測(cè)。 在使用Ghost 卷積計(jì)算后,網(wǎng)絡(luò)精度僅提升了0.3%,因?yàn)镚host 模塊的加入為輕量化模型做出較多貢獻(xiàn),對(duì)精度的提升有限。 在實(shí)驗(yàn)5 中使用所有改進(jìn)策略后平均精度較原始網(wǎng)絡(luò)提升了4.5%,表明組合改進(jìn)策略可以有效提升安全帽檢測(cè)模型的性能。
為了在不同檢測(cè)算法中橫向?qū)Ρ雀倪M(jìn)網(wǎng)絡(luò)的安全帽檢測(cè)性能,本文選取了傳統(tǒng)檢測(cè)算法和基于深度學(xué)習(xí)的檢測(cè)算法與改進(jìn)模型進(jìn)行對(duì)比,其中添加所有改進(jìn)的模型記為I-YOLOv5。
對(duì)比實(shí)驗(yàn)結(jié)果見表2。 從表2 中可以看出,單階段算法在檢測(cè)速度方面具有明顯優(yōu)勢(shì),其中YOLOv5 算法速度最為突出,改進(jìn)的算法模型IYOLOv5 與原始算法相比平均精度提高了4.5 個(gè)百分點(diǎn),F(xiàn)PS提升了1.5。 傳統(tǒng)機(jī)器學(xué)習(xí)算法HOG+SVM 檢測(cè)效率低下,對(duì)于復(fù)雜背景下的安全帽目標(biāo)檢測(cè)精度較低。 由于安全帽目標(biāo)多為小尺寸目標(biāo),兩階段安全帽檢測(cè)算法Faster RCNN 表現(xiàn)不佳。SDD 算法雖然也達(dá)到較高的檢測(cè)速度,但是與YOLOv5 算法相比仍存在一定的差距。 本文中IYOLOv5 算法在檢測(cè)速度與檢測(cè)精度方面表現(xiàn)良好。

表2 對(duì)比實(shí)驗(yàn)結(jié)果Tab. 2 Comparative experimental results
為了更直觀地對(duì)比檢測(cè)性能,實(shí)驗(yàn)選取了不同施工環(huán)境下的安全帽圖片,分別使用YOLOv5 算法檢測(cè),并與本文I-YOLOv5 算法檢測(cè)結(jié)果做對(duì)比,檢測(cè)結(jié)果如圖5、圖6 所示。

圖5 YOLOv5s 算法檢測(cè)效果Fig. 5 YOLOv5s algorithm detection effect

圖6 I-YOLOv5 算法檢測(cè)效果Fig. 6 I-YOLOv5 algorithm detection effect
從圖5 中可以看出,對(duì)于圖片中的大部分安全帽YOLOv5 算法都能夠成功檢出,但是將施工人員佩戴的頭套錯(cuò)誤識(shí)別為安全帽,而且在人員遮擋的圖像部分,遮擋部分施工人員未佩戴安全帽沒有被模型檢出。 從圖6 的I-YOLOv5 算法的檢測(cè)結(jié)果中可以看出,對(duì)于遮擋的施工人員也能夠成功檢出,而且佩戴頭套的施工人員也被正確檢出。 在IYOLOv5 模型中,由于添加了CBAM 注意力機(jī)制,能夠使模型關(guān)注于施工人員頭部以及安全帽特征,抑制背景或遮擋對(duì)模型檢測(cè)產(chǎn)生的影響。 同時(shí),使用了EIoU損失函數(shù),可以使安全帽檢測(cè)框的尺寸更加精準(zhǔn),準(zhǔn)確定位到施工人員的頭部。
為了保障施工人員的安全,本文對(duì)目前安全帽檢測(cè)算法進(jìn)行分析,并針對(duì)復(fù)雜環(huán)境下的安全帽檢測(cè)算法做出改進(jìn)。 在YOLOv5 骨干網(wǎng)絡(luò)部分插入CBAM 注意力機(jī)制,讓網(wǎng)絡(luò)關(guān)注于圖片中的小尺寸特征,提升網(wǎng)絡(luò)模型對(duì)安全帽區(qū)域的敏感程度。 通過使用BiFPN 替換原始特征融合結(jié)構(gòu),刪去邊緣融合節(jié)點(diǎn)來加快網(wǎng)絡(luò)計(jì)算速度。 使用GhostNet 卷積替換原始網(wǎng)絡(luò)中的一般卷積,使模型輕量化,提高檢測(cè)速度。 使用EIoU損失函數(shù),改善了定位精度低和訓(xùn)練過程中檢測(cè)框回歸速度慢的問題。 相比于YOLOv5s 算法模型,改進(jìn)的算法模型的精度提高了4.5%。每秒檢測(cè)速度達(dá)到48 幀。 未來將在保持安全帽檢測(cè)性能的情況下對(duì)模型做進(jìn)一步優(yōu)化,在保證準(zhǔn)確率的前提下,降低模型的復(fù)雜度。