王思元,王俊杰
(中國海洋大學工程學院,山東 青島 266100 )
隨著我國城市化進程的加快,越來越多的大型公共建筑應運而生,與此同時也出現了越來越多如車站、地鐵、商場等人員密集場所,當發生災害事故時,需要盡快將大規模人群進行疏散,而高密度人群疏散過程一旦出現問題,可能會造成重大的人員傷亡事故。因此,實時、準確的人群識別與檢測對保證人員密集場所的交通安全及規劃管理具有重要的應用價值。
傳統的行人檢測方法主要采用人工設計特征進行全局特征行人檢測,通過Haar小波特征、HOG特征、Shapelet與Edgelte特征[1]、TED與輪廓版特征等訓練分類器進行行人檢測,并在現有的數據集上取得了許多令人矚目的效果。如Hoang等[2]提出了基于可變尺度梯度特征直方圖(Histogram of Oriented Gradient,HOG)的行人特征描述方法,并結合支持向量機(Support Vector Machine,SVM)進行圖像分類,使得分類準確率有較大的提升;Armanfard等[3]將紋理邊緣特征描述(Texture Edge Descriptor,TED)系統應用于視頻中的行人檢測,其特征包括紋理與邊緣信息,并且對光照明顯變化時的圖像有很好的魯棒性,可以較好地處理室內與室外光照變化對圖像的影響;Dollar等[4]巧妙地將聚合通道特征(Aggregated Channel Features,ICF)與HOG特征相融合,用于背景復雜情況下的行人檢測。人工設計特征始終難以有效地表達復雜環境下行人特征問題,且程序本身運算量高,其高復雜度也限制了目標檢測的實時性。近幾年,基于深度卷積神經網絡(Convolution Neural Network,CNN)的算法憑借其在特征提取上的優勢被廣泛應用于目標檢測任務中,大幅提高了目標檢測的準確率。目前CNN算法較為廣泛使用的方法可以分為三類:第一類方法是基于區域建議的目標識別算法,如Fast R-CNN[5]、Mask R-CNN[6]、Faster R-CNN[7]等,這類算法在目標識別方面效果很好,但是檢測速度相對較慢,因而很難應用于實際;第二類方法是基于學習搜索的檢測算法,如深化強度網絡Q-Learning、AttentionNet模型[8]等,這類算法將圖像識別提取任務轉換為一個動態視覺搜索任務,與其他方法相比,其檢測精度不甚理想;第三類方法是基于回歸方式的目標檢測算法,如SSD(Single Shot MultiBox Detector)算法[9]、YOLO(You Only Look Once)系列算法[10-11]等,此系列算法在保證目標檢測準確率同時也提高了檢測速度,基本可以滿足實時性的要求。目前YOLO算法已經發展到第三個版本即YOLOv3[12],在目標實時性檢測方面的表現尤為突出。
本文借鑒目標檢測領域先進的研究成果,提出將YOLOv3網絡應用于高密度人群目標檢測中,通過對其層級結構及參數進行調整,調整后的網絡(即YOLOv3-M網絡)不僅能夠準確識別目標人群位置,而且對于存在局部遮擋、背景復雜、光線不足、視線模糊等情況下的人群也具有很好的識別效果。
YOLO算法在2016年由Redmon等提出后,到2018年已經經歷了YOLOv2、YOLOv3兩個版本的改進。與前兩個版本相比,YOLOv3算法主要做了以下幾方面的改進:
(1) 借鑒ResNet殘差網絡思想。首先,殘差網絡保證了即使在很深的網絡結構下,模型仍能正常收斂,網絡越深,特征表達越好,分類與預測的效果皆有提升;此外,網絡中1×1的卷積,壓縮了卷積后的特征表示,減少了每次卷積中的通道,在減少參數量的同時也一定程度上減少了計算量。
(2) 采用多尺度融合預測方法。YOLOv3算法在3種不同尺度上進行預測,使用類金字塔網絡[13]從這些尺度中提取特征,通過與上采樣特征合并,從中獲得了更好的細粒度特征及更有意義的語義信息,并且在訓練過程中,隨機改變輸入圖像大小,做到從多尺度訓練網絡模型,使得算法對小目標的敏感度與檢測精度大幅度提升。
(3) 分類損失函數替換。YOLOv3算法替換了softmax cross-entropy loss損失函數對每一個候選框進行分類,考慮到當預測的目標類別很復雜、重疊標簽較多時,該損失函數并不適用,而復合標簽的方法能對數據進行更好地預測與分類,損失函數采用binary cross-entropy loss,使得每個邊界框(Bounding Box)可以預測多個目標,同時也保證了每一個目標的預測準確率。

