人群計數 (Crowd Counting) 研究綜述
本期我們迎來了編輯團隊的新成員,來自復旦大學計算機的在讀博士老田和電閃雷鳴。哈哈,邀請不到大牛,把大牛的學生挖過來也不錯。本期他們將為我們介紹人群計數的相關技術和進展,歡迎感興趣的朋友閱讀
前言
國內外的大型活動中頻發踩踏事件,已經造成了不小的傷亡,如2015年上海外灘踩踏事件,已達到了我國規定的重大傷亡事故級別。因此,人群計數問題的研究也越來越火熱,若能通過準確估計當前場景的人群密度,並安排相應的安保措施,則可以有效減少或避免此類事件的發生。


1.傳統人群計數方法
傳統的人群計數演算法主要分類兩大類:
1)基於檢測的方法。早期的人群研究主要聚焦於基於檢測的方法。[1] 使用一個滑動視窗檢測器來檢測場景中人群,並統計相應的人數。基於檢測的方法主要分為兩大類,一種是基於整體的檢測,另一種是基於部分身體的檢測。基於整體的檢測方法,例如 [2,3,4,5],典型的傳統方法,主要訓練一個分類器,利用從行人全身提取的小波,HOG,邊緣等特徵去檢測行人。學習演算法主要有SVM, boosting 和 隨機森林等方法。基於整體檢測的方法主要適用於稀疏的人群計數,隨著人群密度的提升,人與人之間的遮擋變得越來越嚴重。所以基於部分身體檢測的方法,被用來處理人群計數問題。[6, 7]主要通過檢測身體的部分結構,例如頭,肩膀等去統計人群的數量。這種方法比之基於整體的檢測,在效果上有略微的提升。
2)基於迴歸的方法。無論何種基於檢測的方法,都很難處理人群之間嚴重的遮擋問題。所以,基於迴歸的方法逐漸被用來解決人群計數的問題。基於迴歸的方法,主要思想是通過學習一種特徵到人群數量的對映[8, 9, 10]。這類方法步驟主要分為兩步,第一步提取低階的特徵,例如前景特徵,邊緣特徵,紋理和梯度特徵;第二步是學習一個迴歸模型,例如線性迴歸,分段線性迴歸,嶺迴歸和高斯過程迴歸等方法學習一個低階特徵到人群數的對映關係。
2. 深度學習驅動的人群計數
深度學習(Deep Learning,DL)技術始於2006年Hinton等人在Science發表的文章”Reducing the Dimensionality of Data with Neural Networks”,正式在學界井噴是在2012年”Alexnet”提出後。近些年來,DL被廣泛應用於各個研究領域(計算機視覺,自然語言處理等)。 DL憑藉其出色的特徵學習能力,同樣被研究人員用於人群計數的研究中,相應的資料集也接踵而至,如ShanghaiTect A/B,UCSD,Expo2010,Mall,UCF-CC-50和UCF-QNRF。
圖1 從左到右依次為:原圖,密度圖Ground Truth,CSRNet預測結果,我們的方法預測結果
不同於傳統的基於檢測和迴歸的方法,對於影象中密集人群區域,利用預測密度圖(Density Map)的方法得到了更好的預測結果。由於影象中人群密度分佈極不均勻,研究人員利用多陣列(Multi-Column)的卷積神經網路(Convolutional Neural Network,CNN)來實現提取不同尺度的人頭特徵。
MCNN(CVPR 2016)如圖2所示,利用3個具有不同卷積核大小的網路來分別提取人群影象的特徵,最後將3個尺度的特徵通過1×1卷積來融合。這類利用多個網路的模型具有較多的引數,計算量大,無法進行實時的人群計數預測。而且多陣列的網路並不能如所描述的一般,提取不同的人頭特徵。有很多低效的分支結構。
圖2 MCNN
CP-CNN(CVPR 2017)如圖3所示,通過提取影象的全域性和區域性語義資訊來加強對密度圖對約束。圖3中綠色子網路表示對整張輸入影象做特徵提取並分類(類別為作者分好的密度等級,即當前輸入影象屬於哪個密度等級),並將分類結果張成一個與密度特徵具有相同高和寬的影象(全域性上下文);藍色子網路對原圖中割出的patch做同樣的操作,得到區域性上下文。最終將全域性和區域性上下文特徵與原圖產生的密度圖(黃色部分)在通道維度拼接(concate)。該方法的初衷是為了考慮一幅影象中人群的全域性密度和區域性密度資訊,最後對整個特徵做約束,使得網路對任何一張影象都自適應的學到相應密度等級的特徵。
圖3 CP-CNN
Switch-CNN(CVPR 2017)同樣使用了三個子網路和分類的思想,讓不同密度等級的patch通過相應的子網路,則所有patch被更準確地預測,最終,所有patch的準確預測構成了原圖準確的人群估計。作者在訓練過程中用到了預訓練的技術,首先使用所有訓練資料對所有網路做了預訓練,然後將每個patch通過分類網路決定進一步輸入到哪個子網路。該模型存在與MCNN同樣的問題,即“到底應該選擇幾個子網路?”。但該方法通過網路學習來確定patch輸入的路徑,給patch做分類還是比較新穎的idea。
圖4 Switch-CNN
CSRNet(CVPR2018)如圖5所示,摒棄了Multi-Column框架,並在其論文中說明了Multi-Column相對於Single-Column的優勢並不大。CSRNet利用預訓練的VGG16網路,後接空洞卷積(Dilated Convolution)得到了state-of-the-art的結果。文章中對比了空洞卷積和非空洞卷積的區別(圖4 右),空洞卷積更容易得到人頭的邊緣資訊,這也是該模型能得到較高精度的重要原因。
圖5 CSRNet網路結構及Dilated Filter
ic-CNN(ECC V2018)如圖6所示,這個模型採取的思路是將得到的密度圖由低解析度(Low Resolution, LR)密度圖逐步細化到高解析度(High Resolution, HR)密度圖,網路結構比較清晰,這是個可擴充套件到模型,即根據需要,網路可以隨解析度到提高而擴充套件。筆者認為,本方法的靈感來自於影象生成領域,這種由低解析度到高解析度的逐步生成,在影象生成領域相當常見。
圖6 ic-CNN
SANet(ECCV 2018)如圖7所示,該方法同樣考慮要提取每個影象的多個尺度的人頭資訊,但並不採取類似MCNN的多陣列網路結構,其使用了類似於Inception架構的模組,在每個卷積層都同時使用不同大小的卷積核,最後通過反捲積得到最終的密度圖。
圖7 SANet
基於深度學習的人群計數方法還有研究者加入了景深資訊(在聚焦完成後,焦點前後的範圍內所呈現的清晰影象,這一前一後的距離範圍,便叫做景深)、人體結構資訊,提供了很多新穎的思路。筆者認為,無論是提取多尺度特徵還是逐步細化密度圖,目前最困難的問題仍然是1)在人群密集的區域,如何讓模型更精細的區分出人的特徵(如人頭重疊);2)如何教會模型“聚焦”,即在一幅人群密度分佈廣泛的影象中對較小尺度的區域性特徵能“看”得更清晰。
參考文獻
[1] Pedestrian detection:An evaluation of the state of the art.
[2] Histograms of oriented gradients for humandetection,
[3] Pedestrian detection incrowded scenes
[4] Monocular pedestrian detection: Survey and experiments.
[5] Pedestrian detection via classification on riemannian manifolds.
[6] Object detection with discriminatively trained part-based models.
[7] Detection and tracking of multiple, partially occluded humans by bayesian combination of edgelet based part detectors.
[8] Bayesian poisson regression for crowd counting
[9] Crowd counting using multiple local features
[10] Feature mining for localized crowd counting.
長按識別二維碼
關注我們

寫
在
後
面
這是一群致力於科研傳播的faculty & PhD記錄分享點滴思考的平臺,這裡有我們在各自領域(機器學習,醫療影像,材料科學,凝聚態物理,生物資訊,光學)涉獵研究的點滴感悟,有我們在國內,海外求學工作奮鬥的酸甜苦辣,亦有偶爾的風月和我們的詩與遠方。