王宏,韓晨,袁伯陽,田增瑞,盛英杰
(1.鄭州輕工業(yè)大學(xué)建筑環(huán)境工程學(xué)院,鄭州 450002; 2.河南省智慧建筑與人居環(huán)境工程技術(shù)研究中心,鄭州 450002)
行人檢測作為計算機視覺領(lǐng)域的熱門研究方向,對于行人重識別、行人多目標(biāo)跟蹤、視頻監(jiān)控、智慧交通等領(lǐng)域具有重要意義。由于實際場景復(fù)雜、目標(biāo)密度較大、重疊率過高,以及目標(biāo)距離攝像設(shè)備較遠等情況,導(dǎo)致當(dāng)前行人檢測算法存在精度低、漏檢和誤檢率高等問題,因此提出一種可用于密集場景下的行人目標(biāo)檢測算法具有相當(dāng)?shù)目尚行訹1]。
基于深度學(xué)習(xí)的目標(biāo)檢測算法可分為基于區(qū)域推薦的Two Stage算法和基于回歸的One Stage算法。Two Stage算法首先根據(jù)圖像生成可能包含檢測目標(biāo)的候選框,然后對生成的候選框進行類別識別和位置校準(zhǔn),代表性的算法主要有R-CNN(region-convolutional neural network)[2]、Fast R-CNN[3]、Faster R-CNN[4]、Mask R-CNN[5]等,其特點是檢測精度較高,但推理和檢測時間較長。One Stage算法不需要生成候選框,僅需要一次特征提取,就可以直接生成被檢測目標(biāo)的類別概率和位置信息,代表性的算法主要有YOLO(you only look once)[6-10]、SSD(single shot multibox detector)[11]、EfficientDet[12]等,其特點是推理和檢測速度顯著提高,但檢測精度較低。
近年來,許多學(xué)者針對基于深度學(xué)習(xí)的行人檢測算法展開了相關(guān)工作。張秀再等[13]將YOLOv5模型與注意力機制、殘差網(wǎng)絡(luò)和軟閾值化函數(shù)相融合,有效提高了對小行人目標(biāo)和密集行人目標(biāo)的檢測精度,但網(wǎng)絡(luò)結(jié)構(gòu)過于復(fù)雜,導(dǎo)致檢測速度較慢。鄒斌等[14]提出了改進 Faster-RCNN的密集人群檢測算法,在特征提取階段添加空間與通道注意力機制并使用S-BiFPN(strong bidirectional feature pyramid network)替代原網(wǎng)絡(luò)中的多尺度特征金字塔,使網(wǎng)絡(luò)可以加強對圖像深層特征的提取,但該算法無法滿足目標(biāo)檢測的實時性。Zhang等[15]提出一種基于改進YOLOv3的輕量級行人檢測算法,通過引入正則化減少了不重要的通道數(shù),充分降低了模型的計算量和復(fù)雜度,但該算法在擁擠場景下的行人檢測精度還有待提高。齊鵬宇等[16]提出一種全卷積One Stage目標(biāo)檢測框架,通過增加尺度回歸提升了行人檢測的性能,但該模型受行人深度特征影響較大,對遮擋目標(biāo)的檢測精度欠佳。劉振興等[17]提出了一種融合上下文及空間信息的擁擠行人檢測算法,通過改進特征金字塔網(wǎng)絡(luò)結(jié)構(gòu)和添加帶權(quán)融合分支,有效提升了行人檢測算法在擁擠場景中的檢測效果,但在實驗論證過程中發(fā)現(xiàn)該模型存在性能不穩(wěn)定、檢測不夠精準(zhǔn)和檢測速度較慢的情況。
現(xiàn)有的深度學(xué)習(xí)算法在不同程度上提升了密集人群檢測的性能,但部分改進后的算法網(wǎng)絡(luò)結(jié)構(gòu)較復(fù)雜,以及對遮擋程度較高的目標(biāo)和極小尺寸目標(biāo)的檢測性能有所欠佳,導(dǎo)致改進后算法存在檢測速度較慢、漏檢和誤檢率高等問題。因此現(xiàn)提出改進YOLOv5的擁擠行人檢測算法,通過公開數(shù)據(jù)集Crowd Human[18]對該算法進行訓(xùn)練,以期在密集場景中的擁擠行人檢測能夠達成更好的效果。主要工作如下。
(1)在主干網(wǎng)絡(luò)中嵌入坐標(biāo)注意力機制CA(coordinate attention)[19],用以增大主干網(wǎng)絡(luò)的感受野和提高YOLOv5捕獲位置信息的能力。
(2)在原網(wǎng)絡(luò)三尺度檢測的基礎(chǔ)上再增加一層淺層檢測層,同時改進特征融合部分,提高了對于小尺寸目標(biāo)的檢測性能。
(3)使用深度可分離卷積[20](DSConv)替換部分普通卷積(Conv),在對特征提取影響較小的前提下大幅降低了模型的參數(shù)量和計算量。
(4)使用有效交并比損失函數(shù)(efficient intersection over union loss,EIOU_loss)[21],融合邊界框?qū)捀弑鹊某叨刃畔?有效提升了YOLOv5模型的檢測精度。
YOLOv5是YOLO系列算法中強大的一代,具有較強的實時處理能力和較低的硬件計算要求。YOLOv5包括4種不同的網(wǎng)絡(luò)結(jié)構(gòu),考慮檢測速度和精度兩方面因素,以網(wǎng)絡(luò)深度和寬度最小的YOLOv5s(簡稱“YOLOv5”)為基礎(chǔ)網(wǎng)絡(luò)進行優(yōu)化。如圖1所示,YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)由輸入端(Input)、主干網(wǎng)絡(luò)(Backbone)、特征提取網(wǎng)絡(luò)(Neck)、預(yù)測端(Prediction)四部分組成。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
輸入端包括Mosaic數(shù)據(jù)增強、圖像尺寸處理和自適應(yīng)錨框計算[22]。主干網(wǎng)絡(luò)為CSP-Darknet53,主要包括Focus、CSP(cross stage partial)和SPP(spatial pyramid pooling)三部分。其中Focus模塊能夠?qū)崿F(xiàn)快速下采樣操作;CSP結(jié)構(gòu)將輸入分為分別執(zhí)行卷積運算的兩個分支,其中一個分支中信息通過CBL模塊(CBL=卷積+正則化+激活函數(shù))后進入多個殘差結(jié)構(gòu),另一分支則直接進行卷積信息,之后將兩個分支合并起來[23],使網(wǎng)絡(luò)在提高模型學(xué)習(xí)能力的同時保證準(zhǔn)確率;SPP模塊由Conv、max-pooling和concat三部分組成,其作用主要是在不影響推理速度的前提下增加特征提取的感受野,同時增強網(wǎng)絡(luò)的非線性表示。Neck的核心為FPN(feature pyramid network)和PAN(path aggregation network)。FPN 通過自上而下的上采樣實現(xiàn)了語義特征從深層特征圖到淺層特征圖的傳遞,PAN 通過自下而上的路徑結(jié)構(gòu)實現(xiàn)了定位信息從淺層特征層到深層特征層的傳遞,二者的組合大大增強了網(wǎng)絡(luò)的特征融合能力。預(yù)測端利用GIOU_loss損失函數(shù)和非極大值抑制(non-maximum suppression,NMS)獲得最優(yōu)的目標(biāo)框,提高了網(wǎng)絡(luò)識別的準(zhǔn)確性。
以YOLOv5原算法為基礎(chǔ),分別對其主干網(wǎng)絡(luò)、檢測尺度、特征提取網(wǎng)絡(luò)和損失函數(shù)進行了一系列改進。改進后的YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 改進后YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)示意圖
在目標(biāo)檢測中加入注意力機制可以使模型聚焦于圖像中的關(guān)鍵特征,抑制無關(guān)特征。為解決密集場景中背景信息雜亂導(dǎo)致行人目標(biāo)的特征不明顯,以及目標(biāo)相互遮擋、重疊的問題,在主干網(wǎng)絡(luò)中嵌入一種坐標(biāo)注意力機制,使模型更準(zhǔn)確地定位和識別感興趣的目標(biāo)。通常注意力機制會在一定程度上提高模型的精度,但同時也會使模型增加額外的計算量,影響其檢測速率。但簡單輕量的CA模塊幾乎沒有額外的計算開銷,能夠在不影響模型檢測速率的情況下提升模型的性能。
如圖3所示,CA分為坐標(biāo)信息嵌入和坐標(biāo)信息特征圖生成。
圖3 CA結(jié)構(gòu)示意圖
第一步,CA對輸入特征圖X使用尺寸為(H,1)和(1,W)的池化核進行通道編碼,得到高度為h的第c個通道與寬度為w的第c個通道的輸出,產(chǎn)生兩個獨立方向感知特征圖zh與zw,大小分別為C×1×H和C×1×W,公式為
(1)
(2)
第二步,通過Concat融合上述操作生成的zh和zw,并使用卷積核大小為1的卷積變換函數(shù)F1對其進行變換操作,生成在水平和垂直方向進行空間信息編碼的中間特征圖f,公式為
f=δ[F1([zh,zw])]
(3)
式(3)中:δ為非線性激活函數(shù)。沿著空間維度將f分解為兩個獨立的張量fh∈RC/r×H和fw∈RC/r×W,其中r表示下采樣比例。然后利用兩個卷積核大小為1的卷積變換函數(shù)Fh和Fw將特征圖fh和fw變換為與輸入X具有相同通道數(shù)的張量[24]。公式為
gh=σ[Fh(fh)]
(4)
gw=σ[Fw(fw)]
(5)
式中:σ為sigmoid激活函數(shù)。最后將輸出gh和gw進行拓展,分別作為注意力權(quán)重分配值,最終輸出公式為
(6)
對于輸入尺寸為640×640的圖像,YOLOv5分別利用8倍、16倍、32倍下采樣輸出檢測尺度為20×20、40×40、80×80的特征圖,對應(yīng)檢測大、中、小3種尺度的目標(biāo)。但在實際場景中,很多行人目標(biāo)由于距離當(dāng)前攝像頭較遠,導(dǎo)致其在圖像或視頻中所占像素過小,而用來檢測小目標(biāo)的80×80尺度的特征圖無法有效檢測到這些更小尺寸的目標(biāo),極大地影響了檢測結(jié)果。
針對以上問題,在YOLOv5原有網(wǎng)絡(luò)結(jié)構(gòu)上增加一層尺度為160×160的檢測層,同時將原來的特征融合部分改為對應(yīng)的四尺度特征融合。具體操作為:第17層后繼續(xù)增加CBL層和上采樣,使得特征圖進一步擴大;在第20層時,將擴展得到的尺度為160×160的特征圖與Backbone中第2層特征圖進行Concat拼接,融合其細節(jié)信息和語義信息,獲取更大尺度的特征圖用以檢測更小尺寸的目標(biāo);第21層增加尺度為160×160的淺層檢測層,其他3個檢測層保持不變。改進后的四尺度檢測有效利用了淺層特征信息和深層特征的高語義信息,使模型能夠從更深層的網(wǎng)絡(luò)中提取特征信息,提高了模型在密集場景下多尺度學(xué)習(xí)的能力。
改進YOLOv5的四尺度檢測雖然提高了模型的檢測精度,但同時也在一定程度上加深了網(wǎng)絡(luò)深度,再加上YOLOv5網(wǎng)絡(luò)中存在大量的卷積操作,導(dǎo)致模型參數(shù)量過多,檢測速度較慢。使用深度可分離卷積替換Neck中的部分普通卷積,旨在確保精度基本不變的情況下降低模型的復(fù)雜度。深度可分離卷積的原理如圖4所示。
圖4 深度可分離卷積原理圖
深度可分離卷積將普通卷積分解為深度卷積和點態(tài)卷積。首先使用尺寸為K×K的卷積核對通道數(shù)為M的輸入特征圖做逐通道卷積,得到M個尺寸為Q×Q的特征圖。然后由N個過濾器對特征圖進行點態(tài)卷積操作,最終得到通道數(shù)為N,尺寸為D×D的輸出特征圖。普通卷積的計算公式為
K×K×M×N×D×D
(7)
深度可分離卷積的計算公式為
K×K×M×D×D+M×N×D×D
(8)
深度可分離卷積與普通卷積的計算量之比為1/N+1/K2,所以將特征提取網(wǎng)絡(luò)中的部分普通卷積替換為深度可分離卷積可以降低模型參數(shù)量,提高模型檢測速度。
YOLOv5的損失函數(shù)包括邊界框回歸損失(bounding box loss)、置信度損失(objectness loss)以及分類概率損失(classification loss)三部分[25]。原YOLOv5算法采用GIOU_loss作為Bounding box的損失函數(shù),其缺點是沒有考慮到預(yù)測框在目標(biāo)框內(nèi)部且預(yù)測框尺寸相同的問題。針對這一情況,CIoU_loss通過考慮邊界框回歸的重疊面積和中心點距離,以及預(yù)測框和目標(biāo)框的長寬比,使YOLOv5模型更精確地定位回歸框。CIoU_loss計算公式為
(9)
(10)
(11)
式中:ρ2(b,bgt)表示預(yù)測框和真實框中心點之間的歐氏距離;c表示兩框相交時構(gòu)成的最小外接矩形的對角線距離;w和h表示預(yù)測框的寬度和高度;wgt和hgt表示真實框的寬度和高度;IOU表示預(yù)測框和真實框的交并比。
CIoU_loss提高了模型的檢測性能,但未考慮到寬高與其置信度的真實差異。因此,引入性能更優(yōu)的EIoU_loss作為bounding box的損失函數(shù)。EIoU_loss由重疊損失LIOU、中心距離損失Ldis和寬高損失Lasp三部分組成,前兩部分保留了CIOU_loss的優(yōu)勢,寬高損失將優(yōu)化目標(biāo)設(shè)置為預(yù)測框與真實框的最小寬高差,能夠加快模型的收斂速度和提高模型的精度。EIoU_loss計算公式為
LEIOU=LIOU+Ldis+Lasp
(12)
式(12)中:cw和ch為預(yù)測框和真實框的最小外接矩形的寬度和高度。
所有實驗均在操作系統(tǒng) Windows10下進行,硬件設(shè)備為 GPU NVIDIA Tesla,深度學(xué)習(xí)框架為Pytorch 1.12.0,開發(fā)環(huán)境為 Python 3.8,CUDA 11.2。實驗參數(shù)配置:初始學(xué)習(xí)率設(shè)置為0.01,使用余弦退火算法動態(tài)調(diào)整學(xué)習(xí)率,以實現(xiàn)有效收斂;學(xué)習(xí)率動量設(shè)置為0.937,以防止過擬合。訓(xùn)練批次設(shè)置為16,一共訓(xùn)練200個epoch。
采用開源的CrowdHuman數(shù)據(jù)集,主要采集于背景復(fù)雜多變的密集人群場景。該數(shù)據(jù)集包含約24 000張圖片,共有470 000個標(biāo)注實例,平均每張圖片的行人數(shù)量達到了22.6人,存在各種遮擋情況。CrowdHuman數(shù)據(jù)集的目標(biāo)邊界框有3種,分別為頭部框、可見身體框和目標(biāo)全身框。本實驗在訓(xùn)練時采用可見身體框,隨機抽取8 000張圖片作為訓(xùn)練集,2 000張圖片作為測試集。
為了更好地分析模型檢測性能,采用平均精度均值(mean average precision,mAP)[26]、每秒處理圖像幀數(shù)(frame per second,FPS)、參數(shù)量M、計算量(floating point operations,FLOPs)和模型大小,作為本實驗?zāi)P偷脑u價指標(biāo)。其中mAP的計算公式為
(13)
(14)
(15)
(16)
式中:P為精確率;R為召回率;TP為正確檢測的行人數(shù)量;FP為誤檢的行人數(shù)量;FN為未被檢測出的行人數(shù)量。
為驗證模型改進后的效果,分別將改進前后模型的平均精度均值迭代曲線以及損失迭代曲線進行對比,結(jié)果如圖5所示。
圖5 結(jié)果對比
從圖5(a)中可以看出改進后模型的曲線增長速度較快,mAP最終穩(wěn)定在0.907,相較于原模型提高了7.4個百分點,且改進后模型的迭代曲線更加平穩(wěn),波動較原算法更小,從一定程度上反映了改進后的YOLOv5算法擁有更穩(wěn)定的性能和更高的檢測精度。從圖5(b)中可以看出改進后模型的收斂速度更快和平滑性更好,損失值隨著迭代次數(shù)的增加在50個epoch后逐漸趨于平穩(wěn),且最終穩(wěn)定在0.020 04,相比原模型下降了0.014 6,表明改進后模型的訓(xùn)練效果更加理想。
為分析改進后YOLOv5的復(fù)雜度,將改進前后模型的參數(shù)量、計算量和模型大小進行對比,結(jié)果如表1所示。其中參數(shù)量可看作模型的空間復(fù)雜度,模型的參數(shù)越多則訓(xùn)練模型所需的數(shù)據(jù)量就越大;計算量可看作模型的時間復(fù)雜度,計算量越大則模型的訓(xùn)練和預(yù)測時間越長。由表1可知,相較于原YOLOv5模型,改進后模型的參數(shù)量減少了11.6%,計算量減少了10.7%,模型大小減少了11.1%。結(jié)果表明改進后YOLOv5能夠在降低模型復(fù)雜度的同時大幅提高檢測精度。
表1 模型復(fù)雜度對比
3.4.1 消融實驗
本文改進后的模型在原YOLOv5的基礎(chǔ)上添加了CA模塊,將三尺度檢測改為四尺度檢測,使用深度可分離卷積和有效交并比損失函數(shù)。為了進一步分析每個改進點對原模型的優(yōu)化作用,以YOLOv5原算法為基礎(chǔ)模型設(shè)計消融實驗,結(jié)果如表2所示。
表2 消融實驗
由表2可知,模型YOLOv5-CA 加入CA模塊較原模型mAP增加了4.2個百分點,主要是因為原算法對特征的提取不夠準(zhǔn)確,將多個密集行人目標(biāo)誤檢為一個目標(biāo),從而造成漏檢,而添加CA后的模型精度得到大幅提升,并且對模型的參數(shù)量和FPS幾乎沒有影響。模型YOLOv5-FS 將三尺度檢測擴展為四尺度檢測,可以檢測出原算法漏檢的較小尺寸目標(biāo),將mAP提高了3.5個百分點,但新增的檢測尺度加深了網(wǎng)絡(luò)結(jié)構(gòu),導(dǎo)致模型參數(shù)量增加5.6×105,檢測速率降低。模型YOLOv5-DS將部分普通卷積替換為深度可分離卷積,使參數(shù)量較原模型減少1.59×106,模型檢測速度顯著提高,mAP值雖略有下降,但對模型的精度幾乎沒有任何影響。模型YOLOv5-EI 使用EIoU_loss作為邊框回歸的損失函數(shù),考慮到了預(yù)測框和目標(biāo)框的重疊面積、中心點距離和長寬比,有效提高了模型邊界框的定位精度,將mAP提高了2.4個百分點。對YOLOv5原算法同時使用以上4種改進方法,檢測精度和檢測速度均有明顯的提升,且模型參數(shù)量較原模型減少8.8×105。實驗結(jié)果表明CA模塊、四尺度檢測、深度可分離卷積和EIoU_loss的共同改進可以大幅提高擁擠行人檢測模型的性能。
3.4.2 不同目標(biāo)檢測模型性能對比
為進一步分析改進YOLOv5算法的性能,將其與目前幾種主流目標(biāo)檢測算法進行對比,結(jié)果如表3所示。
表3 不同算法性能對比
由表3可知,基于同一數(shù)據(jù)集,本文改進后模型與同系列YOLOv3和YOLOv4模型相比,參數(shù)量分別減少了54.97×106和58.37×106,mAP分別提升了13.3個百分點和9個百分點,檢測速率分別快了1.58倍和1.34倍,表明改進后的YOLOv5模型在精度和速度方面有較大的優(yōu)勢;YOLOv3-Tiny模型的檢測速率最高,但其mAP較改進后的YOLOv5模型減少了19.1個百分點,這是因為YOLOv3-Tiny算法在YOLOv3算法基礎(chǔ)上去除了一些特征層,對小目標(biāo)的檢測精度影響較大;與同為One Stage算法的SSD 相比,本文模型的參數(shù)量降低了39.57×106,mAP提高了14.4個百分點;Two Stage算法Faster-RCNN較YOLOv5原算法mAP提升了1.8個百分點,但其模型參數(shù)量過大,對硬件設(shè)備要求較高,以及檢測速率較慢,無法滿足目標(biāo)檢測所需的實時性;與近幾年的CenterNet、FCOS(fully convolutional one-stage object detection)和DETR(detection transformer)模型相比,本文模型的參數(shù)量分別減少了46.17×106、67.47×106和34.27×106,mAP分別提升了4.5個百分點、6.8個百分點和4.2個百分點,檢測速率分別快了1.57倍、2.45倍和1.29倍,表明改進后YOLOv5模型能夠以更低的空間復(fù)雜度達到更好的檢測效果。由以上結(jié)果得出,本文改進后算法在顯著減少模型參數(shù)量的同時具有較高的檢測精度和速度,實現(xiàn)了更好的檢測性能。
3.4.3 改進前后檢測效果對比
為進一步驗證改進YOLOv5算法的檢測性能,本文使用CrowdHuman數(shù)據(jù)集中未經(jīng)訓(xùn)練和測試的圖片,對原YOLOv5算法與改進后YOLOv5算法在密集人群場景中的檢測效果進行對比,結(jié)果如圖6所示。由圖6(a)和圖6(d)可以看出,兩種算法對遮擋程度較低的大尺寸行人目標(biāo)均有較好的檢測效果,但原算法對嚴(yán)重遮擋的小尺寸目標(biāo)的檢測效果不佳,改進后的算法能夠更準(zhǔn)確地識別此類目標(biāo);由圖6(b)和圖6(e)可以看出,兩種算法均能較準(zhǔn)確地檢測出被遮擋目標(biāo),但原算法將人群旁邊的壁畫誤檢成行人目標(biāo),以及個別遮擋程度較低的小目標(biāo)存在漏檢情況,改進后的算法有效改善了此類問題;由圖6(c)和圖6(f)可以看出,原算法將廣告牌上的人物和圖片中的水印誤檢成行人目標(biāo),以及未能檢測出被嚴(yán)重遮擋的小行人目標(biāo),改進后的算法針對此類問題的檢測效果更佳。綜上,原YOLOv5算法在嚴(yán)重遮擋的密集人群場景中的誤檢和漏檢率較高,改進后的YOLOv5算法雖不能完全準(zhǔn)確地檢測出所有行人目標(biāo),但對于遮擋程度較高的小尺寸行人目標(biāo)具有更好的檢測效果。
為解決目前擁擠人群目標(biāo)檢測存在的目標(biāo)相互重疊、遮擋以及目標(biāo)尺寸偏小等問題,本文提出了基于改進的YOLOv5擁擠行人檢測算法。
(1)通過添加坐標(biāo)注意力機制顯著提升了模型檢測精度,且對模型參數(shù)量幾乎沒有影響。
(2)在原算法的基礎(chǔ)上增加小目標(biāo)檢測尺度,有效提升了模型在密集場景中多尺度學(xué)習(xí)的能力。
(3)將部分普通卷積替換為深度可分離卷積,在確保精度基本不變的前提下減少了模型的參數(shù)量。
(4)通過優(yōu)化邊界框回歸損失函數(shù),使模型在訓(xùn)練時的收斂速度更快,精度更高。
在公共數(shù)據(jù)集上的實驗結(jié)果表明,改進后YOLOv5算法的平均精度均值為0.907,檢測速度達到了56.1f/s,具有較好的檢測精度和實時檢測速度,能夠有效應(yīng)用于密集場景下的擁擠行人檢測任務(wù)中。接下來將進一步完善算法的具體功能,通過結(jié)合自適應(yīng)卡爾曼濾波實現(xiàn)多行人目標(biāo)的檢測和跟蹤。