樊 嶸,馬小陸
安徽工業(yè)大學(xué) 電氣與信息工程學(xué)院,安徽 馬鞍山 243002
行人檢測任務(wù)是目標(biāo)檢測的一個分支領(lǐng)域,在安保監(jiān)控、智能駕駛以及交通監(jiān)控領(lǐng)域具有重要應(yīng)用價值。實際行人檢測任務(wù)中,待測場景多為擁擠行人場景,場景中行人目標(biāo)尺寸較小且相互間存在大量遮擋會給檢測帶來一定挑戰(zhàn)。主要表現(xiàn)在三個方面:(1)擁擠場景中行人密度較大,行人目標(biāo)之間易產(chǎn)生相互遮擋現(xiàn)象。使得具有完整行人特征的目標(biāo)缺失部分特征信息,影響模型的特征提取效率;(2)遮擋現(xiàn)象在減少目標(biāo)特征的同時,會在行人的表征特征中引入噪聲干擾,使模型難以對重要特征進(jìn)行有效提純;(3)擁擠場景下行人目標(biāo)個數(shù)較多,單個目標(biāo)的分辨率較低特征信息較少,易使模型產(chǎn)生漏檢現(xiàn)象。
針對擁擠行人檢測場景中部分被遮擋目標(biāo)的漏檢問題,Xu等[1]提出了基于RCNN的提取行人特定部位信息的檢測算法,通過對人體關(guān)鍵點及部位進(jìn)行檢測間接實現(xiàn)對行人目標(biāo)的檢測。鄒梓吟等[2]通過在骨干網(wǎng)絡(luò)中引入注意力模塊,提出了一種基于注意力機制的特征提取增強檢測算法。李翔等[3]提出了一種改進(jìn)YOLO-v3算法,通過對損失函數(shù)及特征融合進(jìn)行優(yōu)化提升了對遮擋行人的檢測性能。孫旭旦等[4]通過對被遮擋行人特征進(jìn)行語義增強,減少了檢測場景中被遮擋行人的漏檢。謝斌紅等[5]通過在網(wǎng)絡(luò)中加入殘差密集網(wǎng)絡(luò),實現(xiàn)了淺層與深層特征的直接融合,減少了被遮擋行人特征的丟失。Hou等[6]采用多相機視角綜合判斷減小了遮擋對行人檢測的影響。以上方法雖然有效提升了模型對遮擋目標(biāo)的檢測能力,但面向含有大量小目標(biāo)行人的擁擠行人檢測場景時仍易產(chǎn)生漏檢。
針對擁擠行人檢測場景中部分小目標(biāo)行人的漏檢問題,邵香迎等[7]通過構(gòu)造具有超分辨率思想的特征細(xì)化模塊,對小目標(biāo)特征信息進(jìn)行放大重構(gòu),緩解小目標(biāo)漏檢問題。Hong 等[8]利用注意力機制、尺度增強模塊、尺度選擇模塊構(gòu)建了一種用于小目標(biāo)行人檢測的尺度選擇金字塔網(wǎng)絡(luò),優(yōu)化小目標(biāo)檢測的效果。Zhao等[9]通過將不同尺度的特征進(jìn)行融合,有效緩解了小目標(biāo)特征信息不足的問題。Kim 等[10]通過生成不同尺度的特征并將其擴展到統(tǒng)一尺度聚合上下文信息,有效緩解了小目標(biāo)特征信息不足的問題。以上方法雖然有效提升了對小尺寸目標(biāo)的檢測能力,但主要通過特征融合與特征重構(gòu)操作增強小目標(biāo)的特征信息,當(dāng)運用于含有大量噪音的密集遮擋行人檢測場景時,檢測效果提升有限。
為有效解決上述問題,本文在注意力模型DETR[11]的基礎(chǔ)上進(jìn)行了以下三點改進(jìn):
(1)采用改進(jìn)的EfficientNet[12]骨干網(wǎng)絡(luò)作為特征提取網(wǎng)絡(luò),改進(jìn)后的EfficientNet骨干網(wǎng)絡(luò)融入了通道空間注意力模塊[13](convolutional block attention module,CBAM),對特征圖中的重要通道信息與空間信息有較高的提取與提純效率。
(2)采用可變形注意力編碼器[14]替代注意力編碼器[15]對多尺度特征圖進(jìn)行注意力編碼,使算法可以自然聚合多尺度特征,增強對小目標(biāo)物體的檢測能力。
(3)訓(xùn)練時采用Smooth-L1 結(jié)合GⅠOU 作為損失函數(shù),提升訓(xùn)練效率并使模型可以收斂至更高的精度。
最后,在當(dāng)前具有一定說服力且含有大量小目標(biāo)行人與遮擋目標(biāo)行人的Wider-Person 擁擠行人數(shù)據(jù)集上與現(xiàn)有的部分常用行人檢測算法進(jìn)行了對比實驗。實驗結(jié)果表明,改進(jìn)DETR算法具有較強的擁擠行人檢測能力。
本文提出的改進(jìn)DETR算法包含三個部分,分別是進(jìn)行行人檢測的改進(jìn)的注意力檢測模塊、將骨干網(wǎng)絡(luò)輸出特征進(jìn)行預(yù)處理并輸出多尺度特征圖的頸部網(wǎng)絡(luò)以及進(jìn)行特征提取的改進(jìn)的EfficientNet 骨干網(wǎng)絡(luò)。進(jìn)行行人檢測時,骨干網(wǎng)絡(luò)對送入的RGB 圖像進(jìn)行特征提取并將網(wǎng)絡(luò)第6、7、8 層輸出的特征圖傳入頸部網(wǎng)絡(luò)。頸部網(wǎng)絡(luò)將得到的特征圖轉(zhuǎn)化為通道數(shù)均為256,尺寸不變的多尺度特征圖。注意力檢測模塊給頸部網(wǎng)絡(luò)轉(zhuǎn)化的多尺度特征圖加注可學(xué)習(xí)的位置編碼后送入可變形注意力編碼器(deformable transformer encoder)進(jìn)行注意力編碼,編碼結(jié)束后由解碼器(transformer decoder)進(jìn)行解碼并輸出檢測錨框。改進(jìn)DETR 網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示。
圖1 改進(jìn)DETR網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Ⅰmproved DETR network structure diagram
DETR采用注意力檢測模塊進(jìn)行檢測結(jié)果輸出,但注意力檢測模塊難以有效利用含有較多小目標(biāo)信息的多尺度特征圖,導(dǎo)致對小目標(biāo)行人的檢測效率較低。針對此問題本文采用可變形注意力編碼器(deformable transformer encoder)對DETR 注意力檢測模塊進(jìn)行改進(jìn)。DETR注意力檢測模塊結(jié)構(gòu),如圖2所示。
圖2 DETR注意力檢測模塊Fig.2 DETR transformer detector module
1.1.1 注意力編碼器
注意力編碼器(transformer encoder)為注意力檢測模塊的編碼結(jié)構(gòu),加注可學(xué)習(xí)的位置編碼特征圖輸入注意力編碼器后,編碼器會計算特征圖中的采樣點與其他所有像素點之間的注意力權(quán)重,進(jìn)而構(gòu)建全局特征圖。其與注意力解碼器(transformer decoder)結(jié)合使模型擁有了全局建模能力。利用全局建模能力模型可以將目標(biāo)檢測問題轉(zhuǎn)化為集合預(yù)測問題,在輸出檢測結(jié)果時不會輸出冗余的預(yù)測框,避免了使用對檢測性能影響較大的非極大值抑制后處理模塊。并且由于使用了注意力檢測模塊,在輸出檢測結(jié)果時模型會聚焦于特定的重要特征,緩解噪聲對目標(biāo)檢測的干擾,使得模型可以在缺失部分目標(biāo)特征的前提下完成遮擋目標(biāo)檢測[11],因而采用注意力檢測模塊的模型可以較好地應(yīng)用于遮擋目標(biāo)檢測任務(wù)。
1.1.2 可變形注意力編碼器
可變形注意力編碼器與注意力編碼器一樣擁有特征編碼能力,與解碼器結(jié)合使網(wǎng)絡(luò)保留了全局建模能力。不同于注意力編碼器,可變形注意力編碼器僅計算采樣點與其附近部分(由模型訓(xùn)練得到)像素點之間的注意力權(quán)重,使模型在保留性能的同時降低了計算量,且可變形解碼器可以自然聚合不同尺度的特征圖,使模型在不使用特征金字塔[16](feature pyramid network,F(xiàn)PN)結(jié)構(gòu)的情況下也能有效地利用骨干網(wǎng)絡(luò)提取的多尺度特征圖,進(jìn)而減少小目標(biāo)語義信息在下采樣過程中的損失,提升對小目標(biāo)物體的檢測性能。本文采用可變形注意力編碼器對注意力檢測模塊進(jìn)行改進(jìn),使模型可以有效利用多尺度特征圖。采用可變形注意力編碼器的注意力檢測模塊結(jié)構(gòu),如圖3所示。
圖3 采用可變形注意力編碼器的注意力檢測模塊Fig.3 Attention detector with deformable attention encoder module
圖3中,Neck層輸出的多尺度特征圖按位置添加可學(xué)習(xí)的位置編碼后送入可變形注意力編碼器進(jìn)行注意力權(quán)值更新,送入的多尺度特征圖通過三個全連接層分別轉(zhuǎn)化為像素點注意力權(quán)重W′m x,注意力偏移量?Pmlqk以及注意力權(quán)重系數(shù)Amlqk。其中注意力偏移量為當(dāng)前參考點與其附近像素點進(jìn)行偏移量計算后得出的與當(dāng)前參考點相關(guān)聯(lián)的像素點的位置偏移量,注意力權(quán)重系數(shù)為與當(dāng)前參考點相關(guān)聯(lián)的像素點所擁有注意力權(quán)重值。當(dāng)可變形注意力編碼器關(guān)注到一個參考素點后,通過注意力偏移量計算與當(dāng)前參考點關(guān)聯(lián)的所有像素點,并將這些像素點結(jié)合其對應(yīng)的注意力權(quán)重與注意力權(quán)重系數(shù)更新當(dāng)前參考點的注意力權(quán)值,進(jìn)而完成對所有像素點的全局注意力權(quán)重編碼。完成全局注意力權(quán)重編碼的特征圖被送入解碼器后直接輸出檢測結(jié)果。多頭可變形注意力定義如式(1)所示:
其中,zq為輸入的原始特征,p?q為當(dāng)前參考點的歸一化坐標(biāo),x為特征圖編號,Wm為多頭注意力,m為注意力編號(本文中m最大值為8),l為特征金字塔的維度編號,k為當(dāng)前采樣點編號。
采用可變形注意力編碼器的DETR算法已經(jīng)具備有效利用多尺度特征圖的能力,為了給可變形注意力編碼器提供高效的多尺度特征圖,本文采用改進(jìn)的Efficient-Net 骨干網(wǎng)絡(luò)代替DETR 原有的ResNet-50 骨干網(wǎng)絡(luò)進(jìn)行特征提取工作。
1.2.1 基礎(chǔ)網(wǎng)絡(luò)ResNet-50骨干網(wǎng)絡(luò)
DETR基于經(jīng)典骨干網(wǎng)絡(luò)ResNet-50[17]搭建,ResNet-50系列網(wǎng)絡(luò)引入殘差結(jié)構(gòu)緩和了深度神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時產(chǎn)生的梯度消失問題,但ResNet-50 系列網(wǎng)絡(luò)采用增加網(wǎng)絡(luò)模塊層數(shù)的方式提升網(wǎng)絡(luò)性能,雖然獲得了較好的特征提取能力,但其本身參數(shù)量較大且堆疊層數(shù)較深,難以對信息量較少的被遮擋目標(biāo)特征進(jìn)行有效提取并為后續(xù)編碼網(wǎng)絡(luò)提供高效的多尺度特征圖。
1.2.2 基礎(chǔ)網(wǎng)絡(luò)EfficientNet骨干網(wǎng)絡(luò)
EfficientNetB0-B7 系列骨干網(wǎng)絡(luò)通過自適應(yīng)神經(jīng)架構(gòu)搜索[18](neural architecture search,NAS)得到,其中最小的EfficientNet-B0 骨干網(wǎng)絡(luò)已不到ResNet-50 骨干網(wǎng)絡(luò)四分之一的參數(shù)量,在ⅠmageNet 分類任務(wù)上領(lǐng)先ResNet-50約1%的TOP1準(zhǔn)確率。EfficientNet骨干網(wǎng)絡(luò)的核心模塊為MBConv 模塊,此模塊由深度可分離卷積[19](depthwise separable convolution)連接壓縮與激勵模塊[20](squeeze and excitation,SE)并最終通過Swish激活函數(shù)構(gòu)成。在MBConv模塊的作用下,EfficientNet骨干網(wǎng)絡(luò)在特征提取階段實現(xiàn)了對重要通道特征的高效提純。
1.2.3 通道空間注意力模塊
實際檢測任務(wù)中,目標(biāo)間的空間信息是檢測被遮擋目標(biāo)的重要依據(jù),而在卷積過程中,特征圖尺寸逐漸減小,目標(biāo)間的空間信息也因此而逐漸貧乏。為了更好地對空間信息進(jìn)行提純進(jìn)而提升算法對遮擋目標(biāo)的檢測性能,本文采用通道空間注意力模塊替換MBConv模塊中的壓縮與激勵模塊。
通道空間注意力模塊是一種輕量級卷積注意力模塊,它會依次計算通道與空間兩個維度的注意力圖,并將注意力圖與特征圖相乘以進(jìn)行自適應(yīng)特征優(yōu)化[21]。張宸嘉等[22]針對5個同型號電臺輻射源信號作為數(shù)據(jù)集進(jìn)行仿真實驗,利用ECA-Net[23]、SE-Net、SK-Net[24]、ResNeSt[25]、CBAM、DANet[26]、PAFNet[27]等7 種不同注意力模塊,在相同網(wǎng)絡(luò)條件下對數(shù)據(jù)集進(jìn)行分類識別,測得通道空間注意力模塊的效果最優(yōu)。通道空間注意力模塊結(jié)構(gòu)圖,如圖4所示。
圖4 通道空間注意力模塊Fig.4 Convolutional block attention module
由于現(xiàn)有的一些加速器無法充分支持深度可分離卷積,導(dǎo)致在淺層網(wǎng)絡(luò)中使用包含深度可分離卷積的模塊可能降低網(wǎng)絡(luò)工作效率[28],為了減輕深度可分離卷積對網(wǎng)絡(luò)效率的影響并有效利用特征圖中的空間信息,本文設(shè)計了融合通道空間注意力模塊且包含深度可分離卷積的CBAMConv模塊以及不包含深度可分離卷積的Fused-CBAMConv模塊。兩模塊結(jié)構(gòu)如圖5和圖6所示。
圖5 CBAMConv模塊Fig.5 CBAMConv module
圖6 Fused-CBAMConv模塊Fig.6 Fused-CBAMConv module
1.2.4 改進(jìn)的EfficientNet骨干網(wǎng)絡(luò)
為了防止在淺層網(wǎng)絡(luò)中出現(xiàn)過多的深度可分離卷積影響網(wǎng)絡(luò)的檢測效率,本文將EfficientNet 骨干網(wǎng)絡(luò)的前4個層級模塊替換為Fused-CBAMConv模塊,最后3個層級模塊替換為CBAMConv模塊。以輸入圖像為3通道分辨率300×300的RGB圖像為例,改進(jìn)的Efficient-Net骨干網(wǎng)絡(luò)參數(shù),如表1所示。
表1 改進(jìn)的EfficientNet骨干網(wǎng)絡(luò)參數(shù)Table 1 Ⅰmproved EfficientNet backbone network parameters
由于本文僅針對行人進(jìn)行檢測與定位,在檢測階段屬于二分類問題。因此本文將GⅠOU[29]損失函數(shù)與Smooth-L1損失函數(shù)結(jié)合作為回歸損失,對檢測邊框進(jìn)行預(yù)測回歸。
GⅠOU 損失函數(shù)考慮到了兩框的非重疊區(qū)域,可以有效反映出兩框的重疊情況,當(dāng)兩框不重疊時也可以返回梯度便于優(yōu)化。GⅠOU定義如式(2)所示:
式中,A表示預(yù)測框面積,B表示真實框面積,C表示能同時包住A與B的最小方框面積。
Smooth-L1損失函數(shù)結(jié)合了L1損失函數(shù)與L2損失函數(shù)的優(yōu)點。模型的前50輪訓(xùn)練中錨框與標(biāo)定框的數(shù)值差距較大,Smooth-L1可以很好地對反向傳播梯度進(jìn)行抑制,避免梯度爆炸;而在最后50 輪訓(xùn)練中,錨框與標(biāo)定框的數(shù)值差距較小,此時也可以繼續(xù)返回梯度使模型進(jìn)一步收斂到更高精度[30]。其定義如式(3)所示:
式中,bσ(i)表示第i個索引的標(biāo)定框,表示第i個索引的錨框。
Smooth-L1 損失函數(shù)在計算損失時僅使用了錨框與標(biāo)定框的橫縱坐標(biāo)值及長寬數(shù)值,無法描述錨框與標(biāo)定框之間是否存在包含關(guān)系。針對此問題,在計算回歸損失時引入GⅠoU損失函數(shù)計算錨框與標(biāo)定框之間的重疊損失。通過將以上兩種損失函數(shù)融合作為本文的回歸損失,使得模型的訓(xùn)練效率得到提升。
本文在已公開的Wider-Person[31]擁擠場景行人檢測數(shù)據(jù)集與USC 行人檢測數(shù)據(jù)集上,對本文模型進(jìn)行實驗驗證。Wider-Person數(shù)據(jù)集是室外行人檢測基準(zhǔn)數(shù)據(jù)集,包含13 382張圖片,共計40萬個不同遮擋程度的人體目標(biāo),圖像來源于多種場景。本文選擇取了數(shù)據(jù)集中給出標(biāo)簽的9 000張圖片按8∶2劃分為訓(xùn)練集與驗證集進(jìn)行對比實驗。USC 行人檢測數(shù)據(jù)集中圖像大多來源于監(jiān)控視頻,共包含358 張圖片,共計816 個行人目標(biāo),存在少量遮擋目標(biāo)。本文將358 張圖像全部重新標(biāo)注后按8∶2劃分為訓(xùn)練集與驗證集進(jìn)行消融實驗。
由于采用transformer 編碼器的模型對訓(xùn)練資源需求量較大且收斂較慢,為了便于模型的訓(xùn)練與性能檢測,消融實驗階段使用圖片體量較小的USC 行人檢測數(shù)據(jù)集,驗證各個改進(jìn)模塊的有效性;橫向?qū)Ρ葘嶒炿A段使用較為龐大的Wider-Person行人數(shù)據(jù)集,驗證本文算法在小目標(biāo)與遮擋目標(biāo)檢測中的性能優(yōu)越性。
本文在運行內(nèi)存32 GB,Ryzen5-3600X 處理器,NVⅠDⅠA TeslaP40顯卡的硬件平臺上進(jìn)行模型訓(xùn)練,運行庫版本為CUDA11.6,軟件環(huán)境為Pytorch1.12.0 與MMDetection[32]。為了更好地與其他檢測網(wǎng)絡(luò)進(jìn)行性能與體量對比,本文采用平均精準(zhǔn)度(average precision,AP)來衡量模型檢測精度,平均精準(zhǔn)度ⅠoU閾值取0.5以及0.5~0.95,分別記作AP50與AP50:95。為了進(jìn)一步驗證本文對小目標(biāo)的檢測性能,采用MSCOCO[33]數(shù)據(jù)集中的評價APs 來衡量對像素點小于32×32 的小目標(biāo)的檢測性能,ⅠoU 閾值取0.5~0.95。采用GFLOPS 衡量模型的計算量。
為驗證本文所提改進(jìn)模塊是否有效,設(shè)置了消融實驗。為便于性能對比,每組實驗?zāi)P蛢H替換DETR原模型的對應(yīng)模塊。每組模型在USC行人檢測數(shù)據(jù)集上進(jìn)行300 輪訓(xùn)練。由于USC 行人檢測數(shù)據(jù)集包含少量遮擋行人及小目標(biāo)行人,故使用AP50與AP50:95作為模型的性能衡量指標(biāo)。所有實驗組均選擇Adam 優(yōu)化器進(jìn)行優(yōu)化,學(xué)習(xí)率為0.000 1,實驗編號與結(jié)果如表2所示。
表2 消融實驗編號與結(jié)果Table 2 Ablation experimental number and results
表2 中實驗DETR 為使用ResNet-50 骨干網(wǎng)絡(luò)以及注意力編碼器的DETR原模型及其實驗結(jié)果,對比實驗DETR與實驗A可知,可變形注意力編碼器通過聚合多尺度特征圖有效提升了模型檢測精度;對比實驗A與實驗B 可知,EfficientNet 骨干網(wǎng)絡(luò)相較于ResNet-50 骨干網(wǎng)絡(luò)有更高的特征提取效率,有效增加了模型檢測精度;對比實驗B 與實驗C 可知,融入通道空間注意力模塊的改進(jìn)的EfficientNet骨干網(wǎng)絡(luò)相較于EfficientNet骨干網(wǎng)絡(luò)有更高的特征提純效率,進(jìn)一步提升了網(wǎng)絡(luò)檢測精度;對比實驗C 與實驗D 可知,優(yōu)化后的損失函數(shù)使網(wǎng)絡(luò)進(jìn)一步收斂至更高的檢測精度。以上結(jié)果表明所提改進(jìn)方法均可有效提升DETR模型的檢測精度
將本文算法與部分常用行人檢測模型進(jìn)行對比實驗。每個模型在Wider-Person 擁擠場景行人數(shù)據(jù)集上進(jìn)行200 輪訓(xùn)練,由于Wider-Person 行人檢測數(shù)據(jù)集含有大量遮擋目標(biāo)行人與小目標(biāo)行人,故使用AP50、AP50:95與APs50:95作為模型的性能衡量指標(biāo)。所有實驗組均使用Adam 優(yōu)化器進(jìn)行優(yōu)化,學(xué)習(xí)率為0.000 1,實驗結(jié)果如表3所示。
表3 性能對比實驗結(jié)果Table 3 Performance comparison experiment results
由表3 可知,在密集行人檢測場景中,本文的常規(guī)檢測精度與小目標(biāo)檢測精度均高于YOLO-x 以及YOLO-v5等常用行人檢測算法。
為了更好地對比本文與DETR原模型的檢測效果,本文在圖7中可視化了DETR原模型以及本文模型在擁擠行人場景中的檢測效果,左側(cè)為DETR 模型檢測效果,其中存在較多漏檢情況,右側(cè)為本文檢測效果,其中存在較少漏檢情況。本文模型可以較好地應(yīng)用于擁擠行人檢測任務(wù)。
圖7 檢測效果對比Fig.7 Comparison of detection results
本文以DETR 作為基礎(chǔ)框架,提出了改進(jìn)DETR 檢測算法。采用改進(jìn)的注意力檢測模塊使模型可以聚合多尺度特征圖,有效提升了模型對小目標(biāo)及被遮擋目標(biāo)的檢測能力。采用改進(jìn)的EfficientNet 骨干網(wǎng)絡(luò)作為特征提取網(wǎng)絡(luò),提升模型對重要特征的提取能力以及提純效率,提高了模型的檢測精度。訓(xùn)練時采用由Smooth-L1與GⅠoU結(jié)合構(gòu)成的損失函數(shù),使模型可以進(jìn)一步收斂至更高精度。
本文在Wider-Person 密集行人檢測數(shù)據(jù)集中檢測精度高于YOLO-x 與YOLO-v5 等常見行人檢測算法。雖然采用注意力檢測結(jié)構(gòu)的算法在遮擋目標(biāo)與小尺度目標(biāo)的檢測中更有優(yōu)勢,但使用此結(jié)構(gòu)的模型需要較多的計算資源。在本文單GPU實驗平臺及數(shù)據(jù)集上對改進(jìn)DETR 算法進(jìn)行200 輪訓(xùn)練需要約145.6 小時,是YOLO-v5 算法消耗時間的5.4 倍。如何降低注意力檢測結(jié)構(gòu)算法所需訓(xùn)練資源并提升其訓(xùn)練效率,仍是未來的研究重點。