陳一瀟,阿里甫·庫爾班,林文龍,袁 旭
新疆大學 軟件學院,烏魯木齊830046
隨著我國在經(jīng)濟、教育、醫(yī)療等領域的不斷發(fā)展,以及城鎮(zhèn)化進程的加速,我國總人口達到了14.117 8 億人,其中城鎮(zhèn)人口為9.019 9 億人,相較于2010 年,城鎮(zhèn)人口增加了2.364 2 億人,城鎮(zhèn)人口密集程度急劇上升[1]。而高擁擠人群極易發(fā)生各種意外事故,這對于城市公共安全、城市人流量監(jiān)控提出了巨大挑戰(zhàn)。因此,提出一種漏檢率低的、高精度的、可用于擁擠人群場景的行人目標檢測算法具有重要意義。
行人檢測通常由于場景復雜、目標眾多、大部分目標互相遮擋,以及攝像頭距離目標較遠等問題具有挑戰(zhàn)性,使得國內外學者對其進行深入研究。文獻[2]提出利用Gabor 特征結合快速HOG 特征的方法訓練分類器對行人進行識別。文獻[3]根據(jù)行人非剛性的特點,通過三線性插值法獲取圖像的梯度方向直方圖特征,而后使用支持向量機(support vector machine,SVM)對行人進行識別。Tang 等[4]通過可形變部件模型(deformable part model,DPM)設計行人檢測器,檢測粘連情況嚴重的行人。但傳統(tǒng)的圖像處理算法泛化能力差,手工設計的特征對于環(huán)境變化魯棒性差。
目前,基于深度學習的目標檢測根據(jù)檢測的方式可以分為兩類,一類是基于Region Proposal的two-stage的目標檢測算法,首先根據(jù)算法生成目標預選框,即可能包含檢測目標的區(qū)域,再通過CNN 網(wǎng)絡層對這塊區(qū)域進行分類與回歸得到檢測框。其中包括R-CNN[5]、Fast R-CNN[6]、Faster R-CNN[7]、SPP Net[8]等。雖然two-stage的目標檢測算法具有更高的檢測精度,但是訓練網(wǎng)絡以及檢測圖片的速度不夠快。另一類算法是不需要Region Proposal階段的one-stage的檢測算法,可以直接生成被檢測物體的預測分類概率以及預測坐標值,只需要一次檢測即可得到結果,因而有著相對于two-stage更快的訓練速度和檢測速度。其中經(jīng)典的算法有YOLO系列算法[9-12]、SSDNet[13]、FCOS[14],這些網(wǎng)絡因有著輕量的參數(shù)以及計算量,通常有著高檢測速度,可用于實時檢測?,F(xiàn)在,許多學者將深度學習應用于行人檢測。文獻[15]通過簡化YOLOv3的主干網(wǎng)絡、改進特征融合結構,提高行人檢測精度與速率。文獻[16]通過改進Faster R-CNN算法進行近紅外夜間圖像的行人檢測。文獻[17]使用K-mean++算法選定YOLOv3 先驗框,并改進主干網(wǎng)絡的結構提取更多行人尺度特征信息,以此實現(xiàn)對行人的檢測。上述算法對行人檢測領域做出了一定的貢獻,但在精度和檢測速度上仍有進步空間。
綜上,考慮應用終端的計算力,本文以YOLOv5 為基礎進行改進,提出CA-YOLOv5的輕量卷積神經(jīng)網(wǎng)絡模型,對擁擠人群場景的圖像進行處理,采用Res2Block與CA模塊重新設計主干網(wǎng)絡,通過結構重參數(shù)化方法加快檢測速度,引入特征增強模塊增強多尺度特征的表達能力,使用EViT模塊加強模型關注局部信息的能力,最終提高網(wǎng)絡的檢測精度。實驗表明,CA-YOLOv5 在本文的行人檢測任務中具有良好的檢測性能。
YOLOv5 網(wǎng)絡是由Ultralytics LLC 公司提出的one-stage目標檢測網(wǎng)絡,是在YOLOv4網(wǎng)絡基礎上集成了許多近年來學術界的優(yōu)秀成果,網(wǎng)絡部署更靈活并且具有更高的檢測精度和速度,可用于實時性的目標檢測研究。YOLOv5的網(wǎng)絡結構分為Backbone(主干網(wǎng)絡)、Neck(多尺度特征融合網(wǎng)絡)、Head(預測分類器)三部分組成。
主干網(wǎng)絡通??梢杂蒖esNet[18]、DenseNet[19]、EfficientNet[20]等特征提取網(wǎng)絡構成,用于提取圖像的識別特征,包括邊緣特征、紋理特征、位置信息等。YOLOv5中的主干網(wǎng)絡主要由Focus 層、封裝后的卷積層CBS、C3層、SPP層、Bottleneck層等結構組成。
頸部網(wǎng)絡的設計是為了更好地利用主干網(wǎng)絡提取的特征。它對不同階段提取的特征圖進行再處理和合理利用。YOLOv5 的Neck 采用的PANet[21](path aggregation network),該結構示意圖如圖1所示。
圖1 Neck網(wǎng)絡示意圖Fig.1 Neck network diagram
Head部分通常被設計成負責通過從主干網(wǎng)絡提取的特征圖或者從頸部網(wǎng)絡中融合的特征圖來檢測目標對象的位置和類別。YOLOv5 是用三個1×1 卷積層替代全連接層進行預測與分類,分別在20×20、40×40、80×80三種尺度的特征圖上預測三種錨定框對應類別概率、目標置信度、預測框坐標。
原YOLOv5網(wǎng)絡的C3結構先將基礎層特征圖在通道維度上映射成兩部分,再通過BottleNeck結構使傳播的梯度信息組合達到差異最大化。但是,根據(jù)文獻[22]的分析,通過這種組合方式,網(wǎng)絡仍會使用大量重復的梯度信息。而有效地減少重復的梯度信息,能使得網(wǎng)絡的學習能力就會大大提高。因而,本文旨在使新的網(wǎng)絡結構能在更細粒度的層面進一步增強特征融合能力,從而有效地減少信息集成過程中梯度信息重復的可能性。而Gao 等[23]提出的Res2Net,通過在一個殘差塊內構建分層殘差連接,在更細粒度上表示多尺度特征,并增加了每個網(wǎng)絡層的感受野。據(jù)此,重建了新的主干網(wǎng)絡Res2Block結構。Res2Block結構如圖2所示。
圖2 Res2Block示意圖Fig.2 Diagram of Res2Block
Res2Block 以更細粒度表示多尺度特征,同時增加塊內感受野,從而加強神經(jīng)網(wǎng)絡檢測物體的能力。Res2Block 通過一系列通道劃分、分組卷積、塊間融合、通道拼接等操作實現(xiàn)細顆粒特征融合,具體過程如式(1)所示。其中,輸入特征X經(jīng)過通道劃分,劃分為s塊特征圖,xi表示第i塊特征圖,Ki表示融合第i塊特征圖的卷積層,yi表示融合xi之后獲得的特征圖。
因此,Res2Block 的這種設計使神經(jīng)網(wǎng)絡能融合更細粒度信息,從而達到增強特征融合能力的目的。同時,這種設置多條融合支路的設計能有效地減少信息集成過程中梯度信息重復的可能性。
重建后的backbone網(wǎng)絡詳細參數(shù)如表1所示,所示參數(shù)對應位置含義為[output channel,kernel size,stride,padding]。具體網(wǎng)絡結構則如圖3所示。
圖3 CA-YOLOv5結構示意圖Fig.3 Network structure diagram of CA-YOLOv5
表1 主干網(wǎng)絡結構表Table 1 Backbone network structure table
Hou 等[24]在CVPR2021 中提出了坐標注意力(coordinate attention,CA)模塊,針對SE 注意力只考慮通過建模通道關系來重新衡量每個通道的重要性,而忽略了位置信息的問題進行改進。CA模塊不僅能捕獲跨通道信息,還能捕獲方向感知與位置信息。CA 模塊沿著水平和垂直的空間方向編碼特征圖的通道信息,既能獲取到空間方向的長期依賴關系,還能保存精確的位置信息,同時擴大網(wǎng)絡的全局感受野。如圖4為本文所用數(shù)據(jù)集的樣本分布圖,可見樣本檢測框尺度存在不均衡的情況。因此引入CA 模塊增強網(wǎng)絡的全局感受野以及對目標的精確定位能力,以適應本文圖像尺度變化大的問題。
圖4 檢測框分布圖Fig.4 Detection box distribution
如圖5 所示,為避免全局平均池化(global average pooling,GAP)導致的位置信息丟失的問題,同時能有效地將空間坐標信息編碼成注意力權重圖。CA對輸入特征圖X分別使用H×1和1×W大小的池化核沿著水平與垂直方向并行地進行一維自適應平均池化(adaptive average pooling,AAP),進而產(chǎn)生水平和垂直的兩個獨立方向感知特征圖zh與zw,大小分別為C×1×H和C×1×W。接著,在第三維度對兩個帶有特定方向信息的特征圖進行拼接,再通過權重共享的1×1卷積與非線性激活函數(shù),生成過程特征圖f∈R(C/r)×1×(H+W),其中r為卷積中的通道下采樣比例。再接著,將f在通道維度上拆分成兩個特征向量fh、fw,并調整特征向量在第二、第三維度的大小,使其大小分別為fh∈R(C/r)×H×1和fh∈R(C/r)×1×W。再分別通過1×1 大小的卷積核進行通道轉換,使fh、fw大小分別為fh∈RC×H×1和fh∈RC×1×W,最終經(jīng)過激活函Sigmoid(x)得到兩個空間方向的注意力權重圖gh和gw,每個注意力權重圖都帶有特征圖沿著特定空間方向的長程依賴。
圖5 CA結構編碼注意力的過程Fig.5 CA structure encodes attention process
最后,輸入特征圖與兩個權重圖相乘,進而加強了特征圖的表示能力。
如圖6 所示,本文將CA 模塊添加至Res2Block 中,用以增強主干網(wǎng)絡感受野以及捕獲位置信息的能力。
圖6 改進后的Res2BlockFig.6 Improved Res2Block
根據(jù)Guo等[25]分析,Neck網(wǎng)絡中的FPN結構直接將不同階段的特征圖融合時,不同尺度特征圖學習到的特征感受野是不一樣的,包含的語義信息也不同,把兩個語義信息差距較大的特征直接融合,會減弱多尺度特征的表達能力。因此,本文使用空洞卷積[26]與分組卷積設計了特征增強模塊(feature enhancement module,F(xiàn)EM)以增強多尺度特征的表達能力,F(xiàn)EM 結構如圖7 所示,其中In、Out分別為輸入通道數(shù)與輸出通道數(shù)。
圖7 FEM結構圖Fig.7 Structure of FEM
FEM 結構不需要通過分辨率的下采樣去提升感受野,而是采用了4個不同空間膨脹系數(shù)的空洞卷積增強感受野并提取不同尺度特征,然后再進行通道維度上的特征拼接,從而達到多尺度特征提取與融合的目的。其次,為了盡可能地減少計算量與參數(shù)量,還在每一組卷積中設置了分組卷積。在本文中,F(xiàn)EM結構設置在Neck網(wǎng)絡中的第一個FPN結構中,本文將其命名為FE-FPN。
結構重參數(shù)化(structural re-parameterization)概念,指的是首先構造一系列神經(jīng)網(wǎng)絡結構進行訓練,然后在推理過程中將其中的神經(jīng)網(wǎng)絡參數(shù)轉換為另一組參數(shù),將一種結構等價轉換為另一種結構,從而減少參數(shù)量,加快推理速度。只要參數(shù)的轉換等價,那么這種結構的替換便是等價的。
Ding 等[27]于CVPR2021 上提出的RepVGG 網(wǎng)絡則對結構重參數(shù)化進行了很好的實踐與創(chuàng)新。本文主要采用了其中的卷積層與歸一化層合并的思想。
在深度神經(jīng)網(wǎng)絡中,歸一化(batch normalization,BN)層的引入,加速了網(wǎng)絡的訓練和收斂速度,可以有效緩解梯度爆炸與梯度消失,還有一定的防止過擬合能力。但BN層在擁有諸多好處的同時,也帶來了昂貴的計算開銷,計算均值等操作均需在內存中保存臨時變量,增大了內存的開銷,影響模型性能。為了加快模型檢測速度,以及減小硬件的計算壓力。本文采取卷積層與BN層融合的方式,加快模型的推理速度。以下是卷積層與BN層融合的公式推導過程:
卷積層公式如公式(2)所示,其中W為權重,b為偏置:
而BN 層的公式如公式(3)所示,其中γ與β為學習參數(shù),mean為批次樣本數(shù)據(jù)均值,σ為方差,ε為極小但不為零的數(shù):
將卷積層結果代入到BN公式(3)中得:
令BN(Conv(x))=y,進一步化簡為:
又令:
最終得到:
因此,融合后的結構仍是由權重與偏置構成,該過程實質上是對卷積核參數(shù)的修改,在不增加卷積層參數(shù)量的同時,略去了BN層的計算開銷。
針對行人檢測任務中普遍存在的擁擠行人問題,本文基于Dosovitskiy等[28]提出的Vision Transformer,設計了EViT(enhanced vision transformer)模塊。如圖8 所示,EViT模塊包含兩個子層,MHA(multi-head attention)層和MLP(multi-layer perceptron)層,并在兩個子層前后加入LayerNorm層和Dropout層使網(wǎng)絡更好地收斂以及防止網(wǎng)絡過度擬合。
圖8 EViT結構圖Fig.8 Structure of EViT
在EViT 模塊中,大小為B×C×H×W的輸入特征圖X首先進行patch 處理階段,生成(H×W)×B×C大小的patch embedding 向量P1與position embedding 向量P2,并進行相加形成embedded patches 向量P。在經(jīng)過Transformer 編碼器階段時,向量P分別通過三個線性層映射為Q、K、V三個向量并進入MHA 層。MHA層具體計算過程如下所示:
首先根據(jù)MHA層注意力頭的個數(shù)s,將Q、K、V分別切分為s個向量:
之后再計算每個注意力頭的注意力權重矩陣,其中dk=C/s:
再然后將每個注意力權重矩陣進行合并,同時進行線性映射得到:
令M=MultiHead(Q,K,V),通過殘存連接得到:
由MHA 層計算得到的向量Z最后再經(jīng)過MLP 層與Reshape層,得到了經(jīng)過EViT處理后的特征圖。
在EViT模塊中,Transformer Encoder通過MHA層擴展了模型關注不同位置的局部信息的能力,進而捕獲更豐富的上下文信息。因此,本文在原始YOLOv5中所有與檢測頭相連接的位置使用EViT 模塊,以便模型更好地檢測擁擠行人,具體位置如圖8所示。
實驗的圖像數(shù)據(jù)來源于開源的CrowdPose Dataset和CrowdHuman Dataset[29],兩者圖像背景復雜多樣,檢測目標重疊密集。Li 等[30]制作了CrowdPose Dataset,其中包含20 000 張圖像,標注人體共有80 000 個。CrowdHuman Dataset 常用于行人檢測,包含約24 000張圖片,總共有470 000個標注實例,平均每張圖有23個人體標注,同時具有多種多樣的遮擋。本實驗從兩個數(shù)據(jù)集中取出共17 000張圖像,對可見的行人身體進行標注,圖9為數(shù)據(jù)集中普遍存在的擁擠人群示例圖。按比例隨機抽取10 000張圖像作為成訓練集,2 000 張作為驗證集,5 000 張作為測試集,總共約有120 000個標注人體框。
圖9 部分數(shù)據(jù)展示Fig.9 Partial data set display
本文實驗使用Pytorch深度學習框架,訓練環(huán)境:
CUDA 版本為11.1,GPU 為NVIDIA GeForce RTX 2060 SUPER,顯存8 GB,編譯語言為Python3.8,訓練最小批次為16,總共訓練200個epoch。
為驗證本文提出的CA-YOLOv5 算法在行人檢測任務的有效性,本文設置了4 個消融實驗,1 個對比實驗。第一個實驗是驗證使用Res2Block構建的主干網(wǎng)絡性能,對比了YOLOv5 與CA-YOLOv5。第二個實驗是為了驗證本文提出的FE-FPN 結構的有效性,對比了普通FPN 結構與本文提出的FE-FPN 結構。第三個實驗驗證了卷積層與BN 層融合對網(wǎng)絡檢測速度的加速效果。第四個實驗是為了驗證加入了CA模塊對模型的提升效果,第五個實驗是為了測試使用EViT 模塊后與當前主流算法在行人檢測任務中的表現(xiàn)性能進行對比,以證明CA-YOLOv5算法的性能優(yōu)勢。
訓練時對設置輸入圖像大小為640×640,采用SGD優(yōu)化器對網(wǎng)絡進行訓練,初始學習率為0.2,使用余弦退火策略調整學習率。本文的消融實驗采取和原始YOLOv5一樣的圖像增強方法。
實驗以平均精度均值(mean average precision)、模型每秒檢測的圖像數(shù)量(FPS)、params(參數(shù)量)、GFLOPs(計算量)、權重大小等評價指標對模型進行評價。
實驗一對比了以Res2Block 作為主干網(wǎng)絡的Res2-YOLOv5 與YOLOv5 的效果,結果如表2 所示。從兩種網(wǎng)絡模型在mAP指標上的數(shù)據(jù)可知,Res2Block結構使網(wǎng)絡的mAP 從81.11%提升到了82.91%,提升了1.8 個百分點,說明由Res2Block 構成的主干網(wǎng)絡對于提升整個網(wǎng)絡的檢測精度是有幫助的。
表2 Res2-YOLOv5的性能對比Table 2 Performance of Res2-YOLOv5
為了進一步加強多尺度特征的表達能力,本文在FPN結構中加入了特征增強模塊構成FE-FPN。實驗二對比了FE-FPN 結構和FPN 結構的檢測效果,結果如表3 所示。觀察mAP 可知,使用FE-FPN 時相對于FPN 結構,mAP提升了0.89個百分點。
表3 FE-FPN與FPN性能對比Table 3 Comparison between FE-FPN and FPN
行人檢測通常應用于工商業(yè)的監(jiān)控設備中,因此為滿足實時檢測的要求,加快模型檢測速度,便于在監(jiān)控終端部署,本文使用卷積層與BN層融合的方式,減少計算開銷。本文通過實驗三驗證該方式的有效性。表4為對比結構參數(shù)化前后模型的性能表現(xiàn),雖然融合后的模型權重文件大小、參數(shù)量、計算量下降不多,但是FPS增加了15。這是因為融合卷積層和BN 層后的模型不再經(jīng)過BN 層,節(jié)省了原先用于BN 層的計算開銷。經(jīng)實驗證明,使用結構重參數(shù)化方法后的模型有效地提升了檢測速度,更好地滿足行人檢測任務對檢測速度的要求。
表4 結構重參數(shù)化前后的性能對比Table 4 Performance comparison before and after structural re-parameterization
本文引入了CA 注意力模塊,用于增強網(wǎng)絡的全局感受野。實驗四對比了增加CA模塊前后的性能表現(xiàn)。具體數(shù)據(jù)如表5 所示,觀察mAP 可知,在Res2Block 模塊中增加CA 模塊后,mAP 增加了0.63 個百分點,同時參數(shù)量、計算量、FPS不變。
表5 融合CA模塊前后性能對比Table 5 Comparison before and after integration of CA
本文加入了EViT模塊,能更好地捕獲局部信息,所提算法稱為CA-YOLOv5。在實驗五中,本文算法與目前一些主流算法在行人檢測任務中的性能表現(xiàn),目的在于驗證本文所提算法的有效性。如表6所示,本文對比了以下算法:YOLOv5、Mobilenetv3-YOLOv5、YOLOv3、YOLOv3-spp、YOLOv3-tiny、Mobilenetv3-SSD-Lite、VGG16-SSD、ResNet50-FCOS。實驗表明,本文CAYOLOv5 算法在擁擠行人檢測任務上可達到84.86%的檢測精度。相較于原YOLOv5 算法,本文算法增加了30%參數(shù)量和28%計算量,提高了3.75個百分點的檢測精度。雖然YOLOv3-spp算法的精度與本文算法相當,然而其參數(shù)量為6.15×107以及GFLOPs 高達154.90,遠大于本文算法。經(jīng)實驗驗證,CA-YOLOv5 算法在單個GTX2060s 顯卡中檢測速度可達到51 FPS,可滿足硬件終端上行人檢測任務的實時性需求,保證了比原網(wǎng)絡稍高的檢測速度,在所有對比模型中綜合性能最好。
表6 不同算法檢測結果比較Table 6 Comparison of detection results of different algorithms
本文將CA 模塊與ResBlock 融合,用于構建新的主干網(wǎng)絡,提出新的特征增強模塊,同時應用EViT 模塊,并在實驗中驗證了該算法的有效性,圖10 為CAYOLOv5算法的檢測效果。
圖10 CA-YOLOv5算法檢測結果Fig.10 CA-YOLOv5 algorithm detection results
本文提出了一個實時高效的基于YOLOv5 算法的擁擠行人檢測算法——CA-YOLOv5。針對原網(wǎng)絡的主干網(wǎng)絡特征融合不充分的問題,提出以Res2Block 構建主干網(wǎng)絡,同時使用結構重參數(shù)化方法加快模型檢測速度。針對數(shù)據(jù)集目標尺度變化大的問題,引入CA模塊增強感受野,增強模型對目標的精確定位能力,提高檢測精度。為解決頸部網(wǎng)絡的FPN 結構在特征融合時導致多尺度特征表達能力下降的問題,提出FEM結構以增強頸部網(wǎng)絡中多尺度特征的表達能力,采用EViT 模塊以加強模型捕獲局部信息的能力,提高網(wǎng)絡檢測精度。實驗證明,CA-YOLOv5 算法具有優(yōu)秀的檢測精度和實時檢測效果,能很好地應用于擁擠行人檢測任務中。