李挺, 伊力哈木·亞爾買買提
(新疆大學電氣工程學院, 烏魯木齊 830047)
隨著經濟的快速發展和科技的飛速提高,行人檢測在智能視頻監控領域應用非常廣泛,尤其在大型商場、城市街道、娛樂廣場等人群密集的場所,行人檢測技術與人流統計、人流跟蹤、人流疏導和安全預警工作息息相關。龔露鳴等[1]針對行人誤檢率問題提出一種基于方向梯度直方圖、混合高斯背景建模和支持向量機(support vector machines, SVM) 3種方法結合的行人檢測模型,采用前景分割、特征降維、信息更新等多種操作使誤檢率降低到4%。胡亞洲等[2]提出了一種高點行人檢測方法,將幀間差分法和背景建模結合在一起,這種方法應用于高點監控應用場景中使檢測精度得到了提升,同時也減少了誤檢。前人在檢測精度和誤檢率等方面做了很多研究,并且效果得到了一定的提升,但是多尺度和不同運動狀態的行人產生的檢測結果有很大的差異。深度學習大力發展的時代來臨,涌現了很多優秀的目標檢測算法,目前主要劃分為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]。姚萬業等[10]提出了一種改進Faster R-CNN 的行人檢測算法,以軟化非極大值抑制算法(soft non-maximum suppression,Soft-NMS)代替非極大值抑制算法(non-maximum suppression,NMS)、“Hot Anchors”代替原有的均勻采樣,提升了檢測速率和準確率。袁小平等[11]針對檢測效果不佳的問題,提出了一種改進YOLOv3的行人車輛檢測算法,用ResneXt代替Darknet-53中的殘差模塊,并且加入了密集連接,提高了行人檢測的準確率。
綜上所述,以上文獻在檢測精度和漏檢率等方面展開了研究,但是存在檢測速度慢,實時性差的問題。為此,對YOLOv4算法進行改進,將Mobilenetv2作為主干網絡,減少參數量,且加入Bottom-up連接,達到多尺度信息融合的目的;在特征融合網絡Neck中嵌入CBAM注意力,使特征表現更加突出;將Inceptionv2結構加入檢測網絡的最后一層中,增加網絡復雜度和減少計算量,以此實現更高的檢測精度和更好的實時性。
1.1.1 算法模型結構
YOLOv4是一種在YOLOv3算法的基礎上改進的單階段目標檢測算法,檢測性能比較優異。算法結構由主干特征提取網絡Backbone、特征融合網絡Neck、分類和回歸的檢測網絡 Head組成。經典的YOLOv3目標檢測算法,算法結構由主干特征提取網絡Darknet53、特征金字塔網絡FPN、檢測網絡YOLO-Head組成。算法主干特征提取網絡CSPDarknet53將Darknet53與CSPNet[12]結合,增加網絡寬度且保證檢測精度;特征融合網絡在YOLOv3算法中的特征金字塔網絡FPN的基礎上加入空間金字塔池化層SPPNet,形成特征融合網絡PANet[13],增加特征的豐富性。檢測網絡繼續使用YOLOv3的檢測網絡。YOLOv3和YOLOv4算法的網絡組成部分如表1所示。

