陳思秦
(1.中國科學院上海微系統(tǒng)與信息技術研究所上海200050;2.上海科技大學上海201210;3.中國科學院大學北京100049)
人群計數(shù),顧名思義就是從圖像或者視頻幀中獲得其中總共的人頭數(shù)目。而人群密度則是人群在一定時間一定空間內(nèi)的分布情況。準確地估計人群數(shù)目和人群密度是衡量一個安防系統(tǒng)好壞的重要指標之一。準確地估計體育館、地鐵站、火車站等關公場所的人群數(shù)目可以有效得控制和管理人流量。而這種統(tǒng)計數(shù)據(jù)在公共安全和交通管制上有著極其重要的作用,可以預防踩踏等一些危險事故的發(fā)生。通過分析大型商場的人群密度分布,可以獲得顧客的購買喜好和發(fā)掘潛在的商業(yè)價值。因此,人群計數(shù)在現(xiàn)實生活中,特別是在智能監(jiān)控和安防領域有著廣泛的應用價值和社會意義,這也使單張圖像和監(jiān)控視頻中的人群計數(shù)問題在最近幾年受到了越來越多的關注。
但是,在現(xiàn)實場景中,嚴重的遮擋、光照的變化、視角的扭曲、人群分布不均和復雜的場景背景等干擾因素使人群計數(shù)問題變得非常具有挑戰(zhàn)性。目前還沒有行之有效的人群計數(shù)算法可以應用于現(xiàn)實場景中,所以準確、魯棒的人群計數(shù)算法也是計算機視覺領域重要的研究方向之一。
人群計數(shù)一直以來都是學術界和工業(yè)界的研究熱點之一。許多算法已經(jīng)被提出嘗試去解決人群計數(shù)問題。通過在視頻序列的兩個連續(xù)幀上掃描檢測器來估計行人的數(shù)量[1-2]。這種基于檢測的人群計數(shù)算法,人群是由可以被事先定義好的檢測器檢測出來的單個實體組成的。但是這種方法的一個缺點是,在人群十分密集或者嚴重遮擋的情況下,最后的估計準確率往往非常低。
在視頻中的人群計數(shù)問題[3-4],一些工作已經(jīng)提出對被跟蹤的視覺特征進行軌跡聚類。例如,使用KLT跟蹤器和聚類的并行版本,來估計移動的行人數(shù)目。概率地將已經(jīng)跟蹤到的圖像特征分成若干個可以獨立代表移動實體的群集。然而,這種基于跟蹤的方法無法用來估計靜止圖像中的人群。
最廣泛使用的人群計數(shù)方法是基于特征的回歸[5-8]。這種方法的主要步驟是:先從背景中分割出人群,然后從分割出的人群中提取各種特征,如紋理特征,邊緣計數(shù)或者人群區(qū)域面積,最后利用回歸函數(shù)來估計人群數(shù)目。常用的回歸模型有脊回歸,高斯過程回歸等。
還有一些工作專注于靜止圖像的人群計數(shù)。時增林[9]提出了空間金字塔池化網(wǎng)絡來解決人群計數(shù)問題。Idrees[10]利用多個信息源來估計單張圖像在極其密集情況下的人頭數(shù)。Zhang[11]提出了一種基于卷積神經(jīng)網(wǎng)絡(CNN)的方法來計算不同場景的人群。通過使用類似的訓練數(shù)據(jù)微調(diào)預訓練網(wǎng)絡來測試來自未看見的場景的圖像,并在大多數(shù)現(xiàn)有數(shù)據(jù)集上獲得了良好的性能。Zhang[12]提出了多列卷積神經(jīng)網(wǎng)絡(MCNN),不同列的卷積神經(jīng)網(wǎng)絡具有不同的感受野,從而能夠?qū)Σ煌笮〉娜祟^進行響應,取得了現(xiàn)在最好的性能。
但是文獻[11]和文獻[12]都是使用淺層網(wǎng)絡,并且只有2層的池化層,導致網(wǎng)絡的感受野比較小,不利于網(wǎng)絡對大的人頭進行響應。另外,這兩種方法在網(wǎng)絡優(yōu)化流程上比較繁瑣,文獻[11]使用交替優(yōu)化人群數(shù)目和人群密度的網(wǎng)絡,文獻[12]需要先預訓練每列網(wǎng)絡,最后再整體微調(diào)。本文提出的全卷積神經(jīng)網(wǎng)絡,去掉傳統(tǒng)卷積神經(jīng)網(wǎng)絡的全連接層,一方面使得網(wǎng)絡的輸入分辨率是任意的,另一方面減少了網(wǎng)絡的參數(shù)。使用了3個池化層,增加了網(wǎng)絡的感受野,從而對大人頭的輸入更加魯棒。同時,模型優(yōu)化流程簡單,實現(xiàn)了真正意義上的端到端的學習。
給定一張圖像I,人群計數(shù)問題可以被定義為一個非線性映射F:I→N,N是輸入圖像I中總共的人頭數(shù)。然而,對于深度學習來講,直接從圖像回歸到一個數(shù)字是一個很難的任務。另外,這樣做也沒有考慮到人群在空間上的分布情況,而像這種分布信息是有助于我們對場景更好的理解。因此,受到Zhang[11]的啟發(fā),我們采用卷積神經(jīng)網(wǎng)絡去學習從圖像到其密度圖的映射,記為D。
定義密度圖是一個和原始輸入圖像相同大小的矩陣。理想情況下,密度圖是:對于任意一個在密度圖上的像素,如果對應于原始圖像上相同位置的像素是屬于某個人頭區(qū)域,則該像素設置值為,Si是對應的人頭所占的像素個數(shù)之和,否則為0。但是,在實際中,標注圖像中所有人頭的完整區(qū)域是很難的一件事情。因此,對于數(shù)據(jù)集人頭的標注,一般是在人頭的中心位置的那個像素設置值為1,其他的像素設置值為0。對于給定的人頭中心像素點pi,一張包含N個人頭的圖像的密度圖定義如下:

這里的Gσ(p)是一個二維的高斯卷積核,σ是其寬度參數(shù),δ是沖激函數(shù)。原始圖像和使用上述方法生成的密度圖樣例如圖1和圖2所示。

圖1 原始圖像

圖2 生成的密度圖
圖2中的密度圖已經(jīng)灰度化,圖中白色的區(qū)域代表像素值較大,即密度值較大的區(qū)域。
同時,通過這樣高斯卷積生成的密度圖之上的所有像素值之和還是和原始的標注圖一致。因此,人群計數(shù)問題被轉(zhuǎn)化為:先估計得到其對應的密度圖,然后把獲得的密度圖上的每個像素的數(shù)值相加得到最終的人頭數(shù)。
最近幾年,卷積神經(jīng)網(wǎng)絡在大規(guī)模圖像和視頻識別上取得了最大的成功,這也源于兩個重要的因素,大規(guī)模公開的數(shù)據(jù)集,比如ImageNet[13],和高性能的計算系統(tǒng),像GPUs,大規(guī)模分布式集群。同時,卷積神經(jīng)網(wǎng)絡在其他計算機視覺任務、自然語言處理和語音識別等領域也展現(xiàn)出了強大的性能優(yōu)勢。卷積神經(jīng)網(wǎng)絡通過不斷堆疊卷積層、池化層和非線性激活函數(shù)層,利用參數(shù)共享機制大大減少了模型的復雜度。它能夠自動抽取不同層次的語義特征,去除了傳統(tǒng)的人工設計特征,實現(xiàn)了端到端的訓練。
但是經(jīng)典的卷積神經(jīng)網(wǎng)絡由于有全連接層的存在,比如:經(jīng)典的AlexNet[14]使用了5個卷積層和3個全連接層。全連接層的引入會導致模型的輸入圖像的尺寸是事先定義好的,而且模型的主要學習參數(shù)來自于全連接層。
Long[15]首先提出了基于全卷積神經(jīng)網(wǎng)絡(FCN)用于圖像分割,將圖像級別的分類進一步擴展到像素級別的分類。全卷積神經(jīng)網(wǎng)絡不再有全連接層,輸入圖像的大小可以是任意的,同時可以大大減少參數(shù)數(shù)量。
文中受到Long[15]工作的啟發(fā),將全卷積神經(jīng)網(wǎng)絡應用于人群計數(shù)問題,使用其來學習從圖像到其密度圖的非線性映射關系。具體的模型如圖3所示。
人群計數(shù)的全卷積神經(jīng)網(wǎng)絡的模型一共有6個卷積層,表示為Conv1-Conv6。這里每個層右邊的數(shù)字表示該層的輸出通道數(shù),箭頭左邊的數(shù)字為卷積核的大小。全卷積神經(jīng)網(wǎng)絡要學習的參數(shù)主要來自于每個卷積層的卷積核,這里采用小通道數(shù),減少網(wǎng)絡參數(shù),降低模型復雜度。為了保證模型的非線性,每個卷積層之后都跟著一個非線性激活函數(shù)層,這里使用的是修正線性單元(Rectified linear units,ReLU),ReLU可以加速網(wǎng)絡的收斂[14]。Conv1-Conv3之后都有一個核大小為2x2,步長為2的最大池化層(max pooling)。引入池化層有助于降低中間特征圖的維度,節(jié)約計算資源。同時,有利于學習到更加魯棒,具有判別性的特征表示。在模型的最后,采用1x1的卷積層,將之前的特征圖映射到密度圖。
為了進行有監(jiān)督的訓練,采用歐幾里得距離來度量標注密度圖和網(wǎng)絡預測得到的密度圖之間的距離。網(wǎng)絡的損失函數(shù)定義如下:

這里Θ是全卷積神經(jīng)網(wǎng)絡要學習的參數(shù)。Ii是在訓練集上第i張訓練圖像,N是訓練集的圖像數(shù)目。Di是標注的密度圖,Ei是全卷積神經(jīng)網(wǎng)絡預測得到的密度圖。L(Θ)是計算標注的密度圖和預測的密度圖之間的歐幾里得距離得到的損失。
在真實的場景中,人頭的大小一般都很大,由于這些人靠近照相機,這就使得在設計網(wǎng)絡的時候感受野不能太小。所以在這里使用了3個池化層。雖然池化層的增加會使最后的預測的密度圖的分辨率降低,但是這樣增加了網(wǎng)絡的感受野,有利于網(wǎng)絡對大的人頭進行響應,學習到更加具有語義的特征表示。

圖3 人群計數(shù)模型
采用平均絕對誤差(MAE)和平均均方根誤差(MSE)來評價算法的性能。MAE和MSE定義如下:

這里N是測試集的圖像數(shù)目,yi和分別表示對于第i張測試圖像,標注圖的人頭數(shù)和預測得到的人頭數(shù)。MAE衡量人群計數(shù)算法的準確率,而MSE來刻畫算法的魯棒性。
所提出的全卷積神經(jīng)網(wǎng)絡的實現(xiàn)和它的訓練測試是基于Caffe深度學習框架。
在生成標注密度圖的時候,設置二維高斯卷積核的寬度參數(shù)為4。為了防止網(wǎng)絡過擬合,在訓練集上進行了數(shù)據(jù)增加操作。具體來說,從原始圖像的不同區(qū)域裁剪出9個四分之一大小的圖像塊。因為網(wǎng)絡使用了3個核大小為2×2,步長為2的最大池化層,這樣使得最后輸出的密度圖的大小是原始的八分之一,所以在網(wǎng)絡計算損失的時候,使用的標注密度圖也是原始大小的八分之一。
在訓練階段,設置網(wǎng)絡初始的學習率為0.000 1,當訓練的損失不再下降的時候,學習率減少10倍。使用的網(wǎng)絡優(yōu)化算法是帶沖量的批處理隨機梯度下降法(SGD with momentum),設置批處理大小為32,沖量為0.9。為了減少模型過擬合,使用0.000 5的權重衰減。
在測試階段,使用全尺寸的圖像作為輸入,在網(wǎng)絡輸出的密度圖上進行求和操作獲得最終的人群數(shù)目估計。
采用UCF_CC_50數(shù)據(jù)集來評價所提出算法的性能,同時對比現(xiàn)在最好的一些算法。
UCF_CC_50數(shù)據(jù)集是第一個非常密集的人群數(shù)據(jù)集,由Idrees[10]所提出的,數(shù)據(jù)集是由作者在互聯(lián)網(wǎng)上收集而來。數(shù)據(jù)集只有50張圖像,單張圖像的人頭數(shù)從94到4543不等,作者一共標注了64K個人頭。所以這是一個非常有挑戰(zhàn)性的數(shù)據(jù)集。實驗采用和Idrees[10]一樣的設置,因為該數(shù)據(jù)集沒有提供標準的測試數(shù)據(jù),所以實驗進行5折的交叉驗證。
實驗結(jié)果如表1所示。