圖1 殘差網絡和Darknet-53跳層連接示意圖
YOLOv3算法采用Darknet-53作為特征提取的主要網絡,Darknet-53網絡共有53個卷積層,網絡結構更深。該結構中采用一系列3×3和1×1等表現良好的卷積層,并使用LeakyReLu作為修正函數,在保持高檢測速度前提下提升了目標識別的準確性;同時,YOLOv3算法采用類ResNet[14]跳層連接方式的快捷連接(Shotcut Connections),將原始數據跳過某些層而直接傳到之后的層,起到降低模型復雜性及減少參數數量的目的,很好地解決了準確率隨著網絡結構加深而下降的問題。圖1為殘差網絡(左)和Darknet-53(右)跳層連接示意圖。表1為Darknet-53網絡性能對比表,在保證每個網絡具有相同設置情況下分別對其進行訓練與測試。
由表1可知,Darknet-53網絡在Top-1和Top-5識別的準確率可與ResNet-101、ResNet-152網絡相媲美,浮點運算次數可達到1 457次/s,使得網絡可以更好地利用GPU進行圖像等的處理,且圖像檢測速度為78FPS,滿足實時檢測的要求。

表1 Darknet-53網絡性能對比表
YOLOv3算法延續了Faster R-CNN的anchor boxes[15]機制,即先驗框思想,anchor的個數及寬高比將影響目標識別的精度,在算法訓練過程中,隨著迭代次數的增加,候選框參數也在不斷調整,使得其與真實框參數更接近。YOLOv3算法通過在COCO數據集上進行K-means[16]維度聚類,得到最優anchor的個數及寬高維度,與Faster R-CNN手工設置先驗框相比,采用K-means聚類方法得到的先驗框主觀性較弱,更易于深度卷積神經網絡(CNN)學習。本方法的目的在于增強對密集人群和小目標的識別效果,因此需要深度卷積神經網絡從大量樣本中學習行人特征。COCO數據集共有約80類目標數據,包含人、車、草地等多類數據[17],“扁長型”框較多而符合人群目標特征的“瘦高型”框相對較少。本文采集的實驗用數據集候選框類型與COCO數據集相反,多為“瘦高型”數據,因此更具有代表性,所以通過對實驗用數據集進行K-means聚類分析,可得到適合高密度人群數據集最優anchor個數及寬高維度。
傳統K-means聚類通過度量樣本間相似性進行間接聚類,通常使用歐式距離或曼哈頓距離作為度量公式,但會產生“大框優勢”,使得較大邊界框相對于較小邊界框產生更多的錯誤。而YOLOv3算法采用重疊度交并比(Intersection Over Union,IOU)來反映候選框與真實框之間的誤差,其距離公式為
d(cos,centroid)=1-IOU(box,centroid)
(1)
式中:box為樣本聚類結果;centroid為所有簇的中心;IOU(box,centroid)為所有簇中心與所有聚類框的交并比。
通過對高密度人群目標數據集進行聚類分析,目標函數的變化曲線見圖2。

圖2 目標函數的變化曲線
由圖2可見,隨著聚類個數K值(簇值)的不同,目標函數曲線隨之改變;當K值大于6時,目標函數曲線趨于平緩,因此選擇K值為6,即anchor個數為6。此外,隨著K值的不同,網絡訓練候選框初始規格也隨之變化,具體見表2。