表1 YOLOv3和YOLOv4網絡對比Table 1 Comparison of YOLOv3 and YOLOv4 networks
1.1.2 算法檢測流程
步驟1將輸入圖片通過主干網絡CSPDarkNet53中提取特征,在此過程中使用卷積核大小為3×3,步長為2的卷積層對輸入依次進行5次下采樣,形成3個有效特征層13×13、26×26、52×52。
步驟2將13×13的特征層通過空間金字塔池化網絡(spatial pyramid pooling networks,SPPnet)進行多尺度感受野的融合,并將融合后的13×13特征層與由主干網絡生成的26×26、52×52特征層一起通過特征融合網絡PANet把淺層具有充分的細節特征與深層具有豐富的語義特征融合,改善了小目標檢測效果差的問題,在此過程中共進行了兩次上采樣、兩次下采樣、多次卷積和拼接操作。
步驟3將經過特征融合網絡后獲得的特征層送入檢測網絡,利用分類和回歸將輸入圖片劃分為13×13、26×26、52×52的柵格圖,分別檢測大、中、小3種不同尺度的目標。每個網格負責預測3個邊界框,每一個邊界框預測目標的位置信息(含有預測框的中心坐標和寬高)和存在目標的置信度,若數據集中有k個類別,則最終輸出特征圖的通道數為3×(5+k)。由于研究行人檢測,只有行人類別,所以輸出特征圖的通道數為54。YOLOv4算法與雙階段目標檢測算法相比,YOLOv4算法不僅提升了檢測精度,還加快了檢測速度。
Mobilenetv2[14]是在Mobilenetv1的基礎上改進而來的,廣泛應用在移動端和嵌入式設備中。Mobilenetv2是一種用來減少參數量的輕量級網絡,不僅使用了深度可分離卷積,還運用了倒殘差塊,還能使網絡保持特征的提取能力。深度可分離卷積對于標準卷積而言,其先進行深度卷積,然后在進行標準卷積。
給定特征圖A,其維度為(DF,D′F,M),使用N個尺寸大小為(DK,D′K,M)的卷積核對特征圖A進行普通卷積,得到維度為(DF,D′F,N)的特征圖B,其中M為特征圖A的通道數,DF、D′F分別為特征圖的長度和寬度,DK、D′K分別為卷積核的長度和寬度,N為特征圖C的通道數,所需計算量為
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的通道數,N為特征圖C的通道數,所需計算量為
OS1=DKD′KMDFD′F+MNDFD′F
(2)
式(2)中:OS1為深度可分離卷積所需的計算量。
將OS1除以OS可得:深度可分離卷積相對于標準卷積在很大程度上減少了計算量。

(3)
Mobilenetv2中的倒殘差結構首先用1×1的卷積升維,增強了模型的表達能力;然后用3×3的深度可分離卷積提取特征,最后用1×1的卷積降維,使其與輸入特征圖通道數相同。倒殘差結構如圖1所示。

Input為輸入;Conv為普通卷積;ReLU6為激活函數;Dwise為深度卷積;Stride為步長;Linear為線性激活函數;Add為加權操作圖1 倒殘差模型結構Fig.1 Inverted residual model structure
圖1(a)為步長為1的倒殘差結構,一個分支是經過升維、提取特征、降維操作,另一個分支是殘差邊部分,輸入和輸出直接相連。圖1(b)為步長為2的倒殘差結構,只經過升維、提取特征、降維操作,而沒有殘差邊部分。
卷積模塊的注意力機制模塊(convolirtional block attention module, CBAM)[15]模塊融合了通道和空間注意力,首先在通道和空間兩個維度上對特征圖分配注意力權重,然后將注意力權重和原特征圖相乘,這樣使神經網絡在學習特征的時候更加關注重要像素區域而忽略無關緊要的區域。CBAM模塊的總體結構如圖2所示。可以看出,通道注意力過程為:輸入特征圖為F,首先從空間維度上分別進行一次全局平均池化和最大池化,得到兩個通道描述子;然后將這兩個通道描述子傳入一個共享神經網絡中,再將生成的兩個特征圖相加后通過sigmoid激活函數得到權重系數MC;最后將F和MC相乘得到新特征圖F1,可表示為
F1=MC(F)?F
(4)
式(4)中:MC(F)為特征圖F通過通道注意力后生成的權重;F1為F通過通道注意力加權后的新特征圖;?表示對應元素相乘。

圖2 CBAM模塊總體結構Fig.2 Overall structure of CBAM module
由圖2所示,空間注意力過程為:首先將經過通道注意力生成特征圖F1從通道維度上分別進行一次全局平均池化和最大池化,得到兩個空間描述子;然后把這兩個空間描述子按通道拼接后經過一個7×7的卷積層,再由sigmoid激活函數得到權重系數MS;最后將F1和MS相乘得到新特征圖F2,可表示為
F2=MS(F1)?F1
(5)
式(5)中:MS(F)為F1通過空間注意力后生成的權重;F2為F1通過空間注意力加權后的新特征圖;?表示對應元素相乘。
Inceptionv2[16]模型的核心思想是先運用多種不同尺度的卷積核在特征圖上進行卷積,然后再把得到的結果按照通道進行拼接融合。在使用多種不同尺度的卷積之前,運用了1×1的卷積減少特征圖的通道數,從而減少參數量。多種不同尺度的卷積可以使得到的特征信息越來越豐富。Inceptionv2模型還有一個最大的特點:將一個特定的卷積可以使用多個寬和高不一的卷積替代,這樣使得網絡結構更加復雜,計算量變得更少,Inceptionv2網絡結構如圖3所示。