表1 實驗結(jié)果
表1展示了文中所提出的全卷積神經(jīng)網(wǎng)絡和其他幾種現(xiàn)存最好方法的性能對比。文獻[16]采用在隨機選取的圖像塊上提取密集的尺度不變特征變換(SIFT)特征。文獻[10]使用多種不同來源的特征來估計人群。文獻[11]提出了一種淺層的卷積神經(jīng)網(wǎng)絡來同時獲得一張圖像的人群數(shù)目和人群密度。文獻[12]使用多列卷積神經(jīng)網(wǎng)絡來適應不同大小的人頭。本文提出的方法取得了最好的MAE效果,在MSE上和其他方法幾乎一樣。
重點比較文獻[16],文獻[11]和文獻[12]。因為UCF_CC_50數(shù)據(jù)集訓練樣本只有50張圖像,訓練樣本很少,導致本文提出的全卷積深度網(wǎng)絡容易過擬合,所以導致在MSE上比不過文獻[16]。與文獻[11]對比,本文的網(wǎng)絡的深度更深,感受野更大,對人頭更大的圖像更加魯棒。在訓練階段不用像文獻[11]那樣交替優(yōu)化人群數(shù)目和人群密度的網(wǎng)絡。而相較于文獻[12],網(wǎng)絡的參數(shù)數(shù)量比較少,同時不用像它那樣先分別預訓練每列網(wǎng)絡,最后再微調(diào)整個網(wǎng)絡,使得整個訓練流程變得復雜。本文的方法優(yōu)化簡單,訓練方便快速。
本文提出了一種基于全卷積神經(jīng)網(wǎng)絡的人群計數(shù)算法。模型是一種全卷積的神經(jīng)網(wǎng)絡,所以不受輸入圖像的大小影響。同時,網(wǎng)絡的參數(shù)很少,降低了模型的復雜度,減少過擬合現(xiàn)象。采用3個池化層,大大增加了網(wǎng)絡的感受野,從而使網(wǎng)絡能夠?qū)Υ竺娣e的人頭響應。通過網(wǎng)絡先預測得到人群密度圖,然后進一步獲得人群數(shù)目,既能獲得人群的在空間中分布情況,同時也使最終獲得的人群數(shù)目更加準確。在UCF_CC_50標準數(shù)據(jù)集上充分的實驗和對比,驗證了所提出的全卷積神經(jīng)網(wǎng)絡對于人群計數(shù)的高準確率和有效性。
[1]Lin Z,Davis LS.Shape-based human detection and segmentation via hierarchical part-template matching [J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2010,32(4):604-618.
[2]Idrees H,Soomro K,Shah,M.Detecting humans in dense crowds using locally-consistent scale prior and global occlusion reasoning[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2015,37(10):1986-1998.
[3]韓廷卯.一種基于獨立運動的人群計數(shù)方法[J].電子設計工程,2012,20(20):55-57.
[4]姬麗娜,陳慶奎,陳圓金,等.基于GPU的視頻流人群實時計數(shù)[J].計算機應用,2017,37(1):145-152.
[5]梁榮華,劉向東,馬祥音,等.基于SURF的高密度人群計數(shù)方法[J].計算機輔助設計與圖形學學報,2012,24(12):1568-1575.
[6]周成博,陶青川.基于景區(qū)場景下的人群計數(shù)[J].現(xiàn)代計算機,2016(5):52-57.
[7]覃勛輝,王修飛,周曦,等.多種人群密度場景下的人群計數(shù)[J].中國圖象圖形學報,2013,18(4):392-398.
[8]丁藝,陳樹越,劉金星,等.基于歸一化目標像素的人群密度估計方法[J].計算機應用與軟件,2016,33(4):212-214.
[9]時增林,葉陽東,吳云鵬,等.基于序的空間金字塔池化網(wǎng)絡的人群計數(shù)方法[J].自動化學報,2016,42(6):866-874.
[10]Idrees H,Saleemi I,Seibert C,et al.Multisource multi-scale counting in extremely dense crowd images[C]//CVPR.2013:2547-2554.
[11]Zhang C,Li H,Wang X,et al.Cross-scene crowd counting via deep convolutional neural networks[C]//CVPR.2015:833-841.
[12]Zhang Y,Zhou D,Chen S,et al.Single-image crowd counting via multi-column convolutional neural network[C]//CVPR.2016:589-597.
[13]Olga R,Jia D,Hao S,et al.ImageNet large scale visual recognition challenge[J]. International Journal of Computer Vision,2015,115(3):211-252.
[14]Krizhevsky A,Sutskever I,Hinton GE.Imagenet classification with deep convolutional neural networks[C]//NIPS.2012:1097-1105.
[15]Long J,Shelhamer E,Darrell T.Fully convolutional networks for semantic segmentation[C]//CVPR.2015:3431-3440.
[16]Lempitsky V,Zisserman A.Learning to count objects in images[C]//NIPS.2010:1324-1332.