鄧珍榮,熊宇旭,楊 睿,陳昱任
1.桂林電子科技大學(xué) 計算機(jī)與信息安全學(xué)院,廣西 桂林 541004
2.廣西圖像圖形與智能處理重點實驗室,廣西 桂林 541004
3.廣西建工大都租賃有限公司,南寧 530000
隨著社會技術(shù)的不斷進(jìn)步,人工智能應(yīng)用在各個行業(yè)都得到了廣泛的使用。比如行人檢測、智能監(jiān)控等。在建筑施工行業(yè),由于作業(yè)人員長期在高危區(qū)域中工作,為了確保工作人員的生命安全,所有人都必須佩戴好安全帽。正確佩戴好安全帽極為重要,安全帽是最為有效的保護(hù)手段,能夠有效降低外界潛在風(fēng)險對人的身體損害,確保施工行業(yè)的穩(wěn)定發(fā)展。但是近幾年的數(shù)據(jù)顯示,在建筑施工行業(yè)一直存在著各種安全風(fēng)險,同時施工人員并沒有正確佩戴安全帽,導(dǎo)致各種問題頻繁發(fā)生,原因包括員工安全意識薄弱,綜合素質(zhì)相對于其他行業(yè)來說確實很低,對于各種施工場地的安全風(fēng)險并沒有認(rèn)真考慮,極易忽略掉安全隱患,導(dǎo)致各種安全事故頻頻發(fā)生。同時施工企業(yè)的監(jiān)管設(shè)備也存在過于落后的問題,常規(guī)的人工監(jiān)督管理不僅人員費用高,設(shè)備使用繁雜而且人工長時間的監(jiān)督管理容易疲勞,容易導(dǎo)致監(jiān)督疏忽或意外安全隱患,不能滿足目前高危行業(yè)安全監(jiān)管的要求。
創(chuàng)建一個高效的安全監(jiān)管設(shè)備對于高危行業(yè)來說是必不可少的,所以許多研究者利用機(jī)器視覺技術(shù)來對安全帽的佩戴做檢測,目前檢測方法分為兩種,傳統(tǒng)的檢測算法通過圖像處理等方法來對安全帽做檢測,但是檢測性能不穩(wěn)定,在復(fù)雜多變的施工場景下,容易受到非目標(biāo)信息的干擾,魯棒性和泛用性差,不適用于當(dāng)前復(fù)雜多變的施工場景。
另一種檢測方法是使用卷積神經(jīng)網(wǎng)絡(luò)來實現(xiàn)的,由于RCNN[1-4]的提出,首次把卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到目標(biāo)檢測任務(wù)中,同時推動了國內(nèi)深度學(xué)習(xí)在目標(biāo)檢測上的研究,深度學(xué)習(xí)的研究學(xué)者也提出了不少的基于深度學(xué)習(xí)的目標(biāo)檢測算法來檢測安全帽,與傳統(tǒng)的目標(biāo)檢測方法相比,取得了劃時代的進(jìn)步。
目前基于深度學(xué)習(xí)的目標(biāo)檢測方法主要分為兩大類:基于候選區(qū)選?。╮egion proposal)的二階段的目標(biāo)檢測算法和基于回歸問題的單階段的目標(biāo)檢測算法。二階段檢測算法對候選框進(jìn)行回歸和去除冗余得到目標(biāo)檢測結(jié)果,主要代表有SPP-NET[5]、RCNN系列算法模型?;诨貧w問題的單階段的檢測算法是不需要進(jìn)行候選框生成操作的,而是直接把目標(biāo)的邊界框的定位轉(zhuǎn)化為回歸問題,以此來得到目標(biāo)的位置信息和目標(biāo)類別信息,這類算法的代表包括YOLO[6-9]系列模型和SSD[10]網(wǎng)絡(luò)。
在兩類算法中,一階段算法由于省略了候選框,從而讓算法的檢測速度更快。但二階段算法的檢測準(zhǔn)確率和定位精度更高。例如,徐守坤等人[11]在算法的基礎(chǔ)上改進(jìn)了更快的RCNN,模型檢測精度和速度都優(yōu)于一般的目標(biāo)檢測算法,但是算法的實現(xiàn)和訓(xùn)練過程較為復(fù)雜,在檢測重疊和密集小目標(biāo)方面仍然有著不足之處;王玲敏等人[12]在YOLOv5中引入注意力機(jī)制,預(yù)測安全帽的位置,以上的深度學(xué)習(xí)方法雖然在精度和速度上優(yōu)于其他算法,但在小目標(biāo)和密集目標(biāo)上效果不佳。
針對上述問題本文選用當(dāng)前優(yōu)秀的YOLOv5 作為改進(jìn)前的目標(biāo)檢測算法,YOLOv5相比于其他算法實時性強,但是在重疊和密集的小目標(biāo)上檢測效果較差。本文決定對YOLOv5模型進(jìn)行改進(jìn),使其在檢測重疊和密集的小目標(biāo)任務(wù)上取得更好的結(jié)果,并滿足當(dāng)前復(fù)雜多變的施工場景的要求。
綜上,為了滿足需求并減少應(yīng)用端的計算量,對YOLOv5 進(jìn)行改進(jìn):使用Mixup 方法對數(shù)據(jù)預(yù)處理,增強模型泛化性和魯棒性;將Transformer 融入主干網(wǎng)絡(luò)提取更豐富的語義特征;在特征融合階段添加小目標(biāo)檢測層并融入注意力機(jī)制,提高對小目標(biāo)的檢測性能,同時采用輕量化的GSConv卷積模塊,減少參數(shù)量并加快檢測速度;檢測頭對分類和回歸進(jìn)行解耦,加快收斂速度;使用Anchor-free無錨點檢測方法,簡化算法結(jié)構(gòu),加快檢測速度;使用EIOU 損失函數(shù)來優(yōu)化邊框預(yù)測的準(zhǔn)確度。實驗結(jié)果表明改進(jìn)后的YOLOv5 模型在安全帽檢測任務(wù)中表現(xiàn)出良好的檢測性能。
YOLOv5 是在2020 年誕生的一種全新的目標(biāo)檢測算法,具有較低的體積,可以被劃分為四個不同的版本:s、m、l 和x,這四個版本的權(quán)重、模型的寬度和深度是依次增加的,本文選用最小的版本YOLOv5s 進(jìn)行改進(jìn)優(yōu)化。
YOLOv5s的結(jié)構(gòu)包括輸入端、主干網(wǎng)絡(luò)、多尺度特征融合網(wǎng)絡(luò)、檢測頭,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 YOLOv5 network structure diagram
1.1.1 輸入端
輸入端就是對輸入的原始圖像進(jìn)行數(shù)據(jù)處理,常用到的數(shù)據(jù)增強技術(shù)包括Mosaic,主要是對輸入的圖像進(jìn)行壓縮放大、隨機(jī)裁剪和隨機(jī)排列,大大降低了GPU的消耗,豐富了數(shù)據(jù)集,在不損失小目標(biāo)特征的情況下,增加了小目標(biāo)的多樣性,從而提高了YOLO模型對小目標(biāo)的檢測性能,接著把圖像縮放到模型規(guī)定的大小,再進(jìn)行檢測。同時,根據(jù)預(yù)測的錨框大小和位置,使用自適應(yīng)錨框計算,以使其適應(yīng)當(dāng)前圖像的內(nèi)容,獲得最佳預(yù)測框。
1.1.2 主干網(wǎng)絡(luò)(Backbone)
主干網(wǎng)絡(luò)部分包括Focus、CSP 和SPP 三大模塊,F(xiàn)ocus對特征圖做切片操作,來獲得更小的特征圖,降低了FLOPS 和提高檢測速度。CSP 模塊是將原輸入數(shù)據(jù)做分支處理,一個分支進(jìn)行卷積操作降低通道數(shù),另一個分支進(jìn)行多個殘差結(jié)構(gòu)(Bottleneck)堆疊,然后拼接兩個分支,目的是讓YOLO 模型學(xué)習(xí)到更多的特征信息。SPP 模塊組合使用三個不同尺度大小的池化核進(jìn)行最大池化操作,在不降低推理速度的情況下,擴(kuò)大網(wǎng)絡(luò)的感受野,解決候選錨框與特征圖各層之間的對齊問題。
1.1.3 多尺度特征融合網(wǎng)絡(luò)(Neck)
Neck模塊采用特征金字塔從上向下傳遞語義信息和路徑聚合結(jié)構(gòu)來傳遞定位信息,提高了特征層之間的交互性,對提取到的有效特征層信息進(jìn)行交互融合,從而進(jìn)一步提高模型的檢測性能。
1.1.4 檢測頭(Prediction)
Prediction 中的損失包括分類和回歸兩部分,YOLOv5模型的損失函數(shù)為GIOU Loss,在目標(biāo)檢測后的處理過程中,使用非極大值抑制算法篩選預(yù)測框,提高對目標(biāo)識別的準(zhǔn)確率。
近年來,在計算機(jī)視覺領(lǐng)域,基于Transformer[13-14]的模型取得了顯著的結(jié)果。基于Transformer設(shè)計實現(xiàn)的模型有很多,例如,圖像分類模型的VIT[15]、目標(biāo)檢測模型的DETR[16],以及江英杰等人[17]改進(jìn)的目標(biāo)跟蹤算法都取得了很好的效果。UC Berkeley 和Google 基于Transformer 設(shè)計了BotNet[18],Bot-Transformer 是一種集成CNN[19-20]和Attention 的強大Backbone。BotNet 將ResNet50[21]使用的Bottleneck的卷積替換成多頭注意力機(jī)制(multi-head self-attention,MHSA),如圖2所示。
圖2 ResNet Bottleneck與BotNet網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 ResNet Bottleneck and BotNet network structure
MHSA 結(jié)構(gòu)如圖3 所示,MHSA 引入相對位置編碼,能夠有效地聚合全局信息,捕獲遠(yuǎn)距離依賴關(guān)系,并將對象之間的信息與位置感知有效關(guān)聯(lián)。
圖3 Multi-Head Self-Attention網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Multi-Head Self-Attention network structure
為了有效地將CNN和Transformer融合,CoAtNet[22]提出了一種基于卷積層和注意力層相互混合的模型結(jié)構(gòu),將卷積和自注意力通過簡單的相對注意自然統(tǒng)一,CNN 和Transformer 以傳統(tǒng)方式垂直堆疊,在泛化能力和效率上獲得了驚人的效果。為了降低計算復(fù)雜度,當(dāng)特征圖達(dá)到可管理的水平時,使用下采樣操作來減少空間并利用全局相對注意力,這樣就降低了特征圖的分辨率和計算的復(fù)雜性。如圖4 所示,CoAtNet 模型作者最終發(fā)現(xiàn)C-C-T-T 的排列混合的效果最好,其中C 表示CNN,T表示Transformer。
在數(shù)據(jù)預(yù)處理階段,加入簡單有效的Mixup 方法,能夠解決YOLOv5模型中存在的過擬合、不平衡表示以及對特定樣本的敏感性的問題。Mixup 簡單來說就是對兩張圖像進(jìn)行疊加融合,同時對不同類別進(jìn)行建模處理。
核心思想是通過隨機(jī)加權(quán)相加從訓(xùn)練樣本中提取兩個隨機(jī)樣本,然后根據(jù)預(yù)測結(jié)果,反向推導(dǎo)更新參數(shù)。此外,所有的訓(xùn)練過程都只采用混合的新圖像訓(xùn)練,并且原始圖像不參與訓(xùn)練過程,這種方法在圖像識別領(lǐng)域有明顯的提升效果。Mixup 的圖像混合生成方式比較簡單。如公式(1)、(2)所示:
λ∈[0,1]是概率值,λ~Beta(α,α)即λ服從參數(shù)都為α的Beta分布。
其中,x為輸入向量,y為類別標(biāo)簽,(xi,yi)與(xj,yj)是同一個batch 中隨機(jī)選擇的兩個樣本及對應(yīng)標(biāo)簽,λ為從Beta分布中隨機(jī)采樣的數(shù),λ∈[0,1]。Mixup不僅可以增加數(shù)據(jù)的多樣性,而且改善了YOLOv5模型的泛化能力,并提高了對于類別不平衡樣本的處理能力,無論對于含噪聲標(biāo)簽的數(shù)據(jù)還是對抗樣本攻擊,都表現(xiàn)出不錯的魯棒性。
YOLOv5 的主干網(wǎng)絡(luò)采用卷積操作來提取特征信息,側(cè)重于提取局部特征,對于全局上下文信息的建模能力相對較弱。這可能導(dǎo)致模型對目標(biāo)的語義理解不夠準(zhǔn)確,特別是在復(fù)雜場景和小目標(biāo)的檢測中。
為了解決這個問題,引入Transformer 來加強主干網(wǎng)絡(luò)的語義特征表示,獲得更豐富的語義特征信息和更高的計算效率。
借 鑒BoTNet 替 換ResNet 的Bottleneck 為MHSA的設(shè)計思想,在原始的YOLOv5 模型基礎(chǔ)上將Bot-Transformer引入到主干網(wǎng)絡(luò)中,提高了YOLOv5模型對長距離依賴關(guān)系的建模能力,能夠更好地捕捉圖像中的重要特征,這種方法提高了對小目標(biāo)的檢測性能,同時減少了參數(shù)量,實現(xiàn)了最小化的延遲。
為了降低計算的復(fù)雜度,決定把自注意力機(jī)制置于網(wǎng)絡(luò)模型之后,借鑒CoAtNet 設(shè)計的C-C-T-T 的排列混合方式,將主干網(wǎng)絡(luò)的第3 和第4 個Bottleneck 替換為Bot-Transformer。通過這種改進(jìn)方式,在保證計算復(fù)雜度的前提下,有效地融合了CNN和Transformer的優(yōu)勢,提升了模型的特征表達(dá)能力和泛化能力。
最后實驗數(shù)據(jù)說明,本文的改進(jìn)不僅提升了YOLOv5模型的性能,而且在實際應(yīng)用中具有較低的計算復(fù)雜度,這對于實時場景和資源受限的設(shè)備具有重要意義。改進(jìn)后的Backbone模型如圖5所示。
圖5 YOLOv5結(jié)合Transformer網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 YOLOv5 combined with Transformer network structure
YOLO 系列算法都是采用提取多尺度有效特征圖來實現(xiàn)目標(biāo)檢測任務(wù)的,采用20×20、40×40、80×80這三種尺度來實現(xiàn)對大、中、小三種不同尺寸目標(biāo)的檢測。但是由于許多目標(biāo)距離較遠(yuǎn),體積很小,在圖像或視頻中不夠清晰,最初用于檢測80×80規(guī)模小目標(biāo)的尺度無法完全覆蓋更小的目標(biāo)。因此,添加了一個160×160尺寸的檢測層,便于檢測較小的目標(biāo)。為了避免增加過多的計算負(fù)擔(dān),不與其他尺寸的特征層做融合。
雖然添加了小目標(biāo)檢測層,但由于小目標(biāo)的像素信息較少,在特征提取過程中,可能會導(dǎo)致小目標(biāo)的特征在特征圖上變得稀疏,信息不夠充分,而且小目標(biāo)通常存在與其他物體的相似度較高,容易造成混淆和誤判。
為了解決這些問題,決定引入注意力機(jī)制(coordinate attention,CA)[23]。注意力機(jī)制能夠自適應(yīng)地調(diào)整特征圖中的不同位置的權(quán)重,將關(guān)注點集中在小目標(biāo)的關(guān)鍵區(qū)域,提升小目標(biāo)的表征能力,減少特征稀疏性問題,同時注意力機(jī)制也能夠引入更多的上下文信息,幫助模型更好地理解小目標(biāo),提高小目標(biāo)的區(qū)分度,提供更全面的特征表示。
CA 是一種高效且新穎的注意力機(jī)制,通過將通道注意力分解為兩個并行的1D 特征編碼,有效地整合了空間坐標(biāo)信息,使網(wǎng)絡(luò)能夠獲取更大范圍的信息而避免引入大的開銷。
CA模型作者通過大量實驗在ImageNet[24]分類和對象檢測任務(wù)中證明了CA相對于以前的網(wǎng)絡(luò)注意力方法有著顯著優(yōu)勢,如圖6所示。
圖6 分類和對象檢測任務(wù)的數(shù)據(jù)圖Fig.6 Data graph for classification and object detection tasks
因此,本文決定引入CA,其結(jié)構(gòu)如圖7所示。
圖7 CA網(wǎng)絡(luò)結(jié)構(gòu)Fig.7 CA network structure
CA 將輸入的特征向量分解為一維向量,并進(jìn)行拼接嵌入、通道壓縮和標(biāo)準(zhǔn)化處理。然后,它在空間維度上進(jìn)行拆分,并與原始輸入特征向量進(jìn)行殘差堆疊。這種機(jī)制能夠增強感興趣目標(biāo)的表示,提升模型對輸入特征的遠(yuǎn)程相關(guān)性的捕捉能力,進(jìn)而提高模型性能。
設(shè)計小目標(biāo)層網(wǎng)絡(luò)結(jié)構(gòu):小目標(biāo)檢測層采用C3 模塊,這種模塊參數(shù)量較小且適合多尺度,能夠捕獲細(xì)節(jié)信息并擴(kuò)展感受野。同時,在C3后面加入CA來進(jìn)一步處理,增強對小目標(biāo)的感知能力,從而提升模型的準(zhǔn)確性和魯棒性。這樣改進(jìn)的優(yōu)勢在于,在YOLOv5模型中實現(xiàn)了更強大的小目標(biāo)檢測能力,在處理小目標(biāo)場景下表現(xiàn)出色。具體的小目標(biāo)檢測層設(shè)計結(jié)構(gòu)如圖8所示。
圖8 小目標(biāo)層網(wǎng)絡(luò)結(jié)構(gòu)Fig.8 Small target layer network structure
在YOLOv5中,特征金字塔結(jié)構(gòu)使用普通卷積來融合不同尺度的特征信息,但這種方法會引入大量冗余計算。為了有效降低預(yù)測計算帶來的復(fù)雜度,決定加入一種輕量化卷積GSConv,來替換特征金字塔中的普通卷積。
GSConv 是一種全局稀疏卷積操作,通過在特征圖上引入全局稀疏性,實現(xiàn)了對全局信息的有效聚合,相比傳統(tǒng)的普通卷積,在保持全局信息的同時,GSConv利用了全局稀疏性,僅對稀疏位置進(jìn)行卷積計算,大大減少了計算量和參數(shù)數(shù)量。GSConv 結(jié)構(gòu)如圖9 所示,先進(jìn)行shuffle處理,再將密集卷積運算生成的信息和深度可分離卷積生成的信息進(jìn)行融合。同時,GSConv 還引入了稀疏性掩碼來控制每個位置的稀疏性,以進(jìn)一步降低計算量。
圖9 GSConv網(wǎng)絡(luò)結(jié)構(gòu)Fig.9 GSConv network structure
對于加速預(yù)測的算法,在CNN 中的特征信息會逐漸地向通道傳遞,而且,每次特征圖的空間縮小或者通道增加,都可能造成語義信息的局部損失。但是GSConv能夠盡可能地保留這些語義信息。當(dāng)YOLOv5 模型進(jìn)入到特征金字塔模塊時,通道維度將會達(dá)到最大,寬高達(dá)到最小,不需要再進(jìn)行變換。
因此,在特征金字塔模塊中使用GSConv 處理多尺度特征信息會更好,重復(fù)信息較少,改進(jìn)YOLOv5 模型的準(zhǔn)確率會非常接近原YOLOv5 模型。在特征金字塔部分中,將Conv 卷積替換為GSConv,同時簡化四個有效輸出特征層的通道數(shù),均為256,能夠減輕模型的復(fù)雜度,加快算法的推理速度,適合在資源受限的環(huán)境中部署,改進(jìn)后的Neck結(jié)構(gòu)如圖10所示。
圖10 改進(jìn)后Neck網(wǎng)絡(luò)結(jié)構(gòu)Fig.10 Improved Neck network structure
在YOLO 系列算法中,YOLO Head 對候選框的分類和回歸計算是串行的,導(dǎo)致兩個任務(wù)的優(yōu)化受到了限制,這種耦合限制了模型對目標(biāo)分類和位置精確定位的能力,難以準(zhǔn)確地回歸小目標(biāo)的位置信息,極大地影響了YOLO 模型的檢測性能。本文對檢測頭進(jìn)行改進(jìn),將分類和回歸計算改為并行計算,也就是解耦合,變成兩個分支,同時再添加一個IOU 計算的分支,對每個任務(wù)獨立優(yōu)化,從而提高了目標(biāo)分類和位置回歸的性能,更好地捕捉小目標(biāo)的位置信息,解耦結(jié)構(gòu)對比如圖11所示。
圖11 Decouple Head和Coupled Head結(jié)構(gòu)圖Fig.11 Decouple Head and Coupled Head Structures
如果使用耦合頭(coupled head),輸出通道將分類任務(wù)和回歸任務(wù)放在一起,這2個任務(wù)存在沖突性。通過實驗發(fā)現(xiàn)替換為Decoupled Head 之后,不僅是模型精度上會提高,同時網(wǎng)絡(luò)的收斂速度也加快了,表達(dá)能力更好。
具體來說,對于不同尺度大小的有效特征層,首先采用1×1 conv層來將特征通道減少到256個,然后輸入到兩個分支,每個分支都有兩個卷積層,一個用于分類,另一個用于回歸和IOU預(yù)測,這樣可以提升目標(biāo)檢測的準(zhǔn)確性,增強對小目標(biāo)的檢測能力,并提高訓(xùn)練和推理效率。
解耦頭對于YOLOv5來說是很有必要的,使用兩個并行的3×3的conv分支,會導(dǎo)致解耦的檢測頭增加額外的推理時間。所以需要對解耦結(jié)構(gòu)的檢測頭進(jìn)行簡化操作:去掉1×1的conv,減少推理耗時,也就是去掉圖11中虛線圓形區(qū)域。這些改進(jìn)為YOLOv5 模型在各種目標(biāo)檢測任務(wù)中帶來了更好的性能和應(yīng)用潛力。
YOLO 系列算法是基于Anchor-based 來實現(xiàn)的,Anchor-based 依賴于預(yù)定義的錨框來進(jìn)行目標(biāo)定位和分類。然而,錨框生成受到特定數(shù)據(jù)庫影響,泛化性差,在處理尺寸變化較大、密集目標(biāo)或大量重疊目標(biāo)的情況下可能存在不足、復(fù)雜度高、兼容性差等問題。
但是Anchor-free并不會存在這樣的問題,Anchor-free簡化了設(shè)計,不依賴于固定尺寸錨框,能夠適應(yīng)不同尺度和形狀的目標(biāo),在每個位置生成目標(biāo)框,可以更準(zhǔn)確地定位目標(biāo)。
本文決定引入Anchor-free 來替代Anchor-based,來解決上述存在的問題,具體做法如下:對特征圖的每個位置只用一個候選框做檢測,并把目標(biāo)的中心點作為正樣本,并建立一個尺度范圍來對應(yīng)多個有效特征層的尺度大小,解決了Anchor-based 存在的錨框選擇困難、適應(yīng)性差、重疊問題和小目標(biāo)檢測困難等問題。這種改進(jìn)使得YOLOv5 模型更加靈活、準(zhǔn)確,并提高了對各種目標(biāo)的檢測能力,尤其在小目標(biāo)檢測方面具有明顯的優(yōu)勢和提升。
傳統(tǒng)的YOLOv5 損失函數(shù)使用IOU 來度量邊界框的重疊程度,但忽略了邊界框的大小和位置。而EIOU損失函數(shù)考慮了這些因素,能夠更準(zhǔn)確地評估目標(biāo)的定位情況,這有助于改善目標(biāo)檢測的準(zhǔn)確性。
而且EIOU損失函數(shù)也改善了對傾斜目標(biāo)的檢測效果,解決了傳統(tǒng)YOLOv5損失函數(shù)在此方面的不足。它還提供了更穩(wěn)定的梯度更新,減少了訓(xùn)練過程中的不穩(wěn)定性問題,特別是在處理較小目標(biāo)時。同時,EIOU損失函數(shù)綜合考慮了邊界框的重疊程度、大小和位置的誤差,使得模型能夠更全面地學(xué)習(xí)目標(biāo)的特征,提高了模型的魯棒性和泛化能力。
所以本文決定采用EIOU Loss,具體公式(3)所示,并添加Focal Loss解決樣本不平衡問題。EIOU損失函數(shù)由重復(fù)損失、中心距離損失和寬度高損失三部分構(gòu)成,計算寬高損失讓目標(biāo)框和錨框的差值最小,不僅加快了模型的收斂速度,也提高了回歸精度。
YOLOv5是一種優(yōu)秀的目標(biāo)檢測算法,在工程實踐中表現(xiàn)出色,但仍有改進(jìn)的空間。通過前面的理論分析與研究,可以得到一種面向小目標(biāo)的改進(jìn)YOLOv5模型,用于安全帽佩戴檢測,其網(wǎng)絡(luò)整體結(jié)構(gòu)如圖12所示。
圖12 改進(jìn)后YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)Fig.12 Improved YOLOv5 network structure
本次的實驗環(huán)境:CPU 為Intel Core i7-10700,24 GB 運行內(nèi)存,GPU 為NVIDIA Quadro P4000,8 GB顯存,Windows 10,64 位操作系統(tǒng),通過Pytorch1.8.0 深度學(xué)習(xí)框架實現(xiàn)模型的搭建、訓(xùn)練和驗證,計算架構(gòu)為CUDA11.3.1,加速軟件為CUDNN8.2.1。
超參數(shù)設(shè)置為:訓(xùn)練圖像分辨率為640×640,批次大小設(shè)置為4,使用SGD 優(yōu)化器,初始學(xué)習(xí)率設(shè)置為0.01,mixup 為0.5,凍結(jié)訓(xùn)練50 個epoch,總迭代運行次數(shù)為300個epoch。所有參照模型均按照以上參數(shù)進(jìn)行訓(xùn)練。
為了充分說明改進(jìn)后YOLOv5模型對安全帽小目標(biāo)的檢測性能,用PASCAL VOC和Safety Helmet Wearing數(shù)據(jù)集對模型進(jìn)行訓(xùn)練和測試,并在去除其中不符合本實驗的圖像樣本的同時,從網(wǎng)絡(luò)上篩選和補充復(fù)雜施工環(huán)境和目標(biāo)密集的圖像素材,進(jìn)一步提高檢測難度和多樣性。
本文實驗通過準(zhǔn)確率(accuracy)、精確率(precision)、召回率(recall)、平均精度(average precision,AP)和平均精度均值(mean average precision,mAP)等指標(biāo)來評估改進(jìn)YOLOv5s算法的性能以上指標(biāo)的具體含義如下:
(1)Accuracy表示預(yù)測正確的目標(biāo)數(shù)占樣本總數(shù)的比例,如公式(4)所示:
(2)Precision表示預(yù)測出的真實正例占所有預(yù)測為正確的比例。用以衡量預(yù)測結(jié)果中,正例被預(yù)測正確的概率。如公式(5)所示:
(3)Recall 表示預(yù)測出的真實正例占實際正樣本總量的比例,用來反映漏檢情況,如公式(6)所示:
(4)mAP 用來均衡Precision 和Recall 的計算結(jié)果的,這兩個指標(biāo)具有單點值局限性,不能充分評估模性能,所以引入mAP,mAP則代表了整個數(shù)據(jù)集中所有類別的AP 的均值,其計算方式如公式(7)所示,一般將閾值設(shè)置為0.5,即IOU 大于0.5 的預(yù)測框是有效的,每隔0.05計算一次mAP值,最后計算所有mAP的均值,公式(7)如下:
由于安全帽數(shù)據(jù)集的目標(biāo)尺度太小,在此數(shù)據(jù)上顯著提升檢測效果難度較大。為了更好地驗證改進(jìn)后的YOLOv5 模型在小目標(biāo)數(shù)據(jù)集上的表現(xiàn),在PASCAL VOC 數(shù)據(jù)集上進(jìn)行多次對比實驗,并對模型的收斂性能、總損失和mAP進(jìn)行評估測試,下面詳細(xì)介紹在該數(shù)據(jù)上的實驗結(jié)果。
YOLOv5s 和改進(jìn)后的YOLOv5s 在PASCAL VOC上的損失曲線和各個類別的平均精度圖如圖13所示。
圖13 改進(jìn)YOLOv5的Loss曲線和Class_mAP圖Fig.13 Test Loss curve and Class_mAP chart of improved YOLOv5
觀察兩個模型在該數(shù)據(jù)集上的Loss曲線可知,訓(xùn)練過程中改進(jìn)后的YOLOv5的總損失均保持在較低狀態(tài),一直低于YOLOv5 的總損失,收斂速度也更快,改進(jìn)后的YOLOv5s 的損失曲線更加平滑,訓(xùn)練更加穩(wěn)定??傮w而言,改進(jìn)后的收斂性更好。
在PASAL VOC 數(shù)據(jù)集中,有17 種尺寸相對較小、特征不夠明顯,且樣本面積小于32×32 像素的小目標(biāo),從平均精度對比圖可知,改進(jìn)后的YOLOv5s 模型在PASCAL VOC 數(shù)據(jù)集上提高了多個小目標(biāo)的檢測精度,平均精度提高了2.03 個百分點,并且損失值也有所下降。這表明改進(jìn)的方法能夠更準(zhǔn)確地識別和定位小目標(biāo),提高了對這些難以檢測的小目標(biāo)的檢測能力。這對于許多實際應(yīng)用場景中的小目標(biāo)檢測任務(wù)具有重要意義,能檢測到更多小尺度的物體,有效地提高模型在小目標(biāo)檢測上的性能。
為了驗證改進(jìn)后的YOLOv5模型在安全帽小目標(biāo)上的表現(xiàn),在Safety Helmet Wearing數(shù)據(jù)集上進(jìn)行多次對比實驗,并對模型的權(quán)重大小、推理時間、平均精度均值和召回率,四個指標(biāo)進(jìn)行驗證,下面詳細(xì)介紹在該數(shù)據(jù)上的實驗內(nèi)容,在安全帽數(shù)據(jù)集上的實驗結(jié)果如表1所示。
表1 改進(jìn)過程的對比實驗結(jié)果Table 1 Comparative experimental results of improvement process
從表1中可以看出,這七種改進(jìn)都能給模型帶來明顯的性能增益,mAP 不斷上升。改進(jìn)1~3 使模型的Backbone 融入了MHSA,添加了小目標(biāo)檢測模塊,導(dǎo)致網(wǎng)絡(luò)的計算量增加,推理速度變慢;改進(jìn)4 使用輕量化卷積GSConv 來替換普通卷積,減輕了模型復(fù)雜度,預(yù)測速度有一點回升;改進(jìn)5 將分類和回歸解耦合,同時增加IOU 計算分支,讓推理時間延長;改進(jìn)6 使用Anchor-free 替換Anchor-based,不需要大量生成錨框,從而減少了計算量和推理時間;改進(jìn)7 使用EIOU 提高了檢測結(jié)果的準(zhǔn)確性和穩(wěn)定性,不影響模型的推理速度。與原YOLOv5s相比,改進(jìn)后的YOLOv5s模型權(quán)重增加了6.6 MB,每一幀的推理時間增加8 ms,mAP提高了4.73 個百分點,召回率提高了3.2 個百分點。綜上所述,改進(jìn)后的YOLOv5模型能有效提高安全帽這類小目標(biāo)的精度,改善安全帽漏檢問題,顯著提高了模型性能。
對YOLOv5s 和改進(jìn)后的YOLOv5s 算法在安全帽數(shù)據(jù)集上的準(zhǔn)確率與召回率進(jìn)行評估,mAP和Recall的曲線圖如圖14所示。
圖14 改進(jìn)YOLOv5和YOLOv5s的訓(xùn)練結(jié)果Fig.14 Improved YOLOv5 and YOLOv5s of training results
為了凸顯出改進(jìn)YOLOv5算法性能的優(yōu)勢,選擇了重疊且密集的目標(biāo),遠(yuǎn)距離小目標(biāo)以及弱光照場景圖像來進(jìn)行檢測對比,結(jié)果如圖15和圖16所示。
圖15 改進(jìn)YOLOv5檢測結(jié)果Fig.15 Improved YOLOv5 test results
圖16 YOLOv5s檢測結(jié)果Fig.16 YOLOv5s test results
由檢測結(jié)果可知,改進(jìn)YOLOv5 在目標(biāo)密集、遠(yuǎn)距離、光線不足三個場景下都有較好的檢測精度,準(zhǔn)確率高于YOLOv5s,檢測到的目標(biāo)也多于YOLOv5s。由此可知,本文改進(jìn)的YOLOv5 算法,有著較高的精度和召回率,而且對重疊目標(biāo)也有較高的辨識度,達(dá)到了當(dāng)下復(fù)雜多變的施工場景的要求。
將改進(jìn)的YOLOv5s與其他檢測安全帽的主流算法進(jìn)行對比,評估改進(jìn)YOLOv5 的性能,所有算法對比模型均使用本文提供的Safety Helmet Wearing數(shù)據(jù)集進(jìn)行訓(xùn)練、測試和驗證,實驗結(jié)果包括每個模型在權(quán)重、mAP、召回率和推理時間四個指標(biāo)上的對比數(shù)據(jù),如表2所示。
表2 與其他主流安全帽檢測算法的對比實驗結(jié)果Table 2 Comparative experimental results with other mainstream helmet detection algorithms
由表2可知,改進(jìn)后的YOLOv5s模型比YOLOv5s模型的權(quán)重多了6.6 MB,雖然在推理時間上比YOLOv5s慢了8 ms,但是安全帽的平均精度和召回率分別比YOLOv5s提高了4.56和3.2個百分點。YOLOv7在安全帽的mAP和Recall兩個指標(biāo)上都比改進(jìn)后的YOLOv5要好一點,然而YOLOv7模型權(quán)重大概是改進(jìn)后YOLOv5s網(wǎng)絡(luò)模型權(quán)重的4倍,推理速度也略低于改進(jìn)YOLOv5s,模型復(fù)雜度過高,不適合部署在生產(chǎn)實踐設(shè)備上。YOLOX在平均精度和召回率上都不如改進(jìn)后的YOLOv5,F(xiàn)aster-RCNN、SSD、YOLOv3 和YOLOv4 模型在模型權(quán)重、平均精度、召回率和推理時間四個指標(biāo)上都遠(yuǎn)不如改進(jìn)后YOLOv5s模型性能好,雖然改進(jìn)的YOLOv5s在平均精度和召回率上和Faster-RCNN差距不明顯,但是Faster-RCNN在權(quán)重上比改進(jìn)的模型多124.7 MB,算法的推理時間上也比改進(jìn)的模型慢了158 ms。由以上對比實驗數(shù)據(jù)可知,改進(jìn)后的YOLOv5s模型性能良好,在檢測安全帽小目標(biāo)上有較高的mAP和Recall,能夠滿足當(dāng)下施工場景的要求。
由于現(xiàn)階段安全帽檢測算法存在小目標(biāo)漏檢、誤檢,而且檢測精度低和速度慢都不能滿足當(dāng)下的場景需求。所以本文提出了一種基于YOLOv5s模型的改進(jìn)算法。該改進(jìn)主要包括在YOLOv5 的Backbone 中加入MHSA,在Neck 中引入注意力機(jī)制和輕量級卷積GSConv,替換使用解耦檢測頭和Anchor-free 等七個改進(jìn)點來改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),目的是提高對小目標(biāo)的檢測性能,降低安全帽誤檢漏檢的問題,在保證高精度和速度的情況下,增強模型的泛化能力和魯棒性。實驗研究結(jié)果也說明了,改進(jìn)后的YOLOv5模型在小目標(biāo)的檢測性能上要遠(yuǎn)遠(yuǎn)優(yōu)于原模型,而且有較高的準(zhǔn)確率和召回率,減少了小目標(biāo)漏檢誤檢的概率,能夠滿足現(xiàn)階段的需求。本文修改的YOLOv5泛化性強,檢測其他類型的小目標(biāo)也是沒有問題的。接下來的研究方向就是對安全帽進(jìn)行跟蹤檢測,在保證精確率和召回率的前提下,優(yōu)化模型在攝像頭等設(shè)備上的檢測性能,使之達(dá)到更好的檢測效果。