王思元,王俊杰
(中國海洋大學(xué)工程學(xué)院,山東 青島 266100 )
隨著我國城市化進程的加快,越來越多的大型公共建筑應(yīng)運而生,與此同時也出現(xiàn)了越來越多如車站、地鐵、商場等人員密集場所,當(dāng)發(fā)生災(zāi)害事故時,需要盡快將大規(guī)模人群進行疏散,而高密度人群疏散過程一旦出現(xiàn)問題,可能會造成重大的人員傷亡事故。因此,實時、準(zhǔn)確的人群識別與檢測對保證人員密集場所的交通安全及規(guī)劃管理具有重要的應(yīng)用價值。
傳統(tǒng)的行人檢測方法主要采用人工設(shè)計特征進行全局特征行人檢測,通過Haar小波特征、HOG特征、Shapelet與Edgelte特征[1]、TED與輪廓版特征等訓(xùn)練分類器進行行人檢測,并在現(xiàn)有的數(shù)據(jù)集上取得了許多令人矚目的效果。如Hoang等[2]提出了基于可變尺度梯度特征直方圖(Histogram of Oriented Gradient,HOG)的行人特征描述方法,并結(jié)合支持向量機(Support Vector Machine,SVM)進行圖像分類,使得分類準(zhǔn)確率有較大的提升;Armanfard等[3]將紋理邊緣特征描述(Texture Edge Descriptor,TED)系統(tǒng)應(yīng)用于視頻中的行人檢測,其特征包括紋理與邊緣信息,并且對光照明顯變化時的圖像有很好的魯棒性,可以較好地處理室內(nèi)與室外光照變化對圖像的影響;Dollar等[4]巧妙地將聚合通道特征(Aggregated Channel Features,ICF)與HOG特征相融合,用于背景復(fù)雜情況下的行人檢測。人工設(shè)計特征始終難以有效地表達(dá)復(fù)雜環(huán)境下行人特征問題,且程序本身運算量高,其高復(fù)雜度也限制了目標(biāo)檢測的實時性。近幾年,基于深度卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)的算法憑借其在特征提取上的優(yōu)勢被廣泛應(yīng)用于目標(biāo)檢測任務(wù)中,大幅提高了目標(biāo)檢測的準(zhǔn)確率。目前CNN算法較為廣泛使用的方法可以分為三類:第一類方法是基于區(qū)域建議的目標(biāo)識別算法,如Fast R-CNN[5]、Mask R-CNN[6]、Faster R-CNN[7]等,這類算法在目標(biāo)識別方面效果很好,但是檢測速度相對較慢,因而很難應(yīng)用于實際;第二類方法是基于學(xué)習(xí)搜索的檢測算法,如深化強度網(wǎng)絡(luò)Q-Learning、AttentionNet模型[8]等,這類算法將圖像識別提取任務(wù)轉(zhuǎn)換為一個動態(tài)視覺搜索任務(wù),與其他方法相比,其檢測精度不甚理想;第三類方法是基于回歸方式的目標(biāo)檢測算法,如SSD(Single Shot MultiBox Detector)算法[9]、YOLO(You Only Look Once)系列算法[10-11]等,此系列算法在保證目標(biāo)檢測準(zhǔn)確率同時也提高了檢測速度,基本可以滿足實時性的要求。目前YOLO算法已經(jīng)發(fā)展到第三個版本即YOLOv3[12],在目標(biāo)實時性檢測方面的表現(xiàn)尤為突出。
本文借鑒目標(biāo)檢測領(lǐng)域先進的研究成果,提出將YOLOv3網(wǎng)絡(luò)應(yīng)用于高密度人群目標(biāo)檢測中,通過對其層級結(jié)構(gòu)及參數(shù)進行調(diào)整,調(diào)整后的網(wǎng)絡(luò)(即YOLOv3-M網(wǎng)絡(luò))不僅能夠準(zhǔn)確識別目標(biāo)人群位置,而且對于存在局部遮擋、背景復(fù)雜、光線不足、視線模糊等情況下的人群也具有很好的識別效果。
YOLO算法在2016年由Redmon等提出后,到2018年已經(jīng)經(jīng)歷了YOLOv2、YOLOv3兩個版本的改進。與前兩個版本相比,YOLOv3算法主要做了以下幾方面的改進:
(1) 借鑒ResNet殘差網(wǎng)絡(luò)思想。首先,殘差網(wǎng)絡(luò)保證了即使在很深的網(wǎng)絡(luò)結(jié)構(gòu)下,模型仍能正常收斂,網(wǎng)絡(luò)越深,特征表達(dá)越好,分類與預(yù)測的效果皆有提升;此外,網(wǎng)絡(luò)中1×1的卷積,壓縮了卷積后的特征表示,減少了每次卷積中的通道,在減少參數(shù)量的同時也一定程度上減少了計算量。
(2) 采用多尺度融合預(yù)測方法。YOLOv3算法在3種不同尺度上進行預(yù)測,使用類金字塔網(wǎng)絡(luò)[13]從這些尺度中提取特征,通過與上采樣特征合并,從中獲得了更好的細(xì)粒度特征及更有意義的語義信息,并且在訓(xùn)練過程中,隨機改變輸入圖像大小,做到從多尺度訓(xùn)練網(wǎng)絡(luò)模型,使得算法對小目標(biāo)的敏感度與檢測精度大幅度提升。
(3) 分類損失函數(shù)替換。YOLOv3算法替換了softmax cross-entropy loss損失函數(shù)對每一個候選框進行分類,考慮到當(dāng)預(yù)測的目標(biāo)類別很復(fù)雜、重疊標(biāo)簽較多時,該損失函數(shù)并不適用,而復(fù)合標(biāo)簽的方法能對數(shù)據(jù)進行更好地預(yù)測與分類,損失函數(shù)采用binary cross-entropy loss,使得每個邊界框(Bounding Box)可以預(yù)測多個目標(biāo),同時也保證了每一個目標(biāo)的預(yù)測準(zhǔn)確率。
圖1 殘差網(wǎng)絡(luò)和Darknet-53跳層連接示意圖
YOLOv3算法采用Darknet-53作為特征提取的主要網(wǎng)絡(luò),Darknet-53網(wǎng)絡(luò)共有53個卷積層,網(wǎng)絡(luò)結(jié)構(gòu)更深。該結(jié)構(gòu)中采用一系列3×3和1×1等表現(xiàn)良好的卷積層,并使用LeakyReLu作為修正函數(shù),在保持高檢測速度前提下提升了目標(biāo)識別的準(zhǔn)確性;同時,YOLOv3算法采用類ResNet[14]跳層連接方式的快捷連接(Shotcut Connections),將原始數(shù)據(jù)跳過某些層而直接傳到之后的層,起到降低模型復(fù)雜性及減少參數(shù)數(shù)量的目的,很好地解決了準(zhǔn)確率隨著網(wǎng)絡(luò)結(jié)構(gòu)加深而下降的問題。圖1為殘差網(wǎng)絡(luò)(左)和Darknet-53(右)跳層連接示意圖。表1為Darknet-53網(wǎng)絡(luò)性能對比表,在保證每個網(wǎng)絡(luò)具有相同設(shè)置情況下分別對其進行訓(xùn)練與測試。
由表1可知,Darknet-53網(wǎng)絡(luò)在Top-1和Top-5識別的準(zhǔn)確率可與ResNet-101、ResNet-152網(wǎng)絡(luò)相媲美,浮點運算次數(shù)可達(dá)到1 457次/s,使得網(wǎng)絡(luò)可以更好地利用GPU進行圖像等的處理,且圖像檢測速度為78FPS,滿足實時檢測的要求。
表1 Darknet-53網(wǎng)絡(luò)性能對比表
YOLOv3算法延續(xù)了Faster R-CNN的anchor boxes[15]機制,即先驗框思想,anchor的個數(shù)及寬高比將影響目標(biāo)識別的精度,在算法訓(xùn)練過程中,隨著迭代次數(shù)的增加,候選框參數(shù)也在不斷調(diào)整,使得其與真實框參數(shù)更接近。YOLOv3算法通過在COCO數(shù)據(jù)集上進行K-means[16]維度聚類,得到最優(yōu)anchor的個數(shù)及寬高維度,與Faster R-CNN手工設(shè)置先驗框相比,采用K-means聚類方法得到的先驗框主觀性較弱,更易于深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)學(xué)習(xí)。本方法的目的在于增強對密集人群和小目標(biāo)的識別效果,因此需要深度卷積神經(jīng)網(wǎng)絡(luò)從大量樣本中學(xué)習(xí)行人特征。COCO數(shù)據(jù)集共有約80類目標(biāo)數(shù)據(jù),包含人、車、草地等多類數(shù)據(jù)[17],“扁長型”框較多而符合人群目標(biāo)特征的“瘦高型”框相對較少。本文采集的實驗用數(shù)據(jù)集候選框類型與COCO數(shù)據(jù)集相反,多為“瘦高型”數(shù)據(jù),因此更具有代表性,所以通過對實驗用數(shù)據(jù)集進行K-means聚類分析,可得到適合高密度人群數(shù)據(jù)集最優(yōu)anchor個數(shù)及寬高維度。
傳統(tǒng)K-means聚類通過度量樣本間相似性進行間接聚類,通常使用歐式距離或曼哈頓距離作為度量公式,但會產(chǎn)生“大框優(yōu)勢”,使得較大邊界框相對于較小邊界框產(chǎn)生更多的錯誤。而YOLOv3算法采用重疊度交并比(Intersection Over Union,IOU)來反映候選框與真實框之間的誤差,其距離公式為
d(cos,centroid)=1-IOU(box,centroid)
(1)
式中:box為樣本聚類結(jié)果;centroid為所有簇的中心;IOU(box,centroid)為所有簇中心與所有聚類框的交并比。
通過對高密度人群目標(biāo)數(shù)據(jù)集進行聚類分析,目標(biāo)函數(shù)的變化曲線見圖2。
圖2 目標(biāo)函數(shù)的變化曲線
由圖2可見,隨著聚類個數(shù)K值(簇值)的不同,目標(biāo)函數(shù)曲線隨之改變;當(dāng)K值大于6時,目標(biāo)函數(shù)曲線趨于平緩,因此選擇K值為6,即anchor個數(shù)為6。此外,隨著K值的不同,網(wǎng)絡(luò)訓(xùn)練候選框初始規(guī)格也隨之變化,具體見表2。
表2 實驗數(shù)據(jù)集聚類結(jié)果
深層卷積神經(jīng)網(wǎng)絡(luò)的卷積層數(shù)及更深的網(wǎng)絡(luò)結(jié)構(gòu),對識別目標(biāo)特征提取有很好的效果??紤]到高密度人群目標(biāo)相對較小,以及算法自身結(jié)構(gòu)深度,為了獲得更高的語義信息,本文對YOLOv3算法的特征提取Darknet-53網(wǎng)絡(luò)進行了改進,即在主干網(wǎng)絡(luò)中額外增加2個1×1和3×3的卷積層。增加卷積層的優(yōu)勢主要體現(xiàn)在以下幾個方面:①有利于降低卷積核通道維數(shù)與參數(shù),使卷積神經(jīng)網(wǎng)絡(luò)得以簡化;②增加的1×1和3×3卷積核可以在不損失分辨率的前提下增加非線性特性的表達(dá),豐富信息的表現(xiàn)形式;③在獲得相同的感受野與捕捉更多的語義信息的同時,較小的卷積核可以在加深網(wǎng)絡(luò)的同時提高網(wǎng)絡(luò)的表達(dá)能力[18];④使用較小卷積核的卷積層與較大卷積核的卷積層相比擁有更多層的非線性函數(shù),可以突出判決函數(shù)的判決行。改進后的YOLOv3算法結(jié)構(gòu)見圖3。
圖3 YOLOv3-M算法結(jié)構(gòu)
此外,為了從多個角度對比改進后算法的性能,將改進的YOLOv3算法分別進行命名,即:將只進行維度聚類后anchor個數(shù)改為6的算法稱為YOLOv3-A,取YOLO與anchor的首字母進行命名;將進行維度聚類且更改算法結(jié)構(gòu)后的算法稱為YOLOv3-M,取YOLO與模型(Model)的首字母命名,以方便辨識。
實驗平臺軟硬件配置情況見表3,所有訓(xùn)練均在該實驗平臺上進行。
表3 實驗平臺軟硬件配置
初始模型參數(shù)設(shè)置如下:Learning_rate為0.001;Momentum為0.9;Decay為0.0005;Batch為16;Max_batches為50000;Policy為steps;Scales為0.1,0.1。
本文選取在工作中收集到的密集人群場景圖片4 000張作為實驗數(shù)據(jù),并對實驗數(shù)據(jù)集進行人工標(biāo)注。行人數(shù)據(jù)集示例圖片見圖4。采集的數(shù)據(jù)集為日常生活中的場景,行人外貌姿態(tài)豐富、身處背景復(fù)雜、個體差異明顯,并伴隨不同程度的遮擋,符合實驗用數(shù)據(jù)需求,其中包含訓(xùn)練集2 640張圖片,驗證集1 360張圖片。此外,將500張圖片作為測試數(shù)據(jù)集以便對訓(xùn)練結(jié)果進行測試。
圖4 行人數(shù)據(jù)集示例圖片
通過實驗對本文提出的改進后的算法YOLOv3-M進行目標(biāo)檢測的訓(xùn)練與測試,并將實驗結(jié)果與Faster R-CNN、YOLOv3、YOLOv3-A等算法進行對比分析。Faster R-CNN算法是目標(biāo)檢測方法中檢測準(zhǔn)確率最高的算法之一,其區(qū)域建議網(wǎng)絡(luò)(Region Proposal Networks,RPN)直接訓(xùn)練生成候選區(qū)域,相比較傳統(tǒng)的區(qū)域搜索方法如Selective Search、Edge Boxes等[19],可簡化目標(biāo)檢測流程,大幅提高識別的準(zhǔn)確率;YOLOv3是YOLO系列算法的最新改進版本,不論在檢測速度與精度上都具有代表性,因此本文選擇這兩種具有代表性的算法作為實驗對象進行對比分析。本次實驗共分為以下四組:
(1) 使用本文提出的YOLOv3-M和Faster R-CNN分別在實驗用數(shù)據(jù)集上進行20 000次、30 000次、50 000次迭代訓(xùn)練,觀察其準(zhǔn)確率,其訓(xùn)練結(jié)果見表4;同時,使用這兩種算法對測試數(shù)據(jù)集中的數(shù)據(jù)進行測試,其測試結(jié)果見圖5。
表4 YOLOv3-M和Faster R-CNN算法的訓(xùn)練結(jié)果
圖5 Faster R-CNN和YOLOv3-M算法的測試結(jié)果
其中,準(zhǔn)確率P的計算公式為
(2)
式中:TP表示預(yù)測結(jié)果為行人、真實結(jié)果也為行人的數(shù)量;FP表示預(yù)測結(jié)果為行人、真實結(jié)果為非行人的數(shù)量。
由表4可知:YOLOv3-M和Faster R-CNN算法在訓(xùn)練過程中隨著迭代次數(shù)的增加準(zhǔn)確率不斷提升,并且隨著迭代次數(shù)的增加,兩種算法的差距逐漸減?。辉?0 000次迭代后,YOLOv3-M算法的準(zhǔn)確率略低于Faster R-CNN算法,兩者的差值為0.03,說明本文方法具有良好的目標(biāo)檢測能力。此外,由圖5可見,YOLOv3-M算法在小目標(biāo)檢測方面稍遜于Faster R-CNN算法,這也是下一步需要進一步研究的重點內(nèi)容之一。
(2) 分別使用YOLOv3、YOLOv3-A、YOLOv3-M算法在實驗用測試集上進行測試,以召回率(Recall)和平均準(zhǔn)確率(mAP)為檢測指標(biāo),其測試結(jié)果見表5。其中,召回率R的計算公式為
(3)
式中:FN表示預(yù)測結(jié)果為非行人、真實結(jié)果為行人的數(shù)量。
平均準(zhǔn)確率mAP的計算公式為
(4)
式中:∑AP表示單類圖片平均準(zhǔn)確率之和;NC為類別總數(shù)。
表5 不同算法在測試數(shù)據(jù)集上的測試結(jié)果
由表5可知,YOLOv3-M算法的召回率和平均準(zhǔn)確率均高于YOLOv3和YOLOv3-A算法,其中在召回率方面,YOLOv3-M算法高于YOLOv3算法4.73%,高于YOLOv3-A算法0.13%;在平均準(zhǔn)確率方面,YOLOv3-M算法高于YOLOv3算法6.4%,高于YOLOv3-A算法4.29%。測試結(jié)果表明:經(jīng)過維度聚類后YOLOv3-M算法更好地囊括了不同尺度的行人,候選框?qū)捀弑雀厦芗巳耗繕?biāo),被正確預(yù)測的行人數(shù)逐漸增多;另一方面,結(jié)構(gòu)調(diào)整與重聚類后的網(wǎng)絡(luò)整體性能指標(biāo)得到了優(yōu)化,增加的1×1和3×3卷積核使得網(wǎng)絡(luò)獲得更多語義信息,對小目標(biāo)識別的準(zhǔn)確率和定位的準(zhǔn)確率相較于YOLOv3算法有所提升。因此,改進后算法的查全率、查準(zhǔn)率性能得以證實。
使用上述三種網(wǎng)絡(luò)模型對測試數(shù)據(jù)集中的樣本進行測試,其測試結(jié)果見圖6。所用算法從左向右依次為YOLOv3、YOLOv3-A、YOLOv3-M。
由圖6可見,YOLOv3算法對密集人群目標(biāo)的漏識狀況較其他兩種方法嚴(yán)重,對小目標(biāo)人群定位準(zhǔn)確性差,而YOLOv3-M算法的識別、定位結(jié)果相對更精準(zhǔn)。
(3) 在1 080p的mp4視頻上分別對YOLOv3、YOLOv3-A、YOLOv3-M算法進行圖像檢測速度(FPS)測試,其測試結(jié)果見表6。
由表6可知,經(jīng)過維度聚類后的算法YOLOv3-A算法的圖像識別速度略快,可達(dá)到22 FPS,其原因是YOLOv3-A算法維度聚類后所用anchor數(shù)目少,且寬高維度更加符合密集人群特征,因此在占用相對少的資源的情況下,圖像識別速度快,且高于其他兩類算法;而YOLOv3-M算法圖像識別速度與YOLOv3算法持平,基本滿足目標(biāo)實時性檢測的要求。
(4) 為了驗證本文提出的改進后的算法YOLOv3-M可以提高檢測器性能的有效性,以測試數(shù)據(jù)集作為實驗數(shù)據(jù),在閾值相同的情況下,以漏檢率曲線(MR-FPPI曲線)作為評價指標(biāo),比較三種算法YOLOv3、YOLOv3-A、YOLOv3-M所訓(xùn)練的檢測器的漏檢率曲線,見圖7。其中,MR(Miss Rate)為丟失率,F(xiàn)PPI(False Positives Per Image)為每張圖片錯誤正例,MR-FPPI曲線主要考察FP(False Positives)出現(xiàn)的頻率。
圖7 不同算法所訓(xùn)練的檢測器的漏檢率曲線
由圖7可見,在閾值同為0.5的情況下,YOLOv3-M算法訓(xùn)練檢測器的漏檢率為11.32%,較YOLOv3算法訓(xùn)練檢測器的漏檢率降低了29.19%,較YOLOv3-A算法訓(xùn)練檢測器的漏檢率降低了24.92%,進而改進的YOLOv3-M算法訓(xùn)練檢測器的漏檢性能得以驗證。
本文以YOLOv3算法為基礎(chǔ),通過對數(shù)據(jù)集進行維度聚類分析、算法結(jié)構(gòu)改進與參數(shù)調(diào)整等,提出了一種基于改進YOLOv3算法的密集人群目標(biāo)實時檢測方法即YOLOv3-M算法。實驗結(jié)果表明:該方法具有較高的檢測準(zhǔn)確率與定位準(zhǔn)確率,平均準(zhǔn)確率從YOLOv3算法的84.8%提高到Y(jié)OLOv3-M算法的91.20%,召回率從85.04%提高到89.77%,且在行人檢測過程中漏檢率低于改進優(yōu)化前的YOLOv3算法。但是,本文提出的檢測方法仍存在一些不足之處,如檢測速度稍遜色于YOLOv3算法、對微小目標(biāo)定位準(zhǔn)確率不高等,主要原因是由于算法改進后,算法結(jié)構(gòu)加深所致。如何進一步優(yōu)化算法結(jié)構(gòu),在保證檢測準(zhǔn)確率的情況下進一步提高其檢測速度及對微小目標(biāo)的識別率,將是下一步研究的重點內(nèi)容。