表2 實驗數據集聚類結果
深層卷積神經網絡的卷積層數及更深的網絡結構,對識別目標特征提取有很好的效果。考慮到高密度人群目標相對較小,以及算法自身結構深度,為了獲得更高的語義信息,本文對YOLOv3算法的特征提取Darknet-53網絡進行了改進,即在主干網絡中額外增加2個1×1和3×3的卷積層。增加卷積層的優勢主要體現在以下幾個方面:①有利于降低卷積核通道維數與參數,使卷積神經網絡得以簡化;②增加的1×1和3×3卷積核可以在不損失分辨率的前提下增加非線性特性的表達,豐富信息的表現形式;③在獲得相同的感受野與捕捉更多的語義信息的同時,較小的卷積核可以在加深網絡的同時提高網絡的表達能力[18];④使用較小卷積核的卷積層與較大卷積核的卷積層相比擁有更多層的非線性函數,可以突出判決函數的判決行。改進后的YOLOv3算法結構見圖3。

圖3 YOLOv3-M算法結構
此外,為了從多個角度對比改進后算法的性能,將改進的YOLOv3算法分別進行命名,即:將只進行維度聚類后anchor個數改為6的算法稱為YOLOv3-A,取YOLO與anchor的首字母進行命名;將進行維度聚類且更改算法結構后的算法稱為YOLOv3-M,取YOLO與模型(Model)的首字母命名,以方便辨識。
實驗平臺軟硬件配置情況見表3,所有訓練均在該實驗平臺上進行。

表3 實驗平臺軟硬件配置
初始模型參數設置如下:Learning_rate為0.001;Momentum為0.9;Decay為0.0005;Batch為16;Max_batches為50000;Policy為steps;Scales為0.1,0.1。
本文選取在工作中收集到的密集人群場景圖片4 000張作為實驗數據,并對實驗數據集進行人工標注。行人數據集示例圖片見圖4。采集的數據集為日常生活中的場景,行人外貌姿態豐富、身處背景復雜、個體差異明顯,并伴隨不同程度的遮擋,符合實驗用數據需求,其中包含訓練集2 640張圖片,驗證集1 360張圖片。此外,將500張圖片作為測試數據集以便對訓練結果進行測試。

圖4 行人數據集示例圖片
通過實驗對本文提出的改進后的算法YOLOv3-M進行目標檢測的訓練與測試,并將實驗結果與Faster R-CNN、YOLOv3、YOLOv3-A等算法進行對比分析。Faster R-CNN算法是目標檢測方法中檢測準確率最高的算法之一,其區域建議網絡(Region Proposal Networks,RPN)直接訓練生成候選區域,相比較傳統的區域搜索方法如Selective Search、Edge Boxes等[19],可簡化目標檢測流程,大幅提高識別的準確率;YOLOv3是YOLO系列算法的最新改進版本,不論在檢測速度與精度上都具有代表性,因此本文選擇這兩種具有代表性的算法作為實驗對象進行對比分析。本次實驗共分為以下四組:
(1) 使用本文提出的YOLOv3-M和Faster R-CNN分別在實驗用數據集上進行20 000次、30 000次、50 000次迭代訓練,觀察其準確率,其訓練結果見表4;同時,使用這兩種算法對測試數據集中的數據進行測試,其測試結果見圖5。

表4 YOLOv3-M和Faster R-CNN算法的訓練結果

圖5 Faster R-CNN和YOLOv3-M算法的測試結果
其中,準確率P的計算公式為
(2)
式中:TP表示預測結果為行人、真實結果也為行人的數量;FP表示預測結果為行人、真實結果為非行人的數量。
由表4可知:YOLOv3-M和Faster R-CNN算法在訓練過程中隨著迭代次數的增加準確率不斷提升,并且隨著迭代次數的增加,兩種算法的差距逐漸減??;在50 000次迭代后,YOLOv3-M算法的準確率略低于Faster R-CNN算法,兩者的差值為0.03,說明本文方法具有良好的目標檢測能力。此外,由圖5可見,YOLOv3-M算法在小目標檢測方面稍遜于Faster R-CNN算法,這也是下一步需要進一步研究的重點內容之一。
(2) 分別使用YOLOv3、YOLOv3-A、YOLOv3-M算法在實驗用測試集上進行測試,以召回率(Recall)和平均準確率(mAP)為檢測指標,其測試結果見表5。其中,召回率R的計算公式為
(3)
式中:FN表示預測結果為非行人、真實結果為行人的數量。
平均準確率mAP的計算公式為
(4)
式中:∑AP表示單類圖片平均準確率之和;NC為類別總數。

