王玲敏,段 軍,2,辛立偉
1.內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭014010
2.內(nèi)蒙古科技大學(xué) 礦業(yè)研究院,內(nèi)蒙古 包頭014010
3.包頭市聯(lián)方信息自動化有限責(zé)任公司,內(nèi)蒙古 包頭014010
佩戴安全帽對于煤礦行業(yè)、鋼鐵制造業(yè)以及建筑行業(yè)等高危行業(yè)來說是保障工作人員人身安全的一項重要措施,佩戴安全帽可以及時高效地保護施工人員的頭部,防止或降低因施工現(xiàn)場坍塌或高空墜物對頭部的損害。在各種復(fù)雜的施工場景下,施工人員時常因某種原因而不按相關(guān)的規(guī)定佩戴安全帽,這樣不但會對工人的人身安全造成威脅而且也會影響施工場地的監(jiān)管工作的順利開展。傳統(tǒng)的對工人佩戴安全帽的監(jiān)管措施大部分是基于人工監(jiān)管,但是隨著監(jiān)控時長的增加和監(jiān)控范圍的增大,傳統(tǒng)的監(jiān)管方式會使人極易變得視覺疲勞而導(dǎo)致誤判,也會耗費大量的物力以及人力資源,不能夠滿足目前針對高危行業(yè)安全管理的要求。
國內(nèi)外許多學(xué)者使用基于機器學(xué)習(xí)的安全帽檢測方法,如劉曉慧等人[1]利用安全帽與頭發(fā)的色差進而來判斷是否佩戴安全帽;李琪瑞等人[2]提出了如何定位頭部區(qū)域和計算安全帽的顏色特征來檢測安全帽;Rubaiyat等人[3]利用方向梯度直方圖(histogram of oriented gradient,HOG)找到人在圖像中的位置,然后利用顏色特征以及圓形霍夫變換(circle hough transform,CHT)設(shè)計出安全帽特征,最后判定是否佩戴安全帽;Chiverton等人[4]提出首先檢測出行人,然后再提取頭部HOG、SIFT等特征來檢測安全帽。以上傳統(tǒng)的安全帽檢測方法都是通過手動選取特征進行分類檢測,并且特征計算量大檢查速度慢、精度不高,而且檢測環(huán)境相對簡單,無法適應(yīng)目前復(fù)雜多變的施工場景。
近年來,隨著深度學(xué)習(xí)目標(biāo)檢測技術(shù)的持續(xù)發(fā)展,國內(nèi)外研究人員逐漸將深度學(xué)習(xí)技術(shù)應(yīng)用于安全帽的檢測中?;谏疃葘W(xué)習(xí)技術(shù)的目標(biāo)檢測算法主要分為基于候選框的兩階段(two-stage)檢測算法和基于回歸的一階段(one-stage)檢測算法?;趦呻A段的檢測方法主要包括:RCNN[5]、SPP-NET[6]、Fast-RCNN[7]、Faster-RCNN[8]、Mask R-CNN[9]等。基于單階段的檢測方法包括YOLO[10-13]系列算法和SSD算法[14]?;趦呻A段的目標(biāo)檢測算法雖然精度高,但是檢測速度相對較慢。與兩階段目標(biāo)檢測算法相比,一階段目標(biāo)檢測算法通過網(wǎng)絡(luò)一次前向推斷得到目標(biāo)位置和分類結(jié)果,檢測速度遠大于兩階段的檢測算法。徐守坤等人[15]使用Faster RCNN 檢測方法,進行多尺度錨框和增加錨點數(shù)量來訓(xùn)練網(wǎng)絡(luò),并加入在線困難樣本挖掘(online hard example mining,OHEM)[16]算法檢測安全帽;施輝等人[17]在YOLOv3 中通過添加特征金字塔來進行多尺度結(jié)構(gòu)的訓(xùn)練,從而獲得不同尺度的特征層,進而來預(yù)測工人和安全帽的位置。以上深度學(xué)習(xí)的檢測方法雖然在精度和速度上略優(yōu)于一般的檢測方法,但是在檢測小目標(biāo)和密集目標(biāo)方面還是有不足之處。
針對以上問題本文選用目前優(yōu)秀的YOLOv5 目標(biāo)檢測算法作為改進前的目標(biāo)檢測算法,該算法與傳統(tǒng)檢測方法相比,精度和速度有所提高,具有很強的實時性,但是對于小目標(biāo)和密集目標(biāo)的檢測仍有不足之處。本文將對YOLOv5檢測算法進行改進,使其在小目標(biāo)和密集目標(biāo)檢測方面取得更好的效果。
YOLOv5目標(biāo)檢測算法是Ultralytics公司于2020年發(fā)布的,是基于Python 框架的一個輕量級檢測模型,根據(jù)模型的大小,YOLOv5有4個版本,分別為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,這4個版本的權(quán)重、模型的寬度和深度是依次增加的。本文將使用YOLOv5s檢測模型。
YOLOv5 自發(fā)行以來,一直都在更新迭代版本,本文改進的是v5.0 版本,該版本實現(xiàn)了YOLOv5-P6 模型和重新訓(xùn)練的YOLOv5-P5 模型。YOLOv5-P5 模型(與v4.0版本相同的架構(gòu)),包括3個輸出層P3、P4、P5,步長幅度分別為8、16、32。YOLOv5-P6 模型包括4 個輸出層P3、P4、P5、P6,步長幅度分別為8、16、32、64。綜合考量,本文選取YOLOv5-P5 作為基準(zhǔn)實驗?zāi)P停云錇閎aseline 進行模型優(yōu)化。YOLOv5 的網(wǎng)絡(luò)模型分為4 個部分,包括輸入端、主干網(wǎng)絡(luò)(Backbone)、Neck 模塊和輸出端。其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 YOLOv5 network structure
YOLOv5 的輸入端主要包括馬賽克(Mosaic)數(shù)據(jù)增強、自適應(yīng)計算錨框和自適應(yīng)縮放圖像三個部分。馬賽克數(shù)據(jù)增強是在模型訓(xùn)練階段使用的,將四張圖片按照隨機縮放、隨機裁剪和隨機排布的方式進行拼接,可以增加數(shù)據(jù)集中小目標(biāo)的數(shù)量,從而提升模型對小目標(biāo)物體的檢測能力。其結(jié)果如圖2 所示。在模型訓(xùn)練的過程中,YOLOv5 會根據(jù)參數(shù)啟動自適應(yīng)錨框計算功能,自適應(yīng)地計算不同類別訓(xùn)練集中的最佳錨框值,并且網(wǎng)絡(luò)在原始錨框的基礎(chǔ)上輸出預(yù)測框,然后將預(yù)測框和真實框進行對比計算兩者的差值,再反向更新迭代網(wǎng)絡(luò)參數(shù),如圖3所示為預(yù)測結(jié)果圖。因模型原始錨框效果很好,故本文使用的原始錨框為[10,13,16,30,33,23]、[30,61,62,45,59,119]、[116,90,156,198,373,326]。自適應(yīng)縮放圖片是將原圖片縮放到統(tǒng)一標(biāo)準(zhǔn)的尺寸,再送入到網(wǎng)絡(luò)中進行檢測。圖2中圖片四周的灰色邊框是自適應(yīng)縮放圖片的結(jié)果。
圖2 Mosaic數(shù)據(jù)增強效果圖Fig.2 Mosaic data enhancement effect picture
模型的Backbone 主要由Focus、C3(改進后的BottleneckCSP)和空間金字塔池化(spatial pyramid pooling,SPP)模塊組成。Focus 是一種對feature map的切片操作,把圖片的寬度w和高度h的信息整合到c維度,具體來說是將距離為2 的四個位置堆疊到一個通道上去,因此高h和寬w都縮小為原來的1/2,通道數(shù)c則會增加4 倍,其具體過程如圖4 所示。Focus 模塊設(shè)計主要用于降低FLOPS(每秒浮點運算次數(shù))和提高檢測速度。YOLOv5-P5 模型的創(chuàng)新之處在于PyTorch1.7 中新支持的SiLU()激活函數(shù)替換了先前版本中使用的LeakyReLU()和Hardswish()激活函數(shù),并且刪減了之前版本中BottleneckCSP 的部分Conv 模塊。改進之前版本的BottleneckCSP 模塊和改進后的BottleneckCSP(C3)模塊對比圖如圖5 所示。SPP 模塊使用組合的3 個多尺度最大池化層,幾乎可以在沒有降低速度的情況下提升感受野,有助于解決錨框和特征層的對齊問題。
圖4 Focus切片操作Fig.4 Focus slice operation
圖5 BottleneckCSP和C3模塊結(jié)構(gòu)圖Fig.5 BottleneckCSP and C3 module structure diagram
該模塊采用特征金字塔結(jié)構(gòu)(feature pyramid networks,F(xiàn)PN)+路徑聚合網(wǎng)絡(luò)結(jié)構(gòu)(path aggregation network,PAN)[18]的結(jié)構(gòu),可以加強網(wǎng)絡(luò)對不同縮放尺度對象特征融合的能力。FPN 主要是通過融合高低層特征提升對小目標(biāo)物體的檢測效果。PAN 在FPN 的基礎(chǔ)上增加了一個自下向上方向的路徑,使底層的定位信息更好地傳遞到頂層中,兩者結(jié)合可以從不同的主干層對不同的檢測層進行特征聚合,利用該結(jié)構(gòu)可以進一步提高對密集目標(biāo)的檢測性能。
輸出端采用GIOU函數(shù)作為邊界框的損失函數(shù),在目標(biāo)檢測后處理過程中,使用非極大值抑制(non maximum suppression,NMS)來對多目標(biāo)框進行篩選,增強了多目標(biāo)和遮擋目標(biāo)的檢測能力。
對于圖像中存在的小目標(biāo)來說,所占像素少,并且易受背景因素等影響,原Yolov5模型算法在進行卷積采樣時容易丟失小目標(biāo)的特征信息,對小目標(biāo)的檢測效果不是很好,故本文引入坐標(biāo)注意力機制,其目的是為了告訴模型更加需要關(guān)注哪些內(nèi)容和哪些位置,對于小目標(biāo)和密集目標(biāo)來說,可以有效地提取其特征信息,進一步提高檢測的準(zhǔn)確率。
坐標(biāo)注意力機制(coordinate attention,CA)[19]是將位置信息加入到了通道注意力當(dāng)中,使網(wǎng)絡(luò)可以在更大區(qū)域上進行注意。為了緩解以往注意力機制如SENet[20]、CBAM[21]等提出的二維全局池化造成的位置信息丟失,該注意力機制將通道注意分解為兩個平行的一維特征編碼過程,分別在兩個方向上聚合特征。一個方向得到遠程依賴關(guān)系,另外一個方向得到準(zhǔn)確的位置信息。對生成的特征圖進行編碼以形成一對方向感知和位置敏感的特征。
如圖6 所示,CA 通過精準(zhǔn)的位置信息編碼通道關(guān)系和長程依賴關(guān)系,主要包括兩個步驟:坐標(biāo)信息嵌入(coordinate information embedding)和坐標(biāo)注意力生成(coordinate attention generation)。一個CA模塊可以看作是一個用來增強特征表示能力的計算單元它可以將任何中間張量X=[x1,x2,…,xc]∈RC×H×W作為輸入并輸出一個有增強表示能力的同樣尺寸的輸出Y=[y1,y2,…,yc]。其中C為通道數(shù),h和w分別為輸入圖片的高和寬。
圖6 CA模塊結(jié)構(gòu)Fig.6 CA module structure
對于坐標(biāo)信息嵌入來說,為了促進注意力模塊可以獲取精準(zhǔn)位置信息的空間長距離依賴關(guān)系,CA 模塊將全局池化分為一對一維特征編碼操作。對于輸入的特征圖X,維度為C×H×W,先使用大小為(H,1) 和(1,W)的池化核分別沿水平方向坐標(biāo)和豎直方向的坐標(biāo)對每個通道進行編碼,也就是高度為h的第c個通道與寬度為w的第c個通道的輸出,輸出公式如式(1)、(2)所示:
以上公式沿著兩個方向進行特征聚合,返回一對方向感知注意力特征Zh和Zw,這有助于網(wǎng)絡(luò)更加準(zhǔn)確地定位所要檢測的目標(biāo)。
對于坐標(biāo)注意力生成來說,級聯(lián)之前模塊先生成兩個特征層,然后使用一個共享的1×1卷積進行變換F1,其公式(3)如下所示:
其中,f∈RC/r×(H+W)是對空間信息在水平方向和豎直方向的中間特征圖,r表示下采樣比例,設(shè)置為16用來控制模塊的大小,整體性能和計算量最平衡。[·,·]表示沿空間維度的連接操作,δ表示非線性激活函數(shù)。然后,沿空間維度將f切分成兩個單獨的張量fh∈RC/r×H和fw∈RC/r×W再利用兩個1×1 卷積Fh和Fw將特征圖fh和fw變換到和輸入X同樣的通道數(shù),得到結(jié)果如公式(4)、(5):
最后,對gh和gw進行拓展,作為注意力權(quán)重,CA模塊的最終輸出可以表述如公式(6)所示:
Coordinate Attention 是一個簡單靈活即插即用的模塊,并且是一種新穎的移動網(wǎng)絡(luò)注意力機制,可以在不帶來任何額外開銷的前提下,提升網(wǎng)絡(luò)的精度。原作者是將其模塊運用到EfficientNet 和MobileNet 中去,分別取得了很好的效果?;诖怂枷?,本文將其模塊加入到Y(jié)OLOv5 模型中的Backbone 中,將原算法特征提取網(wǎng)絡(luò)中的10 層網(wǎng)絡(luò)變?yōu)?3 層網(wǎng)絡(luò)。其檢測結(jié)果對比如圖7所示,(a)表示YOLOv5模型結(jié)果,在正下方漏檢一個目標(biāo)安全帽,(b)表示添加注意力機制后的結(jié)果,正下方準(zhǔn)確檢測出了安全帽??梢娮⒁饬C制可以更大范圍地讓網(wǎng)絡(luò)模型注意到小目標(biāo),提高網(wǎng)絡(luò)的檢測能力。
圖7 添加注意力機制效果圖Fig.7 Adding attention mechanism effect picture
BiFPN(bidirectional feature pyramid network)加權(quán)雙向(自頂向下+自底向上)特征金字塔網(wǎng)絡(luò)結(jié)構(gòu)[22]是由谷歌大腦團隊提出來的一種全新的特征融合方式。BiFPN 的思想是高效的雙向跨尺度連接和加權(quán)特征融合,也就是基于路徑增強的思想,如圖8,首先進行自頂向下的特征融合,然后再進行自底向上的特征融合。
圖8(a)為FPN結(jié)構(gòu),該結(jié)構(gòu)建立了一條自上而下的通路,進行特征融合,接著用融合后的具有更高語義信息的特征層進行預(yù)測,但是由于這種結(jié)構(gòu)會受到單向信息流的限制。
圖8 FPN、PANet和BiFPN結(jié)構(gòu)Fig.8 FPN,PANet and BiFPN structure
為了解決這個問題,Liu 等人提出了圖8(b)的PAN結(jié)構(gòu),該結(jié)構(gòu)是在FPN的基礎(chǔ)上再建立一條自下而上的通路,將底層的位置信息傳到預(yù)測特征層中,使預(yù)測特征層既有頂層的語義信息又有底層的位置信息,這樣可以大大提高目標(biāo)檢測的精度。
BiFPN 是在PAN 的基礎(chǔ)上進行改進的。結(jié)構(gòu)如圖8(c)所示。雙向跨尺度連接:首先是刪除了只有一個輸入的節(jié)點,該節(jié)點無特征融合且貢獻度很小,將該節(jié)點刪除之后沒有很大影響而且會簡化網(wǎng)絡(luò);然后是在原始輸入節(jié)點和輸出節(jié)點之間增加了一條邊,是為了在不消耗更多成本的情況下可以融合更多的特征;最后,將自頂向下和自底向上的路徑融合到一個模塊中,以便可以重復(fù)堆疊,以實現(xiàn)更高層次的特征融合。加權(quán)特征融合:BiFPN 使用的是快速歸一化融合,直接用權(quán)值除以所有權(quán)值加和來進行歸一化,同時將權(quán)值歸一化到[0,1]之間,提高了計算速度。如式(7)所示:
其中,用激活函數(shù)ReLU 來確保權(quán)重wi≥0,該權(quán)值由網(wǎng)絡(luò)訓(xùn)練得到,Ii表示輸入的特征。由于標(biāo)量權(quán)重是無界的,會導(dǎo)致訓(xùn)練不穩(wěn)定,所以使用softmax來進行歸一化。改進后的網(wǎng)絡(luò)將主干網(wǎng)絡(luò)中提取出的三種不同尺度的特征P3、P4、P7作為BiFPN的輸入,進行跨尺度連接和加權(quán)特征融合,最后設(shè)置20×20、40×40、80×80三種不同尺度的特征分辨率的預(yù)測分支。其中部分權(quán)值為([0.499 98,0.499 98]),([0.333 32,0.333 32,0.333 32]),([0.499 98,0.499 98]);([0.500 00,0.500 00]),([0.333 25,0.333 25,0.333 25]),([0.500 00,0.500 00])。以節(jié)點P6為例,其形成的兩個融合特征過程如下所示:
基于以上優(yōu)點,本文將YOLOv5 結(jié)構(gòu)中的PAN 模塊替換成BiFPN,來加強特征融合,提高檢測速度。
YOLOv5模型的損失函數(shù)包括分類損失函數(shù)(classification loss)、定位損失(localization loss)和目標(biāo)置信度損失(confidence loss)。YOLOv5 采用了BECLogits損失函數(shù)計算objectness score的損失,class probability score 采用二元交叉熵損失函數(shù)(BCEclsloss),bounding box則采用了GIOU Loss作為損失函數(shù)[23]。GIOU Loss公式如式(10)所示:
其中,B={x,y,w,h}為預(yù)測框的大小Bgt={xgt,ygt,wgt,hgt}為真實框大小,C為B和Bgt的最小區(qū)域面積。當(dāng)真實框與預(yù)測框距離越遠時,C的值也越大,C減去預(yù)測框與真實框面積的值也越大,最后趨于1。
盡管GIoU解決了IoU的梯度問題,但是GIoU很不穩(wěn)定并且收斂很慢,所以本文選用CIoU[24]作為bounding box回歸的損失函數(shù),CIoU Loss公式如式(11)所示:
其中,ρ(·)代表預(yù)測框與目標(biāo)框兩個中心點的歐式距離,C是最小包圍兩個邊界框的對角線長度,b和bgt分別表示B和Bgt的中心點,α是權(quán)重函數(shù),ν用來衡量anchor 框和目標(biāo)框之間的長寬比的相似性,公式如式(12)、(13)所示:
YOLOv5 目標(biāo)檢測算法是一個比較優(yōu)秀的檢測算法,本身就具有很好的工程實用性,就目前研究來看還是有可以改動的空間。根據(jù)前面章節(jié)的理論分析與研究,可以得到引入注意力機制的YOLOv5 算法YOLOv5-CB(YOLOv5-CoordinateBiFPN),其模型結(jié)構(gòu)如表1所示。
表1 YOLOv5-CB網(wǎng)絡(luò)整體結(jié)構(gòu)Table 1 Structure of YOLOv5-CB network
表中的from 列表示輸入來自哪一層,列中-1 表示來自上一層的輸出,params 列表示參數(shù)的大小,module為子模塊,arguments表示模塊參數(shù)的信息,包括輸入通道數(shù)、輸出通道數(shù)、卷積核大小、步長信息等。
模型訓(xùn)練算法
輸入:安全帽數(shù)據(jù)集以及標(biāo)記文件;
初始化參數(shù):動量值、權(quán)重衰減系數(shù)、批量大小、學(xué)習(xí)率、迭代次數(shù)、余弦退火超參數(shù)、學(xué)習(xí)率動量、預(yù)熱學(xué)習(xí)率、損失函數(shù)系數(shù);
數(shù)據(jù)預(yù)處理:將圖片標(biāo)簽的.xml格式轉(zhuǎn)化為.txt文件;
圖片預(yù)處理:調(diào)整圖片飽和度、透明度,圖像縮放、剪切,上下翻轉(zhuǎn)、左右翻轉(zhuǎn)、Mosaic處理、圖像混疊處理等;
1.數(shù)據(jù)集準(zhǔn)備,將數(shù)據(jù)集劃分為訓(xùn)練集和驗證集;
2.加載模型配置文件以及初始化參數(shù),將輸入的數(shù)據(jù)進行預(yù)處理;
3.網(wǎng)絡(luò)模型的加載,對輸入的圖片進行特征的提取和物體定位分類;
4.隨著訓(xùn)練次數(shù)的不斷增加,將使用SGD進行網(wǎng)絡(luò)參數(shù)的更新優(yōu)化;
5.在驗證集上計算模型的mAP,并判斷模型的性能是否是最佳的,若為最佳模型則保存此最佳模型;
6.訓(xùn)練迭代次數(shù)結(jié)束后,將獲得最佳模型和最近一次訓(xùn)練模型。
輸出:本階段訓(xùn)練中的最優(yōu)模型
實驗的整體流程圖如圖9 所示,首先是準(zhǔn)備數(shù)據(jù)集,該數(shù)據(jù)集包含網(wǎng)上公開的數(shù)據(jù)集和實地拍攝的數(shù)據(jù)進行整理融合,進行安全帽佩戴圖片篩選和標(biāo)記,然后將自制的數(shù)據(jù)集劃分為訓(xùn)練集、測試集和驗證集。之后的流程步驟按照3.1 節(jié)中描述的算法進行訓(xùn)練,進而得到最優(yōu)的檢測模型,接著對測試集數(shù)據(jù)進行測試得到最終結(jié)果。
圖9 整體流程圖Fig.9 Overall flow chart
本文實驗的操作系統(tǒng)為Windows10,CPU 型號為Intel?Core?i7-10700 CPU @ 2.90 GHz,運行內(nèi)存為32 GB。GPU 型號為NVIDIA Quadro P4000,顯存大小為8 GB,內(nèi)存大小為24 GB。該YOLOv5 模型是基于Pytorch 深度學(xué)習(xí)框架,編程語言為Python,使用CUDA11.3.1和CUDNN8.2.1對GPU進行加速。參數(shù)設(shè)置如表2所示。
表2 參數(shù)設(shè)置Table 2 Parameter setting
本文使用的數(shù)據(jù)集由Roboflow網(wǎng)站提供的公開安全帽數(shù)據(jù)集和真實場景中視頻幀獲得的圖片組成,覆蓋了礦井、工地、煉鋼廠等場景,增加了許多小目標(biāo)和密集目標(biāo)的數(shù)量,可以提高對小目標(biāo)和密集目標(biāo)的檢測率。圖片經(jīng)過篩選、清洗以及標(biāo)注等步驟獲取,最終得到的數(shù)據(jù)集包括7 035 張圖片,按照8∶2 的比例將數(shù)據(jù)集分為訓(xùn)練集和測試集,其中訓(xùn)練集5 628 張圖片,測試集1 407 張圖片。數(shù)據(jù)集包括兩類:一類是佩戴安全帽的人(helmet),另外一類是未佩戴安全帽的人(head)。如圖10所示為數(shù)據(jù)集的分析可視化結(jié)果圖,其中(a)為數(shù)據(jù)集物體類別的分布,(b)為物體中心點位置分布圖,橫縱坐標(biāo)表示中心點的位置,(c)為物體大小分布圖,橫坐標(biāo)width和縱坐標(biāo)height代表物體的寬和高。
圖10 數(shù)據(jù)集分析Fig.10 Data set analysis
4.3.1 數(shù)據(jù)集標(biāo)記
該公開數(shù)據(jù)集是PASCAL VOC 格式的xml 文件,需要將其轉(zhuǎn)換成YOLO 格式的txt 標(biāo)記文件,具體公式如下所示:
其中,xmax、xmin、ymax、ymin分別表示xml文件中標(biāo)記物體所在位置的左上角坐標(biāo)以及右下角坐標(biāo)的值。dw、dh表示圖片的高和寬。
4.3.2 Focal loss
如圖8 所示,類別間的樣本不均衡,這可能會導(dǎo)致模型過擬合問題,使模型的泛化能力較差。為了解決這個問題,YOLOv5-CB 引入了Focal loss 函數(shù)[25],F(xiàn)ocal loss 主要是為了解決目標(biāo)檢測中正樣本和負樣本之間比例失衡問題,如式(18)所示:
其中,α∈[0,1]為平衡因子,用來平衡正負樣本比例不均,y′∈[0,1]表示標(biāo)簽為1 的類的模型估計概率,γ∈[0,5]可以調(diào)節(jié)簡單樣本權(quán)重降低的速率。在該模型中,將參數(shù)γ設(shè)置為1.5,可以有效地緩解類間不平衡問題。
本文實驗使用召回率(Recall)、精確度(Precision)、平均精度AP(average precision)、平均精度均值mAP(mean average precision)來評價檢測模型準(zhǔn)確性。在介紹這些指標(biāo)之前先介紹以下概念:TP(true positives)是指被分配正確的正樣本;TN(true negatives)為正確分配的負樣本;FP(false positives)指的是被錯誤分配的正樣本;FN(false negatives)指的是被錯誤分類的負樣本。
精確度:表示是分類器判定是正類并且是真正類的部分占所有分類器判定是正類的比例。如式(19)所示:
召回率:表示是正類并且確實是正類的部分占所有確實是正類的比例。如式(20)所示:
平均精度AP:指的是以召回率Recall為橫軸,以精確度Precision為縱軸組成的曲線,曲線圍成的面積就是AP。如式(21)所示:
平均精度均值mAP:數(shù)據(jù)集中所有類別的平均精度的均值。如式(22)所示:
其中,m表示測試集中的樣本個數(shù)。
YOLOv5 模型和改進YOLOv5 模型(YOLOv5-CB)訓(xùn)練過程中,均使用相同的數(shù)據(jù)集和相同的參數(shù)設(shè)置,根據(jù)訓(xùn)練過程中保存的日志文件來繪制出如圖11所示的兩個模型訓(xùn)練Loss對比曲線圖。
圖11 依次表示Box_Loss、Cls_Loss 和Obj_Loss,由圖可以看出YOLOv5-CB 模型相比于YOLOv5 模型來說收斂較快、損失值更小,說明將原損失函數(shù)修改之后提高了網(wǎng)絡(luò)的收斂能力。
4.5.1 對比實驗
對比實驗是為了更好地展現(xiàn)改進模型的優(yōu)勢,該實驗是將YOLOv5-CB 與Faster-RCNN、SSD、YOLOv3、YOLOv4以及YOLOv5模型進行對比,模型使用相同的安全帽數(shù)據(jù)集來進行訓(xùn)練、驗證,如表3 所示為各個模型在mAP、Recall和推理時間方面的對比結(jié)果。
由表3可知,YOLOv5檢測算法中的YOLOv5s模型比起兩階段的Faster-RCNN以及一階段的SSD、YOLOv3和YOLOv4 來說是輕量級的網(wǎng)絡(luò)模型,YOLOv5-CB 模型比YOLOv5 模型的權(quán)重僅僅多1.7 MB,雖然在推理時間上比YOLOv5s慢了2 ms,但是平均精度和召回率分別比YOLOv5s 提高了5.1 和5.6 個百分點。YOLOv5m在平均精度和召回率方面都比YOLOv5-CB 稍微優(yōu)越一些,但是其權(quán)重大約是YOLOv5-CB模型權(quán)重的3倍,推理速度也略低于YOLOv5-CB。YOLOv5-CB 在平均精度和召回率方面都遠高于YOLOv3、YOLOv4 和SSD模型。相比于Faster-RCNN,YOLOv5-CB 的平均精度和召回率都與之相差不大,但是推理每幀視頻的平均時長比Faster-RCNN快164 ms,達到了實時檢測的要求。
表3 實驗對比結(jié)果Table 3 Experimental comparison results
4.5.2 消融實驗
該消融對比實驗是為了驗證各個改進模塊的優(yōu)化作用,實驗結(jié)果如表4所示,其中改進1表示在主干網(wǎng)絡(luò)加入注意力機制,改進2 表示修改原網(wǎng)絡(luò)的金字塔結(jié)構(gòu),改進3表示損失函數(shù)的修改。從表中的數(shù)據(jù)可以看出,加入注意力機制后,平均精度提高了0.6 個百分點,但是速度降低了1 ms;修改金字塔結(jié)構(gòu)平均精度提高了2.2個百分點,速度降低1 ms;損失函數(shù)修改后雖然精度沒有提高多少,但是推理時間比YOLOv5快了2 ms。將這三個改進共同加入模型之中,平均精度提高了5.1個百分點,這對于小目標(biāo)和密集目標(biāo)的檢測有大大的提升。
表4 消融實驗結(jié)果Table 4 Ablation experimental results
為了更好地驗證YOLOv5-CB 模型的可行性,在測試集中選取部分圖片進行測試,如圖12為YOLOv5-CB模型和YOLOv5 模型在不同施工場景下的檢測結(jié)果對比圖,圖12 中(a)表示對遮擋目標(biāo)的檢測,左圖為YOLOv5 模型的檢測結(jié)果圖,右圖為YOLOv5-CB 模型的檢測結(jié)果圖,可以看到左圖漏檢了被遮擋的目標(biāo),而右圖則檢測出了被遮擋的目標(biāo)。(b)為對交叉密集目標(biāo)的檢測,左圖中出現(xiàn)了對物體的誤檢,將人的手誤檢為安全帽,右圖則檢測正常并且精度高于左圖檢測的精度。(c)是對遠距離小目標(biāo)的檢測,左圖對遠處的小目標(biāo)沒有檢測出來,相反右圖準(zhǔn)確地檢測出遠處的小目標(biāo)。(d)是在光照不均勻的場景下對目標(biāo)的檢測,佩戴安全帽的工人在強光下,遠處的未佩戴安全帽的人員在弱光下,左圖未識別到弱光下面的人的頭部,右圖準(zhǔn)確地識別出處于弱光下的頭部。(e)是礦井人員在井下施工的場景,光線較弱,左圖出現(xiàn)了漏檢而右圖則準(zhǔn)確地檢測到每個目標(biāo)。綜上所述,YOLOv5-CB 模型相比于YOLOv5 模型在性能方面表現(xiàn)出了更好的優(yōu)越性,YOLOv5模型在復(fù)雜多樣的檢測場景下性能較差,在對小目標(biāo)和密集目標(biāo)的檢測方面出現(xiàn)了漏檢、誤檢的情況,并且相比于YOLOv5-CB 模型目標(biāo)定位精度偏低。而YOLOv5-CB模型對小目標(biāo)和密集目標(biāo)的檢測效果要優(yōu)于YOLOv5模型,對復(fù)雜的施工場景有很好的魯棒性,從而表現(xiàn)出了更優(yōu)越的性能以及更準(zhǔn)確的定位精度。
圖12 不同施工場景下模型檢測結(jié)果對比Fig.12 Comparison of model test results under different construction scenarios
針對目前對安全帽的檢測算法出現(xiàn)的對小目標(biāo)、密集目標(biāo)漏檢誤檢且檢測準(zhǔn)確率低的情況,本文提出了一種基于YOLOv5 模型的改進算法YOLOv5-CB 模型。該改進主要是通過在YOLOv5 的主干提取網(wǎng)絡(luò)加入注意力機制、修改特征金字塔、改進損失函數(shù)等來提高模型對小目標(biāo)和密集目標(biāo)的檢測能力,進而增強模型的泛化能力和魯棒性。實驗結(jié)果表明,YOLOv5-CB 模型相比于YOLOv5 模型,在小目標(biāo)、密集目標(biāo)的檢測效果上要優(yōu)于YOLOv5 模型,并且能夠獲得很好的檢測精度,滿足在復(fù)雜施工場景下對安全帽佩戴檢測的準(zhǔn)確性需求。該模型具有很好的泛化能力,也可以適應(yīng)于其他類型目標(biāo)的檢測中。下一步的研究重點是面對各自復(fù)雜多變的環(huán)境天氣,在保證速度的精度的前提下,對模型進一步的優(yōu)化,使之達到更好的檢測效果。