Maxpool為最大池化;Concat為按通道拼接圖3 Inceptionv2網絡結構Fig.3 Inceptionv2 network structure
由于YOLOv4算法采用CSPDarknet53作為主干網絡,雖然能提取有效的特征信息,但是網絡結構相當復雜,造成參數量過大,在實用性上很不理想。所以本文將Mobilenetv2作為YOLOv4算法中的主干網絡,可以在保證其精度的同時減少參數量,形成YOLOv4-Mobilenetv2算法。YOLOv4-Mobilenetv2算法通過Mobileetv2提取到3個有效特征層,分別為52×52、26×26、13×13。由于在提取特征的過程中,13×13的特征圖中的細節信息逐漸丟失,因此在52×52的特征上使用卷積核大小為3×3,步長為4的卷積進行下采樣后與13×13的特征圖進行融合,形成Bottom-up連接。
YOLOv4算法的特征融合網絡位于主干網絡之后,將主干網絡提取得到的3個有效的特征層進行進一步的卷積融合,得到更具有代表性的特征。在此過程中,由于特征在特征圖通道和空間兩個維度上表現力是一樣的,造成了提取到的特征冗余,使模型的識別效果變差。所以在YOLOv4的特征融合網絡拼接后的5次卷積中加入CBAM注意力機制,構建CBC模塊。這樣能使網絡在訓練過程中關注更加重要的特征,忽略冗余的特征,提升檢測精度,CBC模塊如圖4所示。

Conv2D為普通卷積;BN為歸一化處理;Leaky ReLU為激活函數;Conv2D-BN-Leaky ReLU表示先進行普通卷積,再經過歸一化處理,最后通過激活函數輸出;CBAM為注意力機制模塊圖4 CBC模塊Fig.4 CBC module
由于YOLOv4算法的檢測網絡只使用3×3的卷積核對特征圖進行特征整合,這使整合的特征信息較弱,且整合過程需要的參數量較大,若將1×3和3×1的一維卷積替換3×3卷積,可增加模型的非線性表達,同時也可減少參數量。借鑒Inceptionv2模型結構,將YOLOv4算法最后一層中的3×3卷積改為Inception3×3結構,構建成ICP模塊:首先使用3個并行1×1的卷積減少通道數,然后將原來的3×3卷積換為1×3的卷積和3×1的卷積,再將其加在其中一個1×1卷積后,最后進行融合,這樣在減少參數量的同時加深網絡的深度,提高網絡的性能,Inception3×3結構如圖5所示。由改進點可得改進算法的總網絡結構(圖6)。

Con2D為二維普通卷積圖5 Inception3×3結構Fig.5 Inception3×3 structure
實驗在Win10操作系統上完成的。在CPU為i5 9300;內存為16 G、GPU為GTX 1660T的訓練環境下進行訓練,再將訓練好模型在CPU為i7 10750;內存為12 G;GPU為RTX 2060的環境下進行測試。實驗使用的框架為Pytorch,同時采用了很多第三方庫保證代碼的正常運行。
本實驗所選擇的數據集為PASCAL VOC數據集,使用VOC2007 trainvalid與VOC2012 trainvalid數據集進行訓練,在VOC2007 test數據集上進行測試。主要研究行人檢測,因此將總訓練數據經過數據清洗,只保留Person類,得到訓練數據6 182張,測試數據共2 097張。
本實驗利用K-means算法對訓練數據集進行聚類分析,得到適應于數據集的候選框尺寸,其避免了手動選取的候選框過于主觀,不具客觀性和代表性。本實驗選取k=9時產生的Anchor box(k為Anchor的個數),在保證預測結果的精度同時防止選取過多的Anchor box帶來巨大的計算量,選取的Anchor box尺寸如表2所示。

Conv2D-BN-ReLU6表示先進行二維普通卷積,再經過歸一化處理,最后由ReLU6激活函數激活輸出;Inverted residual為倒殘差結構;Conv2D為二維普通卷積;S為步長;CBC為加入CBAM注意力機制的模塊;UpSampling為上采樣;DownSampling為下采樣;Inception3×3表示加入Inceptionv2的模塊;Mobilenetv2為輕量級主干網絡;Bottom-up為加權連接;SPP為空間金字塔層;PANet為特征融合網絡;YOLO Head為檢測頭圖6 改進算法的網絡結構Fig.6 The network structure of the improved algorithm

