杜曉剛, 王玉琪, 晏潤冰, 古東鑫, 張學(xué)軍, 雷 濤*
(1.陜西科技大學(xué) 陜西省人工智能聯(lián)合實(shí)驗(yàn)室 電子信息與人工智能學(xué)院, 陜西 西安 710021; 2.陜西科技大學(xué) 機(jī)電工程學(xué)院, 陜西 西安 710021; 3.蘭州交通大學(xué) 電子與信息工程學(xué)院, 甘肅 蘭州 730070)
目標(biāo)檢測是計(jì)算機(jī)視覺的熱門研究方向,在安全管理、智能家居、智慧醫(yī)療等領(lǐng)域具有重要的應(yīng)用價(jià)值.其中,在建筑行業(yè)對(duì)施工人員佩戴安全帽的情況進(jìn)行檢測引起了眾多研究人員的關(guān)注.在線檢測安全帽的佩戴情況對(duì)保證施工人員的安全具有重要的研究意義[1,2].
目前,安全帽檢測方法可分為兩類:傳統(tǒng)檢測方法和基于深度學(xué)習(xí)的檢測方法.相對(duì)于傳統(tǒng)檢測方法,基于深度學(xué)習(xí)的檢測方法具有檢測精度高、檢測速度快的優(yōu)勢.根據(jù)檢測階段不同,可以將基于深度學(xué)習(xí)的檢測方法分為兩大類[3,4]:兩階段檢測[1]和單階段檢測[2,5-7].由于單階段檢測方法具有檢測效率高的特點(diǎn),可以滿足安全帽檢測的實(shí)時(shí)性需求,在實(shí)際生產(chǎn)中具有廣泛的應(yīng)用前景.近年來,許多學(xué)者相繼提出了大量的單階段檢測方法,主要包括:SSD檢測[2,5]和YOLO檢測[6,7].其中,YOLO系列算法因其檢測速度快而得到了學(xué)者們廣泛地研究和關(guān)注.YOLOv5作為YOLO系列的最新算法,在主干網(wǎng)絡(luò)中利用Focus結(jié)構(gòu)對(duì)圖像進(jìn)行切片,使原始圖像的長寬信息集中到通道空間,得到圖像信息不變的二倍下采樣特征圖,改善檢測精度的同時(shí)也提高了檢測效率.此外,在YOLOv5的頸部網(wǎng)絡(luò)中使用CSP2_X結(jié)構(gòu)[8]來增強(qiáng)網(wǎng)絡(luò)的學(xué)習(xí)能力以及特征融合能力.同時(shí),YOLOv5從整體上降低模型的大小,使得模型更加輕量化,提高了檢測效率.
然而,由于YOLOv5模型為通用模型,針對(duì)密集復(fù)雜場景中的特定目標(biāo)進(jìn)行檢測時(shí)導(dǎo)致檢測效果有所下降.例如在安全帽檢測過程中,由于拍攝場景環(huán)境復(fù)雜,容易受到檢測天氣、人數(shù)、光照強(qiáng)度、拍攝距離等因素的影響,YOLOv5針對(duì)工地等復(fù)雜場景進(jìn)行安全帽檢測的精度有待改善.
為了解決以上問題,本文提出了一種基于YOLO-ST的安全帽檢測算法.本文的主要貢獻(xiàn)歸納如下:
(1)引入更容易捕獲全局信息的Swin Transformer結(jié)構(gòu)來提取更強(qiáng)大的語義特征,適用于環(huán)境惡劣和復(fù)雜場景的目標(biāo)檢測;同時(shí),允許自注意力進(jìn)行跨窗口的計(jì)算,進(jìn)一步提高了檢測效率.
(2)在YOLO-ST中設(shè)計(jì)了DSPP模塊進(jìn)行池化操作,使模型在獲得多尺度信息的同時(shí),最大程度保留了圖像的細(xì)節(jié)信息,解決原始池化操作帶來漏檢率過高的問題,從而提高安全帽檢測的準(zhǔn)確性.
(3)在公開的SHWD數(shù)據(jù)集上從對(duì)比實(shí)驗(yàn)和消融實(shí)驗(yàn)兩方面進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果表明,與主流的目標(biāo)檢測算法相比,YOLO-ST能夠獲得更佳的檢測結(jié)果.
目前,目標(biāo)檢測主要分為兩大類:傳統(tǒng)的目標(biāo)檢測方法和基于深度學(xué)習(xí)的目標(biāo)檢測方法[9].其中,傳統(tǒng)的目標(biāo)檢測方法[10,11]通常采用人工設(shè)計(jì)的特征提取器來提取特征,同時(shí)傳統(tǒng)算法具有可解釋性強(qiáng)、模型設(shè)計(jì)簡單等優(yōu)點(diǎn).然而,由于人工設(shè)計(jì)的特征提取器未能獲取豐富的上下文信息和高級(jí)語義特征,導(dǎo)致檢測效率有所下降.近年來,隨著深度學(xué)習(xí)技術(shù)的不斷研究,基于深度學(xué)習(xí)的目標(biāo)檢測方法[12]因其良好的檢測精度受到學(xué)者們的廣泛關(guān)注.根據(jù)檢測階段的不同,基于深度學(xué)習(xí)的目標(biāo)檢測方法可分為兩類:兩階段檢測算法[13-16]和單階段檢測算法[17-20].
兩階段檢測算法[13-16]將檢測過程分為兩個(gè)階段:首先,通過候選框生成網(wǎng)絡(luò)進(jìn)行特征提取;然后,將特征輸入分類網(wǎng)絡(luò)進(jìn)行分類和邊框位置矯正.在兩階段檢測方法中,首先由Girshick等[13]提出基于區(qū)域卷積神經(jīng)網(wǎng)絡(luò)R-CNN,該方法借助CNN良好的特征提取和分類能力,并通過區(qū)域提取來實(shí)現(xiàn)目標(biāo)檢測.在此基礎(chǔ)上,為了解決R-CNN中因固定尺寸的全連接輸入導(dǎo)致圖像信息形變以及分類和回歸過程中計(jì)算步驟多導(dǎo)致訓(xùn)練速度慢等問題,相繼提出了SPP-Net[14]、Fast R-CNN[15]和Faster R-CNN[16].其中,Faster R-CNN的性能尤為突出,在卷積層后接入金字塔池化層[21],從而實(shí)現(xiàn)任意大小的卷積特征映射為固定尺寸的全連接輸入.同時(shí),提出了區(qū)域生成網(wǎng)絡(luò)RPN代替原始的選擇性搜索方法SS[11]來生成候選框,從而提升候選框的生成速度.上述兩階段檢測分工明確,取得了良好的檢測精度.但是,兩階段檢測算法的檢測速度相對(duì)較慢,從而限制了其在對(duì)實(shí)時(shí)性要求高且硬件資源受限的實(shí)際場景中的應(yīng)用.
單階段檢測[17-20]主要以YOLO系列的檢測方法為代表.與兩階段檢測方法相比,YOLO系列將目標(biāo)檢測轉(zhuǎn)化為回歸問題,通過輸入圖像至神經(jīng)網(wǎng)絡(luò),直接得到包含類別以及位置信息的輸出.YOLO方法檢測效率高且檢測精度與兩階段檢測方法接近.
在YOLO檢測方法中,首先由Redmon等[17,18]相繼提出了YOLOv1和YOLOv2算法.在此基礎(chǔ)上,YOLOv3[19]選擇更深層的網(wǎng)絡(luò)Darknet53進(jìn)行特征提取,并引入多尺度預(yù)測(FPN)[22]來提高網(wǎng)絡(luò)對(duì)數(shù)據(jù)的表征能力.YOLOv3在檢測精度方面有著大幅度的提升,同時(shí)更適用于進(jìn)行小目標(biāo)檢測.而YOLOv4[20]則是在YOLOv3的基礎(chǔ)上,使用Mosaic數(shù)據(jù)增強(qiáng)來豐富檢測數(shù)據(jù)量,并且提出了CSPDarknet53作為主干網(wǎng)絡(luò)來增強(qiáng)網(wǎng)絡(luò)的學(xué)習(xí)能力,同時(shí)在頸部網(wǎng)絡(luò)中采用SPP模塊和FPN+PAN結(jié)構(gòu)來更好地提取特征信息.此外,作為YOLO系列的最新算法YOLOv5,在進(jìn)一步改善網(wǎng)絡(luò)特征提取能力的同時(shí),通過輕量化模型大小來提高檢測速度.與YOLOv4相比,YOLOv5在保持精度的同時(shí),極大的提高了檢測的效率.然而,由于YOLOv5為通用模型,不適用于密集安全帽檢測場景進(jìn)行檢測.因此,學(xué)者們通過在YOLOv5的基礎(chǔ)上引入新的模塊,如:SE-Net通道注意力模塊[6]和坐標(biāo)注意力機(jī)制[7]等方式來增強(qiáng)網(wǎng)絡(luò)的特征提取能力,提高復(fù)雜場景下的安全帽檢測效果.上述方法均采用SPP進(jìn)行池化操作,容易丟失圖像特征的細(xì)節(jié)信息.另外,文獻(xiàn)[6]雖然提升了密集場景下的檢測效果,但是在光照強(qiáng)度弱的場景下檢測效果不佳.
本節(jié)首先描述了YOLO-ST的網(wǎng)絡(luò)整體框架;其次,分別介紹特征提取網(wǎng)絡(luò)Swin Transformer和DSPP兩個(gè)改進(jìn)模塊;最后介紹YOLO-ST使用的損失函數(shù).
為了提高安全帽檢測效率,滿足應(yīng)用的實(shí)時(shí)性需求,本文選用網(wǎng)絡(luò)深度最淺、效率最高的YOLOv5s模型進(jìn)行改進(jìn).針對(duì)復(fù)雜場景下安全帽檢測準(zhǔn)確度低的問題,提出了一種基于YOLO-ST的安全帽檢測算法.YOLO-ST的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.首先,將待檢測圖像輸入主干網(wǎng)進(jìn)行特征提取,然后經(jīng)過頸部網(wǎng)絡(luò)加強(qiáng)特征的魯棒性,最后通過卷積層組成的檢測頭進(jìn)行安全帽佩戴檢測.與YOLOv5s不同的是,本文提出的YOLO-ST不再使用CSPDarknet53作為主干網(wǎng),而是選擇了性能更好的Swin Transformer,使主干網(wǎng)可以提取更加高級(jí)的語義特征.同時(shí),在YOLO-ST中,設(shè)計(jì)了密集的空間金字塔池化DSPP模塊來代替YOLOv5s中的SPP模塊,以此來捕獲多尺度的細(xì)節(jié)特征.
圖1 基于YOLO-ST的安全帽佩戴檢測算法
在目標(biāo)檢測中,主干網(wǎng)用來獲取目標(biāo)的語義特征和位置信息.YOLOv5s在進(jìn)行特征提取時(shí),選用典型的卷積神經(jīng)網(wǎng)絡(luò)CSPDarknet53,通過卷積層的不斷堆疊來擴(kuò)大感受野,從而完成局部信息到全局信息的捕獲.但是,越來越深的卷積層導(dǎo)致了模型越來越復(fù)雜,在檢測效率方面并不具有優(yōu)勢.
為了更好地提升模型的檢測能力,本文選擇用Swin Transformer[23]提取特征,如圖2所示.它不僅充分考慮到卷積神經(jīng)網(wǎng)絡(luò)中具有的位移不變性、尺寸不變性、感受野與層次的關(guān)系、分階段降低分辨率增加通道數(shù)等特點(diǎn),而且還具有卷積神經(jīng)網(wǎng)絡(luò)不具備的優(yōu)勢,即提取全局信息和學(xué)習(xí)長依賴關(guān)系的能力.Swin Transformer用移動(dòng)窗口將自注意力計(jì)算限制在非重疊的局部窗口上,同時(shí)允許跨窗口連接,從而提高了效率.此外,這種分層結(jié)構(gòu)還具有在不同尺度下建模的靈活性,增強(qiáng)了模型捕獲多尺度信息的能力.具體來說,Swin Transformer是通過將Transformer[24]中的多頭自注意力(MSA)模塊替換為基于移動(dòng)窗口的模塊,解決了長期困擾業(yè)界的Transformer應(yīng)用到計(jì)算機(jī)視覺領(lǐng)域速度慢的問題.同時(shí),在每個(gè)MSA模塊和每個(gè)MLP之前應(yīng)用LayerNorm層,并且在每個(gè)模塊之后應(yīng)用殘差連接.
圖2 Swin Transformer特征提取網(wǎng)絡(luò)
在YOLOv5s模型中,通過引用空間金字塔SPP模塊來解決原始池化方式中固定輸入尺寸帶來的圖像失真、變形等問題.SPP模塊主要由四個(gè)不同尺度的最大池化操作組成,分別為1×1、5×5、9×9和13×13池化操作,SPP的結(jié)構(gòu)如圖3(a)所示.通過使用SPP模塊可以捕獲到圖像的局部以及全局特征,有利于處理目標(biāo)差異大的情況.然而,SPP模塊在檢測過程中僅進(jìn)行池化操作,導(dǎo)致圖像特征的細(xì)節(jié)等信息出現(xiàn)不可逆的丟失,從而在安全帽檢測的過程中出現(xiàn)漏檢率高的問題.
為了解決該問題,受稠密連接思想的啟發(fā),本文提出了DSPP模塊來代替原始的SPP模塊進(jìn)行池化操作,DSPP結(jié)構(gòu)如圖3(b)所示.當(dāng)圖像特征輸入DSPP后,與SPP一樣經(jīng)過四個(gè)分支來進(jìn)行不同尺度的最大化池化操作,并且每個(gè)分支的最大化池化信息會(huì)與其他分支的特征信息一同作為池化操作的輸入,同時(shí)補(bǔ)充的池化信息量也由損失信息量決定,從而有效解決了SPP存在的信息丟失問題,進(jìn)一步提高了安全帽檢測的準(zhǔn)確性.
當(dāng)輸入特征信息為X時(shí),DSPP模塊的輸出信息Y如式(1)所示:
Y=X+X2+X3+X4
(1)
其中,X2、X3、X4分別如式(2)~(4)所示:
X2=P5(X)
(2)
X3=P9(X+X2)
(3)
X4=P13(X+X2+X3)
(4)
式(2)~(4)中:Pa為a×a的最大池化操作;“+”為concat操作.
圖3 空間金字塔池化模塊改進(jìn)
本文檢測模型YOLO-ST的損失函數(shù)共由三種損失構(gòu)成:目標(biāo)損失函數(shù)Loss_obj、類別損失函數(shù)Loss_cls和檢測框損失函數(shù)Loss_box.其中,Loss_obj和Loss_cls均采用交叉熵?fù)p失Loss_BEC進(jìn)行計(jì)算:
(5)
檢測框損失函數(shù)Loss_box如式(6)所示:
Loss_box=1-GIoU
(6)
其中,GIoU如式(7)所示:
(7)
式(7)中:IoU為交并比,A為檢測框,B為預(yù)測框,C為能包含檢測框和預(yù)測框的最小封閉框.本文檢測模型的損失函數(shù)Loss如式(8)所示:
Loss=αLoss_obj+βLoss_cls_+γ(1-GIoU)
(8)
式(8)中:α=0.45,β=0.5,γ=0.05.
為了評(píng)估改進(jìn)后的模型在安全帽檢測任務(wù)中的性能好壞,利用開源安全帽數(shù)據(jù)集SHWD[25]進(jìn)行實(shí)驗(yàn),并從對(duì)比實(shí)驗(yàn)和消融實(shí)驗(yàn)兩方面進(jìn)行模型效果的評(píng)估.本節(jié)首先介紹數(shù)據(jù)集、實(shí)驗(yàn)環(huán)境和參數(shù)設(shè)置、評(píng)價(jià)指標(biāo);其次與目前具有代表性的檢測算法進(jìn)行對(duì)比實(shí)驗(yàn);最后展示消融實(shí)驗(yàn).
本文選用的安全帽檢測數(shù)據(jù)集SHWD包括7 581個(gè)不同場景、天氣、光照條件、人數(shù)、拍攝距離的樣本圖像.主要包含兩類樣本:佩戴安全帽safe類別和未佩戴安全帽person類別.在訓(xùn)練前,輸入圖像使用Mosaic數(shù)據(jù)增強(qiáng)的方式,對(duì)隨機(jī)選取的四張圖像進(jìn)行縮放和拼接,不僅豐富了訓(xùn)練數(shù)據(jù)集的樣本信息,而且通過隨機(jī)縮放也增加了小目標(biāo)以及背景信息的數(shù)量,進(jìn)一步加強(qiáng)網(wǎng)絡(luò)的魯棒性.另外,受到顯存限制,本文實(shí)驗(yàn)將圖像尺寸下采樣為640×640.
本實(shí)驗(yàn)的主要硬件環(huán)境配置為:CPU為Intel(R) Xeon(R) Gold 6226R,內(nèi)存32 GB;GPU為NVIDIA Geforce RTX 3090,顯存24 GB.本實(shí)驗(yàn)在Ubuntu 16.04.10操作系統(tǒng)上進(jìn)行,所有方法采用的深度學(xué)習(xí)框架是PyTorch.針對(duì)本文所提的YOLO-ST進(jìn)行訓(xùn)練時(shí),最大迭代次數(shù)設(shè)置為100,批量大小為16.另外,YOLO-ST進(jìn)行訓(xùn)練時(shí)采用Adam優(yōu)化器,學(xué)習(xí)率設(shè)置為0.01,動(dòng)量設(shè)置為0.9,權(quán)重衰減值設(shè)置為0.000 5.
本實(shí)驗(yàn)主要采用IoU閾值為0.3、0.5時(shí)的平均精準(zhǔn)度AP30、AP50及其均值mAP來評(píng)價(jià)模型性能.當(dāng)AP值越高時(shí),模型檢測的精確率越高,AP如式(9)所示:
(9)
式(9)中:C為類別數(shù),Ppre表示模型檢測出正確佩戴安全帽的概率,即精確率;Rrec表示在佩戴安全帽的圖像中模型檢測正確的概率,即召回率.精確率和召回率的公式如式(10)和式(11)所示:
(10)
(11)
式(10)、(11)中:TP表示佩戴安全帽且預(yù)測佩戴的數(shù)量;FP表示未佩戴安全帽但是預(yù)測佩戴的數(shù)量;FN表示佩戴安全帽但預(yù)測為未佩戴的數(shù)量.
為了更好的驗(yàn)證算法有效性,在相同實(shí)驗(yàn)環(huán)境下,使用YOLO-ST與具有代表性的目標(biāo)檢測算法YOLOv3-tiny和YOLOv5s進(jìn)行對(duì)比實(shí)驗(yàn)和性能評(píng)價(jià).可視化實(shí)驗(yàn)結(jié)果如圖4所示.圖中綠色標(biāo)注框表示佩戴安全帽的safe類型,紅色標(biāo)注框表示未佩戴安全帽person類型,并且在標(biāo)注框上方有類別注釋和置信度.從圖4可以看出,YOLOv3-tiny在檢測過程中將塔吊錯(cuò)檢為目標(biāo)對(duì)象,而YOLOv5s在檢測過程中多次出現(xiàn)將佩戴安全帽目標(biāo)錯(cuò)檢為未佩戴安全帽的目標(biāo).同時(shí)兩種算法在檢測過程中,多個(gè)目標(biāo)位置的置信度均低于0.8.與其他兩種模型相比,YOLO-ST能夠分別完成單目標(biāo)、多目標(biāo)和不同尺寸目標(biāo)的檢測任務(wù).此外,針對(duì)數(shù)據(jù)集中拍攝場景環(huán)境復(fù)雜、模糊、曝光等情況下的安全帽檢測圖像,YOLO-ST在檢測過程中依舊能精確檢測到目標(biāo)位置且置信度高于0.8.因此,YOLO-ST能夠很好地完成安全帽檢測任務(wù).
圖4 三種方法在SHWD數(shù)據(jù)集上檢測結(jié)果
P-R曲線圖是評(píng)價(jià)目標(biāo)檢測模型的重要手段之一.當(dāng)準(zhǔn)確率越高時(shí),召回率就越低,所以當(dāng)P-R曲線越靠近右側(cè)時(shí)精確率和召回率相對(duì)較大,模型的檢測效果越好.三種模型的P-R曲線如圖5所示.由圖5可以看出,本文提出的YOLO-ST的P-R曲線越靠近右上角,其檢測效果優(yōu)于其它兩種算法.
圖5 模型檢測的P-R曲線
為了進(jìn)一步評(píng)價(jià)YOLO-ST的性能,使用AP對(duì)三個(gè)算法進(jìn)行客觀評(píng)價(jià)的結(jié)果如表1所示.由表1可以看出,與YOLOv3-tiny模型相比,YOLO-ST在閾值為0.3和0.5時(shí),AP值分別提高了11.8%和16.4%,mAP值提高了14.1%;與YOLOv5s模型相比,YOLO-ST在AP30、AP50以及mAP上分別提高了4.5%、2.8%和3.7%.因此,YOLO-ST可以獲得更準(zhǔn)確的安全帽檢測效果.
表1 對(duì)比實(shí)驗(yàn)
綜上所述,本文提出的YOLO-ST選用Swin Transformer做主干網(wǎng)絡(luò)來捕獲更多的目標(biāo)特征,同時(shí)引入DSPP模塊來保留更多的細(xì)節(jié)信息.與YOLOv3-tiny和YOLOv5s相比,在不同的IoU閾值下,YOLO-ST均取得了更好的識(shí)別準(zhǔn)確性.
為了研究算法中各個(gè)模塊對(duì)實(shí)驗(yàn)結(jié)果的影響,本節(jié)共設(shè)計(jì)了四組對(duì)比方案.其中,“√”代表模型使用了此模塊,“×”代表未使用此模塊.實(shí)驗(yàn)通過AP30、AP50以及mAP三種評(píng)價(jià)指標(biāo)來衡量模型性能,消融實(shí)驗(yàn)結(jié)果如表2所示.
表2 消融實(shí)驗(yàn)
在表2中,模型A代表原始的YOLOv5s,使用CSPDarknet53作為主干網(wǎng),并采用SPP模塊進(jìn)行池化操作.從表2可以看出,模型A的AP30、AP50、mAP分別為88.7%、86.5%和87.6%.在模型A的基礎(chǔ)上,模型B采用DSPP模塊替代SPP,保證模型獲取多尺度信息的基礎(chǔ)上,解決由于池化操作導(dǎo)致細(xì)節(jié)信息丟失的問題,從而提高安全帽檢測的準(zhǔn)確性.實(shí)驗(yàn)結(jié)果表明,模型B中的各項(xiàng)指標(biāo)相比模型A均提高了0.9%.模型C是在模型A的基礎(chǔ)上,保持原有池化方式不變,同時(shí)選擇特征提取能力更強(qiáng)的Swin Transformer作為主干網(wǎng),使得主干網(wǎng)可以提取更加高級(jí)的特征信息,進(jìn)一步提高模型檢測能力.相比于模型A,模型C的mAP提高了3.2%.模型D是在模型C的基礎(chǔ)上,采用DSPP模塊進(jìn)行池化操作,即本文提出的YOLO-ST.與模型A相比,AP30、AP50和mAP分別提高了4.5%、2.8%和3.7%,與模型B和模型C相比,mAP分別提高了2.8%和0.5%.綜上所述,本文提出的YOLO-ST在安全帽檢測任務(wù)中的具有更好的準(zhǔn)確性.
本文提出了一種基于YOLO-ST的安全帽佩戴檢測算法.該算法在YOLOv5s的基礎(chǔ)上使用Swin Transformer作為主干網(wǎng)來提取更深層的圖像特征.同時(shí),設(shè)計(jì)并引入DSPP模塊,在保證模型獲得多尺度信息的基礎(chǔ)上,解決了SPP在池化操作中易丟失圖像細(xì)節(jié)信息的問題.與YOLOv3-tiny和YOLOv5s相比,在SHWD數(shù)據(jù)集上,YOLO-ST具有更精確的檢測效果.
本文使用Swin Transformer來提升模型的檢測能力,導(dǎo)致模型參數(shù)量有所增加.因此,未來工作將在保證檢測精度的前提下實(shí)現(xiàn)模型輕量化.