宋子昂,劉惠臨
(安徽理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)
在計(jì)算機(jī)視覺(jué)領(lǐng)域,行人檢測(cè)一直是一個(gè)重要且具有挑戰(zhàn)性的問(wèn)題.近年來(lái),隨著人工智能技術(shù)的飛速發(fā)展,行人檢測(cè)在視頻監(jiān)控和無(wú)人駕駛、人群統(tǒng)計(jì)和智能交通等眾多領(lǐng)域獲得了越來(lái)越多的應(yīng)用.現(xiàn)在行人檢測(cè)技術(shù)日益成熟,但仍然存在進(jìn)一步改進(jìn)和發(fā)展的空間.例如,在實(shí)際場(chǎng)景下行人往往面臨小范圍多目標(biāo)以及目標(biāo)行人尺度小的問(wèn)題.目前,基于深度學(xué)習(xí)的行人檢測(cè)技術(shù)分為2大類:第一類是基于候選框的雙階段算法,其中以Faster R-CNN[1]為代表.這種算法模型檢測(cè)精度較高,但由于其訓(xùn)練過(guò)程復(fù)雜且檢測(cè)速度慢,導(dǎo)致雙階段算法難以滿足實(shí)際應(yīng)用.第二類是基于單階段算法,以SSD[2]和YOLO為代表.與雙階段算法相比,這類算法采用端到端的訓(xùn)練方式,使其擁有更快的檢測(cè)速度.通過(guò)這種簡(jiǎn)化的設(shè)計(jì),單階段算法在實(shí)際應(yīng)用中能夠更好地滿足實(shí)時(shí)行人檢測(cè)的需求.為了解決密集場(chǎng)景下行人檢測(cè)準(zhǔn)確率不高的問(wèn)題,研究者們提出一系列方法和數(shù)據(jù)集.在數(shù)據(jù)集方面,ZHANG等[3]提出CityPersons數(shù)據(jù)集,ZHANG等[4]提出Wider Person數(shù)據(jù)集,這些數(shù)據(jù)集為后續(xù)的研究提供了豐富的數(shù)據(jù)支持.針對(duì)密集行人場(chǎng)景下的檢測(cè)精度,WANG等[5]引入互斥損失函數(shù)(repulsion loss),該函數(shù)能夠減少高度重疊的預(yù)測(cè)框?qū)z測(cè)目標(biāo)的干擾,提高了Faster R-CNN的檢測(cè)精度.此外,PANG等[6]提出基于注意力掩碼的算法,增強(qiáng)了對(duì)于遮擋部分的特征提取,從而達(dá)到較好的檢測(cè)效果.此外,LIU等[7]提出一種采用動(dòng)態(tài)閾值的非極大值抑制算法,通過(guò)密度子網(wǎng)預(yù)測(cè)每個(gè)位置的密度,并根據(jù)不同密度值為NMS設(shè)置適合的交并比(Intersection over Union,IoU)閾值.本文以單階段檢測(cè)算法YOLO系列中的YOLOv5作為基礎(chǔ)模型進(jìn)行改進(jìn),旨在解決以下問(wèn)題:首先,針對(duì)密集場(chǎng)景下目標(biāo)行人存在大量遮擋,導(dǎo)致行人部分特征丟失的問(wèn)題,在其骨干網(wǎng)絡(luò)末端嵌入融合了多頭自注意力層(Multi-Head Self-Attention, MHSA)的BoTC3模塊,加強(qiáng)了網(wǎng)絡(luò)對(duì)目標(biāo)行人的全局信息感知,同時(shí)采用更適合密集場(chǎng)景的Varifocal Loss[8]損失函數(shù)替換原有的Focal Loss損失.其次,針對(duì)目標(biāo)行人尺度小的問(wèn)題,改進(jìn)了PANet結(jié)構(gòu),獲取更細(xì)粒度信息的特征圖.最后,比較所提算法與常用檢測(cè)算法對(duì)于擁擠場(chǎng)景下行人檢測(cè)的性能,證明所提算法的有效性.
YOLOv5是當(dāng)下主流的目標(biāo)檢測(cè)框架,它汲取了YOLOv1、YOLOv2、YOLOv3和YOLOv4 4種模型的優(yōu)點(diǎn)并進(jìn)行了整合,因此選擇YOLOv5作為實(shí)驗(yàn)改進(jìn)的基線模型.整體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv5由輸入端、骨干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)和頭部網(wǎng)絡(luò)組成.輸入端采用Mosaic數(shù)據(jù)增強(qiáng)技術(shù)以提升模型的性能和泛化能力.Mosaic數(shù)據(jù)增強(qiáng)技術(shù)通過(guò)增加樣本的多樣性和復(fù)雜性,使模型能夠更好地適應(yīng)各種實(shí)際場(chǎng)景,增強(qiáng)了模型的魯棒性.同時(shí),拼接多張圖片還有助于提高訓(xùn)練效率,減少數(shù)據(jù)加載和預(yù)處理時(shí)間.
YOLOv5的骨干特征網(wǎng)絡(luò)由CSP-Darknet53組成.在YOLOv5的骨干網(wǎng)絡(luò)中,主要是C3模塊和CBS模塊的堆棧.C3模塊主要由n個(gè)瓶頸模塊、多個(gè)CBS模塊和2個(gè)大小為1 × 1的卷積層組成,旨在更好地提取圖像的深層特征.C3模塊和瓶頸模塊分別如圖2(a)和(b)所示.CBS模塊指普通卷積層、BatchNorm 2d層和SiLU層的順序連接,用于對(duì)輸入特征圖執(zhí)行卷積、批量歸一化和激活函數(shù)操作.CBS模塊具體結(jié)構(gòu)如圖2(c)所示.
(a)C3 (b)Bottleneck
主干的最后一層是SPP模塊.先使用第一CBS模塊將輸入圖像的通道數(shù)減半,然后將第一CBS模塊輸出的特征圖通過(guò)3個(gè)不同大小的最大池層(13×13、9×9和5×5),并將與第一CBS模塊的輸出一起構(gòu)建的剩余邊緣并行連接.最后通過(guò)第二CBS模塊將通道數(shù)減半,保證不同大小輸入的特征圖在池化后高度和寬度都能保持一致,結(jié)構(gòu)如圖2(d)所示.
Neck部分受PANet[9]模型啟發(fā),在FPN[10]架構(gòu)的基礎(chǔ)上引入一種自下而上的增強(qiáng)途徑,即FPN+PAN結(jié)構(gòu),旨在縮減信息傳遞距離.該途徑利用底層特征中蘊(yùn)含的精確定位信息,強(qiáng)化了特征金字塔結(jié)構(gòu).具體來(lái)源,FPN層自上而下傳遞高級(jí)語(yǔ)義特征,特征金字塔則自下而上傳遞準(zhǔn)確的定位信號(hào),通過(guò)在不同的主干層上進(jìn)行參數(shù)匯聚,進(jìn)一步增強(qiáng)了特征提取的效能.
本文對(duì)YOLOv5的骨干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)和損失函數(shù)進(jìn)行了相應(yīng)的改進(jìn).首先,在骨干網(wǎng)絡(luò)的最后一層使用基于多頭自注意力機(jī)制的BoTC3模塊替換原本的C3模塊,以此提高檢測(cè)精度.其次,基于目標(biāo)行人多數(shù)為小尺度目標(biāo),在頸部網(wǎng)絡(luò)中修改FPN+PAN結(jié)構(gòu),獲得具有更細(xì)粒度信息的特征圖.最后,使用Varifocal Loss損失替換Focal Loss損失,以此解決密集場(chǎng)景下檢測(cè)性能不佳的問(wèn)題.改進(jìn)的YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示.
圖3 改進(jìn)后的YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
瓶頸變換器(Bottleneck Transformer)是一種在計(jì)算機(jī)視覺(jué)領(lǐng)域中應(yīng)用的注意力機(jī)制網(wǎng)絡(luò)模塊.它是對(duì)傳統(tǒng)Transformer模型的改進(jìn)和優(yōu)化.傳統(tǒng)的Transformer模型在處理圖像數(shù)據(jù)時(shí)存在輸入特征圖的尺寸較大,導(dǎo)致計(jì)算和內(nèi)存消耗較高的問(wèn)題.為了解決這個(gè)問(wèn)題,Bottleneck Transformer引入瓶頸結(jié)構(gòu)(Bottleneck structure).瓶頸變換器首先通過(guò)一個(gè)降維卷積層將輸入特征圖的通道數(shù)降低,從而減少計(jì)算量.然后在降維后的特征圖上采用經(jīng)典的Transformer模塊,包括自注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò).這些模塊能夠?qū)μ卣鲌D中不同位置之間的關(guān)系進(jìn)行建模和學(xué)習(xí).最后使用一個(gè)升維卷積層將特征圖的維度恢復(fù)到原始大小.瓶頸變換器的優(yōu)勢(shì)在于通過(guò)降維和升維操作減少了計(jì)算和內(nèi)存開(kāi)銷,同時(shí)保持較高的模型表達(dá)能力.這使它成為處理大尺寸圖像數(shù)據(jù)的有效工具,特別適用于圖像分類、目標(biāo)檢測(cè)和圖像分割等計(jì)算機(jī)視覺(jué)任務(wù).
YOLOv5的骨干網(wǎng)使用大量的卷積層捕獲圖像的局部信息,卷積層的堆疊提高了骨干網(wǎng)提取特征的性能,但也增加了模型參數(shù)的數(shù)量,降低了模型的推理速度.文獻(xiàn)[11]用多頭自注意算子代替殘差卷積神經(jīng)網(wǎng)絡(luò)卷積算子,可以提高模型的識(shí)別精度,減少模型參數(shù)的數(shù)量.借鑒該方法,將YOLOv5骨干網(wǎng)絡(luò)的C3模塊替換為BOTC3模塊.改進(jìn)后的BoTC3如圖4所示.由于多頭自注意力是一種顯式機(jī)制,用于對(duì)全局依賴項(xiàng)進(jìn)行建模,因此將該模塊嵌入骨干網(wǎng)絡(luò)末端,使其更有效地處理和整合特征圖中密集且微小的缺陷語(yǔ)義信息,并提高缺陷檢測(cè)的準(zhǔn)確率.
圖4 改進(jìn)后的BoTC3模塊
多頭自注意(Multi-Head Self- Attention,MSHA)將位置編碼視為空間注意,在水平和垂直2個(gè)維度上嵌入2個(gè)可學(xué)習(xí)的空間注意向量,然后將空間向量求和融合到q中得到內(nèi)容位置.對(duì)內(nèi)容-位置和內(nèi)容-內(nèi)容進(jìn)行求和,得到對(duì)空間敏感的相似特征,使 MHSA能夠聚焦于合適的區(qū)域,使模型更容易收斂.圖5中Rw和Rh分別對(duì)應(yīng)寬度和高度的相對(duì)位置編碼,其中q、k 、r和v分別表示查詢、鍵、位置編碼和值,qrT和qkT是注意力對(duì)數(shù),WQ、Wk和Wv分別是用于查詢向量、鍵向量和值向量的投影矩陣。在瓶頸變壓器模塊中引入 MHSA 層,利用全容進(jìn)行求和,得到對(duì)空間敏感的相似特征,使 MHSA 能夠聚焦于合適的區(qū)域,使模型更容易收斂.在瓶頸變壓器模塊中引入MHSA層,利用全局自注意對(duì)卷積捕獲的特征映射中包含的信息進(jìn)行處理和聚合[12],降低模型的參數(shù),避免卷積神經(jīng)網(wǎng)絡(luò)參數(shù)疊加導(dǎo)致的模型膨脹,并在一定程度上提高了推理的準(zhǔn)確性.MHSA結(jié)構(gòu)如圖5示.
圖5 MHSA結(jié)構(gòu)
在FPN[10]+ PAN結(jié)構(gòu)的輸出中,得到了20×20、40×40和80×80 3個(gè)不同大小的特征圖.這些結(jié)構(gòu)通過(guò)融合來(lái)自不同尺度的特征圖,提供了多尺度的信息,有助于檢測(cè)不同大小的目標(biāo).其中20 × 20和40 × 40的特征圖被用于檢測(cè)較大尺寸的目標(biāo),80×80的特征圖被用于檢測(cè)較小尺寸的目標(biāo).針對(duì)行人檢測(cè)這一特定任務(wù),較小的目標(biāo)更為常見(jiàn).因此,為了更好地適應(yīng)行人檢測(cè)任務(wù)并提高邊界框回歸的精度,舍棄20 × 20和40 × 40的特征圖.通過(guò)丟棄這些特征圖和針對(duì)大目標(biāo)的識(shí)別幀,能夠減少無(wú)用的計(jì)算操作,并且更集中地關(guān)注中小尺寸目標(biāo)的檢測(cè).這種優(yōu)化策略既提高了模型的效率,又保證了行人檢測(cè)的準(zhǔn)確性.
同時(shí),為了獲得更加細(xì)粒度的特征圖,對(duì)PANet網(wǎng)絡(luò)的連接方式進(jìn)行改進(jìn).通過(guò)對(duì)骨干網(wǎng)絡(luò)輸出的2次上采樣,并將其與相應(yīng)尺寸的骨干網(wǎng)絡(luò)特征圖進(jìn)行融合,得到新的160 × 160特征圖.由于改進(jìn)后的骨干網(wǎng)絡(luò)生成了320 × 320、160 × 160、80 × 80 3層特征映射,所以不需要對(duì)FPN進(jìn)行2次上采樣.最終實(shí)驗(yàn)選擇160 × 160和80 × 80的特征圖作為探測(cè)頭.PANet網(wǎng)絡(luò)改進(jìn)后的示意圖見(jiàn)圖6.
圖6 YOLOv5中PANet網(wǎng)絡(luò)改進(jìn)結(jié)構(gòu)圖
YOLOv5模型在分類任務(wù)中采用了Focal Loss作為損失函數(shù),旨在解決類別不平衡的問(wèn)題.該損失函數(shù)通過(guò)為少數(shù)困難樣本分配較大的權(quán)重,對(duì)多數(shù)簡(jiǎn)單樣本的權(quán)重進(jìn)行更多的衰減實(shí)現(xiàn)優(yōu)化.Folcal Loss的計(jì)算定義如下:
(1)
其中,p為目標(biāo)類的預(yù)測(cè)概率,范圍為[-1,1];y為真實(shí)正負(fù)樣本類別,取值1或-1;α是一個(gè)用于平衡正負(fù)類別權(quán)重的因子,其值在0~1;β是一個(gè)用于調(diào)整難以分類樣本權(quán)重的因子,其值通常設(shè)定為一個(gè)正數(shù),用于放大難以分類樣本的損失;(1-p)β為前景類調(diào)制因子;pβ為背景類調(diào)制因子.
為了突出小范圍多目標(biāo)密集檢測(cè)任務(wù)中正樣本的貢獻(xiàn),將YOLOv5模型中的損失函數(shù)替換為Varifocal Loss.Varifocal Loss基于二元交叉熵?fù)p失,并繼承了Focal Loss的加權(quán)處理策略,同時(shí)優(yōu)化了密集目標(biāo)訓(xùn)練中前景類和背景類極度不平衡的問(wèn)題.Varifocal Loss能夠更好地預(yù)測(cè)目標(biāo)的存在置信度和定位精度,從而提升檢測(cè)目標(biāo)的性能.Varifocal Loss的計(jì)算定義如下:
(2)
在上述公式中,預(yù)測(cè)的IoU感知分類評(píng)分p用于衡量目標(biāo)預(yù)測(cè)的準(zhǔn)確性.對(duì)于正樣本,該評(píng)分由預(yù)測(cè)框和真實(shí)框之間的交并比值q確定.而對(duì)于負(fù)樣本,q的取值為0.調(diào)節(jié)因子α可以對(duì)負(fù)樣本數(shù)量進(jìn)行調(diào)節(jié),并對(duì)負(fù)樣本的評(píng)分p進(jìn)行pβ衰減,以便更好地利用正樣本的信息.此外,對(duì)正樣本的加權(quán)考慮了交并比值q的影響.當(dāng)正樣本和真實(shí)框之間的交并比值較高時(shí),正樣本對(duì)損失函數(shù)的貢獻(xiàn)將增加,從而使訓(xùn)練過(guò)程集中在高質(zhì)量的正樣本上.
通過(guò)以上機(jī)制,可以更好地優(yōu)化分類損失函數(shù),使其在正負(fù)樣本的處理上更具針對(duì)性.這種方法充分利用了正樣本的信息,同時(shí)通過(guò)調(diào)節(jié)負(fù)樣本數(shù)量和考慮交并比值q的加權(quán),使訓(xùn)練過(guò)程更加關(guān)注高質(zhì)量的正樣本.
WiderPerson數(shù)據(jù)集是一個(gè)戶外行人檢測(cè)數(shù)據(jù)集,包括常規(guī)行人、騎自行車的人、部分遮擋的人、假人和人群5種類別.根據(jù)本實(shí)驗(yàn)的需求,假人和人群這2種類別是不需要的,因此只將前3種類別合并為行人類別.合并后的數(shù)據(jù)集包含訓(xùn)練圖片8000張、測(cè)試圖片1000張.
實(shí)驗(yàn)代碼基于YOLOv5進(jìn)行改進(jìn).在本次實(shí)驗(yàn)中,將圖片輸入大小設(shè)置為640×640像素.通過(guò)深入分析,決定將批處理(bath-size)大小設(shè)置為16,并將訓(xùn)練輪數(shù)(epoch)設(shè)定為300.初始學(xué)習(xí)率為0.01,學(xué)習(xí)率動(dòng)量為0.1,采用隨機(jī)梯度下降方法,其他為默認(rèn)設(shè)置.實(shí)驗(yàn)環(huán)境如表1所示.
表1 實(shí)驗(yàn)環(huán)境
在本次實(shí)驗(yàn)中,采用一些評(píng)價(jià)指標(biāo)作為衡量模型性能的標(biāo)準(zhǔn).這些指標(biāo)包括mAP@0.5、mAP@0.5∶0.95、召回率(Recall)和準(zhǔn)確率(Precision).其中,mAP@0.5與mAP@0.5∶0.95分別表示在IoU閾值設(shè)置為0.5與0.5~0.95時(shí)的平均精度值(AP).TP表示真陽(yáng)性,即檢測(cè)模型正確預(yù)測(cè)到的樣本正例.TN表示真陰性,即模型正確預(yù)測(cè)到的樣本負(fù)例.FP表示假陽(yáng)性,即模型沒(méi)有預(yù)測(cè)到的樣本負(fù)例.FN表示假陰性,即模型沒(méi)有正確預(yù)測(cè)到的樣本正例.Precision表示被分類為正例的樣本中實(shí)際為正例的比例,而召回率(Recall)則度量了模型正確識(shí)別出的正例數(shù)量占總正例數(shù)量的比例.AP是Precision-Recall曲線下的面積.具體的計(jì)算公式如下:
(3)
(4)
(5)
(6)
為了更好地展示檢測(cè)結(jié)果和評(píng)估性能,進(jìn)行了模塊消融實(shí)驗(yàn).實(shí)驗(yàn)結(jié)果詳見(jiàn)表2.
表2 消融實(shí)驗(yàn)結(jié)果
由表2可知,與原始的YOLOv5模型相比,使用Varifocal Loss損失函數(shù)替換原模型中的Focal Loss后召回率與mAP@0.5∶0.95分別提升了0.2%與0.1%.實(shí)驗(yàn)結(jié)果顯示,使用Varifocal Loss損失函數(shù)替換Focal Loss損失函數(shù)的改進(jìn)對(duì)于密集場(chǎng)景下的行人檢測(cè)是有效的.在YOLOv5骨干網(wǎng)絡(luò)的末端增加BoTC3模塊后,mAP@0.5與mAP@0.5:0.95分別提升到88.7%與62.3%.實(shí)驗(yàn)結(jié)果表明融合了多頭自注意力機(jī)制的BoTC3模塊能夠有效檢測(cè)部分特征丟失的目標(biāo)行人.在原模型中添加改進(jìn)后的PANet網(wǎng)絡(luò)后,召回率與mAP@0.5分別提升到82.3%與90.2%,mAP@0.5∶0.95也提升到63%.實(shí)驗(yàn)結(jié)果充分證明改進(jìn)后的PANet網(wǎng)絡(luò)在檢測(cè)小尺度目標(biāo)行人方面的適用性.相較于原模型,最終模型的召回率、mAP@0.5與mAP@0.5∶0.95分別提高了5.7%、1.6%和0.9%,證明此方法的可行性.為了更加直觀地體現(xiàn)改進(jìn)后算法的檢測(cè)性能,對(duì)改進(jìn)前后模型的檢測(cè)效果進(jìn)行對(duì)比展示,如圖7所示.實(shí)驗(yàn)結(jié)果表明,該算法對(duì)于小目標(biāo)行人以及密集行人的檢測(cè)相較于原YOLOv5模型都獲得了較好的檢測(cè)效果.
(a)原始圖像
為了驗(yàn)證所提算法的有效性,現(xiàn)將所提算法與常見(jiàn)主流算法做比較.為了保持實(shí)驗(yàn)對(duì)比的公平性,統(tǒng)一將圖片輸入大小設(shè)置為640×640,進(jìn)行對(duì)比實(shí)驗(yàn)的訓(xùn)練參數(shù)和超參數(shù)都設(shè)置為默認(rèn)值.如表3所示,所提算法在準(zhǔn)確率上遠(yuǎn)高于SSD算法和YOLOv4算法,略低于YOLOv7-tiny,但在mAP上優(yōu)于YOLOv7-tiny.總的來(lái)說(shuō),所提算法在行人檢測(cè)任務(wù)中的綜合性能優(yōu)于目前的主流算法.
表3 對(duì)比實(shí)驗(yàn)結(jié)果
提出了一種適用于密集場(chǎng)景下的改進(jìn)型YOLOv5行人檢測(cè)方法.為了提高整體檢測(cè)效果并增強(qiáng)對(duì)遮擋和較小行人目標(biāo)的提取能力,基于YOLOv5網(wǎng)絡(luò)模型進(jìn)行改進(jìn).引入融合了多頭自注意力機(jī)制的模塊,解決了由于目標(biāo)行人之間互相遮擋導(dǎo)致的部分特征丟失問(wèn)題,提升了整體網(wǎng)絡(luò)性能.在特征融合階段,改進(jìn)了PANet網(wǎng)絡(luò),增強(qiáng)了對(duì)小尺度目標(biāo)的檢測(cè)能力,從而提高小尺度行人的檢測(cè)精度.此外,使用Varifocal Loss損失函數(shù)替換Varifocal Loss損失,使模型更適用于密集場(chǎng)景中的行人檢測(cè).
實(shí)驗(yàn)結(jié)果表明,所提方法在密集場(chǎng)景中的行人檢測(cè)方面具有更好的效果,可視為一種有效的檢測(cè)方法.然而所提方法的參數(shù)量較大,為了進(jìn)一步提高模型的推理速度,需要在保證準(zhǔn)確率的前提下進(jìn)行網(wǎng)絡(luò)輕量化.