王曉紅,陳哲奇
(上海理工大學(xué),上海 200093)
行人識(shí)別作為自動(dòng)駕駛發(fā)展過(guò)程中的重要一環(huán)必須兼顧準(zhǔn)確性和實(shí)時(shí)性。同時(shí),不同時(shí)間段對(duì)應(yīng)的行人檢測(cè)使用的檢測(cè)方法也不相同。傳統(tǒng)的行人檢測(cè)一般是在白天通過(guò)攝像頭采集圖片并進(jìn)行檢測(cè),但是到了夜間,由于光照因素的缺失,往往無(wú)法滿足檢測(cè)需求[1]。除了光照因素,遠(yuǎn)距離的行人由于本身目標(biāo)較小,存在紋理細(xì)節(jié)缺失,信噪比低的情況[2],這也是當(dāng)前檢測(cè)階段的重大阻礙。
紅外成像設(shè)備主要是根據(jù)物體發(fā)射的紅外電磁波進(jìn)行成像,并且利用目標(biāo)物體和背景的溫度差異的原理生成圖像,紅外檢測(cè)也可以應(yīng)用于不同的場(chǎng)合,例如安全監(jiān)測(cè)、軍事制導(dǎo)等方面[3-4]。傳統(tǒng)的夜間紅外行人檢測(cè)算法往往依賴(lài)的是人工設(shè)計(jì)的特征。具有代表性的有幀間差的方法[5]、方向梯度直方圖(Histograms of Oriented Gradients,HOG)、尺度不變特征(Scale Invariant Feature Transform,SIFT)、Haar-like[6]以及局部二值模式[7](Local Binary Pattern,LBP)等。
近年來(lái),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法在飛速發(fā)展,深度學(xué)習(xí)的方法不需要太多的人工操作,同時(shí)又可以在準(zhǔn)確度上有較大的突破,因此基于深度學(xué)習(xí)的檢測(cè)方法也在慢慢取代傳統(tǒng)方法。目前的主流深度學(xué)習(xí)檢測(cè)方法主要分為兩類(lèi):
(1)兩階段檢測(cè)算法
在早期深度學(xué)習(xí)技術(shù)發(fā)展進(jìn)程中,主要都是圍繞分類(lèi)問(wèn)題展開(kāi)研究,這是因?yàn)樯窠?jīng)網(wǎng)絡(luò)特有的結(jié)構(gòu)將概率統(tǒng)計(jì)和分類(lèi)問(wèn)題結(jié)合,提供一種直觀易行的思路。例如Ross B.Girshick 提出R-CNN算法[8],其算法結(jié)構(gòu)也成為后續(xù)兩階段的經(jīng)典結(jié)構(gòu)。在此基礎(chǔ)上,又有Faster R-CNN[9]、Mask R-CNN等。
(2)單階段檢測(cè)算法
以R-CNN算法為代表的兩階段檢測(cè)算法由于 RPN 結(jié)構(gòu)的存在,雖然檢測(cè)精度較高,但是其速度卻遇到瓶頸,難以滿足部分場(chǎng)景實(shí)時(shí)性的需求。因此出現(xiàn)一種基于回歸方法的單階段的目標(biāo)檢測(cè)算法。單階段算法不需要生成候選區(qū)域,同時(shí)在保證一定準(zhǔn)確率的前提下,具有較快的檢測(cè)速度。代表算法有YOLO[10](You Only Look Once,YOLO)算法和SSD[11](Single Shot multibox Detector,SSD)算法。
目前行人檢測(cè)需要面對(duì)的問(wèn)題主要有兩個(gè),一個(gè)是由于不同環(huán)境導(dǎo)致特征量獲取困難,另一個(gè)是由于行人遠(yuǎn)近尺度不同而出現(xiàn)的漏檢情況[12-14]?;谛腥藱z測(cè)要求的準(zhǔn)確性與實(shí)時(shí)性,本文基于YOLOv5-p4模型來(lái)實(shí)現(xiàn)駕駛輔助系統(tǒng)中的紅外行人檢測(cè)[15],針對(duì)圖片中存在的小目標(biāo)圖像,在原先的3個(gè)檢測(cè)層的基礎(chǔ)上上增加了一個(gè)的檢測(cè)層,加深特征提取的網(wǎng)絡(luò)深度,強(qiáng)化小目標(biāo)的檢測(cè)精度,防止出現(xiàn)誤檢、漏檢的情況。同時(shí),針對(duì)遠(yuǎn)距離行人尺度較小的特點(diǎn),使用K-means聚類(lèi)算法重新聚類(lèi)出針對(duì)小目標(biāo)的先驗(yàn)框,通過(guò)改良的特征融合機(jī)制(BiFPN[16])進(jìn)行更深層次的特征融合,獲取更多的特征量??紤]預(yù)測(cè)框與真實(shí)框邊長(zhǎng)的差值修改了損失函數(shù),使用自適應(yīng)激活函數(shù)使模型更易收斂,使用多尺度訓(xùn)練方法進(jìn)行優(yōu)化,最終得到Y(jié)OLOv5-p4模型。
原版YOLOv5模型的特征金字塔是對(duì)輸入圖片進(jìn)行特征提取,分別使用輸入圖片的8、16、32倍下采樣的結(jié)果輸入檢測(cè)層進(jìn)行特征檢測(cè)。在注意力金字塔(Pyramid Attention Network,PAN)結(jié)構(gòu)中,不僅使用了來(lái)自上一層所提取的特征,還會(huì)與特征金字塔(Feature Pyramid Networks,FPN)結(jié)構(gòu)中相對(duì)應(yīng)的特征層連接,從而獲得更多特征。在FPN和PAN結(jié)構(gòu)中,越上層的部分感受野越廣,單個(gè)特征值所涵蓋的像素越大,所對(duì)應(yīng)的大目標(biāo)的特征也越容易被學(xué)習(xí),但是小目標(biāo)也被同化到背景中甚至被當(dāng)成噪聲,因此該網(wǎng)絡(luò)結(jié)構(gòu)對(duì)于小目標(biāo)的檢測(cè)效果會(huì)較差。
在本文所使用的數(shù)據(jù)集中,由于行人在圖片中的像素大小均值較小,同時(shí)也存在大量遠(yuǎn)處行人并行的情況,原版的YOLOv5極小目標(biāo)的檢測(cè)效果并不好。因此,本文在YOLOv5的特征提取部分多進(jìn)行了一次上采樣,額外生成了一個(gè)專(zhuān)用于極小目標(biāo)檢測(cè)的特征層并且將其與主干網(wǎng)絡(luò)對(duì)應(yīng)的特征層相連接,從而提高了極小目標(biāo)的檢出率。
隨著網(wǎng)絡(luò)的層數(shù)的增加,每次下采樣,有可能會(huì)導(dǎo)致圖像中的小目標(biāo)被淹沒(méi),本文采用改進(jìn)的BiFPN特征融合機(jī)制,具體原理如圖1所示。在主干網(wǎng)絡(luò)的特征提取過(guò)程中出現(xiàn)的不同大小的特征層會(huì)分別與FPN以及PAN結(jié)構(gòu)中對(duì)應(yīng)的特征層進(jìn)行雙向結(jié)合,最終輸出的融合結(jié)果將包含高級(jí)語(yǔ)義以及低級(jí)語(yǔ)義,以達(dá)到獲得更多的特征的目的。
圖1 基于改進(jìn)BiFPN改進(jìn)的YOLOv5-p4網(wǎng)絡(luò)結(jié)構(gòu)
原先網(wǎng)絡(luò)用于檢驗(yàn)的三個(gè)特征層分別是通過(guò)主干網(wǎng)絡(luò)與FPN、PAN結(jié)構(gòu)所獲得的三個(gè)不同下采樣倍率的圖片,每個(gè)特征層分別對(duì)應(yīng)了三個(gè)預(yù)設(shè)定的先驗(yàn)框,針對(duì)不同大小的物體有不同的檢出效果。本文在添加了一個(gè)新的檢測(cè)層和檢測(cè)目標(biāo)較小的基礎(chǔ)上,使用K-means算法進(jìn)行重新聚類(lèi),根據(jù)分類(lèi)個(gè)數(shù)隨機(jī)選取聚類(lèi)質(zhì)心點(diǎn),然后計(jì)算每個(gè)點(diǎn)到質(zhì)心點(diǎn)的距離,最后將點(diǎn)歸類(lèi)到距離類(lèi)別質(zhì)心點(diǎn)最近的類(lèi)[17]。待每個(gè)點(diǎn)分類(lèi)后,再重新計(jì)算每個(gè)類(lèi)的質(zhì)心,獲得用于針對(duì)小目標(biāo)檢測(cè)的先驗(yàn)框,改進(jìn)后的錨框?yàn)槿绫?所示。
表1 K-means聚類(lèi)后錨框的寬度與高度
在主干網(wǎng)絡(luò)特征的提取過(guò)程中,BottleneckCSP結(jié)構(gòu)會(huì)將來(lái)自上一部分的內(nèi)容進(jìn)行三次的Bottleneck堆疊操作,并將其與一條殘差邊進(jìn)行相加、標(biāo)準(zhǔn)化、激活一系列操作,最后用一個(gè)1×1的卷積核進(jìn)行卷積并且輸出。BottleneckCSP的結(jié)構(gòu)如圖2所示。
圖2 BottleneckCSP結(jié)構(gòu)
其中,在BottleneckCSP最后一個(gè)卷積前的激活函數(shù)可以提供網(wǎng)絡(luò)的非線性建模能力。加入激活函數(shù),深度神經(jīng)網(wǎng)絡(luò)才能具備分層的非線性映射學(xué)習(xí)能力。因此激活函數(shù)是神經(jīng)網(wǎng)絡(luò)不可或缺的一部分。原先的YOLOv5模型使用的是LeakyReLu激活函數(shù)其表達(dá)式見(jiàn)公式1:
f(x)=max(0.1x,x)
(1)
LeakyReLu反應(yīng)的是一種簡(jiǎn)單的線性關(guān)系,有時(shí)針對(duì)不同的輸入無(wú)法做出正確的預(yù)測(cè),因此本文使用一個(gè)自適應(yīng)激活函數(shù)(Meta Activate Or Not C,MetaAcon-C[18]),該函數(shù)的通過(guò)一個(gè)β值來(lái)確定激活函數(shù)是線性或非線性。MetaAcon-C的表達(dá)式見(jiàn)公式2:
Acon-C(x)=(p1-p2)xσ[β(p1-p2)x]+p2·x
(2)
其中,P1和P2使用的是兩個(gè)可學(xué)習(xí)參數(shù),可以進(jìn)行自適應(yīng)的調(diào)整。對(duì)該函數(shù)求導(dǎo)可得:
(3)
由公式3可知,當(dāng)x的值趨于正無(wú)窮或負(fù)無(wú)窮時(shí),函數(shù)的梯度分別為P1以及P2,這樣可以有效防止神經(jīng)網(wǎng)絡(luò)出現(xiàn)梯度消失或者梯度爆炸的情況。
通過(guò)分別對(duì)H,W求平均值,然后通過(guò)兩個(gè)卷積層,使得每一個(gè)通道所有像素共享一個(gè)權(quán)重,最后由sigmoid激活函數(shù)求得β。當(dāng)β接近0時(shí),該激活函數(shù)趨近于線性,隨著β的增大并趨于正無(wú)窮時(shí),激活函數(shù)趨于非線性,并取值為max {xn};隨著β的減小并趨于負(fù)無(wú)窮時(shí),激活函數(shù)趨于非線性,并取值為min {xn}。
輸入圖片的尺寸對(duì)于網(wǎng)絡(luò)的訓(xùn)練和收斂以及對(duì)于檢測(cè)模型性能有相當(dāng)明顯的影響。多尺度訓(xùn)練是通過(guò)設(shè)定一個(gè)隨機(jī)的縮放倍數(shù)(一般是0.5~1.5倍)對(duì)圖片進(jìn)行縮放,然后將其輸入網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。多尺度訓(xùn)練通過(guò)輸入較大尺寸的圖片可以使圖片中的小特征在下采樣以及卷積的過(guò)程中不容易被忽略,使網(wǎng)絡(luò)在訓(xùn)練的過(guò)程中減少過(guò)擬合的情況出現(xiàn),使得訓(xùn)練出來(lái)的模型具有較強(qiáng)的魯棒性。除此之外,使用多尺度訓(xùn)練后的模型在接受不同尺度的輸入圖片也會(huì)有檢測(cè)效果。
YOLOv5原始模型使用的IoU損失函數(shù)為CIoU函數(shù)。CIoU損失函數(shù)具有懲罰項(xiàng),并且考慮到了目標(biāo)與預(yù)測(cè)框之間的距離,重疊率等,使目標(biāo)框的回歸變得更加穩(wěn)定。其中ρ2(b,bgt)表示預(yù)測(cè)框與真實(shí)框之間中心點(diǎn)的歐氏距離,c表示包含預(yù)測(cè)框與真實(shí)框的對(duì)角線距離,αv表示懲罰因子,CIoU損失函數(shù)見(jiàn)公式4:
(4)
對(duì)于小目標(biāo)的行人檢測(cè)來(lái)說(shuō),一大難點(diǎn)是預(yù)測(cè)框是否可以在準(zhǔn)確檢測(cè)到目標(biāo)的同時(shí)與目標(biāo)的真實(shí)大小相一致,如果圖片中存在較多小目標(biāo),有可能會(huì)出現(xiàn)漏檢和錯(cuò)檢的情況。CIoU無(wú)法平衡難易樣本,為了解決此問(wèn)題,選擇使用一個(gè)更加符合網(wǎng)絡(luò)回歸要求的損失函數(shù)LEIoU,見(jiàn)公式5:
LEIoU=LIoU+Ldis+Lasp
(5)
LEIoU主要包含三個(gè)部分:重疊損失,中心距離損失以及寬高損失。對(duì)比CIoU,它直接將真實(shí)框與預(yù)測(cè)框的寬高進(jìn)行對(duì)比,求出寬高損失,可以加速網(wǎng)絡(luò)的收斂速度并且提高了回歸精度,使得預(yù)測(cè)的結(jié)果更加準(zhǔn)確。
本實(shí)驗(yàn)使用的數(shù)據(jù)來(lái)自FLIR_ADAS_1_3紅外數(shù)據(jù)集,該數(shù)據(jù)集由紅外相機(jī)拍攝,包括10228張圖片。其中數(shù)據(jù)集中共包括行人28151個(gè),汽車(chē)46692輛,自行車(chē)4457輛,以及其他的物體。本次實(shí)驗(yàn)使用數(shù)據(jù)集中的行人數(shù)據(jù)共5838張圖片。在實(shí)驗(yàn)過(guò)程中,使用馬賽克增強(qiáng)以及拼接的網(wǎng)絡(luò)訓(xùn)練策略,豐富了檢測(cè)物體的背景,同時(shí)也可以起到增加數(shù)據(jù)集的作用,使網(wǎng)絡(luò)具有更好的泛化性。本次實(shí)驗(yàn)對(duì)數(shù)據(jù)集按照8:1:1的比例分為訓(xùn)練集、測(cè)試集、驗(yàn)證集。
本文使用了開(kāi)源的PyTorch深度學(xué)習(xí)框架進(jìn)行訓(xùn)練和測(cè)試,運(yùn)算平臺(tái)為64位操作系統(tǒng),16G內(nèi)存,6G顯存,NVIDIA GeForce RTX 3060 Laptop GPU的筆記本。
目標(biāo)檢測(cè)通常使用平均準(zhǔn)確率mAP(mean Average Precision)作為模型性能的評(píng)價(jià)指標(biāo)。同時(shí),也會(huì)參考驗(yàn)證集損失,防止過(guò)擬合現(xiàn)象出現(xiàn)導(dǎo)致模型泛化性降低。
準(zhǔn)確率(Precision):表示模型正確檢出的目標(biāo)的數(shù)量與數(shù)據(jù)集中的總目標(biāo)數(shù)的比值,計(jì)算見(jiàn)公式6:
(6)
召回率(Recall):表示模型已檢出的目標(biāo)的數(shù)量與數(shù)據(jù)集中的總目標(biāo)數(shù)的比值,計(jì)算見(jiàn)公式7:
(7)
通過(guò)繪制訓(xùn)練過(guò)程的P-R曲線,計(jì)算P-R曲線與坐標(biāo)軸圍成的面積,該面積代表的就是這一類(lèi)目標(biāo)所對(duì)應(yīng)的AP值,計(jì)算見(jiàn)公式8。在本文的實(shí)驗(yàn)中,用于檢測(cè)的目標(biāo)只有一類(lèi),因此本實(shí)驗(yàn)的AP與mAP相同。
(8)
3.4.1 損失函數(shù)分析
使用tensorboard對(duì)模型訓(xùn)練過(guò)程進(jìn)行可視化,原版的YOLOv5模型和YOLOv5-p4模型訓(xùn)練損失函數(shù)結(jié)果如圖3、4所示。
圖3 YOLOv5的損失函數(shù)
圖4 YOLOv5-p4的損失函數(shù)
通過(guò)兩個(gè)模型的損失函數(shù)進(jìn)行對(duì)比和分析可以發(fā)現(xiàn),兩個(gè)模型在0~150 epoch訓(xùn)練過(guò)程中,訓(xùn)練損失和驗(yàn)證損失兩者均在不斷下降。原版模型的驗(yàn)證集的置信度損失(val Objectness)在150代之后上升,但是該模型的訓(xùn)練損失卻仍然在下降,因此判斷該模型在150代之后網(wǎng)絡(luò)進(jìn)入了過(guò)擬合的情況。模型訓(xùn)練進(jìn)入過(guò)擬合的會(huì)導(dǎo)致模型的泛化性降低,因此本文在對(duì)比原模型過(guò)擬合前后的精度結(jié)果后,選擇使用第160代作為模型的最終結(jié)果。對(duì)比原版的模型可以發(fā)現(xiàn),YOLOv5-p4模型在150代后均未出現(xiàn)過(guò)擬合的情況,且置信度損失的值遠(yuǎn)低于原模型的置信度損失值。損失函數(shù)作為評(píng)價(jià)模型的優(yōu)劣的標(biāo)準(zhǔn)之一,對(duì)比兩個(gè)模型的損失值,可以看出優(yōu)化后的模型優(yōu)于原模型,特征學(xué)習(xí)的能力更強(qiáng)。
3.4.2 模型檢測(cè)性能分析
P-R曲線中的P代表的是precision(準(zhǔn)確率),R代表的是recall(召回率)。P-R曲線代表的是精準(zhǔn)率與召回率的關(guān)系。由本文中準(zhǔn)確率和召回率可以求出在0.5的交并比閾值下的平均精度mAP@0.5,在數(shù)值上等于PR曲線與坐標(biāo)軸圍成的面積,這是模型性能衡量的主要評(píng)價(jià)指標(biāo)。P-R曲線如圖5、6所示,通過(guò)該曲線可以看出原模型的mAP@0.5為86.9 %,改進(jìn)后的模型的mAP@0.5為90.3 %。對(duì)比兩個(gè)模型可以看出,YOLOv5-p4模型的平均準(zhǔn)確率提升了3.4 %,同時(shí)有更低的損失值,因此改進(jìn)后的模型優(yōu)于原模型。
圖5 YOLOv5的P-R曲線
圖6 YOLOv5-p4的P-R曲線
3.4.3 檢測(cè)效果分析
為驗(yàn)證模型針對(duì)不同尺度的行人的檢測(cè)效果,本文在從數(shù)據(jù)集中隨機(jī)抽選出200張圖片,通過(guò)模型在該200張圖片上的檢測(cè)效果進(jìn)行比較分析。將行人尺寸基于圖像分辨率分為三類(lèi),分別是:小于20×20、20×20至50×50以及大于50×50。測(cè)試結(jié)果如表2、3所示。
表2 不同尺寸目標(biāo)檢驗(yàn)結(jié)果表
由表2、3可知,針對(duì)尺寸小于20×20的目標(biāo),原版YOLOv5模型的檢測(cè)性能遠(yuǎn)不如YOLOv5-p4模型,YOLOv5-p4模型的檢測(cè)精度相較于原YOLOv5模型提升了6.5 %。針對(duì)尺寸大于20×20的目標(biāo),兩個(gè)模型的檢測(cè)性能較為接近。由此看出,YOLOv5-p4模型在針對(duì)較小目標(biāo)的檢出效果遠(yuǎn)好于原模型。
表3 不同尺寸目標(biāo)的檢測(cè)精度表
為了更直觀地看出YOLOv5-p4模型針對(duì)較小行人檢測(cè)的有效性,本文使用同一張圖片進(jìn)行檢測(cè),兩個(gè)模型的檢驗(yàn)效果如圖7所示。
圖7 檢測(cè)效果圖
由圖7對(duì)于同一張圖片的檢測(cè)效果對(duì)比得出,原版的YOLOv5模型對(duì)與遠(yuǎn)處的行人存在無(wú)法檢出的情況,YOLOv5-p4模型無(wú)論是針對(duì)遠(yuǎn)處或者近處的行人均有良好的檢驗(yàn)效果。
3.4.4 與其他算法綜合對(duì)比
將本算法與SSD算法、YOLOv4算法和YOLOv5算法在相同條件下進(jìn)行對(duì)比測(cè)試,結(jié)果如表4所示。
表4 與其他算法精度對(duì)比表
由此表可以看出,相較于SSD算法和YOLOv4算法,YOLOv5-p4模型在精度上分別提升了7.2 %和5.4 %,對(duì)于目標(biāo)行人具有較好的檢出效果。
本文采用改進(jìn)的YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行基于紅外圖像的行人檢測(cè)。首先對(duì)YOLOv5網(wǎng)絡(luò)進(jìn)行改進(jìn),通過(guò)增加上采樣的次數(shù),增加一個(gè)目標(biāo)檢測(cè)層,提高了網(wǎng)絡(luò)對(duì)遠(yuǎn)處較為微小的行人的識(shí)別能力;使用BiFPN結(jié)構(gòu),將相同尺寸的特征層相連接,提高了圖片中小目標(biāo)的檢出率;針對(duì)小目標(biāo)難以檢測(cè)的情況,使用了能考慮到預(yù)測(cè)框和真實(shí)框的差距的損失函數(shù);使用MetaAcon-C激活函數(shù)代替原本的激活函數(shù),幫助模型更好的收斂;使用多尺度的模型訓(xùn)練方法,得到效果更好的模型。同時(shí)本文也存在一定的局限性,模型針對(duì)智能駕駛的目標(biāo)檢測(cè)的精度仍然未達(dá)到相當(dāng)高的程度,這也是接下來(lái)的改進(jìn)和研究的目標(biāo)。