翟 強,王陸洋,殷保群,彭思凡,邢思思
(中國科學技術大學 自動化系,合肥 230027)
近些年來,發生在世界各地的大型人群踩踏事故屢見不鮮。及時檢測人群急劇變化,優化公共交通調度可以避免類似安全事故的發生,因此準確估計人群數量具有重要的研究價值,而透視效果導致的人群遮擋、尺度變化問題仍是人群計數面臨的重大挑戰。隨著深度學習的發展,卷積神經網絡(Convolutional Neural Network,CNN)模型[1-2]在圖像處理上表現優異,使得研究人員將卷積神經網絡應用于人群計數中[3]。文獻[4]提出使用卷積神經網絡統計不同場景中的人群數目,先為某些場景預先訓練一個網絡,當給定來自新場景的測試圖像時,根據透視信息和密度圖中的相似性選擇相似訓練數據對預訓練網絡進行微調。該方法在大多數現有數據集上表現出良好的性能,但在訓練和測試時對透視圖的需求,限制了該方法在實際人群場景中的適用性和擴展性。文獻[5]提出一個端到端的CNN架構,將整個圖像作為輸入并直接輸出計數結果。但由于難以解決圖像尺度多變的問題,基于單列CNN的方法的計算精度和魯棒性效果均不佳。文獻[6]提出Switching CNN網絡,先將圖像分塊,通過VGG16網絡把圖像塊密度分成高中低3類,選擇針對特定人群密度設計的CNN回歸模型來估計圖像塊的人群密度圖。然而人群在圖像中的分布通常是不均勻的,對圖像的簡單分塊影響了計數的準確性。文獻[7]提出多列卷積網絡,其能夠適應部分人群的尺度變化,在一定程度上減少由于透視而導致的計數誤差,但其使用一個1×1卷積對多列密度圖進行簡單平均融合,會給最終結果帶來一定的誤差。
本文提出一種用于圖像人群計數的新型卷積神經網絡模型。考慮到經典VGG16網絡[8]具有良好的特征提取能力,該網絡模型前半部分采用VGG16的前13層提取圖像特征,后半部分利用具有3列不同感受野的卷積神經網絡進一步提取多樣化的圖像特征。在此基礎上,構建特征注意力模塊提取判別信息,對3列卷積神經網絡得到的特征圖進行評判打分,生成與特征圖尺寸相同的注意力特征圖,通過加權求和得到最終密度圖,并在Shanghai Tech和UCF_CC_50兩個數據集上訓練并測試人群計數算法。
本文旨在準確估計輸入圖像的人群密度圖,其積分值代表圖中的人數。人群計數數據庫只提供人頭標記的坐標點,在網絡訓練前首先需要生成訓練圖片的密度圖。對于圖片中坐標為xi的人頭標記點,可將其表示為δ(x-xi),那么對于一張具有N個人頭標記點的圖片可以表示為:

(1)
然后結合高斯核濾波器Gσ與式(1)進行卷積操作得到密度方程,表示為:
(2)
對于人群均勻分布的圖片,可以使用自適應高斯濾波器[4]進行卷積,密度圖生成過程中需考慮圖片視角扭曲因素。在此情況下的密度圖方程可以表示為:
(3)

針對人群計數中的人群遮擋和尺度變化問題,本文提出一個用于人群計數的尺度自適應網絡。在圖1中,尺度自適應網絡分為3個模塊,具體為:第一模塊引入經典VGG16網絡的前13層對圖片提取特征,由于VGG 4個池化層的存在,導致輸出變為原圖的1/16,而本文采用1/8密度圖作為輸出結果,因此加入上采樣層將特征圖變為原圖尺寸的1/8;第二模塊基于多列卷積神經網絡思想,分別用3×3、5×5、7×7不同感受野的卷積核對第一模塊輸出提取多尺度特征,在此階段本文引入在目標檢測、語義分割領域的可變形卷積,憑借其良好的空間幾何形變學習能力,進一步改善特征圖;第三模塊為特征注意力模塊,其對3列卷積神經網絡得到的特征圖經Softmax層進行評判打分及優化,從而生成高質量的密度圖。

