吳曉燕
(四川文理學院 智能制造學院,四川 達州 635000)
人群密度估計在現實生活中的需求量很大,是公共安全、交通監控等一系列實際應用中的重要參考信息[1,2]。現有的人群計數方法大致可以分為3類[3],即基于檢測的方法、基于回歸的方法以及混合方法。早期的人群計數工作[4]中主要使用基于檢測的方法,這類方法主要是基于事先定義好的頭部檢測器對圖像進行處理。但是,當人群密集度高或者嚴重遮擋時,該方法的估計準確率明顯下降。基于回歸的方法[5]旨在學習人群計數和特定特征之間的直接映射,可以完成較為復雜環境下的人群計數問題。目前常用的回歸模型有高斯過程回歸、線性回歸以及神經網絡等。
隨著深度學習的快速發展,神經網絡逐漸應用于人群計數方面。Li等[6]應用條件生成對抗網絡進行回歸估計人群規模,取得較好的結果。Xiong等[7]提出了一種深度學習模型convLSTM,用于捕獲空間和時間依賴性,提高人群計數的準確性。Saqib等[8]在深度卷積網絡框架的基礎上,引入運動引導濾波器來監測視頻中的人群數量。Liu等[9]提出了一個深度遞歸空間感知網絡,通過設計空間感知優化模塊和采用動態地定位人群密度圖中注意力區域的方式,自適應解決圖像中人群尺度和旋轉問題。文獻[10]提出了一種CSRNET網絡用來提高人群密度的估計精度。文獻[11]通過結合歐幾里得損失和計數損失來約束SANET網絡,并使用一組轉置卷積創建高分辨率密度圖。文獻[12] 在深度卷積網絡的框架中編碼人流統計的語義性質,然后結合行人、頭部及其上下文結構進行群體計數。
當前大多數方法均采用單一的密度圖回歸估計人群數量,但是在估計過程中容易產生人數被高估的現象。針對這一問題,本文提出一種回歸模型,通過計數回歸與密度圖回歸相結合的方式解決上述問題,并采用更深更輕的完全卷積網絡(full convolutional network,FCN)作為人群密度圖估計器,使得模型參數數量很少。
全卷積網絡是在卷積神經網絡CNN的基礎上,將VGG-16模型中的全連接層全部改為卷積層,使其可以接受任意尺寸的輸入圖像。FCN是對圖像中的各個像素進行分類,在輸出端得到每個像素所屬的類。然后利用反卷積操作對最終獲得的特征映射進行上采樣,通過放大操作使處理后的圖像尺寸與輸入圖像尺寸相同。在這個過程中,不僅可以保留原始輸入圖像中的空間信息,還能夠對特征圖內的每個像素做出預測,進而實現逐像素分類。圖1給出了CNN和FCN的結構對比圖。

圖1 CNN和FCN的結構對比
FCN可以分為FCN-8s、FCN-16s和FCN-32s 這3種模型,反卷積實質上是將不同卷積層和池化層的上采樣結果求和,然后利用反向傳播算法對網絡進行端對端的訓練。相對于經典的CNN模型,全卷積網絡的優點有:
(1)卷積層參數少于全連接層,有效降低過擬合現象的出現;
(2)全卷積網絡特征圖中的像素只需提取其對應的圖像感受野內的信息,不需要提取全圖信息,減少了無關背景的干擾;
(3)全卷積網絡能夠適應不同尺寸的輸入圖像,應用更廣。
本文采用的FCN的架構如圖2所示,該模型分為編碼、譯碼和輸出3部分。編碼部分有3個階段,每個階段由兩個卷積層和一個最大池層組成。卷積層的內核大小、步長和填充分別設置為3、1和1。最大池層的內核大小和步長都設置為2。在解碼部分,也有3個階段,每個階段由一個卷積層和一個反卷積層組成。利用卷積層來減少特征映射的數目,因此設置特征映射的核大小和步長為1。為了對特征映射進行升序,卷積層的內核大小、步長和填充分別設置為4、2和1。解碼階段的特征映射將與編碼階段的特征映射連接起來,以重用低級特征。

圖2 本文采用的FCN的架構
使用基于回歸的方法進行計數有兩種方式:一種方法是通過訓練一個模型,直接從給定的圖像中輸出頭部數量估計;另一種方法是輸出人群密度圖,通過對密度圖進行積分,獲得人群的頭部計數。由于密度圖能夠給出人群的空間分布,而且模型容易訓練,因此更多的研究采用第二種方法。但是,如果訓練參數、學習率、批量大小等參數設置不恰當時,密度圖上的人數通常會被高估。為了解決這一問題,本文采用密度圖回歸和計數回歸相結合的方式進行人群估計,訓練結構如圖3所示。

