李白萍,韓新怡,吳冬梅
?
基于卷積神經(jīng)網(wǎng)絡的實時人群密度估計
李白萍,韓新怡,吳冬梅
(西安科技大學通信與信息工程學院,陜西 西安 710054)
針對傳統(tǒng)實時人群密度估計方法存在誤差大、分類效果不佳等缺陷,提出了基于卷積神經(jīng)網(wǎng)絡的實時人群密度估計方法。通過對比4種常見網(wǎng)絡結構:AlexNet、VGGNet、GoogLeNet和ResNet的準確度與實時性,選擇綜合性較好的GoogLeNet作為人群密度估計的模型,利用關鍵幀截取技術實現(xiàn)人群密度的實時估計并簡要分析人群密度特征圖。最后用實例驗證了該方法的實時性與準確度,證明了其可行性。
人群密度;卷積神經(jīng)網(wǎng)絡;視頻處理;實時估計
人群密度作為描述人群聚集程度的參數(shù),可以用來衡量人群的可控性與安全性。當人群密度上升時,人的不適程度也會隨之增加,人群會更不穩(wěn)定、不易控制。FRUIN[1]提出人群密度達到7.5人/m2時,人群易失去控制,發(fā)生災難性事件的潛在可能性較大。傳統(tǒng)的人群密度估計方法采用人工統(tǒng)計法,費時、費力且效率低下。近幾年,人工智能正處于蓬勃發(fā)展的時期,特別是深度學習,已在圖像處理領域取得了巨大的成功。目前,深度學習也逐漸被用于視頻分析上,并取得了一定的成果。因此,可考慮利用深度學習良好的圖像處理能力對視頻中人群進行密度估計。
大多數(shù)人群密度估計方法是將人群看作一個整體,尋找某種可以描述整個人群的特征,然后建立此特征與人群密度之間的關系,利用此關系估計人群密度。根據(jù)所選特征的不同,常規(guī)的人群密度估計方法分為像素統(tǒng)計法[2]和紋理分析法[3]。像素統(tǒng)計法的核心是認為人群前景圖像的像素數(shù)與人群密度存在正比例關系,借由計算整幅圖像中人群前景像素數(shù)所占的比例大小,估計出人群密度。雖然此方法直觀易理解,但當人群遮擋情況嚴重時,人群前景圖像的像素數(shù)無法真實反映人群密度情況,存在估計不準確的現(xiàn)象。紋理分析法的思想是將密度與人群圖像的紋理特征聯(lián)系起來,當人群密度高時,圖像的紋理較細,反之紋理較粗。一般來說,紋理分析主要采用較為傳統(tǒng)的灰度共生矩陣法(gray level dependence matrix, GLDM)[4],紋理粗時矩陣變化較為緩慢,反之則變化快。GLDM能夠很好地解決人群的重疊遮擋問題,在人群密度大時有良好的效果,但當人群密度較低時,此方法并不能保證良好的效果。上述兩種方法均是人工從視頻圖像上提取預先劃定好的特征,送入合適的分類器中分類。但人群場景較為復雜,人工選取的特征并不一定能完全地適用于各種情形,如像素統(tǒng)計法和紋理分析法均存在短板,且很難統(tǒng)一。
使用卷積神經(jīng)網(wǎng)絡處理靜態(tài)人群圖片能克服上述缺點,但靜態(tài)圖片不能滿足實際生活中的實時性要求。為此,本文使用卷積神經(jīng)網(wǎng)絡,對視頻的關鍵幀進行處理,完成視頻上的人群密度估計。且使用PETS2009視頻庫[5]中的視頻作為研究對象,將帶標簽的視頻幀作為卷積神經(jīng)網(wǎng)絡的輸入訓練模型,提取出可表征人群密度的特征,輸出則為人群密度的5個類別:Very Low (VL),Low (L),Medium (M),High (H),Very High (VH)。相比于常規(guī)方法,深度學習對人群視頻有較好的適應性和魯棒性,可以克服上述兩種常規(guī)方法的缺點,能夠真實地估計出人群密度情況。
卷積神經(jīng)網(wǎng)絡都是用卷積層、池化層等基本部件堆疊起來的結構。其均是前向傳播計算輸出值,后向傳播調(diào)整權重與偏置。卷積層中包含多個卷積核,其分別與輸入進行卷積,生成對應的特征圖。設輸入為×的矩陣,卷積核的大小為×,偏置為1,卷積后可得到大小為(–+1)×(–+1)的特征圖。計算過程如下
其中,F是為特征圖矩陣中的元素;I為輸入層與卷積核相對應的元素;為激活函數(shù)。
池化層是對原始特征圖的二次特征提取,使用一個新的特征代替小區(qū)域的總體特征。池化后的高層特征圖降低原特征圖的維度,避免過擬合問題。池化的方法分為平均池化和最大池化[6]:平均池化是對需要池化的區(qū)域中的左右元素求和,取平均數(shù)為最終特征;最大池化是取池化區(qū)域中最大的元素為特征。兩者的計算過程如下
其中,為原始特征圖經(jīng)過步長為、池化區(qū)域為×、偏置為2的池化層所得到的子采樣特征圖;max=1(F)為原始特征圖池化區(qū)域×中的最大元素。
雖然采用的部件基本相同,但不同的網(wǎng)絡結構由于卷積層尺寸大小和網(wǎng)絡深度之間的差異,對同一數(shù)據(jù)集會呈現(xiàn)出不同的效果。目前,較為經(jīng)典的網(wǎng)絡結構有AlexNet、GoogLeNet、VGGNet和ResNet,由于其深度、參數(shù)量以及模型大小各異,因此需選擇一個較為合適的結構完成視頻上的人群密度估計。
對于人群密度估計,首先要保證密度估計準確無誤。AlexNet、GoogLeNet、VGGNet和ResNet這些結構在歷年的ImageNet挑戰(zhàn)賽均取得過很好的成績,在ImageNet 1000類別數(shù)據(jù)集上的top-5錯誤率均可達到17%以下。但本文使用的PETS2009數(shù)據(jù)集規(guī)模遠小于ImageNet,且類別更細化,因此需要網(wǎng)絡有更好的特征提取能力。
從特征提取角度來看,網(wǎng)絡越深,提取特征的能力越強,最終的分類結果也就越好。另外,網(wǎng)絡路徑數(shù)目的增加也成為卷積神經(jīng)網(wǎng)絡的一種設計趨勢,人們在增加網(wǎng)絡深度的同時擴增網(wǎng)絡中的分支數(shù)量,使得模型的精度大幅度提高[7]。以下是對上述各網(wǎng)絡在準確度和網(wǎng)絡深度與結構上的討論。
(1) AlexNet的深度為8層,前5層是卷積層,后3層是全連接層,在最后一個連接層可輸出1 000個類別;AlexNet的網(wǎng)絡分支較少,屬于簡單的鏈式結構。其在ImageNet上分類測試的top-5、top-1錯誤率分別為15.3%和36.7%[8]。單從準確度來看,AlexNet的效果并不十分出色,但其是第一個大規(guī)模卷積神經(jīng)網(wǎng)絡結構,且思想對后續(xù)的網(wǎng)絡結構具有指導作用,如第一次采用Dropout減少過擬合,使用ReLU加快網(wǎng)絡的收斂速度等。
(2) VGGNet有6種網(wǎng)絡配置,這些網(wǎng)絡結構的設計原則均相同,不同的是網(wǎng)絡深度,最深可達19層。目前,較為常用的深度分別為16層和19層。VGGNet由AlexNet發(fā)展而來,也為鏈式結構,網(wǎng)絡不存在額外分支,從輸入到輸出只有一條路徑。VGGNet在分類與識別任務中均取得了不俗的成績:效果最好的16層的VGGNet-D的top-5、 top-1錯誤率可分別低至7.3%和24.8%[9]。VGGNet取得如此優(yōu)秀的結果,不僅是因為網(wǎng)絡深,也因為其使用了多個小尺寸卷積核代替一個大尺寸卷積核,在增加網(wǎng)絡非線性能力的同時減少了參數(shù)。
(3) GoogLeNet深度有22層,與前兩種網(wǎng)絡不同,GoogLeNet的路徑分支眾多,如圖1所示,Inception結構增加了網(wǎng)絡的寬度,寬度與深度共同提升了GoogLeNet的性能。
圖1 GoogLeNet的Inception結構
(4) 在Inception結構中,使用了大小不同的卷積核,可融合不同尺度的特征,提高網(wǎng)絡性能。GoogLeNet在ImageNet上分類的top-5錯誤率僅為6.66%[10],可見其性能十分優(yōu)秀,深而寬的網(wǎng)絡結構可以有效地提取和融合不同尺寸的特征,符合人群密度分類任務的要求。
(5) ResNet深度可達152層,引入身份捷徑鏈接”(identity shortcut connection)解決了梯度彌散問題,使網(wǎng)絡深度增加的同時性能不退化。最終,ResNet的top-5錯誤率為3.6%[11]。
實時性是影響視頻人群密度分類準確性的重要因素。對于視頻,分類計算耗時長,將會導致預測結果滯后于視頻內(nèi)容,與實際結果偏差過大。因此,所選取的網(wǎng)絡結構要在保證準確度的同時高效運算。網(wǎng)絡的深度對計算速度有著重要影響,一般而言,層數(shù)越多計算耗時越長[12]。另外,參數(shù)量也能反映計算效率,參數(shù)越多,計算開銷越大,效率就越低。以下是關于4種網(wǎng)絡運算效率的討論。
(1) AlexNet:8層網(wǎng)絡結構。有3個全連接層,有60 M以上的參數(shù)量。由于結構層數(shù)最少,計算耗時最短,但因全連接層的存在其參數(shù)量并不少。雖然AlexNet實時性好,但準確度在4種網(wǎng)絡中最低,卷積層少從而特征抽取能力弱,泛化能力也較差。
(2) VGGNet:深度和網(wǎng)絡結構使得其計算單張圖片所需的時間更長。由于擁有3個全連接層,參數(shù)量在133 M以上。
(3) GoogLeNet:參數(shù)量僅為7 M,遠遠小于AlexNet和VGGNet。雖然比VGGNet更深,但GoogLeNet的Inception架構可以將稀疏矩陣聚類為較為密集的子矩陣來提高網(wǎng)絡性能,既保持網(wǎng)絡結構的稀疏性,又利用了密集矩陣的高計算性能。另外,Inception使用1×1卷積核進行降維,使計算性能大幅提高。一般來說,具有Inception的網(wǎng)絡比沒有Inception的網(wǎng)絡速度快2~3倍。GoogLeNet使用average pooling代替全連接層,大幅減少參數(shù)量的同時將top-1錯誤率降低了0.6%。GoogLeNet的計算速度低于AlexNet,遠遠高于VGGNet,加之準確度高,適合本文任務的要求。
(4) ResNet:殘差網(wǎng)絡越深,分類效果越好。常見的殘差網(wǎng)絡結構遠比前3種深,計算開銷較之更大,準確度高,但不滿足實時性要求。
綜上,AlexNet可滿足實時性,但準確度不夠高;VGGNet與ResNet的準確度高,但計算開銷大,這3種網(wǎng)絡均不適合本文任務。GoogLeNet不僅滿足準確度要求,也滿足實時性要求,因此本文選擇GoogLeNet作為在視頻是人群密度分類的核心算法。
人群密度分類可建立人群圖像與密度類別之間的某種關聯(lián),并以此作為衡量標準,對新的視頻數(shù)據(jù)或圖像數(shù)據(jù)進行人群密度估計。本文將人群圖像的視頻幀作為輸入,用卷積神經(jīng)網(wǎng)絡尋找特征,并分析特征圖。
對于人群密度估計,所選取的特征在很大程度上影響著估計結果。卷積神經(jīng)網(wǎng)絡的深層結構能抽取較為抽象的高層非線性特征,其對訓練數(shù)據(jù)有著最佳的本征解釋。在卷積神經(jīng)網(wǎng)絡中,卷積核可以探測特定的形狀、顏色等[13],圖2為訓練完成的GoogLeNet模型的第一個卷積層中的卷積核。特征圖中包含卷積核所抓取到的特征。因此,將已檢測到細小形狀、顏色的特征圖作為網(wǎng)絡下一層的輸入,再次通過卷積獲得更為復雜的特征。經(jīng)過多層之后,抽取出的特征會變得復雜抽象。
圖2 GoogLeNet第一個卷積層的卷積核
特征圖可以顯示圖像經(jīng)過不同的卷積核,卷積計算之后的情形。對特征圖進行可視化后,能夠清楚地觀察CNN網(wǎng)絡的工作過程。如圖像進入卷積神經(jīng)網(wǎng)絡中,經(jīng)過層層卷積、下采樣后,特征圖也相應地變得越來越傾向于某個類別。圖3是取自PETS2009視頻庫中的3幀圖片,分別代表人群密度為低、中、高3種情形。將其送入訓練好的GoogLeNet模型,完成分類運算后,對圖像經(jīng)過第二個卷積層后的特征圖進行可視化,如圖3所示。
圖4中彩色區(qū)域?qū)?幀圖片中的人群位置,其形狀與人群形狀相近,人越多,彩色區(qū)域越大,由此可見,人群的某個特征激活了對應該特征圖的卷積核。特征圖中的高亮彩色部分是“敏感”區(qū)域,對其分類結果的影響遠大于藍色區(qū)域。在卷積神經(jīng)網(wǎng)絡的低層,卷積核提取的特征較為簡單,即線條、形狀及顏色等,因此在特征圖右上角檢測到了某種與人群相似的特征,即高亮區(qū)域。類似于這樣的誤檢區(qū)域會隨著卷積層數(shù)的增多而減少。越往高層,經(jīng)過的卷積層越多,特征圖越接近于簡單的像素塊。圖5為高密度時某一高層特征圖。其彩色部分依舊是對分類結果敏感的部分,但不同的是高層特征圖已不再有人群形狀等細節(jié)信息,說明高層的卷積核提取的特征更為復雜,這種特征必然是人群所獨有的特征。
圖3 3種密度的人群圖
圖4 人群圖像的特征圖
圖5 高密度人群圖像的高層特征圖
視頻是由連續(xù)的幀圖像組成的,幀中記錄了視頻里的所有信息,使用卷積神經(jīng)網(wǎng)絡處理視頻的實質(zhì)是對其視頻中的幀進行處理。但視頻相鄰幀之間圖像的變化非常小,存在一定的冗余信息。實際上,人群在1 s內(nèi)不會發(fā)生巨大變化,但視頻1 s內(nèi)至少有25幀,如果將全部的幀送入卷積神經(jīng)網(wǎng)絡,意味著處理一幀圖片的時間需要低于40 ms才能保證實時性。在實際處理中,不同圖片的處理耗時并不相同,有些圖片需要更長的處理時間。處理全部幀必然因為處理耗時而累積與實際情況的時間差,因此,將全部的幀送入模型處理不僅會加重硬件資源的負擔,更會拖慢處理速度,降低實時性。為了進一步保證人群密度估計的實時性,降低GPU的壓力,本文使用靜態(tài)圖像作為訓練數(shù)據(jù)集訓練模型,在實際估計時從視頻中每隔固定時間抽取視頻的一幀,縮放及歸一化處理后送入網(wǎng)絡進行計算,在保證實時性的同時減小了硬件壓力(圖6)。截取幀時,按照時序每隔25幀取一幀,盡可能保留時間信息。預處理即對圖像的尺寸做歸一化處理,以及對幀圖像的零均值處理。GoogLeNet要求輸入圖像的大小為224×224,因此需要對截取到的幀圖像的尺寸歸一化。數(shù)據(jù)預處理還包括在RGB 3個通道上分別減去該維的均值,使彩色幀的每一個維度都具有零均值。
實驗使用PETS2009數(shù)據(jù)集作為數(shù)據(jù)來源,內(nèi)部有不同時間、不同視角的人群視頻段,在不同的視角下,視頻中的背景是不相同的。選取4個視角下共36段視頻作為最終使用的數(shù)據(jù)集。將數(shù)據(jù)集中的所有視頻段按照1︰1的比例分為訓練數(shù)據(jù)集和測試數(shù)據(jù)集。一般訓練集中的數(shù)據(jù)要比測試集中的數(shù)據(jù)多,才能使模型學習充分。但在本實驗中,由于數(shù)據(jù)集的背景場景較少,因此適當減少訓練集的數(shù)據(jù)并且增加測試集的數(shù)據(jù),可以更有效的說明模型的泛化能力。在訓練集中,將所有樣本分為VL(Very Low)、L(Low)、M(Medium)、H(High)、VH(Very High)5類,分別對應人數(shù)為0~8人、9~16人、17~24人、25~32人及≥33人為。對于測試集,選取4個視頻段,對其按照訓練集的標準對幀分類并標注,作為測試精度的驗證數(shù)據(jù)集;剩余視頻段不分類標注,作為實時人群密度分類的輸入視頻。實驗使用的網(wǎng)絡模型有AlexNet、VGGNet和GoogLeNet。實驗平臺是在Windows 10上用VS2015搭建的Caffe平臺,視頻的讀取預處理均使用Opencv-Python,GPU為GTX 1080。
圖6 實時估計流程圖
直接使用人群數(shù)據(jù)集訓練模型不僅收斂速度慢,且極易發(fā)生過擬合,因此實驗使用人群數(shù)據(jù)集在ImageNet預訓練模型上進行微調(diào),迭代50 000次后測試精度達到99%以上時停止訓練。其中,動量項為0.9,基礎學習速率設為0.001,學習速率調(diào)整策略為均勻分布(step),batch_size設為32,權重衰減系數(shù)為0.002。使用預留的標注視頻幀對訓練好的模型進行精度測試,batch_size為50,最終測試誤差低至2.5%。圖7是模型誤差隨迭代次數(shù)增加的變化。
圖7 GoogLeNet前10 000次迭代的誤差情況
使用視頻驗證時,每隔25幀截取一幀分別送入AlexNet、VGGNet和GoogLeNet計算,并將分類結果顯示在視頻畫面上,效果如圖8所示。實驗14段視頻共截取出1 124幀圖片,分類準確率為
從表1和式(4)中可以求出AlexNet的分類準確率為95.6%,VGGNet的準確率為96.9%,GoogLeNet的準確率為97.2%。由此可見,GoogLeNet準確率較高,能夠克服傳統(tǒng)方法的弊端。
表1 3種模型的錯誤分類幀數(shù)統(tǒng)計
在使用CUDA對卷積神經(jīng)網(wǎng)絡的計算進行加速,需要分類計算的幀圖像平均每張耗時0.02 s,遠遠小于人群變化的時間,運算效率符合實時密度估計的要求。在使用CUDA對卷積神經(jīng)網(wǎng)絡進行加速的情況下,對層數(shù)相對較少的3種結構:AlexNet、VGGNet與本文使用的GoogLeNet進行了實時性實驗。實驗中使用GPU GTX1080,分別對3種網(wǎng)絡模型處理單幀圖片所需的時間進行比較。3種網(wǎng)絡結構用相同的訓練集進行訓練,使用相同的50幀圖片進行實驗,統(tǒng)計時間并分別求模型的耗時均值。實驗結果見表2。
表2 平均耗時比較
網(wǎng)絡參數(shù)量(M)平均耗時(s) AlexNet600.034 VGG-D1380.079 GoogLeNet70.043
由表2可以看出,GoogLeNet的平均處理時間為43 ms,略長于AlexNet,但比VGGNet短很多。由平均時間可看出,網(wǎng)絡無法在1 s內(nèi)處理完25幀圖像,且在實驗中一些幀的處理時間達到了150 ms以上,如果將全部的幀送入網(wǎng)絡處理,會造成處理結果遠滯后于實際情況。因此,本文采用在1 s內(nèi)抓取一幀進行處理,可以在基本保證實時性的情況下反映實際人群密度情況。
針對人群密度估計,使用卷積神經(jīng)網(wǎng)絡克服像素統(tǒng)計法的遮擋問題和紋理分析法在低密度效果不佳的問題,將估計準確率提升到96%以上并實現(xiàn)了對視頻中的人群密度估計。但文中使用的數(shù)據(jù)集的背景較為理想,沒有考慮視覺畸變問題。同時,使用的數(shù)據(jù)集的背景較為單一,因此在模型泛化上可能存在一定的局限性。人群安全不僅是要關注人群密度,也需要關注高密度時人群的行為,在未來,應該將人群密度與人群的運動分析相結合,使人群視頻分析更加智能化。
[1] FRUIN J J. Pedestrian planning and design [M]. New York: Metropolitan Association of Urban Designers and Environmental Planners, 1971: 26-40.
[2] DAVIES A C, YIN J H, VELASTIN S A. Crowd monitoring using image processing [J]. Electronics & Communication Engineering Journal, 1995, 7(1): 37-47.
[3] MARANA A N, VELASTIN S A, COSTA L F, et al. Automatic estimation of crowd density using texture [J]. Safety Science, 1998, 28(3): 165-175.
[4] HARALICK R M. Statistical and structural approaches to texture [J]. Proceedings of the IEEE, 1979, 67(5): 786-804.
[5] FERRYMAN J, SHAHROKNI A. PETS2009: Dateset and challenge [C]//11th IEEE International Workshop Performance Evaluation of Tracking and Surveillance. New York: IEEE Press, 2010: 1-6.
[6] BOUREAU Y L, PONCE J, LECUN Y. A theoretical analysis of feature pooling in visual recognition [C]// Proceedings of the 27th International Conference on Machine Learning. New York: ACM Press, 2010: 111-118.
[7] SMITH L N, TOPIN N. Deep convolution neural networks design patterns [EB/OL]. (2016-11-14) [2017-06-10]. https://arxiv.org/abs/1611.00847.
[8] KRIZHEVSKY A, SUTSKEVER I, HINTON G. ImageNet classification with deep convolutional neural networks [C]//International Conference on Neural Information Processing Systems. Cambridge: MIT Press, 2012: 1097-1105.
[9] SIMONYAN K, ZISSERMAN A. Very deep convolution networks for large-scale image recognition [EB/OL]. (2015-04-10) [2016-12-4]. https://arxiv.org/abs/ 1409.1556.
[10] SZEGEDY C, LIU W, JIA Y, et al. Going deeper with convolution [C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. New York: IEEE Press, 2015: 1-9.
[11] HE K M, ZHANG X Y, REN S Q, et al. Deep residual learning for image recognition [EB/OL]. (2015-12-10) [2017-01-10]. https://arxiv.org/abs/1512.03385.
[12] 付敏. 基于卷積圣經(jīng)網(wǎng)絡的人群密度估計[D]. 成都: 電子科技大學, 2014.
[13] 馬海軍. 監(jiān)控場景中人數(shù)統(tǒng)計算法的研究與應用[D]. 合肥: 安徽大學, 2016.
Real-Time Crowd Density Estimation Based on Convolutional Neural Networks
LI Baiping, HAN Xinyi, WU Dongmei
(College of Communication and Information Engineering, Xi’an University of Seience and Technology, Xi’an Shaanxi 710054, China)
In response to the deficiencies such as big error and poor performance in the traditional method of real-time crowd density estimation, a new one based on CNN is proposed. By comparing the accuracy and real-time of four common network structures—AlexNet, VGGNet, GoogLeNet, and ResNet, the GoogLeNet which has relatively better comprehensive performance is chosen as the model for crowd density estimation. We used the key-frame extraction technology to realize real-time crowd density estimation and briefly analyze the crowd density feature map. Finally, examples are analyzed to verify the real time, accuracy, and feasibility of this new method of real-time crowd density estimation.
crowd density; convolutional neural networks; video processing; real-time estimation
TP 391.4
10.11996/JG.j.2095-302X.2018040728
A
2095-302X(2018)04-0728-07
2017-10-16;
2017-12-18
陜西省重點研發(fā)計劃項目(2017GY-095)
李白萍(1963-),女,廣東廣州人,教授,博士。主要研究方向為數(shù)字移動通信、數(shù)字圖像處理。E-mail:610135278@qq.com