圖1 尺度自適應網絡結構
1.2.1 可變形卷積
近年來卷積神經網絡在視覺領域表現優異,其良好的特征提取能力和端對端的學習方式,避免了傳統方法的弊端。但網絡模型的幾何形變能力來自于數據本身的多樣性,即卷積操作。該操作在輸入圖像的每個位置都會進行基于對應位置的采樣,然后對于采樣到的特征區域做卷積并作為該位置的輸出。以3×3卷積核為例,設R={(-1,-1),(-1,0),…,(0,1),(1,1)},R代表卷積核覆蓋特征圖的感受野區域。對于特征圖上的像素點p0,標準卷積方式表示為:
(4)
但該方式會導致網絡自身難以適應尺度多變的人群計數問題,因此本文引入可變形卷積[9]。可變形卷積是對卷積核的每個采樣點的位置都增加一個偏移的變量,通過這些變量,卷積核可以在當前位置附近采樣,而不再局限于之前對應的位置采樣。可變形卷積方式表示為:
(5)
其中,Δpn通過對網絡訓練得到。標準卷積加上該偏移量的學習后,可變形卷積核的大小和位置可以根據當前需要識別的圖像內容進行動態調整,即不同位置的卷積核采樣點位置會根據圖像內容發生自適應變化,從而適應不同場景人群形狀、大小、尺度變化等幾何形變。分析上述計算方式可知,若可變形卷積的偏移量Δpn為0,則可變形卷積退化成普通卷積,本文算法也能達到普通卷積的算法性能。當可變形卷積起作用時,特別是卷積核在處理人群與樹木、馬路、房屋等干擾背景交界的區域時,普通卷積只能對卷積核相應尺寸大小的特征進行計算,這樣無形中把非人群的無用特征計算進來,會給結果帶來一定的誤差。而可變形卷積可以有效地解決該問題,當算法在訓練過程中遇到上述場景時,通過訓練卷積核附帶的偏移量參數Δpn,將普通卷積核部分對應計算的非人群特征偏移到人群特征中,這樣整個卷積核提取的都是人群特征,有效避免了非人群特征的干擾,從而提高人群計數性能。
1.2.2 特征注意力模塊
人腦每個時刻接收的外界輸入信息非常多,當人腦在接收這些信息時會自覺或不自覺地利用注意力機制獲取重要的信息。目前,這種注意力機制被引入自然語言處理、物體檢測、語義分割等領域,并具有很好的應用效果。本文將注意力機制作為一個模塊加入卷積神經網絡,旨在優化第二模塊的3列特征圖,因此本文將其命名為特征注意力模塊。為解決圖片中人群尺度變化問題,該注意力模塊將第一模塊結果作為輸入,對經過可變形卷積處理的3列多尺度特征圖逐像素點生成具有判別能力的高級信息,即3列多尺度特征圖對應的每個像素點都生成相應的權重,以此衡量3列多尺度特征圖對應像素點的重要程度。總體來看,注意力模塊是對3列多尺度特征圖進行打分,評判3列多尺度特征圖所有對應像素點的重要程度。計算方式如下:假設Fk為注意力模塊輸出的3列特征圖中的某一列,Sk為經過可變形卷積處理的多尺度特征圖中的某一列,則網絡經Softmax層生成相應的注意力特征圖(與特征圖相同尺寸的概率矩陣)。
(6)
注意力特征圖與特征圖相對應的像素點相乘,再對其求和生成最終的密度圖。
(7)
通過該方式使網絡在3列多尺度特征圖上從像素點級別尋找與真實密度圖相關的有用信息,對密度圖生成有益的像素點獲得更高的權重,對密度圖生成無益的像素點獲得更低的權重,即評判特征圖的重要程度,從而提高最終密度圖的生成質量。
本文采用自適應學習率的Adam優化算法進行網絡優化,使用歐氏距離作為目標函數,計算預測得到的密度圖與真實密度圖之間的差距。損失函數的定義如下:
(8)
其中,Θ是網絡參數,N是訓練集圖片總數,Xi是第i張圖片,F(Xi;Θ)和Fi分別表示第i張圖片的估計密度圖和真實密度圖。
本文在Shanghai Tech和UCF_CC_50數據集上訓練并測試人群計數算法,借鑒經典網絡VGG[8]、MCNN[7]、SANet[10]等的參數設置方法,若沒有特殊聲明,卷積核尺寸默認為3×3,卷積核的激活函數均為ReLU非線性激活函數。網絡對VGG提取的特征(原圖片的1/16)進行上采樣后,特征圖尺寸變為原來的2倍(原圖片的1/8),則卷積核通道變為原來的1/2,數目為256。本文基于1/8密度圖估計人群數目,因此卷積層通道數均采用256通道。在設置可變形卷積通道超參數時,由于該卷積方式的復雜性,實驗過程中發現對內存的消耗較大,訓練時間較長,因此對每列特征圖只設置32通道的可變形卷積。本文在Pytorch深度學習環境下進行訓練,在網絡訓練權值初始化方面,VGG特征提取器使用已訓練好的模型參數進行初始化,其他層使用標準差為0.01的高斯分布進行初始化,網絡的初始訓練學習率為1e-5,共訓練300個周期。
本文使用平均絕對誤差(Mean Absolute Error,MAE)和均方誤差(Mean Squared Error,MSE)評價算法性能。MAE和MSE的定義如下:
(9)
(10)
其中,zi和z′分別表示第i張圖片的真實人數和算法估計人數。
Shanghai Tech數據集共包含1 198張圖片,標記人數達到330 165人。該數據集由Part_A和Part_B兩部分組成。兩個數據集無論是人群規模還是人群密度都有很大的區別。Part_A人群密度較大,Part_B人群密度中等但分布變化較大。
在數量上,Part_A由482張從網絡抓取的圖片組成,Part_B包含從上海街頭拍攝的716張圖片,同時它們都分為訓練集和測試集兩部分。Part_A中300張作為訓練集,182張作為測試集。Part_B中訓練集和測試集圖片分別為400張和316張。
由于Part_A和Part_B數據集的訓練集分別是300張和400張圖片,圖片數量太少,因此采用數據增強方式,從每一張訓練圖片中截取36張圖片,同時過濾單幅少于5人的圖片,每一張圖片尺寸都為原圖片尺寸的1/4,采用該方式增加訓練圖片的數量。在訓練過程中,手動將初始學習率降低10倍再次訓練,使本文算法達到更好效果。
表1為本文算法與8種當前主流人群計數算法的性能比較結果,由此可知:在Part_A數據集上,本文算法MAE和MSE均為最優;在Part_B數據集上,本文算法與其他算法性能接近。

