金 梅, 任婷婷, 張立國, 閆夢蕭, 沈明浩
(燕山大學(xué) 電氣工程學(xué)院,河北 秦皇島 066004)
目前靜態(tài)圖像檢測和動態(tài)目標(biāo)檢測被廣泛應(yīng)用于行人檢測技術(shù)[1]方面,是計算機(jī)視覺研究中最基本、最核心、最具挑戰(zhàn)性的技術(shù)之一。在現(xiàn)實生活中,由于行人圖像的背景復(fù)雜,以及受到姿態(tài)、穿著和遮擋等不利因素的影響,行人檢測的難度大大增加。因此在保證檢測實時性的前提下,研究如何在現(xiàn)實復(fù)雜場景中提高對行人目標(biāo)檢測的準(zhǔn)確性是一個急待解決的難題。
行人檢測方法大都源自目標(biāo)檢測方法,主要分為傳統(tǒng)方法和基于深度學(xué)習(xí)的方法2大類。傳統(tǒng)目標(biāo)檢測方法先是基于被檢測物體的HOG(histogram of oriented gradient)、SIFT(scale invariant feature transform)或SURF(speed up robust features)[2~4]等顯著特征,手工設(shè)計特征提取算法,然后使用AdaBoost、支持向量機(jī)(support vector machine,SVM)等[5, 6]分類器對特征進(jìn)行分類,從而達(dá)到檢測的目的。由于傳統(tǒng)方法采用人工設(shè)計的特征,泛化能力較差,檢測精度的高低很大程度上取決于人的認(rèn)知水平,使得檢測效果與實際需求存在一些差距?;谏疃葘W(xué)習(xí)的目標(biāo)檢測方法在一定程度上避免了人工對目標(biāo)特征提取的干預(yù),深度學(xué)習(xí)方法一般采用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)自動獲取特征。現(xiàn)今基于深度學(xué)習(xí)的目標(biāo)檢測方法可以從檢測方式上分為2類:兩階段檢測和單階段檢測。其中,R-CNN系列[8~10]是最典型的兩階段目標(biāo)檢測算法,Girshick等首次提出基于深度學(xué)習(xí)進(jìn)行目標(biāo)檢測的R-CNN[8]算法,為后續(xù)基于深度學(xué)習(xí)的目標(biāo)檢測算法奠定了基礎(chǔ),但其最大的缺點(diǎn)是訓(xùn)練和檢測速度慢。隨著深度學(xué)習(xí)的發(fā)展,R-CNN系列優(yōu)秀代表作Faster R-CNN[10]大幅提高了目標(biāo)檢測的性能,文獻(xiàn)[11]在此基礎(chǔ)上進(jìn)一步提出利用多尺度融合的方法提高檢測精度,但檢測的實時性仍很難達(dá)到要求,檢測速度仍有很大提升空間?;趯λ俣鹊母倪M(jìn),單階段目標(biāo)檢測算法開始崛起,出現(xiàn)了以SSD[12]和YOLO系列[13~15]為代表的單階段目標(biāo)檢測方法。YOLOv1[13]算法采用端到端的回歸思想,檢測速度大大提高且泛化性能好,但是對小物體的檢測精度較低。隨著算法的不斷改進(jìn),后來提出的YOLOv3[14]和YOLOv4[15]極大提高了檢測精度同時也保持較快的檢測速度,但在現(xiàn)實復(fù)雜場景中對行人的檢測仍存在某些不足。
為了滿足實時檢測同時提高行人目標(biāo)在諸多復(fù)雜場景下的檢測精度,本文做出如下工作:(1)為了解決主干特征提取網(wǎng)絡(luò)過于簡單而導(dǎo)致的特征提取能力弱的問題,在主干網(wǎng)絡(luò)中添加包含注意力機(jī)制的特征提取模塊(REM模塊),聚焦行人目標(biāo)的同時有效增強(qiáng)網(wǎng)絡(luò)特征提取能力。(2)為進(jìn)一步解決小目標(biāo)檢測精度低的問題,對TinyYOLOv4的特征融合網(wǎng)絡(luò)進(jìn)行改進(jìn),原網(wǎng)絡(luò)使用2個YOLO Head輸出,僅融合了13×13特征層和26×26特征層信息,對淺層細(xì)節(jié)信息丟失嚴(yán)重,于是引入52×52淺層信息,有效地增強(qiáng)了小目標(biāo)檢測效果。(3)為了更好地豐富深層語義信息同時防止圖像失真,在空間金字塔池化模塊(spatial pyramid pooling,SPP)[16]和殘差模塊的啟發(fā)下,設(shè)計添加注意力機(jī)制的特征融合模塊(RM-block模塊),增強(qiáng)感受野信息,提升檢測精度。
TinyYOLOv4是YOLOv4算法的簡化版,是一個優(yōu)秀的輕量化行人檢測網(wǎng)絡(luò)。該算法通過簡化網(wǎng)絡(luò)參數(shù)將原有的6000多萬參數(shù)減至不到600萬參數(shù),在檢測精度滿足現(xiàn)實需求的前提下,檢測速度得到極大提升。TinyYOLOv4網(wǎng)絡(luò)如圖1所示。網(wǎng)絡(luò)可分為3部分:主干網(wǎng)絡(luò)(CSPDarknet53-tiny)、特征融合網(wǎng)絡(luò)FPN[17](feature pyramid network)、預(yù)測網(wǎng)絡(luò)(YOLO head)。首先,通過主干網(wǎng)絡(luò)進(jìn)行特征提取,本文統(tǒng)一使用416×416大小的圖片作為輸入,最終獲得13×13和26×26這2種維度的有效特征層;其次,通過FPN結(jié)構(gòu)對這2個有效特征層進(jìn)行特征融合;最后,利用YOLO Head進(jìn)行輸出,獲得最終檢測結(jié)果。
圖1 TinyYOLOv4網(wǎng)絡(luò)Fig.1 TinyYOLOv4 network
CSPDarknet53-tiny主干網(wǎng)絡(luò)用于提取有效的行人特征,主要包括卷積模塊(CBL)、殘差塊(CSP[18])和下采樣(Maxpool)3大模塊。
卷積模塊(CBL)由3部分組成:卷積層(convolution)、批量標(biāo)準(zhǔn)化(batch normalization)和激活函數(shù)(Leaky ReLU)。卷積過程中使用3×3或者1×1大小的卷積進(jìn)行特征提取或者通道數(shù)的調(diào)整;經(jīng)過卷積操作后,采用批量標(biāo)準(zhǔn)化處理使得輸入層更加規(guī)范、加快了網(wǎng)絡(luò)學(xué)習(xí)的收斂速度、避免了梯度消失等問題;最后使用Leaky Relu激活函數(shù),達(dá)到避免神經(jīng)元失活的目的,該函數(shù)可以在值出現(xiàn)負(fù)值的情況下施加一個非零斜率,加快網(wǎng)絡(luò)的訓(xùn)練和計算速度。
殘差塊的堆疊采用了CSP結(jié)構(gòu),殘差塊在堆疊過程中分為左右2路分支:右路的主分支進(jìn)行殘差塊的堆疊;左路的副分支如同一個大殘差邊,最后將經(jīng)過左右2路分支得到的特征進(jìn)行拼接。
下采樣模塊使用的是最大池化(max pooling)操作,將特征圖縮為原來一半。
經(jīng)過主干網(wǎng)絡(luò)對原圖進(jìn)行下采樣后,選取26×26和13×13兩種比例的特征圖進(jìn)行特征融合。26×26淺層特征層包含更多的細(xì)節(jié)、位置信息,語義信息相對較弱;13×13深層特征層有著更強(qiáng)的語義信息,但細(xì)節(jié)和位置信息丟失較多。
為了平衡語義信息跟細(xì)節(jié)信息,TinyYOLOv4網(wǎng)絡(luò)在進(jìn)行特征融合時使用了圖2所示的FPN結(jié)構(gòu),該結(jié)構(gòu)是一種加強(qiáng)主干網(wǎng)絡(luò)特征表達(dá)的方法,通過結(jié)合自下而上和自上而下的方式得到不同層次的特征圖信息,最終獲得強(qiáng)有力的綜合特征。
圖2 FPN結(jié)構(gòu)Fig.2 FPN structure
所提出的改進(jìn)TinyYOLOv4算法整體框架如圖3所示,主要對3個方面進(jìn)行改進(jìn):(1)改進(jìn)主干網(wǎng)絡(luò)。原網(wǎng)絡(luò)屬于輕量化網(wǎng)絡(luò),用于特征提取的卷積層少,導(dǎo)致網(wǎng)絡(luò)對行人數(shù)據(jù)的有效特征提取不足,本文在主干部分添加2個改進(jìn)的特征提取塊REM模塊),為了更好地聚焦行人特征,在模塊中引入CBAM(convolutional block attention module)注意力機(jī)制[19],該機(jī)制很好地起到了抑制背景噪聲的效果,還能賦予行人目標(biāo)特征更高的權(quán)重,經(jīng)實驗得出該模塊確實起到了較好的特征提取效果。(2)改進(jìn)SPP網(wǎng)絡(luò)。RM-block特征融合模塊在SPP模塊改進(jìn)的基礎(chǔ)上結(jié)合了CBAM注意力機(jī)制,橫向增加了網(wǎng)絡(luò)寬度,對檢測速度影響小,可以達(dá)到增大感受野、擴(kuò)展主干網(wǎng)絡(luò)對特征的映射和接受范圍的效果,從而提高檢測精度。(3)引入淺層特征。原網(wǎng)絡(luò)進(jìn)行高低層級特征融合的過程中僅使用最后2層(13×13和26×26)的深層特征信息進(jìn)行融合,忽略了淺層信息,導(dǎo)致網(wǎng)絡(luò)對行人小目標(biāo)的檢測精度變低,為了解決該問題,引入淺層(52×52)特征信息,對特征融合網(wǎng)絡(luò)進(jìn)行重構(gòu),形成新的特征融合網(wǎng)絡(luò)IFFM。同時為保證模型輕量化,改進(jìn)后的網(wǎng)絡(luò)仍保持2個特征輸出層,實驗證實了該方法的有效性。
圖3 改進(jìn)的TinyYOLOv4網(wǎng)絡(luò)Fig.3 Improved TinyYOLOv4 network
TinyYOLOv4原網(wǎng)絡(luò)的主干網(wǎng)絡(luò)較淺,難以提取足夠的行人特征,從而影響了行人目標(biāo)檢測的精度。因此,對特征提取網(wǎng)絡(luò)進(jìn)行了加深,在原網(wǎng)絡(luò)的基礎(chǔ)上增加2個特征提取模塊,以進(jìn)一步增強(qiáng)行人特征提取能力,模塊見圖4。
圖4 REM模塊Fig.4 REM module
考慮到在實際的行人檢測識別過程中,目標(biāo)往往會包含大量混淆的背景信息,原網(wǎng)絡(luò)無法剔除該無效信息,從而導(dǎo)致訓(xùn)練后得到的權(quán)重包含大量背景信息,影響檢測性能。受注意力機(jī)制的啟發(fā),在新增的模塊中引入CBAM注意力機(jī)制來減弱背景信息的干擾。CBAM模塊可以分為2部分:一部分是通道注意力塊(channel attention module, CAM),負(fù)責(zé)增強(qiáng)特征圖在通道維度上對重要特征的關(guān)注度;另一部分是空間注意力塊(spatial attention module, SAM),負(fù)責(zé)增加特征圖在空間維度上對重要特征的關(guān)注。輸入的特征圖先通過CAM將特征的空間維度進(jìn)行壓縮,然后經(jīng)過SAM對特征的通道進(jìn)行壓縮,最終達(dá)到關(guān)注重點(diǎn)特征和抑制非必要特征的目的,增加表現(xiàn)力。實驗得出,REM模塊可以有效增強(qiáng)網(wǎng)絡(luò)的特征提取能力,提高檢測的準(zhǔn)確性和魯棒性。
特征增強(qiáng)模塊REM具體計算過程如下:
(1)
(2)
(3)
(4)
W1=Cat(Y1,Y2,Y3,Y4)
(5)
(6)
為了更全面地學(xué)習(xí)多尺度目標(biāo)特征,進(jìn)一步增大感受野,達(dá)到提升檢測精度的目的,試圖在主干網(wǎng)絡(luò)CSPDarknet53-S與特征融合網(wǎng)絡(luò)間添加SPP模塊,但該模塊大大增加了網(wǎng)絡(luò)的學(xué)習(xí)參數(shù),故對SPP模塊進(jìn)行了改進(jìn),提出了新的特征融合模塊(RM-block模塊),詳見圖5。該模塊相比原SPP模塊不僅有更少的參數(shù)量,同時使網(wǎng)絡(luò)有更高的檢測精度。
圖5 RM-block模塊Fig.5 RM-block Module
該模塊先對輸入圖像進(jìn)行通道分離split操作,將原來512的通道數(shù)進(jìn)行4等分獲得4條并行分支,各分支通道數(shù)是128。通過卷積和池化操作后,得到被增強(qiáng)的特征圖P0、P1、P2和P3。最大池化操作中池化核大小分別為1×1、3×3和5×5,該操作起到擴(kuò)大感受野的效果。圖中每2個分支在進(jìn)行concat拼接后,都會先利用1×1的卷積進(jìn)行通道數(shù)的調(diào)整。最后將4條分支所提取到的特征進(jìn)行融合。融合后經(jīng)過CBAM注意力機(jī)制,該機(jī)制對于任務(wù)中較難識別的重疊、遮擋目標(biāo)分配高權(quán)重來增加關(guān)注度,對不感興趣的自然背景分配低權(quán)重加以抑制,提高不同環(huán)境下行人的識別精度。最后經(jīng)過CBL模塊輸出特征。相比較原網(wǎng)絡(luò)直接將行人特征送入FPN進(jìn)行特征融合的策略,該模塊更加充分地利用了輸入的特征層信息。
RM-block模塊計算流程如下:
P0=split(X)
(7)
P1=MaxPool1[split(X)]
(8)
(9)
(10)
(11)
式中:X表示輸入的特征圖;split表示將原通道數(shù)四等分進(jìn)行通道分離操作;P0、P1、P2和P3分別表示輸入特征圖在經(jīng)過各通道后形成的新的特征圖;MaxPool表示最大池化操作,各池化核見圖5;X1表示輸出特征圖。
在對檢測結(jié)果的分析中發(fā)現(xiàn),小目標(biāo)的檢測精度極低??紤]到原網(wǎng)絡(luò)為了更加輕量化,采用的是兩個輸出的方式,僅使用13×13和26×26這2個深層特征層信息,導(dǎo)致淺層細(xì)節(jié)信息丟失嚴(yán)重,然而對中小目標(biāo)的檢測主要依賴于淺層特征,于是本文對高低層級特征融合結(jié)構(gòu)進(jìn)行了重構(gòu),引入淺層特征信息,搭建了新的特征融合網(wǎng)絡(luò)IFFM網(wǎng)絡(luò),該網(wǎng)絡(luò)如下圖6所示。
圖6 IFFM網(wǎng)絡(luò)Fig.6 IFFM network
IFFM網(wǎng)絡(luò)使用了3個不同的特征層信息作為輸入,將主干網(wǎng)絡(luò)第2個CSP模塊輸出的淺層特征圖W0(52×52)、第3個CSP模塊輸出的較深層特征圖(26×26)和經(jīng)RM-block模塊處理后的深層特征圖(13×13)作為IFFM網(wǎng)絡(luò)的輸入特征。首先對深層特征圖W2進(jìn)行兩倍上采樣,得到與特征圖W1同樣尺寸大小的特征圖進(jìn)行融合,形成新的特征圖Q2;隨后將淺層特征圖W0進(jìn)行2倍下采樣,形成與Q2尺寸相同的特征圖進(jìn)行融合,將得到第1個輸出特征圖F1(即Q1);接著將特征圖Q1進(jìn)行2倍下采樣與經(jīng)過卷積處理后的W2進(jìn)行融合,得到第2個輸出特征圖F2。該特征融合網(wǎng)絡(luò)在將輸入端的3個特征圖進(jìn)行融合的過程中有效引入了淺層特征,添加了更多細(xì)節(jié)信息,增加了網(wǎng)絡(luò)對行人小目標(biāo)特征的關(guān)注,達(dá)到了提升精度的效果。該網(wǎng)絡(luò)計算過程如下:
(12)
(13)
(14)
使用的實驗平臺如表1所示。實驗采用Python3.7語言編寫,深度學(xué)習(xí)框架為pytorch1.7.1,實驗軟件為PyCharm2021。
表1 實驗平臺Tab.1 Experimental platform
使用的數(shù)據(jù)集選自PASCAL VOC2007和PASCAL VOC2012這2個數(shù)據(jù)集。這2個數(shù)據(jù)集包含相同的20類目標(biāo),共計21 504張圖像。從2個數(shù)據(jù)集中提取了所有行人數(shù)據(jù)重新組成新的數(shù)據(jù)集VOC Person,共計8 566張圖片。采用7:2:1的比例劃分訓(xùn)練集、驗證集和測試集,最終得到5 996張訓(xùn)練集圖片、1 713張驗證集圖片和857張測試集圖片。該數(shù)據(jù)集中行人姿態(tài)變化較大,同時背景也較為復(fù)雜,存在不同程度的遮擋,更接近現(xiàn)實場景,能夠增強(qiáng)訓(xùn)練模型的泛化能力。
在對比實驗和消融實驗中,輸入圖片大小統(tǒng)一設(shè)為416×416;為了使模型具有更好的魯棒性和更豐富的數(shù)據(jù),訓(xùn)練過程中對數(shù)據(jù)集采用Mosaic數(shù)據(jù)增強(qiáng)和Mixup數(shù)據(jù)增強(qiáng)操作。對總損失函數(shù)進(jìn)行訓(xùn)練優(yōu)化時使用了SGD優(yōu)化器,在訓(xùn)練過程中當(dāng)計算網(wǎng)絡(luò)損失時,采用的二值交叉熵?fù)p失(binary cross entropy,BCE)來計算置信度損失和類別損失,使用CIOU[20]計算位置損失。同時為了使網(wǎng)絡(luò)具有更好的泛化性能、更高的準(zhǔn)確率和防止過擬合,使用lable smooth標(biāo)簽平滑策略。
分別對檢測精度和檢測速度進(jìn)行評估,使用精確率P、召回率R和平均精度AP作為評估精度的指標(biāo),使用每秒幀數(shù)FPS作為評估速度的指標(biāo)。在對行人目標(biāo)進(jìn)行檢測的過程中,TP(表示被正確識別的行人數(shù)量,FP表示將背景預(yù)測為行人的圖片數(shù)量,FN表示將行人預(yù)測
為背景的圖片數(shù)量。計算公式如下:
(15)
(16)
(17)
式中:P(R)代表精確率與召回率的關(guān)系曲線;下標(biāo)IOU用來評價預(yù)測結(jié)果位置信息的準(zhǔn)確程度,代表檢測框與真實框之間的交并比。
為了更充分、合理地驗證本文算法的有效性,對改進(jìn)后的REM模塊、IFFM網(wǎng)絡(luò)和RM-block模塊這3部分進(jìn)行消融實驗。通過對測試集圖片進(jìn)行檢測,分別計算其AP0.5、P、R和FPS,實驗結(jié)果如表2所示。所提出的網(wǎng)絡(luò)與原網(wǎng)絡(luò)相比,整體精度提升了6.7%。其中REM模塊對檢測精度的提升貢獻(xiàn)最大,精度提升了4.1%;單獨(dú)引入淺層特征或使用RM-block模塊使精度分別提升了1.7%和3.0%。綜上,所改進(jìn)的3個模塊在保證實時性的前提下,均可有效提高檢測精度。
表2 檢測結(jié)果消融性分析Tab.2 Ablation analysis of test results
為進(jìn)一步驗證所提算法的有效性,基于VOC Person數(shù)據(jù)集,將所提算法與當(dāng)下用于行人檢測的主流算法(Faster R-CNN[10]、SSD[12]、YOLOv3[14,21]、TinyYOLOv7[22]、TinyYOLOv4[23])進(jìn)行比較,對比結(jié)果見表3??梢钥闯?所提算法的檢測精度最高,達(dá)到了78.6%。從整體上看,所提算法在檢測速率方面也具有很大優(yōu)勢,FPS高達(dá)84 幀/s,滿足實時檢測需求。
表3 各算法結(jié)果對比Tab.3 Comparison of results of various algorithms
為了直觀地展示改進(jìn)后的算法與表3中所列其它主流算法的行人檢測效果,在VOC Person測試集中篩選出4幅較難檢測的行人圖片進(jìn)行可視化,檢測結(jié)果對比如圖7所示。其中第1幅圖中存在較難檢測的行人小目標(biāo)和背景干擾,Faster R-CNN誤將白色障礙物檢測為行人,其它主流算法無法將小目標(biāo)有效地檢測出來,從圖中看出所提算法可以有效降低檢錯率和小目標(biāo)漏檢率。第2幅圖中由于行人分布密集使得檢測變得困難,Faster R-CNN等主流算法存在多處漏檢情況,本文算法能夠較好地提高密集場景下行人檢出率。第3、4幅圖中包含背景光照不一和人員遮擋等情況,從而導(dǎo)致較高的誤檢率和漏檢率,對比所提算法可以更準(zhǔn)確地將被遮擋的行人檢測出來。綜上,從圖片可視化角度可以直觀看出所提算法相較于表3其它主流算法有更好的檢測效果。
圖7 本文算法與其它主流算法檢測結(jié)果對比Fig.7 Comparison of detection results between this algorithm and other mainstream algorithms
本文針對當(dāng)前行人檢測領(lǐng)域存在的由于背景光照強(qiáng)度不一、人員密集和行人目標(biāo)尺度小而導(dǎo)致的檢測率低的問題,在TinyYOLOv4的基礎(chǔ)上,提出一種改進(jìn)主干特征提取網(wǎng)絡(luò)和特征融合網(wǎng)絡(luò)的輕量級行人檢測算法。首先通過在主干網(wǎng)絡(luò)中引入包含注意力機(jī)制的REM特征提取模塊聚焦行人特征同時抑制背景噪聲,提升網(wǎng)絡(luò)提取有效特征的能力。其次搭建新的特征融合網(wǎng)絡(luò)IFFM,通過引入淺層特征增加細(xì)節(jié)信息,實現(xiàn)對小目標(biāo)行人檢測精度的提升。最后使用改進(jìn)后的RM-block特征融合模塊,在對特征圖進(jìn)行融合的過程中給予行人特征更高的權(quán)重和關(guān)注度,融合得到更有效的行人特征。在VOC Person數(shù)據(jù)集上進(jìn)行實驗表明,所提出的算法相比于原算法和其它經(jīng)典算法均有一定的優(yōu)勢所在,準(zhǔn)確率、召回率和平均精度分別達(dá)到了87.5%、64.1%和78.6%,同時保持84 幀/s遠(yuǎn)超實時要求的30 幀/s。在接下來的工作中將繼續(xù)對精度的提升展開研究,在滿足實時檢測和輕量化的條件下,推動模型落地。