表2 聚類生成的候選框尺寸Table 2 Candidate frame size generated by clustering
訓練模型時,將圖片設置為416×416,最初始的學習率設置為0.001,經過30個epoch訓練后,再將學習率縮小10倍。優化器為Adam,Batchsize設置為16,采用學習率余弦退火衰減、Mosaic數據增強和標簽平滑技巧輔助訓練,訓練過程中損失變化如圖7所示。可以看出,前400個epoch,總的損失和驗證損失下降得比較明顯,從400個epoch開始,loss曲線慢慢趨于穩定,到825個epoch模型已經完全收斂了。
采用目標檢測中常用的評價指標,利用準確率平均精確率AP、模型大小Model Size以及每秒檢測幀數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為檢測正確的目標數;FP為檢測錯誤的目標數;FN為漏檢的目標數;P為準確率;R為召回率。
為了驗證算法的有效性,實驗在VOC測試集上進行測試,并參考式(6)~式(8)可得到本文算法和其他對比算法的AP值,結果如表3所示。

表3 網絡模型在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作為主干網絡,采用兩個尺度的特征層進行分類與回歸,精度僅獲得68.81%,比YOLOv4算法降低了12.25%;本文算法由于使用CBAM注意力機制和Bottom-up連接,同時還采用Inceptionv2優化結構,AP為83.93%,較與YOLOv4算法提高了2.87%,具有更好的檢測精度。
3.5.2 模型大小和FPS對比
實驗采用權重大小和FPS對4種目標檢測模型進行評估,其中模型權重越小,所需的參數量就越小;FPS是描述模型檢測速率的指標,表示每秒鐘處理的圖片幀數。評估的結果如表4所示。
可以看出,YOLOv3、YOLOv4算法采用了Darknet-53、CSPDarknet-53結構導致了模型參數量較大,模型大小都達到了200 MB以上,占用系統較大的內存;YOLOv4-Tiny算法減輕了YOLOv4算法的網絡結構,模型大小比YOLOv4縮小91%;本文算法采用Mobilenetv2的網絡結構作為網絡結構,并采用Inceptionv2減少參數總量,使模型大小較與YOLOv4縮小81%。就處理圖片速度而言,YOLOv3算法最差為每秒18.38幀,YOLOv4算法每秒鐘處理29.15幀,本文算法處理速度為每秒58.67幀,雖然不如YOLOv4-Tiny算法的每秒70.91幀,但是與相比YOLOv4算法每秒提升了29.52幀,有更好的實時性,更易于移植到移動端平臺上。

表4 網絡模型大小和FPS對比Table 4 Comparison of network model size and FPS
3.5.3 算法改進前后檢測結果對比
將訓練好的YOLOv4和本文模型權重在VOC測試集上進行檢測,可得到部分檢測結果如圖8所示。可以看出,YOLOv4算法出現漏檢,而改進算法檢測出YOLOv4算法沒有檢測到的目標,具有更好的檢測性能。
綜合以上對比實驗,本文算法在平均精確率AP、模型大小和處理速度FPS上均有不錯的效果,改進的算法比原算法檢測效果更佳,實時性更好。

圖8 改進模型在VOC測試集上的檢測結果對比Fig.8 Comparison of the detection results of the improved model on the VOC test set
為了驗證本文算法的泛化能力,從新疆大學校園籃球場、足球場、2號教學樓采集500張行人圖片,使用Labelimg對圖片進行標注,轉化為檢測所需的VOC格式,形成真實場景下的測試數據集。調用VOC訓練集上訓練好的權重對真實場景下構建的測試數據進行測試,可得到不同算法的AP對比,如表5所示。
從表5可知,改進的算法比原始算法在真實場景下表現得更好,其精度提升了2.13%,且與其他對比算法有更好的檢測性能。改進算法和YOLOv4在真實場景下的檢測結果如圖9所示。

表5 網絡模型在真實場景下構建的測試集上AP值Table 5 AP values on the test set constructed by the network model in real scenarios

圖9 改進模型在真實場景下的檢測結果對比Fig.9 Comparison of the detection results of the improved model in the real scene
(1)本文算法將CSPDarknet53替換為Mobilenetv2替換,在保證其特征提取能力同時提高了檢測速度,同時在Mobilenetv2中加入Bottom-up連接,加強了多尺度特征圖的信息融合;將CBAM模塊加入特征融合網絡,增加特征的表現力;在檢測網絡最后一層加入Inceptionv2結構,進一步減少計算量和增加網絡復雜度。本文算法比原始算法擁有更好的實時性和檢測精度。
(2)在進一步的研究中,將在豐富數據集的多樣性的同時優化所提行人檢測模型,使其更好地完成行人檢測任務,更高效地應用在行人計數、行人跟蹤中。