馬 煜,杜慧敏,毛智禮,張 霞
西安郵電大學(xué) 電子工程學(xué)院,西安 710121
隨著世界經(jīng)濟的不斷增長,全球人口數(shù)量急劇增加,大量的人口涌入土地面積有限的城市,導(dǎo)致城市中的公共場所在重大節(jié)日或活動中會面臨高流量、高密度的人群壓力。當(dāng)大量的人群處于較為狹小的空間時,一旦發(fā)生騷亂,人群會很容易失去控制,從而將會導(dǎo)致惡性事故的發(fā)生。近年來,關(guān)于在大型活動、體育賽事、旅游景點、學(xué)校等地發(fā)生推搡踩踏等嚴重事件的新聞報導(dǎo)屢見不鮮。例如,2009年3 月29 日在科特迪瓦阿比讓舉行的世界杯和非洲國家隊預(yù)選賽期間,由于人群密度太大使得墻體倒塌造成19 人死亡,132 人受傷;2013 年6 月,英格蘭球星貝克漢姆到達同濟大學(xué)開展交流活動,現(xiàn)場發(fā)生踩踏事件,受傷人數(shù)頗多;2014 年12 月31 日,在上海外灘的跨年活動上發(fā)生惡性踩踏事件,造成36 人死亡,47 人受傷。這些悲劇均是在人群密度過大時發(fā)生的,由此可見,公共安全與人群密度息息相關(guān)。為了預(yù)防類似的惡性事件發(fā)生,需要掌握實時的人群密度情況,在密度過大時進行預(yù)警并采取合理的管控措施。因此對人群密度進行精確的檢測對預(yù)防惡性事件的發(fā)生有著重要意義以及研究價值。而人群中的密集性、遮擋性以及多尺度性對檢測的精度有著很大的影響,尤其是人群中的尺度多樣性給該領(lǐng)域的研究帶來了極大的挑戰(zhàn)。人群擁擠場景如圖1所示。
Fig.1 Crowd image圖1 擁擠人群場景
近年來深度學(xué)習(xí)發(fā)展迅速,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)在圖像處理領(lǐng)域有著優(yōu)異的表現(xiàn),人群密度檢測領(lǐng)域的研究者們也將卷積神經(jīng)網(wǎng)絡(luò)運用到該領(lǐng)域中。Zhang 等人[1]首先提出多陣列網(wǎng)絡(luò)結(jié)構(gòu)(multi-column convolutional neural network,MCNN)來應(yīng)對人群數(shù)據(jù)中的不同尺度問題,設(shè)計出了三列卷積核大小不同的網(wǎng)絡(luò)。該網(wǎng)絡(luò)在ShanghaiTech 數(shù)據(jù)集上有良好的表現(xiàn),但當(dāng)涉及到處理人數(shù)較多(尺度多)、場景遮擋多以及透視問題時效果明顯下降。Boominathan 等人[2]提出的Crowd-Net 在不同的列上組合了淺層網(wǎng)絡(luò)和深層網(wǎng)絡(luò),其中淺層網(wǎng)絡(luò)捕獲對應(yīng)于大規(guī)模變化的底層特征,而深層網(wǎng)絡(luò)捕獲高層語義信息。該網(wǎng)絡(luò)只用了兩種卷積核大小不同的網(wǎng)絡(luò)對全圖的所有尺度信息進行提取,在人群分布不均勻的圖片中會出現(xiàn)淺層網(wǎng)與深層網(wǎng)提取特征的準(zhǔn)確性下降。Switching CNN[3]在圖像塊上訓(xùn)練幾個獨立的CNN人群密度回歸器,這些回歸器與MCNN具有相同的結(jié)構(gòu)。此外,還對回歸分類器進行了交替分類訓(xùn)練,以選擇最佳分類器進行密度估計。該網(wǎng)絡(luò)首先將圖片分成9 塊,通過switchlayer對每一塊圖片中人群密度進行分析后分類,使不同密度的塊進入相應(yīng)的人群密度回歸器,由于在分塊時會出現(xiàn)人臉的不規(guī)則劃分,此類情況會使得對人進行識別時出錯從而會導(dǎo)致網(wǎng)絡(luò)精度下降。U-GAnet[4]通過多通道融合淺層特征生成人群密度圖,但對于人群密集度大的區(qū)域則無法生成高質(zhì)量密度圖。
為了更好地解決人群中的尺度多樣性問題,本文提出了新型的用于人群密度檢測的網(wǎng)絡(luò)結(jié)構(gòu)。VGG[5](visual geometry group)和殘差網(wǎng)絡(luò)[6](residual network,ResNet)均為具有特征提取性能的網(wǎng)絡(luò),考慮到網(wǎng)絡(luò)的結(jié)構(gòu),本文選擇使用VGG16 的部分網(wǎng)絡(luò)作為前端網(wǎng)絡(luò)來對圖像進行特征提取,在后端網(wǎng)絡(luò)的設(shè)計中使用了兩陣列的空洞卷積網(wǎng)絡(luò)對第一部分網(wǎng)絡(luò)輸出進行處理從而生成不同尺度下的特征圖,最后將兩列網(wǎng)絡(luò)的輸出進行級聯(lián)生成預(yù)測密度圖。本文在UCF_CC_50[7]和ShanghaiTech 數(shù)據(jù)集上進行測試,測試結(jié)果好于大部分主流人群密度檢測算法。
本文所使用的訓(xùn)練數(shù)據(jù)為人群密度圖,因此在訓(xùn)練網(wǎng)絡(luò)前需要將人群密度數(shù)據(jù)集中的人群圖片使用Matlab 進行預(yù)處理,將其轉(zhuǎn)化為可用的密度圖,如圖2 所示。
Fig.2 Density map圖2 密度圖
對于一張有N個人數(shù)標(biāo)記的圖片數(shù)據(jù)可以使用式(1)來表示:
式中,xi為人頭在圖像中的像素位置,δ(x-xi)表示圖像中人頭位置的沖激函數(shù)。將式(1)與高斯核濾波器進行卷積得到密度方程,如式(2):
考慮到由尺度不同引起的人頭變形,本文使用由Zhang 等人提出的基于幾何自適應(yīng)核函數(shù)的方法來生成網(wǎng)絡(luò)訓(xùn)練時所用到的密度圖,如式(3)所示:
本文在訓(xùn)練網(wǎng)絡(luò)時使用計算所得的預(yù)測密度圖與真實密度圖間的歐幾里德距離(Euclidean distance)作為損失函數(shù),如式(4)所示:
其中,θ為待優(yōu)化網(wǎng)絡(luò)參數(shù),N為訓(xùn)練圖片數(shù)目,xi為輸入圖像,zi表示xi對應(yīng)密度圖的真實值,z(xi;θ)表示由網(wǎng)絡(luò)估計出的密度圖。
在圖像分割領(lǐng)域中完成一項任務(wù)需要由若干卷積層和池化層組成的卷積神經(jīng)網(wǎng)絡(luò)。圖像輸入到卷積層來提取圖像特征得到該層輸出特征圖,再通過池化層來對特征圖進行感受野增大并減小圖像大小以便進行下一步操作。分割任務(wù)是在像素級上完成預(yù)測的,因此后端網(wǎng)絡(luò)需要對池化后的特征圖進行上采樣(upsampling),使得輸出圖像恢復(fù)到與輸入圖像相同大小。由于分割任務(wù)對圖像細節(jié)信息的需求度較大,而過多的池化操作會導(dǎo)致部分細節(jié)丟失。本文使用空洞卷積(atrous convolution)來解決這一問題??斩淳矸e操作如圖3 所示。圖3(a)為擴張率為1的空洞卷積,當(dāng)擴張率為1 時空洞卷積即為普通3×3卷積操作,其感受野為(a)中紅色部分。圖中(b)為擴張率為2 的情況,即在(a)中每個卷積核之間進行補零,擴張后只有紅色部分與3×3 卷積核進行卷積操作,其感受野擴大為(b)中綠色框內(nèi)的部分,即感受野擴大為7×7。
Fig.3 Atrous convolution圖3 空洞卷積
空洞卷積核實際大小如式(5)所示:
式中,k為原始卷積核大小,r為擴張率。
空洞卷積感受野計算方式如式(6)所示:
式中,f為上一層感受野大小,s為卷積步長,ks為卷積核大小。
為了解決人群密度檢測任務(wù)中由于攝像機視角原因所引起的多尺度問題,本文設(shè)計了如圖4 所示的網(wǎng)絡(luò)結(jié)構(gòu)。
網(wǎng)絡(luò)第一部分使用了經(jīng)典網(wǎng)絡(luò)VGG16 的部分網(wǎng)絡(luò),由于VGG16 結(jié)構(gòu)中存在5 次最大池化操作,使輸出特征圖為輸入圖像大小的1/32,這對于生成密度圖來說會丟失很多細節(jié)信息。因此,本文采用第3 次池化操作后的結(jié)果作為第一部分網(wǎng)絡(luò)的輸出,使得輸出密度圖為輸入圖像的1/8,以提高預(yù)測密度圖的準(zhǔn)確性。網(wǎng)絡(luò)第二部分使用了多陣列空洞卷積,由于空洞卷積是在普通卷積的基礎(chǔ)上對卷積核進行間隔補零操作,因此可以在不增加網(wǎng)絡(luò)計算參數(shù)的情況下來擴大感受野,以此來提高網(wǎng)絡(luò)對圖像多尺度信息的捕捉能力。人群數(shù)據(jù)是高密集度圖像數(shù)據(jù),因此空洞卷積特有的提高感受野的方式尤其適用于人群密度檢測工作。本文網(wǎng)絡(luò)使用兩陣列擴張率不同的空洞卷積對第一部分的網(wǎng)絡(luò)輸出進行處理,其擴張率為2 和4,使得網(wǎng)絡(luò)能夠捕捉更多的尺度細節(jié)信息。網(wǎng)絡(luò)最后使用1×1 的卷積對輸出進行級聯(lián),得到高質(zhì)量預(yù)測密度圖。
本文實驗分別在ShanghaiTech、UCF_CC_50 兩個數(shù)據(jù)集上對網(wǎng)絡(luò)性能進行測試。本文在pytorch環(huán)境下進行訓(xùn)練,初始學(xué)習(xí)率為1×10-6,訓(xùn)練周期為400個epoch。
本文使用平均絕對誤差(mean absolute error,MAE)及均方誤差(mean squared error,MSE)來衡量網(wǎng)絡(luò)性能,計算方法如式(7)、式(8)所示:
其中,N為測試數(shù)據(jù)集中圖片的個數(shù);Ci為網(wǎng)絡(luò)預(yù)測的圖片數(shù)據(jù)中人頭個數(shù);為Ci對應(yīng)的真實人頭個數(shù)。
式(9)為人頭數(shù)計算方式,其中l(wèi)、w為所計算密度圖的長、寬,即對該密度圖中所有像素點求和來得到人頭個數(shù)。
UCF_CC_50 數(shù)據(jù)集是第一個具有挑戰(zhàn)性的人群密度數(shù)據(jù)集,數(shù)據(jù)集中含有各種密度以及不同角度的場景,整個數(shù)據(jù)集每個圖像平均有1 280 人,整個數(shù)據(jù)集共標(biāo)記了63 075人。圖片內(nèi)人數(shù)從94到4 543不等,這樣差異巨大的數(shù)據(jù)集對模型性能也有很大的挑戰(zhàn)。因為數(shù)據(jù)集中只有50張圖片,在訓(xùn)練前對每張圖片進行部分截取,截取大小為原圖1/4共20張,再對截取出的圖片進行翻轉(zhuǎn)操作來擴大訓(xùn)練數(shù)據(jù)集。如表1所示,本文算法在UCF_CC_50 數(shù)據(jù)集上的表現(xiàn)與其余6 種算法相比兩項參數(shù)均達到最好,證明了算法的準(zhǔn)確性。
Table 1 Performance comparison on UCF_CC_50 dataset表1 UCF_CC_50 數(shù)據(jù)集上性能對比
ShanghaiTech 數(shù)據(jù)集為上??萍即髮W(xué)團隊為解決人群密度檢測問題所建立的大規(guī)模人群數(shù)據(jù)集,該數(shù)據(jù)集共1 198 張圖片,其中標(biāo)記人數(shù)達到330 165。其中Part_A 部分包括300 張訓(xùn)練圖片以及182 張測試圖片,Part_B 部分包括400 張訓(xùn)練圖片以及316 張測試圖片。本文所提出的人群密度檢測算法與其他主流算法在該數(shù)據(jù)集上的測試結(jié)果如表2 所示。
Table 2 Performance comparison on ShanghaiTech dataset表2 ShanghaiTech 數(shù)據(jù)集上性能對比
由表2 可見,本文算法在ShanghaiTech Part_A 密集人群數(shù)據(jù)上的表現(xiàn)與表中7 種主流算法相比均達到最優(yōu),在Part_B 街景人群數(shù)據(jù)上表現(xiàn)依然突出,證明了本文算法的可靠性。
實驗效果如圖5 所示。本文算法效果與MCNN對比如圖6 所示。
Fig.6 Compared with MCNN圖6 與MCNN 結(jié)果對比
由于空洞卷積會帶來柵格效應(yīng),即在卷積核中間插入0 后再進行卷積操作時不是每一個像素都參與計算,會造成部分信息不連續(xù)的結(jié)果,對預(yù)測效果有一定的影響。因此,本文參考文獻[15-16],在原有的網(wǎng)絡(luò)基礎(chǔ)上進行了空洞率調(diào)整,將其中一列空洞卷積的擴張率調(diào)整為[1,2,5,1,2,5]鋸齒狀空洞卷積網(wǎng)絡(luò),并在ShanghaiTech Part_A 上對微調(diào)后的網(wǎng)絡(luò)進行了訓(xùn)練以及測試,對比效果如表3 所示。
Table 3 Comparison on ShanghaiTech Part_A表3 ShanghaiTech Part_A 上效果對比
鋸齒狀空洞卷積在擴張率大于1 的空洞卷積操作后插入一層擴張率為1 的基礎(chǔ)卷積,可以對擴大感受野后的卷積操作中每一個像素都進行計算來保證信息的連續(xù)性。由表3 中數(shù)據(jù)可知,鋸齒狀空洞卷積結(jié)構(gòu)對解決柵格效應(yīng)有良好的效果并對網(wǎng)絡(luò)性能有了一定的提高。
本節(jié)對生成密度圖進行圖像熵計算,結(jié)果如表4所示。本文算法所生成的密度圖相較于其他算法包含更多信息,質(zhì)量更好。
Table 4 Image entropy of ShanghaiTech Part_A表4 ShanghaiTech Part_A 圖像熵
為驗證本文算法所引入雙陣列空洞卷積與對VGG 網(wǎng)絡(luò)進行改進工作的有效性以及對本文算法的性能影響,本文在ShanghaiTech Part_A 數(shù)據(jù)集上進行了消融實驗,效果如表5 所示。
Table 5 Ablation experiment on ShanghaiTech Part_A表5 ShanghaiTech Part_A 上消融實驗
由表5 數(shù)據(jù)可得,本文所使用的改進后的VGG相較于使用原始VGG 對網(wǎng)絡(luò)性能提高了19.7%。由于原始VGG 需要經(jīng)過5 次池化操作使前端網(wǎng)絡(luò)的輸出為原圖的1/32,本文使用的改進VGG 進行了3 次池化操作使得輸出為原圖的1/8,可以保留更多的邊緣人群信息,有利于密度圖的精確生成。為測試空洞卷積對網(wǎng)絡(luò)性能的影響,本節(jié)對去掉空洞卷積模塊后的網(wǎng)絡(luò)進行實驗并與原網(wǎng)絡(luò)進行對比,如表5 數(shù)據(jù)所示去掉空洞卷積模塊后網(wǎng)絡(luò)性能下降了36.2%。使用不同擴張率的網(wǎng)絡(luò)相較于單一擴張率的網(wǎng)絡(luò)性能提高了10.3%。
網(wǎng)絡(luò)改進前后輸出特征圖如圖7 所示。
本節(jié)對網(wǎng)絡(luò)改進前后相同層相同通道的特征圖進行提取,由圖7 可以看出改進后的網(wǎng)絡(luò)可提取到更多的邊緣人頭特征,并且生成質(zhì)量更高的密度圖。
Fig.7 Feature visualization圖7 特征可視化
本文提出了一種應(yīng)對多尺度問題的基于兩陣列卷積神經(jīng)網(wǎng)絡(luò)的人群密度檢測算法,測試結(jié)果表明該算法在通用人群數(shù)據(jù)集上有著良好的準(zhǔn)確性。在未來的研究工作中,將從空洞卷積的空洞率的設(shè)計方向入手來解決空洞卷積的柵格效應(yīng),以及如何在網(wǎng)絡(luò)中引入注意力機制等方面來開展工作。