李挺, 伊力哈木·亞爾買買提
(新疆大學電氣工程學院, 烏魯木齊 830047)
隨著經(jīng)濟的快速發(fā)展和科技的飛速提高,行人檢測在智能視頻監(jiān)控領(lǐng)域應(yīng)用非常廣泛,尤其在大型商場、城市街道、娛樂廣場等人群密集的場所,行人檢測技術(shù)與人流統(tǒng)計、人流跟蹤、人流疏導和安全預(yù)警工作息息相關(guān)。龔露鳴等[1]針對行人誤檢率問題提出一種基于方向梯度直方圖、混合高斯背景建模和支持向量機(support vector machines, SVM) 3種方法結(jié)合的行人檢測模型,采用前景分割、特征降維、信息更新等多種操作使誤檢率降低到4%。胡亞洲等[2]提出了一種高點行人檢測方法,將幀間差分法和背景建模結(jié)合在一起,這種方法應(yīng)用于高點監(jiān)控應(yīng)用場景中使檢測精度得到了提升,同時也減少了誤檢。前人在檢測精度和誤檢率等方面做了很多研究,并且效果得到了一定的提升,但是多尺度和不同運動狀態(tài)的行人產(chǎn)生的檢測結(jié)果有很大的差異。深度學習大力發(fā)展的時代來臨,涌現(xiàn)了很多優(yōu)秀的目標檢測算法,目前主要劃分為2類,一類是兩階段的目標檢測算法,主要有R-CNN(regions with convolutional neural network features)、Fast RCNN[3](fast regions with convolutional neural network features)、Faster RCNN[4](fast Regions with CNN features),另一類是單階段的目標檢測算法,主要有YOLO(you only look once)、SSD(single shot multibox detector)[5]、YOLOv2(you only look once version2)[6-7]、YOLOv3(you only look once version3)[8]和YOLOv4(you only look once version4)[9]。姚萬業(yè)等[10]提出了一種改進Faster R-CNN 的行人檢測算法,以軟化非極大值抑制算法(soft non-maximum suppression,Soft-NMS)代替非極大值抑制算法(non-maximum suppression,NMS)、“Hot Anchors”代替原有的均勻采樣,提升了檢測速率和準確率。袁小平等[11]針對檢測效果不佳的問題,提出了一種改進YOLOv3的行人車輛檢測算法,用ResneXt代替Darknet-53中的殘差模塊,并且加入了密集連接,提高了行人檢測的準確率。
綜上所述,以上文獻在檢測精度和漏檢率等方面展開了研究,但是存在檢測速度慢,實時性差的問題。為此,對YOLOv4算法進行改進,將Mobilenetv2作為主干網(wǎng)絡(luò),減少參數(shù)量,且加入Bottom-up連接,達到多尺度信息融合的目的;在特征融合網(wǎng)絡(luò)Neck中嵌入CBAM注意力,使特征表現(xiàn)更加突出;將Inceptionv2結(jié)構(gòu)加入檢測網(wǎng)絡(luò)的最后一層中,增加網(wǎng)絡(luò)復(fù)雜度和減少計算量,以此實現(xiàn)更高的檢測精度和更好的實時性。
1.1.1 算法模型結(jié)構(gòu)
YOLOv4是一種在YOLOv3算法的基礎(chǔ)上改進的單階段目標檢測算法,檢測性能比較優(yōu)異。算法結(jié)構(gòu)由主干特征提取網(wǎng)絡(luò)Backbone、特征融合網(wǎng)絡(luò)Neck、分類和回歸的檢測網(wǎng)絡(luò) Head組成。經(jīng)典的YOLOv3目標檢測算法,算法結(jié)構(gòu)由主干特征提取網(wǎng)絡(luò)Darknet53、特征金字塔網(wǎng)絡(luò)FPN、檢測網(wǎng)絡(luò)YOLO-Head組成。算法主干特征提取網(wǎng)絡(luò)CSPDarknet53將Darknet53與CSPNet[12]結(jié)合,增加網(wǎng)絡(luò)寬度且保證檢測精度;特征融合網(wǎng)絡(luò)在YOLOv3算法中的特征金字塔網(wǎng)絡(luò)FPN的基礎(chǔ)上加入空間金字塔池化層SPPNet,形成特征融合網(wǎng)絡(luò)PANet[13],增加特征的豐富性。檢測網(wǎng)絡(luò)繼續(xù)使用YOLOv3的檢測網(wǎng)絡(luò)。YOLOv3和YOLOv4算法的網(wǎng)絡(luò)組成部分如表1所示。
表1 YOLOv3和YOLOv4網(wǎng)絡(luò)對比Table 1 Comparison of YOLOv3 and YOLOv4 networks
1.1.2 算法檢測流程
步驟1將輸入圖片通過主干網(wǎng)絡(luò)CSPDarkNet53中提取特征,在此過程中使用卷積核大小為3×3,步長為2的卷積層對輸入依次進行5次下采樣,形成3個有效特征層13×13、26×26、52×52。
步驟2將13×13的特征層通過空間金字塔池化網(wǎng)絡(luò)(spatial pyramid pooling networks,SPPnet)進行多尺度感受野的融合,并將融合后的13×13特征層與由主干網(wǎng)絡(luò)生成的26×26、52×52特征層一起通過特征融合網(wǎng)絡(luò)PANet把淺層具有充分的細節(jié)特征與深層具有豐富的語義特征融合,改善了小目標檢測效果差的問題,在此過程中共進行了兩次上采樣、兩次下采樣、多次卷積和拼接操作。
步驟3將經(jīng)過特征融合網(wǎng)絡(luò)后獲得的特征層送入檢測網(wǎng)絡(luò),利用分類和回歸將輸入圖片劃分為13×13、26×26、52×52的柵格圖,分別檢測大、中、小3種不同尺度的目標。每個網(wǎng)格負責預(yù)測3個邊界框,每一個邊界框預(yù)測目標的位置信息(含有預(yù)測框的中心坐標和寬高)和存在目標的置信度,若數(shù)據(jù)集中有k個類別,則最終輸出特征圖的通道數(shù)為3×(5+k)。由于研究行人檢測,只有行人類別,所以輸出特征圖的通道數(shù)為54。YOLOv4算法與雙階段目標檢測算法相比,YOLOv4算法不僅提升了檢測精度,還加快了檢測速度。
Mobilenetv2[14]是在Mobilenetv1的基礎(chǔ)上改進而來的,廣泛應(yīng)用在移動端和嵌入式設(shè)備中。Mobilenetv2是一種用來減少參數(shù)量的輕量級網(wǎng)絡(luò),不僅使用了深度可分離卷積,還運用了倒殘差塊,還能使網(wǎng)絡(luò)保持特征的提取能力。深度可分離卷積對于標準卷積而言,其先進行深度卷積,然后在進行標準卷積。
給定特征圖A,其維度為(DF,D′F,M),使用N個尺寸大小為(DK,D′K,M)的卷積核對特征圖A進行普通卷積,得到維度為(DF,D′F,N)的特征圖B,其中M為特征圖A的通道數(shù),DF、D′F分別為特征圖的長度和寬度,DK、D′K分別為卷積核的長度和寬度,N為特征圖C的通道數(shù),所需計算量為
OS=DKD′KMNDFD′F
(1)
式(1)中:OS為普通卷積所需的計算量。
給定特征圖A,其維度為(DF,D′F,M),使用M個尺寸大小為(DK,D′K,1)對特征圖A進行深度卷積,得到特征圖B,B的尺寸大小為(DF,D′F,M);然后使用N個1×1的卷積核對B進行普通卷積,得到維度為(DF,D′F,N)特征圖C,其中M為特征圖A的通道數(shù),N為特征圖C的通道數(shù),所需計算量為
OS1=DKD′KMDFD′F+MNDFD′F
(2)
式(2)中:OS1為深度可分離卷積所需的計算量。
將OS1除以O(shè)S可得:深度可分離卷積相對于標準卷積在很大程度上減少了計算量。
(3)
Mobilenetv2中的倒殘差結(jié)構(gòu)首先用1×1的卷積升維,增強了模型的表達能力;然后用3×3的深度可分離卷積提取特征,最后用1×1的卷積降維,使其與輸入特征圖通道數(shù)相同。倒殘差結(jié)構(gòu)如圖1所示。
Input為輸入;Conv為普通卷積;ReLU6為激活函數(shù);Dwise為深度卷積;Stride為步長;Linear為線性激活函數(shù);Add為加權(quán)操作圖1 倒殘差模型結(jié)構(gòu)Fig.1 Inverted residual model structure
圖1(a)為步長為1的倒殘差結(jié)構(gòu),一個分支是經(jīng)過升維、提取特征、降維操作,另一個分支是殘差邊部分,輸入和輸出直接相連。圖1(b)為步長為2的倒殘差結(jié)構(gòu),只經(jīng)過升維、提取特征、降維操作,而沒有殘差邊部分。
卷積模塊的注意力機制模塊(convolirtional block attention module, CBAM)[15]模塊融合了通道和空間注意力,首先在通道和空間兩個維度上對特征圖分配注意力權(quán)重,然后將注意力權(quán)重和原特征圖相乘,這樣使神經(jīng)網(wǎng)絡(luò)在學習特征的時候更加關(guān)注重要像素區(qū)域而忽略無關(guān)緊要的區(qū)域。CBAM模塊的總體結(jié)構(gòu)如圖2所示。可以看出,通道注意力過程為:輸入特征圖為F,首先從空間維度上分別進行一次全局平均池化和最大池化,得到兩個通道描述子;然后將這兩個通道描述子傳入一個共享神經(jīng)網(wǎng)絡(luò)中,再將生成的兩個特征圖相加后通過sigmoid激活函數(shù)得到權(quán)重系數(shù)MC;最后將F和MC相乘得到新特征圖F1,可表示為
F1=MC(F)?F
(4)
式(4)中:MC(F)為特征圖F通過通道注意力后生成的權(quán)重;F1為F通過通道注意力加權(quán)后的新特征圖;?表示對應(yīng)元素相乘。
圖2 CBAM模塊總體結(jié)構(gòu)Fig.2 Overall structure of CBAM module
由圖2所示,空間注意力過程為:首先將經(jīng)過通道注意力生成特征圖F1從通道維度上分別進行一次全局平均池化和最大池化,得到兩個空間描述子;然后把這兩個空間描述子按通道拼接后經(jīng)過一個7×7的卷積層,再由sigmoid激活函數(shù)得到權(quán)重系數(shù)MS;最后將F1和MS相乘得到新特征圖F2,可表示為
F2=MS(F1)?F1
(5)
式(5)中:MS(F)為F1通過空間注意力后生成的權(quán)重;F2為F1通過空間注意力加權(quán)后的新特征圖;?表示對應(yīng)元素相乘。
Inceptionv2[16]模型的核心思想是先運用多種不同尺度的卷積核在特征圖上進行卷積,然后再把得到的結(jié)果按照通道進行拼接融合。在使用多種不同尺度的卷積之前,運用了1×1的卷積減少特征圖的通道數(shù),從而減少參數(shù)量。多種不同尺度的卷積可以使得到的特征信息越來越豐富。Inceptionv2模型還有一個最大的特點:將一個特定的卷積可以使用多個寬和高不一的卷積替代,這樣使得網(wǎng)絡(luò)結(jié)構(gòu)更加復(fù)雜,計算量變得更少,Inceptionv2網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
Maxpool為最大池化;Concat為按通道拼接圖3 Inceptionv2網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Inceptionv2 network structure
由于YOLOv4算法采用CSPDarknet53作為主干網(wǎng)絡(luò),雖然能提取有效的特征信息,但是網(wǎng)絡(luò)結(jié)構(gòu)相當復(fù)雜,造成參數(shù)量過大,在實用性上很不理想。所以本文將Mobilenetv2作為YOLOv4算法中的主干網(wǎng)絡(luò),可以在保證其精度的同時減少參數(shù)量,形成YOLOv4-Mobilenetv2算法。YOLOv4-Mobilenetv2算法通過Mobileetv2提取到3個有效特征層,分別為52×52、26×26、13×13。由于在提取特征的過程中,13×13的特征圖中的細節(jié)信息逐漸丟失,因此在52×52的特征上使用卷積核大小為3×3,步長為4的卷積進行下采樣后與13×13的特征圖進行融合,形成Bottom-up連接。
YOLOv4算法的特征融合網(wǎng)絡(luò)位于主干網(wǎng)絡(luò)之后,將主干網(wǎng)絡(luò)提取得到的3個有效的特征層進行進一步的卷積融合,得到更具有代表性的特征。在此過程中,由于特征在特征圖通道和空間兩個維度上表現(xiàn)力是一樣的,造成了提取到的特征冗余,使模型的識別效果變差。所以在YOLOv4的特征融合網(wǎng)絡(luò)拼接后的5次卷積中加入CBAM注意力機制,構(gòu)建CBC模塊。這樣能使網(wǎng)絡(luò)在訓練過程中關(guān)注更加重要的特征,忽略冗余的特征,提升檢測精度,CBC模塊如圖4所示。
Conv2D為普通卷積;BN為歸一化處理;Leaky ReLU為激活函數(shù);Conv2D-BN-Leaky ReLU表示先進行普通卷積,再經(jīng)過歸一化處理,最后通過激活函數(shù)輸出;CBAM為注意力機制模塊圖4 CBC模塊Fig.4 CBC module
由于YOLOv4算法的檢測網(wǎng)絡(luò)只使用3×3的卷積核對特征圖進行特征整合,這使整合的特征信息較弱,且整合過程需要的參數(shù)量較大,若將1×3和3×1的一維卷積替換3×3卷積,可增加模型的非線性表達,同時也可減少參數(shù)量。借鑒Inceptionv2模型結(jié)構(gòu),將YOLOv4算法最后一層中的3×3卷積改為Inception3×3結(jié)構(gòu),構(gòu)建成ICP模塊:首先使用3個并行1×1的卷積減少通道數(shù),然后將原來的3×3卷積換為1×3的卷積和3×1的卷積,再將其加在其中一個1×1卷積后,最后進行融合,這樣在減少參數(shù)量的同時加深網(wǎng)絡(luò)的深度,提高網(wǎng)絡(luò)的性能,Inception3×3結(jié)構(gòu)如圖5所示。由改進點可得改進算法的總網(wǎng)絡(luò)結(jié)構(gòu)(圖6)。
Con2D為二維普通卷積圖5 Inception3×3結(jié)構(gòu)Fig.5 Inception3×3 structure
實驗在Win10操作系統(tǒng)上完成的。在CPU為i5 9300;內(nèi)存為16 G、GPU為GTX 1660T的訓練環(huán)境下進行訓練,再將訓練好模型在CPU為i7 10750;內(nèi)存為12 G;GPU為RTX 2060的環(huán)境下進行測試。實驗使用的框架為Pytorch,同時采用了很多第三方庫保證代碼的正常運行。
本實驗所選擇的數(shù)據(jù)集為PASCAL VOC數(shù)據(jù)集,使用VOC2007 trainvalid與VOC2012 trainvalid數(shù)據(jù)集進行訓練,在VOC2007 test數(shù)據(jù)集上進行測試。主要研究行人檢測,因此將總訓練數(shù)據(jù)經(jīng)過數(shù)據(jù)清洗,只保留Person類,得到訓練數(shù)據(jù)6 182張,測試數(shù)據(jù)共2 097張。
本實驗利用K-means算法對訓練數(shù)據(jù)集進行聚類分析,得到適應(yīng)于數(shù)據(jù)集的候選框尺寸,其避免了手動選取的候選框過于主觀,不具客觀性和代表性。本實驗選取k=9時產(chǎn)生的Anchor box(k為Anchor的個數(shù)),在保證預(yù)測結(jié)果的精度同時防止選取過多的Anchor box帶來巨大的計算量,選取的Anchor box尺寸如表2所示。
Conv2D-BN-ReLU6表示先進行二維普通卷積,再經(jīng)過歸一化處理,最后由ReLU6激活函數(shù)激活輸出;Inverted residual為倒殘差結(jié)構(gòu);Conv2D為二維普通卷積;S為步長;CBC為加入CBAM注意力機制的模塊;UpSampling為上采樣;DownSampling為下采樣;Inception3×3表示加入Inceptionv2的模塊;Mobilenetv2為輕量級主干網(wǎng)絡(luò);Bottom-up為加權(quán)連接;SPP為空間金字塔層;PANet為特征融合網(wǎng)絡(luò);YOLO Head為檢測頭圖6 改進算法的網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 The network structure of the improved algorithm
表2 聚類生成的候選框尺寸Table 2 Candidate frame size generated by clustering
訓練模型時,將圖片設(shè)置為416×416,最初始的學習率設(shè)置為0.001,經(jīng)過30個epoch訓練后,再將學習率縮小10倍。優(yōu)化器為Adam,Batchsize設(shè)置為16,采用學習率余弦退火衰減、Mosaic數(shù)據(jù)增強和標簽平滑技巧輔助訓練,訓練過程中損失變化如圖7所示??梢钥闯?,前400個epoch,總的損失和驗證損失下降得比較明顯,從400個epoch開始,loss曲線慢慢趨于穩(wěn)定,到825個epoch模型已經(jīng)完全收斂了。
采用目標檢測中常用的評價指標,利用準確率平均精確率AP、模型大小Model Size以及每秒檢測幀數(shù)FPS性能指標對目標檢測模型進行評估,并將本文算法與YOLOv3、YOLOv4-Tiny、YOLOv4進行對比。
Total_loss為總的損失;Val_loss為驗證損失圖7 本算法訓練情況Fig.7 Training situation of this algorithm
3.5.1 AP對比
實驗利用準確率P、召回率R計算出平均精確率AP對目標檢測模型進行評估。精確度計算公式為
(6)
(7)
(8)
式中:TP為檢測正確的目標數(shù);FP為檢測錯誤的目標數(shù);FN為漏檢的目標數(shù);P為準確率;R為召回率。
為了驗證算法的有效性,實驗在VOC測試集上進行測試,并參考式(6)~式(8)可得到本文算法和其他對比算法的AP值,結(jié)果如表3所示。
表3 網(wǎng)絡(luò)模型在VOC測試集上AP值Table 3 AP value of the network model on the VOC test set
可以看出,YOLOv3算法精度為71.04%,比本文算法低12.98%;YOLOv4算法的精度為81.06%;YOLOv4-Tiny算法是YOLOv4算法的簡化版,使用CSPDarknet53-Tiny作為主干網(wǎng)絡(luò),采用兩個尺度的特征層進行分類與回歸,精度僅獲得68.81%,比YOLOv4算法降低了12.25%;本文算法由于使用CBAM注意力機制和Bottom-up連接,同時還采用Inceptionv2優(yōu)化結(jié)構(gòu),AP為83.93%,較與YOLOv4算法提高了2.87%,具有更好的檢測精度。
3.5.2 模型大小和FPS對比
實驗采用權(quán)重大小和FPS對4種目標檢測模型進行評估,其中模型權(quán)重越小,所需的參數(shù)量就越?。籉PS是描述模型檢測速率的指標,表示每秒鐘處理的圖片幀數(shù)。評估的結(jié)果如表4所示。
可以看出,YOLOv3、YOLOv4算法采用了Darknet-53、CSPDarknet-53結(jié)構(gòu)導致了模型參數(shù)量較大,模型大小都達到了200 MB以上,占用系統(tǒng)較大的內(nèi)存;YOLOv4-Tiny算法減輕了YOLOv4算法的網(wǎng)絡(luò)結(jié)構(gòu),模型大小比YOLOv4縮小91%;本文算法采用Mobilenetv2的網(wǎng)絡(luò)結(jié)構(gòu)作為網(wǎng)絡(luò)結(jié)構(gòu),并采用Inceptionv2減少參數(shù)總量,使模型大小較與YOLOv4縮小81%。就處理圖片速度而言,YOLOv3算法最差為每秒18.38幀,YOLOv4算法每秒鐘處理29.15幀,本文算法處理速度為每秒58.67幀,雖然不如YOLOv4-Tiny算法的每秒70.91幀,但是與相比YOLOv4算法每秒提升了29.52幀,有更好的實時性,更易于移植到移動端平臺上。
表4 網(wǎng)絡(luò)模型大小和FPS對比Table 4 Comparison of network model size and FPS
3.5.3 算法改進前后檢測結(jié)果對比
將訓練好的YOLOv4和本文模型權(quán)重在VOC測試集上進行檢測,可得到部分檢測結(jié)果如圖8所示??梢钥闯觯琘OLOv4算法出現(xiàn)漏檢,而改進算法檢測出YOLOv4算法沒有檢測到的目標,具有更好的檢測性能。
綜合以上對比實驗,本文算法在平均精確率AP、模型大小和處理速度FPS上均有不錯的效果,改進的算法比原算法檢測效果更佳,實時性更好。
圖8 改進模型在VOC測試集上的檢測結(jié)果對比Fig.8 Comparison of the detection results of the improved model on the VOC test set
為了驗證本文算法的泛化能力,從新疆大學校園籃球場、足球場、2號教學樓采集500張行人圖片,使用Labelimg對圖片進行標注,轉(zhuǎn)化為檢測所需的VOC格式,形成真實場景下的測試數(shù)據(jù)集。調(diào)用VOC訓練集上訓練好的權(quán)重對真實場景下構(gòu)建的測試數(shù)據(jù)進行測試,可得到不同算法的AP對比,如表5所示。
從表5可知,改進的算法比原始算法在真實場景下表現(xiàn)得更好,其精度提升了2.13%,且與其他對比算法有更好的檢測性能。改進算法和YOLOv4在真實場景下的檢測結(jié)果如圖9所示。
表5 網(wǎng)絡(luò)模型在真實場景下構(gòu)建的測試集上AP值Table 5 AP values on the test set constructed by the network model in real scenarios
圖9 改進模型在真實場景下的檢測結(jié)果對比Fig.9 Comparison of the detection results of the improved model in the real scene
(1)本文算法將CSPDarknet53替換為Mobilenetv2替換,在保證其特征提取能力同時提高了檢測速度,同時在Mobilenetv2中加入Bottom-up連接,加強了多尺度特征圖的信息融合;將CBAM模塊加入特征融合網(wǎng)絡(luò),增加特征的表現(xiàn)力;在檢測網(wǎng)絡(luò)最后一層加入Inceptionv2結(jié)構(gòu),進一步減少計算量和增加網(wǎng)絡(luò)復(fù)雜度。本文算法比原始算法擁有更好的實時性和檢測精度。
(2)在進一步的研究中,將在豐富數(shù)據(jù)集的多樣性的同時優(yōu)化所提行人檢測模型,使其更好地完成行人檢測任務(wù),更高效地應(yīng)用在行人計數(shù)、行人跟蹤中。