表1 Shanghai Tech數據集上各算法性能對比結果
本文算法不僅在人群密集場景的Part_A數據集上有效,對于人群密度中等且分布變化較大的Part_B數據集依然表現良好,說明本文算法的適用性強和準確性高。圖2分別展示了兩個數據集上測試圖片的估計密度圖和真實密度圖。

圖2 測試圖片的估計密度圖與真實密度圖1
UCF_CC_50數據集[15]是一個復雜的數據集,該數據集人群密度大,僅有50張圖片,但卻有63 974人。同時,該數據集圖片的人群數目從94人到4 543人不等,平均每張圖片有1 280人。本文采用與當前主流人群計數算法相同的方式,對原數據集進行五折交叉驗證,并采取與Shanghai Tech數據集相同的方式進行數據增強,最后用本文算法分別在5個數據集上進行訓練和測試。表2為本文算法與該數據集上表現良好的9種當前主流人群計數算法的性能比較結果,數據顯示本文算法的MAE和MSE兩項指標均優于其他算法,說明本文算法具有良好的泛化能力和較高的準確性。

表2 UCF_CC_50數據集上各算法性能對比結果
圖3展示了兩張測試圖片的估計密度圖和真實密度圖。綜合來看,本文算法在Shanghai Tech和UCF_CC_50數據集上的實驗結果均已超越目前大部分計數算法,具有較高的準確性和較好的魯棒性。數據和特征決定了機器學習的上限,而模型和算法只是逼近該上限且在深度學習領域同樣適用,算法對圖片特征的提取能力決定算法性能的優劣。鑒于以上思想,本文算法設計以提取和優化圖片特征為目的,基于VGG前13層及使用多列不同尺寸的卷積核提取特征,并從以下方面優化特征:1)引入可變形卷積改進3列多尺度特征;2)構建注意力模塊對3列多尺度特征進行打分評判,使對密度圖生成有益的特征獲得更高權重,對密度圖生成無益的特征獲得更低權重,從而優化所得特征。通過圖2、圖3估計密度圖與真實密度圖的比較,算法生成的密度圖人群分布與真實密度圖接近,由此可知算法輸出了較高質量的密度圖,從而提升了計數準確度。而目前典型網絡大多只從多列網絡、更深層次網絡進行設計,并未考慮影響模型性能的特征優化這一因素,而上述兩方面保障了本文網絡結構具有良好的特征提取能力,因此整體性能優于現有大部分經典網絡。

圖3 測試圖片的估計密度圖與真實密度圖2
為驗證本文算法引入可變形卷積和特征注意力模塊的有效性,并測試其對本文算法的性能影響,在Shanghai Tech數據集Part_A上進行實驗,結果如表3所示。在驗證過程中,基于無可變形卷積網絡和無注意力模塊網絡的算法與本文算法的訓練方法一致,手動將初始學習率降低10倍再次訓練,可使算法達到更好效果。
表3Shanghai Tech數據集Part_A驗證模塊對算法性能的影響
Table 3 Impact of the Part_A verification module in the Shanghai Tech dataset on algorithm performance

算法MAEMSE基于無可變形卷積網絡的算法69.6110.0基于無注意力模塊網絡的算法68.0101.6本文算法66.8100.0
本文提出一種尺度自適應的基于多列卷積神經網絡的人群計數算法。為解決圖片中的人群遮擋和尺度變化問題,引入具有良好空間幾何形變學習能力的可變形卷積,以提取多尺度特征。在此基礎上,構建特征注意力模塊自適應地融合多尺度特征并生成密度圖。在Shanghai Tech和UCF_CC_50數據集上的實驗數據顯示,本文算法具有較強的魯棒性和較高的準確性。后續將通過提高密度圖質量和改進損失函數等技術進一步優化人群計數算法。