馬 斌,張 亞
(安徽理工大學(xué) 電氣與信息工程學(xué)院,安徽 淮南 232007)
為了加強(qiáng)人們安全騎行的意識(shí),減少交通事故的發(fā)生,公安部于2020年6月1日起推行“一盔一帶”安全守護(hù)行動(dòng),并倡導(dǎo)電動(dòng)車騎行人員佩戴頭盔。在面對(duì)極為復(fù)雜的交通道路騎行情況時(shí),傳統(tǒng)的人力檢查方式耗時(shí)耗力,無法大面積推行。因此利用人工智能判斷騎行人員的頭盔佩戴與否具有很大的現(xiàn)實(shí)意義。
在實(shí)際的道路中,天氣、陽光和霧霾等環(huán)境因素的變化會(huì)對(duì)檢測(cè)效果產(chǎn)生嚴(yán)重影響。此外,電動(dòng)車時(shí)刻處于運(yùn)動(dòng)中,會(huì)造成檢測(cè)裝置采集的圖片變得迷糊、分辨率低,對(duì)于遠(yuǎn)距離的電動(dòng)車騎行人員,存在目標(biāo)較小難以被檢測(cè)到的問題。為此,本文提出了一種基于YOLOv5s網(wǎng)絡(luò)改進(jìn)的頭盔佩戴檢測(cè)算法。
YOLOv5s網(wǎng)絡(luò)模型是YOLOv5中比較輕量化的一種模型,能很好地嵌入硬件,是一種單階段目標(biāo)檢測(cè)網(wǎng)絡(luò)算法。該網(wǎng)絡(luò)模型主要分為4個(gè)部分,分別為輸入端、Backbone、Neck以及輸出層預(yù)測(cè)部分。是在YOLOv4的基礎(chǔ)上添加了新的改進(jìn)思路,使其速度與精度都得到了極大的性能提升。其中,在輸入端的主要改進(jìn)思路包括Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計(jì)算、自適應(yīng)圖片縮放;主干部分的改進(jìn)主要是Focus結(jié)構(gòu)與CSP結(jié)構(gòu);Neck網(wǎng)絡(luò)中的改進(jìn)主要是在BackBone與最后的Head輸出層之間插入了FPN+PAN結(jié)構(gòu);在輸出層中主要改進(jìn)了訓(xùn)練時(shí)的損失函數(shù)。
本文選用檢測(cè)速度和準(zhǔn)確率都不錯(cuò)的YOLOv5s算法作為基礎(chǔ)網(wǎng)絡(luò),提出了一種改進(jìn)的頭盔檢測(cè)算法,將自制的電動(dòng)車頭盔數(shù)據(jù)集作為訓(xùn)練和檢測(cè)的目標(biāo)。原有網(wǎng)絡(luò)中含有大量普通卷積,會(huì)嚴(yán)重影響目標(biāo)特征信息的提取,因此在網(wǎng)絡(luò)模型Neck部分卷積中融入Ghost模塊,旨在減輕模型冗余程度。此外,在YOLOv5s中引入CBAM注意力機(jī)制和SPD-Conv模塊[1]。CBAM的引入可以使訓(xùn)練過程中更多地關(guān)注在關(guān)鍵信息上,大大減少了冗雜信息的干擾。而SPD-Conv模塊的使用可以加強(qiáng)對(duì)低分辨率目標(biāo)和小目標(biāo)物體的檢測(cè)能力。其中,將原始網(wǎng)絡(luò)Neck部分的所有Conv層和C3模塊分別替換成GhostConv和C3Ghost模塊,將CBAM注意力模塊引入到Neck部分的GhostConv之后。在主干部分的Conv層中,除第一層之外的4層Conv(步長設(shè)為1)層分別和SPD結(jié)合成SPD-Conv模塊,并在Neck中的Concat之前也添加SPD模塊。
Ghost卷積的思想是在少量的非線性卷積得到的特征圖基礎(chǔ)上[2],再進(jìn)行一次線性卷積,從而獲取更多的特征圖,以此來實(shí)現(xiàn)消除冗余特征,獲取更加輕量的模型。Ghost卷積將普通卷積操作分為兩部分:第一步,使用少量卷積核進(jìn)行卷積操作生成一部分特征圖;第二步,采用線性運(yùn)算生成更多的特征圖,然后將不同的特征圖連接在一起組成新的輸出。所以,在模型中融合Ghost卷積,可以大幅度降低計(jì)算成本和模型的參數(shù)量。
根據(jù)目前的研究表明[3],CBAM結(jié)構(gòu)更有利于捕獲全局信息[4],抵抗混亂的信息,有效處理復(fù)雜背景。CBAM是一種用于前饋卷積神經(jīng)網(wǎng)絡(luò)的簡單而有效的注意模塊,包括通道注意力模塊(Channel Attention Module,CAM)和空間注意力模塊(Spartial Attention Module,SAM)兩個(gè)子模塊,分別進(jìn)行通道和空間信息上的關(guān)注。這樣不僅能夠節(jié)約參數(shù)和計(jì)算力,還保證了其能夠作為即插即用的模塊集成到現(xiàn)有的網(wǎng)絡(luò)架構(gòu)中。
現(xiàn)有的CNN常見設(shè)計(jì)體系結(jié)構(gòu)中有一個(gè)缺陷,即使用卷積步長和池化層,這導(dǎo)致了細(xì)粒度信息的丟失和較低效的特征表示的學(xué)習(xí)。特別是在CNN體系結(jié)構(gòu)的早期層中,這種設(shè)計(jì)的負(fù)面影響通常不會(huì)表現(xiàn)出來,因?yàn)榇蠖鄶?shù)被研究的場(chǎng)景都是有良好的分辨率,物體的大小也適中,會(huì)存在大量的冗余像素信息,跨躍卷積和池化可以方便地跳過,網(wǎng)絡(luò)模型仍然可以很好地學(xué)習(xí)特征。然而,在圖像模糊或物體很小的檢測(cè)任務(wù)中,大量的冗余信息假設(shè)不再成立,當(dāng)前的設(shè)計(jì)開始遭受細(xì)粒度信息丟失和學(xué)習(xí)特征不足的影響。
為了解決上述問題,在網(wǎng)絡(luò)中引入SPD-Conv的新的CNN模塊來代替每個(gè)卷積步長和池化層。SPD-Conv模塊是由一個(gè)空間到深度(SPD)層和一個(gè)無卷積步長(Conv)層組成,可以應(yīng)用于大多數(shù)CNN體系結(jié)構(gòu)。SPD層對(duì)特征映射進(jìn)行下采樣,但保留了通道維度中的所有信息,在每個(gè)SPD之后添加了一個(gè)無步長卷積操作,以在增加的卷積層中使用可學(xué)習(xí)參數(shù)減少通道數(shù)量。該模塊完全消除了步長和池化操作,取而代之的是一個(gè)空間到深度卷積和一個(gè)無步長卷積。這種操作在保留了判別特征信息的同時(shí),還具有向下采樣特征圖的優(yōu)點(diǎn)。
實(shí)驗(yàn)平臺(tái)采用Windows10操作系統(tǒng),CPU處理器為11th Gen Intel(R) Core(TM) i5-11400@2.60 GHz,GPU為Nvidia GeForce GTX 3050(8 GB),編程語言為Python-3.8,深度學(xué)習(xí)框架為Pytorch-1.12.1。本文通過網(wǎng)絡(luò)和道路拍攝的方式選出合適的圖片自制數(shù)據(jù)集3500張,使用labellmg工具對(duì)采集后的圖片進(jìn)行標(biāo)注,標(biāo)注類別共3類:motorcycle、helmet和nohelmet,數(shù)據(jù)集以8∶2的比例將樣本數(shù)據(jù)劃分為訓(xùn)練集、驗(yàn)證集,用于電動(dòng)車頭盔識(shí)別模型的訓(xùn)練和測(cè)試。
為了評(píng)析實(shí)驗(yàn)結(jié)果,本實(shí)驗(yàn)使用準(zhǔn)確率(Precision)、平均準(zhǔn)確率均值(mAP)作為評(píng)價(jià)的指標(biāo),其定義如公式(1)—(3)所示。同時(shí)用網(wǎng)絡(luò)模型權(quán)重大小和每秒浮點(diǎn)運(yùn)算次數(shù)(FLOPs)作為衡量模型大小和計(jì)算量的指標(biāo)。下式中TP表示正確檢出的正樣本,FP表示錯(cuò)誤檢出的正樣本,num表示檢測(cè)類別總數(shù)。
(1)
(2)
(3)
本文提出的改進(jìn)的YOLOv5s模型主要是對(duì)主干網(wǎng)絡(luò)和Neck部分進(jìn)行了改進(jìn),通過消融實(shí)驗(yàn)探究各模塊對(duì)模型的影響。消融實(shí)驗(yàn)以YOLOv5s網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò),按2.1節(jié)的改進(jìn)方法分別將C3Ghost(以下簡稱“CG”)和GhostConv(以下簡稱“GC”)、CBAM注意力模塊和SPD-Conv(以下簡稱“SPD”)加入網(wǎng)絡(luò)模型,實(shí)驗(yàn)結(jié)果各參數(shù)指標(biāo)如表1所示。
表1 消融實(shí)驗(yàn)結(jié)果指標(biāo)
由表1可以看出,加入輕量化模塊之后的網(wǎng)絡(luò)降低了模型大小,對(duì)比原始網(wǎng)絡(luò)降低2.9 MB,計(jì)算量有所下降,因此輕量化模塊的引入可以以更少的計(jì)算提取關(guān)鍵信息。在加入CBAM注意力模塊后,mAP對(duì)比輕量化模型增加了0.9個(gè)百分點(diǎn)。在加入SPD模塊之后,mAP對(duì)比原始網(wǎng)絡(luò)提升了2.7個(gè)百分點(diǎn),在精確率上提升了2.1個(gè)百分點(diǎn),并且模型大小提高不明顯。
通過消融實(shí)驗(yàn)可以看出,Ghost模塊的運(yùn)用可以很好地降低計(jì)算量和模型大小。在Neck部分不同特征層中加入CBAM注意力模塊,可以對(duì)不同特征層分別進(jìn)行通道和空間信息上的關(guān)注,能夠有效提高檢測(cè)精度。SPD-Conv的加入大大提高了檢測(cè)精度,可見對(duì)于小目標(biāo)物體和模糊低分辨率場(chǎng)景,SPD-Conv有著不俗的表現(xiàn),同時(shí)計(jì)算量和模型大小符合硬件要求。由此可見,輕量化模塊、注意力機(jī)制和SPD-Conv模塊的引入能夠有效提高網(wǎng)絡(luò)模型的檢測(cè)性能。
本實(shí)驗(yàn)在電動(dòng)車和頭盔數(shù)據(jù)集上訓(xùn)練260輪,使用上述評(píng)價(jià)指標(biāo)作為該模型的評(píng)價(jià)標(biāo)準(zhǔn)。同時(shí),為了驗(yàn)證改進(jìn)后模型的效果,選用YOLOv3網(wǎng)絡(luò)模型進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表2所示。
表2 綜合指標(biāo)結(jié)果對(duì)比
從表2可以看出,雖然YOLOv3的mAP高于原始YOLOv5s,但模型大小遠(yuǎn)大于YOLOv5s,不利于硬件的嵌入。改進(jìn)的YOLOv5s在模型大小上幾乎沒有增加多少的前提下,有效地提高了Precision和mAP。在YOLOv5s中,通過引入注意力機(jī)制和SPD-Conv模塊使得改進(jìn)后的模型平均精度均值和精確率分別達(dá)到84.9%和84.4%,與原始YOLOv5s網(wǎng)絡(luò)相比較,分別提高了2.7%和2.1%,可以滿足道路上電動(dòng)車頭盔檢測(cè)佩戴與否的要求。
針對(duì)道路上的電動(dòng)車頭盔目標(biāo)較小、檢測(cè)圖像模糊等問題,本文提出了一種基于改進(jìn)的YOLOv5s網(wǎng)絡(luò)模型。在原始YOLOv5s網(wǎng)絡(luò)中引入SPD-Conv模塊和卷積塊注意力模塊(CBAM),并且用C3Ghost和GhostConv替代原始網(wǎng)絡(luò)中的C3和普通卷積模塊使改進(jìn)的模型更加輕量化。本文改進(jìn)的YOLOv5s有效地提升了Precision和mAP。實(shí)驗(yàn)結(jié)果可知,改進(jìn)后的YOLOv5s算法具有一定的可行性,能夠滿足實(shí)時(shí)性檢測(cè)的要求。