表5 不同算法在測試數據集上的測試結果
由表5可知,YOLOv3-M算法的召回率和平均準確率均高于YOLOv3和YOLOv3-A算法,其中在召回率方面,YOLOv3-M算法高于YOLOv3算法4.73%,高于YOLOv3-A算法0.13%;在平均準確率方面,YOLOv3-M算法高于YOLOv3算法6.4%,高于YOLOv3-A算法4.29%。測試結果表明:經過維度聚類后YOLOv3-M算法更好地囊括了不同尺度的行人,候選框寬高比更符合密集人群目標,被正確預測的行人數逐漸增多;另一方面,結構調整與重聚類后的網絡整體性能指標得到了優化,增加的1×1和3×3卷積核使得網絡獲得更多語義信息,對小目標識別的準確率和定位的準確率相較于YOLOv3算法有所提升。因此,改進后算法的查全率、查準率性能得以證實。
使用上述三種網絡模型對測試數據集中的樣本進行測試,其測試結果見圖6。所用算法從左向右依次為YOLOv3、YOLOv3-A、YOLOv3-M。
由圖6可見,YOLOv3算法對密集人群目標的漏識狀況較其他兩種方法嚴重,對小目標人群定位準確性差,而YOLOv3-M算法的識別、定位結果相對更精準。
(3) 在1 080p的mp4視頻上分別對YOLOv3、YOLOv3-A、YOLOv3-M算法進行圖像檢測速度(FPS)測試,其測試結果見表6。
由表6可知,經過維度聚類后的算法YOLOv3-A算法的圖像識別速度略快,可達到22 FPS,其原因是YOLOv3-A算法維度聚類后所用anchor數目少,且寬高維度更加符合密集人群特征,因此在占用相對少的資源的情況下,圖像識別速度快,且高于其他兩類算法;而YOLOv3-M算法圖像識別速度與YOLOv3算法持平,基本滿足目標實時性檢測的要求。
(4) 為了驗證本文提出的改進后的算法YOLOv3-M可以提高檢測器性能的有效性,以測試數據集作為實驗數據,在閾值相同的情況下,以漏檢率曲線(MR-FPPI曲線)作為評價指標,比較三種算法YOLOv3、YOLOv3-A、YOLOv3-M所訓練的檢測器的漏檢率曲線,見圖7。其中,MR(Miss Rate)為丟失率,FPPI(False Positives Per Image)為每張圖片錯誤正例,MR-FPPI曲線主要考察FP(False Positives)出現的頻率。

圖7 不同算法所訓練的檢測器的漏檢率曲線
由圖7可見,在閾值同為0.5的情況下,YOLOv3-M算法訓練檢測器的漏檢率為11.32%,較YOLOv3算法訓練檢測器的漏檢率降低了29.19%,較YOLOv3-A算法訓練檢測器的漏檢率降低了24.92%,進而改進的YOLOv3-M算法訓練檢測器的漏檢性能得以驗證。
本文以YOLOv3算法為基礎,通過對數據集進行維度聚類分析、算法結構改進與參數調整等,提出了一種基于改進YOLOv3算法的密集人群目標實時檢測方法即YOLOv3-M算法。實驗結果表明:該方法具有較高的檢測準確率與定位準確率,平均準確率從YOLOv3算法的84.8%提高到YOLOv3-M算法的91.20%,召回率從85.04%提高到89.77%,且在行人檢測過程中漏檢率低于改進優化前的YOLOv3算法。但是,本文提出的檢測方法仍存在一些不足之處,如檢測速度稍遜色于YOLOv3算法、對微小目標定位準確率不高等,主要原因是由于算法改進后,算法結構加深所致。如何進一步優化算法結構,在保證檢測準確率的情況下進一步提高其檢測速度及對微小目標的識別率,將是下一步研究的重點內容。