邸慧軍,宋凌霄,余曉,王蔚然
(北京理工大學(xué) 計算機學(xué)院,北京 100081)
人群計數(shù)是計算機視覺中一個重要的研究課題,廣泛應(yīng)用于視頻監(jiān)控中. 高效且準(zhǔn)確的人群計數(shù)算法可以對公共場所的人群密度做出準(zhǔn)確分析,方便管理人員及時控制人口流量,防止重大公共安全事故的發(fā)生. 因此,人群計數(shù)引起了研究者們廣泛的研究興趣.
一些早期的人群計數(shù)的研究[1-2]主要采用行人檢測方法. 它們通過檢測圖像中的行人,然后統(tǒng)計行人檢測框的數(shù)目實現(xiàn)人群計數(shù). 然而由于密集人群場景中行人遮擋頻繁,基于檢測的計數(shù)方法的計數(shù)精度會受到影響. 之后,LIU 等[3]使用基于高斯過程的貝葉斯回歸模型建模輸入圖像與人群數(shù)量之間的關(guān)系. 然而,這類方法無法反映人群的位置分布,影響計數(shù)算法在監(jiān)控場景中的應(yīng)用.
近年來,隨著基于卷積神經(jīng)網(wǎng)絡(luò)的視覺算法[4-5]的成熟,以卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的人群計數(shù)方法成為主流. 這類方法利用卷積網(wǎng)絡(luò)強大的特征表征能力,減少人為設(shè)計特征泛化能力不足的影響. ZHANG等[6]提出了MCNN,通過設(shè)置多列不同感受野的淺層卷積網(wǎng)絡(luò)提取不同尺度的特征. 為了提升多列CNN 生成的密度圖的質(zhì)量,CP-CNN[7]在MCNN 的基礎(chǔ)上,加入了局部和全局上下文預(yù)測分支,同時在多尺度提取的分支中加大了網(wǎng)絡(luò)的深度. 由于多列網(wǎng)絡(luò)分支較多,結(jié)構(gòu)復(fù)雜并不能高效解決人頭尺度不同的問題,Switch-CNN[8]在原有的MCNN 基礎(chǔ)上設(shè)計了一個人群密度感知分類器,對輸入人群圖像選擇最佳的分支,更有效地提取人群多尺度特征. 這種基于分類的多列卷積網(wǎng)絡(luò)可以有效解決由尺度不同造成的人頭大小不均給計數(shù)造成的困難,獲得了不錯的計數(shù)結(jié)果.
但是,使用多列網(wǎng)絡(luò)提取特征需要分別訓(xùn)練每一個分支. 隨著分支數(shù)量的增多,參數(shù)量變大,復(fù)雜度也隨之變大,這對網(wǎng)絡(luò)訓(xùn)練造成困難. 因此,一些工作采用在不增加網(wǎng)絡(luò)復(fù)雜度的情況下擴大感受野實現(xiàn)復(fù)雜場景的人群計數(shù). 例如,CSRNet[9]采用堆疊膨脹卷積從而有效地估計復(fù)雜場景中的人群的密度.然而由于膨脹卷積的不連續(xù)性,會出現(xiàn)柵格效應(yīng),對密集的人群沒有辦法很好地建模. 同時,密集場景中的人群通常由數(shù)個像素點表示,這對網(wǎng)絡(luò)準(zhǔn)確識別人群帶來了挑戰(zhàn)與困難.
為了解決多尺度特征網(wǎng)絡(luò)結(jié)構(gòu)過于復(fù)雜,且容易出現(xiàn)人和場景的混淆這兩大問題,本文提出一個新的計數(shù)網(wǎng)絡(luò):全局-局部雙分支網(wǎng)絡(luò)(global-local dual branch network, GLDBNet). 該網(wǎng)絡(luò)主要分為兩個分支:由多個多尺度特征提取模塊組成的局部分支用于提取人群圖像的局部信息,由多個位置感知注意力模塊組成的全局分支用于提取全局信息. 這種局部-全局雙分支網(wǎng)絡(luò),既可以解決人頭尺度不均的問題,同時提升人群與場景的判別能力. 本文在常用的人群計數(shù)數(shù)據(jù)集上進行了大量的實驗. 定性和定量的實驗結(jié)果表明了本文方法的有效性.
GLDBNet 采取編碼器-解碼器結(jié)構(gòu),結(jié)構(gòu)如圖1所示. 編碼器采用在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練的VGG-16 網(wǎng)絡(luò)前10 層抽取深度特征. 解碼器由3 個部分組成:局部特征提取分支(local branch,LB),全局特征提取分支(global branch,GB),特征融合分支(fusion branch,FB). 局部分支通過提取多尺度特征解決人頭尺度不均的問題,全局分支采用位置感知注意力獲取全局上下文信息,融合分支完成全局信息和局部信息的融合. 最后通過上采樣操作獲得輸入圖像尺寸大小密度圖.
圖1 本文提出的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig. 1 The network architecture of our proposed network for crowd counting
“局部特征提取分支”的具體結(jié)構(gòu)組成如表1 所示,其主要由多個尺度感知特征抽取模塊(scaleaware feature extraction module,SFEM)級聯(lián)組成,建模場景中人頭尺度的變化. 每個SFEM 模塊的結(jié)構(gòu)如圖2 所示.
圖2 尺度感知特征提取模塊Fig. 2 The detail of scale-aware feature extraction module(SFEM)
表1 局部特征分支各模塊網(wǎng)絡(luò)結(jié)構(gòu)Tab. 1 The network structure of each module of the local branch
首先,輸入特征經(jīng)過1×1 的卷積之后按通道劃分成d組特征xi(i∈{1,2, ···,d}),xi擁有和輸入特征相同的空間,通道數(shù)是輸入特征的 1/d. 之后,每個xi都會經(jīng)過一個膨脹率為ri的3×3 空洞卷積Ki(·)處理,建模不同尺度的人頭特征. 空洞卷積的示意圖如圖3所示. 空洞卷積在普通卷積的基礎(chǔ)上引入了一個稱為膨脹率的超參數(shù),該參數(shù)定義了卷積核處理數(shù)據(jù)時各值的間距. 空洞卷積可以在不改變圖像輸出特征圖的尺寸的條件下增大感受野.
圖3 空洞卷積示意圖Fig. 3 Illustration of the dilated convolution
因此,每個特征子集的輸出yi如下所示.
每個3×3 卷積操作Ki會接受任意j<i的子集xj.xj每經(jīng)過一次空洞卷積操作,都會獲得比處理前更大的感受野. 該模塊輸出的結(jié)果是一個不同數(shù)目、不同尺度的感受野的集合.
在獲取不同尺度的特征后,本文使用1×1 卷積將劃分的通道融合以獲得最終的多尺度特征表達.
“全局特征提取分支”的具體結(jié)構(gòu)如表2 所示,其主要由多個位置感知注意力模塊(localization-aware attention module, LAM)級聯(lián)組成,獲取人群場景的上下文信息. 每個LAM 模塊具體工作流程如圖4 所示.
圖4 位置感知注意力特征模塊Fig. 4 The detail of localization-aware attention module(LAM)
表2 全局特征提取分支各模塊網(wǎng)絡(luò)結(jié)構(gòu)Tab. 2 The network structure of each module of the global branch
傳統(tǒng)注意力機制通過將特征圖全局池化來提取全局信息,把空間信息壓縮成一個通道描述子而丟失位置信息,而位置信息在獲取圖像全局空間信息中是至關(guān)重要的. 為了讓注意力機制能提取位置信息,本文對特征圖在水平和豎直方向分別進行平均池化,使得空間特征信息變成一對帶有空間上下文信息的一維向量. 通過該方法,網(wǎng)絡(luò)可以提取兩種空間方向的特征以及帶有方向信息的特征圖,在捕獲長距離依賴同時,根據(jù)兩個方向特征的關(guān)系獲取準(zhǔn)確的位置信息,從而更精準(zhǔn)地定位人群.
給定輸入特征F∈RC×H×W,通過水平和豎直方向的平均池化,得到兩個方向的空間特征fh∈RC×H×1和fw∈RC×1×W. 隨后,每個方向的特征圖經(jīng)過雙方向卷積,獲得像素級聯(lián)系. 以水平方向的上-下卷積為例,池化后的特征圖是一個一維向量. 從該向量的第二個像素開始,該像素的輸出是當(dāng)前像素和上一個像素的輸出結(jié)果合并之后輸入到1×1 卷積的結(jié)果,如公式(2)所示:
其中up(·)代表由下至上的1×1 卷積層與池化層,fi,h代表fh的第i個特征,卷積之后zh再經(jīng)過一次方向相反的下-上卷積獲得最終的輸出結(jié)果zh'∈RC×H×1. 同理,fw按照從左至右再從右至左的卷積方式獲得zw'∈RC×1×W.
通過上述方法得到的兩個方向的特征,要把它們送到共享的1×1 卷積變換F1中,將之整合在一起,如下所示.
其中:[. ,.] 代表空間維度的整合操作;δ代表非線性激活函數(shù);f∈R(C/r)×(H+W)是中間層特征圖,它編碼了水平、豎直方向的空間信息和像素級聯(lián)系.r代表壓縮率,控制模塊的大小. 隨后在空間維度上將f劃分為兩 個 獨 立 的 張 量f h'∈R(C/r)×H和fw'∈R(C/r)×W,另 外 使 用兩個1×1 卷積變換Fh和F w,將兩個張量f h'和f w'的通道數(shù)和輸入特征保持一致:
其中,δ為sigmoid 函數(shù). 輸出gh和gw作為最終的注意力權(quán)重. 該分支的各模塊網(wǎng)絡(luò)結(jié)構(gòu)如表2 所示.
融合分支是一個將雙分支獲取的局部特征和全局特征整合成密度圖的網(wǎng)絡(luò)分支,它由兩個3×3 卷積和一個1×1 卷積構(gòu)成,獲取一個分辨率是原圖像1/8 的密度圖,最后通過上采樣得到最終的密度圖.其網(wǎng)絡(luò)結(jié)構(gòu)如表3 所示.
表3 融合分支網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計Tab. 3 The network structure of fusion module
本文采用L2 損失函數(shù)優(yōu)化網(wǎng)絡(luò),具體如下.
式中:N代表訓(xùn)練圖像的數(shù)目;Xi代表第i個輸入圖像,F(xiàn)(Xi;θ)和Fi分別代表輸出的密度圖和對應(yīng)的真實密度圖;θ代表GLDBNet 網(wǎng)絡(luò)學(xué)習(xí)的參數(shù).
本文使用常用的平均均方誤差(mean square error, MSE)和平均絕對值誤差(mean absolute error,MAE)來評價網(wǎng)絡(luò)的計數(shù)性能,具體如下.
式中:N代表測試圖像數(shù)量;Yi代表預(yù)測的計數(shù);Yi,gt代表第i張圖像的真實人數(shù).
本文采用高斯卷積的形式生成密度圖F(X),按照如下方式生成對應(yīng)的密度.
式中:G代表高斯卷積;xi(i∈1,2, ···,N)代表真實的人頭位置;狄拉克函數(shù)δ(X-xi)與高斯卷積核做卷積運算. 標(biāo)準(zhǔn)差根據(jù)數(shù)據(jù)集的不同會做調(diào)整. 通過這種方式生成真實的密度圖.
2.1.1 實驗設(shè)置
編碼器采用在ImageNet 上預(yù)訓(xùn)練的VGG-16 網(wǎng)絡(luò),其他網(wǎng)絡(luò)層初始化采用均值為0,方差為0.01 的高斯分布. 為了方便訓(xùn)練并防止過擬合,本文在每一個batch 上做隨機裁剪,使得batch 上的圖像分辨率保持一致. 本文將batchsize 設(shè)置為8,使用Adam 優(yōu)化器訓(xùn)練我們的網(wǎng)絡(luò)模型,網(wǎng)絡(luò)的初始學(xué)習(xí)率為1×10-5,衰減率為0.99,每個epoch 的學(xué)習(xí)率通過上一個epoch 的學(xué)習(xí)率×衰減率獲得. 所有實驗均在1 張NVIDIA RTX 2080Ti GPU 上運行,并借助深度學(xué)習(xí)框架Pytorch 實現(xiàn).
2.1.2 數(shù)據(jù)集
本文在3 個常用的人群計數(shù)數(shù)據(jù)集上進行實驗,分別是ShanghaiTech,UCF_CC_50 和UCF-QNRF. 同時使用遙感數(shù)據(jù)集RSOC 做拓展實驗.
1) ShanghaiTech:該數(shù)據(jù)集分為Part A 和Part B.Part A 是一個人群較為密集的人群計數(shù)數(shù)據(jù)集,包含了482 張圖像. 每張圖像都有人頭標(biāo)定,Part A的人數(shù)在33~3 139 之間變化,Part B 在9~578 之間.其中,有300 張圖像用作訓(xùn)練,182 張圖像用作測試. Part B 是一個人群較為稀疏的人群數(shù)據(jù)集,包含了716 張圖像. 其中400 張用于訓(xùn)練,316 張用于測試.
2)UCF_CC_50:該數(shù)據(jù)集圖像數(shù)目極少,只有50 張,且人數(shù)在94 到4 543 之間變化,平均人頭計數(shù)為1280.
3)UCF-QNRF:該數(shù)據(jù)集的密度變化較大,包含1 535 張高分辨率圖像,每張人頭數(shù)目在49 個到12 865不等. 其中1 201 張圖像用于訓(xùn)練,334 張用于測試.
4)RSOC:作為最大的遙感計數(shù)數(shù)據(jù)集,它包含了4 種遙感物體,如建筑,轎車,大型車輛和船舶. 建筑圖像采集于谷歌地球,另外3 種物體采集于航空影像目標(biāo)檢測數(shù)據(jù)集Dataset for Object deTection in Aerial( DOTA )[10]. 本數(shù)據(jù)集有3 057 張圖像,286 539個標(biāo)定.
各數(shù)據(jù)集的詳細信息如表4 所示.
表4 數(shù)據(jù)集介紹Tab. 4 Summarization of the datasets
表5 展示了本文方法與其他技術(shù)方法在人群計數(shù)數(shù)據(jù)集上的性能比較. 可以看出,GLDBNet 幾乎在所有數(shù)據(jù)集上均取得了令人滿意的計數(shù)結(jié)果. 與RANet[11]相比,GLDBNet 在各個數(shù)據(jù)集上均取得了優(yōu)異的性能表現(xiàn),原因在于GLDBNet 在建模圖像中像素之間關(guān)系的同時,也建模了場景中的人群尺度變化,因此,優(yōu)于只考慮像素之間關(guān)系的RANet[11]性能. 與CAN[12]相比,GLDBNet 在密集人群數(shù)據(jù)集(例如ShanghaiTech PartA, UCF_CC_50 與UCF-QNRF)均取得了優(yōu)異的結(jié)果, 并在UCF-CC-50 數(shù)據(jù)集上MAE指標(biāo)取得了51.45 的性能增益. 這得益于本文局部特征提取分支有效地建模了密集場景中人群尺度變化. 本文方法在所有數(shù)據(jù)集上MAE 與MSE 指標(biāo)均遠超PRM-V1[13]與URC[14],進一步表明了本文方法的有效性.
表5 在不同數(shù)據(jù)集上與11 個前沿方法的比較Tab. 5 Comparison with recent 11 state-of-the-art crowd counting methods on different datasets
圖5 展示了本文方法在UCF-QNRF 數(shù)據(jù)集上不同人群密度等級下可視化的結(jié)果.該圖從左至右邊分別為UCF-QNRF 訓(xùn)練集中的第245、44、246、320、331 張圖片.顯然,本文方法獲得的密度圖更接近于真實值,計數(shù)結(jié)果更加準(zhǔn)確. 實驗結(jié)果表明,本文網(wǎng)絡(luò)可以更好地解決擁擠的、尺度變化較大的場景.
圖5 在UCF-QNRF 上運行的結(jié)果Fig. 5 The results on UCF-QNRF
鑒于遙感物體計數(shù)與人群計數(shù)有很多相似之處,本文通過遙感計數(shù)實驗來驗證網(wǎng)絡(luò)的泛化性. 該實驗的比較結(jié)果如表6 所示,估計的密度圖如圖6 所示,該圖從上至下分別為RSOC 訓(xùn)練集中Ship 的第6、8張圖片、Building 中的0251005 和000460、Large Vehicle中第1、3 張圖片,以及Small Vehicle 中的第7、29 張圖片. 本文模型在建筑、大型車輛、以及船舶數(shù)據(jù)集上有很大提升. 與每個數(shù)據(jù)子集的其他最好方法相比,本文方法提升了16.4%,2.5%,37.7%. 這證明了本文方法的魯棒性非常優(yōu)秀,即便將模型遷移到其他物體的計數(shù)上效果也很好. 雖然對于小汽車子集中,本文方法沒有達到最好,但還是獲得了不錯的效果.有可能是預(yù)處理的時候本文做了降采樣,丟失了一些信息. 同時,建筑類的可視化結(jié)果相對其他類別差了一些,這可能是因為在訓(xùn)練網(wǎng)絡(luò)的時候,本文沒有加語義類別的監(jiān)督信息. 并且RSOC 數(shù)據(jù)集中,建筑類別的每張圖片的目標(biāo)數(shù)量相比于其他類別的每張圖片的目標(biāo)數(shù)量更少,其他類別目標(biāo)分布情況相比于建筑類更稠密. 網(wǎng)絡(luò)在訓(xùn)練過程中有更多的機會學(xué)習(xí)稠密小目標(biāo),而稀疏大目標(biāo)學(xué)習(xí)到的機會更少.因此,網(wǎng)絡(luò)對建筑類的識別結(jié)果不是很理想,而對小目標(biāo)識別更敏感.
表6 RSOC 數(shù)據(jù)集上的結(jié)果比較Tab. 6 Performance comparison on RSOC dataset
圖6 在RSOC 上運行的結(jié)果Fig. 6 The results on RSOC dataset
本文先探究每個分支對計數(shù)結(jié)果的影響,然后探究每個分支模塊數(shù)量對計數(shù)結(jié)果的影響.
1)各分支的作用:首先探究某個單獨的功能分
支對結(jié)果的影響,之后研究各個模塊之間的組合后會對結(jié)果有多大的改善. 將事先訓(xùn)練好的VGG-16 網(wǎng)絡(luò)的前10 層作為對照組BaseNet. 實驗組的設(shè)置如表7 所示.
表7 不同分支組合的比較Tab. 7 The comparison results of different network configurations
通過模型A 與B 的比較可以發(fā)現(xiàn),加入了局部分支對計數(shù)精度的提升有一定的作用,這是因為多尺度模塊能有效提取局部特征進而提升模型精度.而模型C 比A 的效果要差一點,可能是預(yù)處理的時候丟失了一些全局信息導(dǎo)致的. 相比而言,模型D 獲得了最好的結(jié)果,表明這種局部-全局的雙分支信息,可以更好地提取特征,提高計數(shù)精度.
2)功能塊數(shù)目的影響:提出的多尺度和多方向坐標(biāo)注意力分支中,都有多個功能塊來提取特征,所以功能塊的數(shù)目是影響結(jié)果的重要因素. 由于本文網(wǎng)絡(luò)采用的是雙分支并行的模式,要保持兩個分支的功能塊的個數(shù)一致. 結(jié)果如表8 所示. 由表可見,1~5 的范圍內(nèi),計數(shù)效果隨著功能塊個數(shù)的增加而提升,但是到了6 個塊就下降了.
表8 不同功能塊數(shù)目的比較Tab. 8 The comparison results of configurations with different block numbers
本文提出了一個多分支網(wǎng)絡(luò)用于人群計數(shù). 該網(wǎng)絡(luò)含有兩個分支:1)一個含有多個尺度感知特征提取模塊的局部分支,用于高效地提取局部特征.2)一個含有多個位置感知注意力模塊的全局分支獲取位置信息和遠距離依賴,獲取全局特征. 網(wǎng)絡(luò)充分利用人群圖像中的全局特征與局部特征回歸密度圖,更好地應(yīng)對密集場景人頭尺度變化與前背景干擾問題. 本文還設(shè)計了相關(guān)實驗,實驗結(jié)果表明了本文方法的有效性. 同時,本文在RSOC 遙感數(shù)據(jù)集上做了實驗,證明了本文方法具有極強的泛化性,較其他主流方法有較大程度的提升.