圖3 基于密度圖和計數回歸的人群估計
頭部模型為二維高斯分布,因此,人群密度函數可寫為
(1)
其中,x是密度圖上的位置,Ni是第i張人群圖像上的頭部數量,μi,j是第i個人群圖像上第j個頭部的位置,σ是高斯分布的標準差。密度圖回歸的目的是訓練一個模型,將輸入人群圖像Hi(x)轉換為密度圖,所以密度圖回歸的代價函數可以表示為
(2)
其中,NF為訓練圖像片段的個數,S為人群圖像片段上的位置空間,Fi表示第i個人群圖像片段。M(x,Fi|W)是參數為W的人群密度圖估計模型,通過最小化式(2),該模型將能夠根據輸入的人群圖像片段估計密度圖。
由于來自訓練模型的密度圖可能會導致對頭部數量的高估,本文采用計數回歸方法對模型的輸出值進行正則化,然后對Hi(x)進行積分,可以估計出輸入圖像的總人數。通過縮小頭部數量估計值和真實值之間的差異來規范密度圖估計。計數回歸的代價函數表示為
(3)

結合密度圖回歸和計數回歸的總的代價函數為
E(W)=αED(W)+βEC(W)
(4)
其中,α和β是用來規范化訓練的超參數。
在訓練前,該模型不能估計人群密度圖。如果直接應用計數回歸,訓練損失很難收斂,因此需要對模型進行逐步訓練。首先,利用密度圖回歸對模型進行訓練。在模型能夠很好地估計密度圖后,再加入計數回歸模型。由于密度圖回歸的誤差是每個像素上所有誤差的積分,導致它比計數回歸的誤差大很多。因此,超參數α在設置時應該小于β,故(α,β)在第二次和第三次的設置分別為(0.1,10)、(0.1,100)。
為了測試提出算法的性能表現,分別利用均方根誤差RMSE、平均絕對誤差MAE以及出錯率ER對測試結果進行評估,3個評價標準的定義如下
(5)
(6)
(7)

采用Mall[8]數據集、UCSD[10]數據集以及WorldExpo′10[11]數據集來測試所提出算法的性能,同時與現在一些最新算法進行對比。實驗過程中,Mall數據集、UCSD數據集和WorldExpo′10數據集使用標準訓練和測試分割方式進行測試。為了防止網絡過擬合,在訓練集上進行了數據增加操作:訓練圖像通過鏡像來增加圖像數量。為了增加頭部大小的可變性,在構建圖像金字塔時,本文采用比例系數γ∈[0.6,1.2]乘以原始圖像分辨率,步長為0.2。Mall數據集由購物中心內可公開訪問的監控攝像頭捕獲,圖像的照明條件和玻璃表面反射對算法具有很大的挑戰性。該數據集是一組2000幀的視頻序列,前800幀進行訓練,剩余的1200幀用于測試。UCSD數據集是戶外監控攝像機拍攝的圖像數據,主要分成兩個子集,子集1有34個訓練視頻和36個測試視頻,每個視頻有200幀,子集1有10個訓練視頻和16個測試視頻,每個視頻有120幀。WorldExpo′10數據集由來自108個不同監控攝像機捕獲的1132個視頻序列的3980個帶注釋的幀組成。該數據集分為來自5個不同場景的訓練集(3380幀)和測試集(600幀)。表1顯示了兩個數據集的各種統計結果。

表1 兩個數據集的統計結果
圖4給出了本文算法在3個數據集中測試的視覺效果。本文算法在人群密度中等場景的WorldExpo′10數據集、人群密度小但分布變化很大的場景Mall、UCSD數據集以及上表現良好,從而充分說明提出算法的準確性和適用性。

圖4 3個數據集的預測和真實密度圖對比
圖5、圖6給出了不同算法在Mall和UCSD兩個數據集在MAE、RMSE的實驗結果。通過對比每個數據集上不同算法的測試結果,發現在Mall數據集和UCSD數據集上,提出的模型優于其它方法。

圖5 不同算法在Mall數據集的測試結果

圖6 不同算法在UCSD數據集的測試結果
圖7給出了不同算法在WorldExpo′10數據不同場景的MAE測試結果。本文模型除了場景4的測試結果不如文獻[12],其余場景及平均值均優于其它算法。

圖7 不同算法在WorldExpo′10數據集的測試結果
圖8給出了不同算法的累積誤差。從圖中可以看出,隨著圖像數量的增加,每種方法的累積誤差將被累積,累積誤差線的斜率越低,性能越好。除此之外,通過對比每個數據集上不同算法的測試結果,本文方法的累積誤差最低,性能優于其它算法。

圖8 不同算法的累積誤差對比
為了糾正密度圖回歸方法估計人群數量過高的問題,本文設計了一個更深的、更輕的且參數數量很少的人群計數FCN模型,采用將密度圖回歸與計數回歸相結合的方式估計人群密度。提出的方法在不同的人群密度和尺度不一的數據集上均取得了較好的效果,有效避免了僅通過密度圖回歸進行訓練時總人數被高估現象的產生。實驗結果表明,與其它現有的人群計數方法相比,本文模型計算精度更高,性能更優,訓練策略也具有更強的競爭力。