蔣 俊,龍 波,高明亮,鄒國(guó)鋒
(1.西南石油大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,成都 610500;2.山東理工大學(xué)電氣與電子工程學(xué)院,淄博 255000)
隨著城市人口的劇增,公共集會(huì)、大型體育賽事等人群聚集現(xiàn)象頻繁發(fā)生。因此,快速、精準(zhǔn)的人群計(jì)數(shù)方法對(duì)于人群分析、公共場(chǎng)所安全警示、群體異常事件預(yù)防等至關(guān)重要。此外,良好的計(jì)數(shù)算法也可以用于顯微鏡下微生物的計(jì)數(shù)、野生動(dòng)物的數(shù)量統(tǒng)計(jì)等。
受人群遮擋、空間尺度和場(chǎng)景變化的影響,傳統(tǒng)的基于檢測(cè)和回歸的人群計(jì)數(shù)算法計(jì)數(shù)準(zhǔn)確度難以提高。隨著深度學(xué)習(xí)在計(jì)算機(jī)視覺領(lǐng)域的深入研究和廣泛應(yīng)用,眾多學(xué)者致力于深度學(xué)習(xí)框架下的人群計(jì)數(shù)方法研究,并提出了大量卓有成效的學(xué)習(xí)算法。這類算法能夠有效提取圖像特征,相較于傳統(tǒng)的計(jì)數(shù)算法,計(jì)數(shù)準(zhǔn)確度提升顯著。但越來(lái)越深的網(wǎng)絡(luò)結(jié)構(gòu)意味著訓(xùn)練這些網(wǎng)絡(luò)模型代價(jià)巨大,甚至訓(xùn)練完成的模型也受到電腦硬件的限制,無(wú)法廣泛應(yīng)用。
為了解決上述問題,現(xiàn)提出一種簡(jiǎn)易、高效的人群計(jì)數(shù)網(wǎng)絡(luò)結(jié)構(gòu),多尺度融合卷積神經(jīng)網(wǎng)絡(luò)(multi-scale fusion convolution neural network,MSF-CNN),以期通過有效提取圖像特征,解決人群之間的遮擋和空間尺度多變的問題。
由于訓(xùn)練數(shù)據(jù)的缺乏,早期的人群計(jì)數(shù)方法主要分為兩類,即基于檢測(cè)的方法和基于回歸的方法。
基于檢測(cè)的人群計(jì)數(shù)方法主要是通過檢測(cè)場(chǎng)景中的行人個(gè)體對(duì)人數(shù)進(jìn)行統(tǒng)計(jì)。文獻(xiàn)[1]提出一種基于滑動(dòng)窗口檢測(cè)器的方法檢測(cè)和統(tǒng)計(jì)人數(shù)。以文獻(xiàn)[2-5]為代表的傳統(tǒng)人群計(jì)數(shù)算法先從圖像中提取行人的小波、邊緣等圖像特征,再利用這些特征訓(xùn)練一個(gè)分類器來(lái)檢測(cè)人群并統(tǒng)計(jì)人群數(shù)量。此類行人檢測(cè)方法對(duì)于人群分布稀疏的場(chǎng)景具有較好的效果。但是隨著人群密度的提升,人群間的相互遮擋使得檢測(cè)的準(zhǔn)確性下降明顯。文獻(xiàn)[6-7]提出了通過檢測(cè)身體的部分結(jié)構(gòu),例如頭部、肩膀等身體結(jié)構(gòu)來(lái)進(jìn)行行人檢測(cè)并統(tǒng)計(jì)人數(shù)。此類方法相較于基于行人整體檢測(cè)的方法,具有較好的魯棒性。然而在人流量大的復(fù)雜場(chǎng)景中,這類方法依然暴露出檢測(cè)不準(zhǔn)的缺點(diǎn)。
基于特征回歸的人群計(jì)數(shù)的方法主要通過提取圖像基本特征,建立特征和人數(shù)的回歸模型來(lái)進(jìn)行人數(shù)估計(jì)。以文獻(xiàn)[8-10]為代表的基于回歸的方法一般包括3個(gè)步驟:①通過前景分割將人群從圖像中分割出來(lái);②從分割得到的前景中提取紋理、邊緣、面積和周長(zhǎng)等特征;③訓(xùn)練一個(gè)回歸模型,建立特征到人數(shù)的回歸關(guān)系,進(jìn)而估計(jì)人數(shù)。這類方法只能統(tǒng)計(jì)人數(shù),而不能提供場(chǎng)景中人群密度的空間分布的情況,實(shí)際應(yīng)用受到限制。人群特征的描述和回歸模型的建立也是該類算法的難點(diǎn)。
近年來(lái),以卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)為代表的神經(jīng)網(wǎng)絡(luò)方法憑借其出色的特征表達(dá)能力,被廣泛應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域[11]。研究者們開始使用深度學(xué)習(xí)方法解決復(fù)雜場(chǎng)景下的人群計(jì)數(shù)問題。
文獻(xiàn)[12]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的人群計(jì)數(shù)方法。該方法首先為某些特定的場(chǎng)景預(yù)訓(xùn)練一個(gè)網(wǎng)絡(luò),對(duì)于給定的新場(chǎng)景的圖像,根據(jù)圖像的透視信息對(duì)預(yù)訓(xùn)練網(wǎng)絡(luò)進(jìn)行微調(diào)以達(dá)到適應(yīng)場(chǎng)景的目的。然而實(shí)際場(chǎng)景中的透視圖不易獲取,這極大地限制了該方法的適用性。Zhang等[13]提出的多列卷積神經(jīng)網(wǎng)絡(luò)(multi-column convolutional neural network,MCNN)網(wǎng)絡(luò)結(jié)構(gòu),采用三列卷積核尺寸各不相同的卷積神經(jīng)網(wǎng)絡(luò)來(lái)提取圖像中不同空間尺度的特征,通過對(duì)密度圖積分求和估計(jì)人數(shù),減少空間尺度的變化對(duì)計(jì)數(shù)結(jié)果的影響。在此基礎(chǔ)上,為了使模型能夠更好地適應(yīng)圖像人群規(guī)模和視角信息,Sam等[14]設(shè)計(jì)了一種選擇器神經(jīng)網(wǎng)絡(luò)Switching-CNN,該方法根據(jù)圖像塊的內(nèi)容信息選擇預(yù)測(cè)結(jié)果最精準(zhǔn)的CNN列生成該圖像塊的人群分布密度圖并計(jì)數(shù),取得了比MCNN[13]更好的計(jì)數(shù)效果。但因其復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),使得網(wǎng)絡(luò)的訓(xùn)練過程變得不易實(shí)現(xiàn)。同時(shí),網(wǎng)絡(luò)中兩次下采樣降低了密度圖的分辨率和準(zhǔn)確度,在一定程度上影響人群密度估計(jì)和人群場(chǎng)景分析等其他更高層次的認(rèn)知任務(wù)。
采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行人群計(jì)數(shù)主要有兩種方式:一是直接建立輸入圖像和估計(jì)人數(shù)的映射關(guān)系模型,通過此模型估計(jì)人數(shù);二是先通過CNN提取輸入的圖像的特征得出該圖像的人群分布的密度圖,再對(duì)密度圖積分求和,進(jìn)而統(tǒng)計(jì)人數(shù)。第一種方法較為直接,但缺乏人群分布的空間信息,無(wú)法完成人群密度估計(jì)和人群場(chǎng)景分析等更高層次的認(rèn)知任務(wù)。因此,采用第二種方式來(lái)進(jìn)行人群計(jì)數(shù)。此類方式中,密度圖質(zhì)量的好壞直接決定了計(jì)數(shù)的精準(zhǔn)度。生成高質(zhì)量、高分辨率的密度圖像成了此類算法的核心。
圖1為提出的多尺度融合卷積網(wǎng)絡(luò)結(jié)構(gòu)。其中,‘Conv_m×n’表示包含n個(gè)大小為m×m卷積核的卷積操作;‘pooling’表示感受域?yàn)?×2的MaxPooling操作;‘Cat’表示特征合并操作;‘Transposed Conv’表示用來(lái)擴(kuò)大特征圖尺寸的反卷積操作,該反卷積的stride參數(shù)設(shè)置為2,output_padding參數(shù)設(shè)置為0。特征提取部分末端的1×1的卷積層未在圖中呈現(xiàn),與特征融合處采用拼接操作將深度分別為8、10和12的特征圖合并成深度為30的特征圖,不涉及卷積操作。
網(wǎng)絡(luò)以真實(shí)人群場(chǎng)景作為輸入,輸入規(guī)格對(duì)像素大小沒有限制。從真實(shí)人群場(chǎng)景中學(xué)習(xí)端到端的映射,輸出預(yù)測(cè)密度圖。網(wǎng)絡(luò)的結(jié)構(gòu)主要可以分為兩個(gè)部分,即特征提取部分和特征融合部分。
圖1 多尺度融合卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 The architecture of MSFCNN
MCNN[13]利用三列不同尺寸卷積核的CNN有效提取圖像中不同尺度的特征。使得生成的模型能夠很好地適應(yīng)圖像因多變的拍攝角度和分辨率大小而產(chǎn)生的不同的人頭尺寸。因此,MSF-CNN與MCNN類似,首先采用尺寸為9×9、7×7和5×5的卷積核提取原始圖像的人群宏觀特征,然后依次采用尺寸較小的卷積核提取高級(jí)特征。為了縮減網(wǎng)絡(luò)參數(shù),提高訓(xùn)練收斂速度,借鑒了GoogLeNet中Inception結(jié)構(gòu)的參數(shù)設(shè)置方法在每一列的最后加一層卷積核為1×1的卷積層[21]。網(wǎng)絡(luò)的特征融合部分采用卷積核尺寸分別為7×7、5×5和3×3的三層卷積結(jié)構(gòu)對(duì)特征提取部分提取到的特征以合作的方式進(jìn)行融合。最后采用1×1的卷積核將特征圖映射到密度圖。網(wǎng)絡(luò)的特征提取部分使用了兩次MaxPooling操作以減少網(wǎng)絡(luò)的參數(shù)和訓(xùn)練的運(yùn)算量,但也使得網(wǎng)絡(luò)提取到的特征圖和生成的密度圖尺寸縮減到了原始圖像的1/4。為了提高密度圖的分辨率以便更加準(zhǔn)確地統(tǒng)計(jì)人數(shù),采用了一層2×2的反卷積操作將密度圖像的尺寸擴(kuò)大到原來(lái)的二倍。
與Switching-CNN14等復(fù)雜網(wǎng)絡(luò)相比,此處提出的網(wǎng)絡(luò)更加易于搭建,沒有紛繁復(fù)雜的訓(xùn)練過程。網(wǎng)絡(luò)包含較少的網(wǎng)絡(luò)層數(shù)和卷積核個(gè)數(shù),這意味著網(wǎng)絡(luò)具有較少的參數(shù)和更快的收斂速度。值得注意的是,網(wǎng)絡(luò)的特征提取部分采用了兩次池化和一次反卷積操作,因此需要將訓(xùn)練的真實(shí)密度圖縮小到原來(lái)的1/2后再生成用于模型的訓(xùn)練。而對(duì)于輸入的圖像,網(wǎng)絡(luò)可以輸入任意大小的原始圖像以避免失真和原始信息的丟失。
2.2.1 生成密度圖
MSF-CNN通過生成密度圖積分求和來(lái)統(tǒng)計(jì)人數(shù),訓(xùn)練學(xué)習(xí)前需要將訓(xùn)練樣本中帶有人頭標(biāo)注的數(shù)據(jù)轉(zhuǎn)化成人群分布密度圖。故采用脈沖函數(shù)卷積高斯核的方式來(lái)生成密度圖。
在一張標(biāo)注有N個(gè)人頭的圖像中,若xi像素處有一個(gè)人頭標(biāo)注,用脈沖函數(shù)可以表示為δ(x-xi),則整張圖像的人數(shù)可以表示為
(1)
式(1)中:N為圖像中標(biāo)注點(diǎn)數(shù)量;x為圖像矩陣;xi為圖像中的標(biāo)注點(diǎn)。假設(shè)xi是圖像平面的獨(dú)立樣本,通過與高斯核函數(shù)的卷積操作將其轉(zhuǎn)化成連續(xù)的密度函數(shù):
F(x)=H(x)*Gσ(x)
(2)
式(2)中:Gσ(x)為高斯核濾波器函數(shù);*為卷積運(yùn)算。如果在每個(gè)人頭點(diǎn)周圍人群是均勻分布的,則通過該人頭點(diǎn)與它的k個(gè)近鄰的平均距離可以合理估算由于圖像拍攝視角引起的幾何偏差。因此需引入基于人頭大小的分布參數(shù)σ,而密集人群中人頭大小通常和最近兩個(gè)人間的距離有關(guān)。文獻(xiàn)[13]提出基于與臨近標(biāo)注點(diǎn)的平均距離決定高斯分布的參數(shù),即幾何適應(yīng)的核。因此密度函數(shù)可以表示為
(3)
圖2 測(cè)試圖像及生成的基準(zhǔn)的密度圖Fig.2 Testing images and the corresponding ground truth density maps
2.2.2 損失函數(shù)
歐式距離損失函數(shù)作為模式識(shí)別中最為常用的損失函數(shù)之一,具有旋轉(zhuǎn)不變性和平移不變性等優(yōu)點(diǎn)。因此采用歐氏距離來(lái)度量估計(jì)的密度圖與真實(shí)密度圖之間的差異。損失函數(shù)定義為
(4)
多尺度卷積融合網(wǎng)絡(luò)的運(yùn)行環(huán)境為:CPU Intel E5-2670,顯卡GTX 1080 Ti(顯存64 G),操作系統(tǒng)Linux Ubuntu 16.04,深度學(xué)習(xí)框架PyTorch。為了提高模型擬合速度,網(wǎng)絡(luò)訓(xùn)練參數(shù)設(shè)置如表1所示。
表1 網(wǎng)絡(luò)訓(xùn)練參數(shù)設(shè)置列表Table 1 Training parameters of MSF-CNN
在人群計(jì)數(shù)問題中,計(jì)數(shù)誤差主要采用兩個(gè)指標(biāo)進(jìn)行度量,即平均絕對(duì)誤差(MAE)和平均均方誤差(MSE)。其定義為
(5)
(6)
ShanghaiTech數(shù)據(jù)集總共包含1 198張標(biāo)記圖片,總標(biāo)記人數(shù)達(dá)到330 165 人,數(shù)據(jù)集分為part A和part B兩部分。part A部分300張用于訓(xùn)練,182張用于測(cè)試;part B部分400張用于訓(xùn)練,316張用于測(cè)試。part B部分的圖片相較于part A部分的圖片人群分布更為稀疏,但人群分布變化較大。同時(shí)將訓(xùn)練集中的每張圖片選取9個(gè)不同位置的圖片塊,每個(gè)圖片塊的大小為原始圖片的1/4,前4張圖片塊包含4個(gè)不重疊的圖塊,而其他5個(gè)圖片塊從輸入圖片中隨機(jī)選取,擴(kuò)展后數(shù)據(jù)集樣本量是原數(shù)據(jù)集的9倍。
在ShanghaiTech數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表2所示。與近年來(lái)主流的人群計(jì)數(shù)方法相比較,本文方法在part A上的MAE和MSE達(dá)到最好。其中與MCNN[13]相比分別降低了16.4和30.6,與彭山珍等[18]提出的方法相比,MAE降低了3.4。與TDF-CNN[17]相比MSE降低了2.5。在part B數(shù)據(jù)集上,本文方法與MCNN[13]相比分別降低了3.9和6.3;與最好方法的MAE和MSE僅相差2.5和3.9。
表2 ShanghaiTech數(shù)據(jù)集上的結(jié)果對(duì)比Table 2 Comparative results on ShanghaiTech datasets
圖3 測(cè)試圖片的真實(shí)密度圖和估計(jì)密度圖Fig.3 Testing images and the corresponding ground truth and estimated density maps
以上結(jié)果表明MSF-CNN能有效提取圖像特征和適應(yīng)人群密度、場(chǎng)景的變化,明顯優(yōu)于MCNN方法,對(duì)不同場(chǎng)景下的人群計(jì)數(shù)具有較好的準(zhǔn)確性。圖3展示了在ShanghaiTech數(shù)據(jù)集上算法預(yù)測(cè)的密度圖和真實(shí)密度圖。
UCF_CC_50數(shù)據(jù)集是一個(gè)極具挑戰(zhàn)性的數(shù)據(jù)集,僅包含50張圖片,卻標(biāo)注有63 974 人。平均每張圖片標(biāo)注1 280人,單張圖像標(biāo)注人數(shù)從94人到4 543 人不等。UCF_CC_50對(duì)算法的性能有極大的考驗(yàn)。
對(duì)UCF_CC_50數(shù)據(jù)集采用了與ShanghaiTech數(shù)據(jù)集相同的數(shù)據(jù)增強(qiáng)方式來(lái)擴(kuò)展原始數(shù)據(jù)集。使用五折交叉驗(yàn)證對(duì)算法進(jìn)行評(píng)價(jià)[11]。結(jié)果如表3所示。
表3 UCF_CC_50數(shù)據(jù)集上的結(jié)果對(duì)比Table 3 Comparative results on UCF_CC_50 datasets
實(shí)驗(yàn)結(jié)果表明,本文方法在MAE和MSE上與MCNN[13]相比分別降低了52.4和98.0,也優(yōu)于其他人群計(jì)數(shù)方法。此外,本文方法對(duì)于存在不同視角失真的復(fù)雜場(chǎng)景,也表現(xiàn)出了良好的魯棒性。
3.5.1 模型分析
為了驗(yàn)證三列特征提取網(wǎng)絡(luò)L1~L3對(duì)模型計(jì)數(shù)精度的影響,分別采用特征提取網(wǎng)絡(luò)L1、L2、L3和特征融合部分C的不同組合進(jìn)行實(shí)驗(yàn)。表4展示了單個(gè)特征提取網(wǎng)絡(luò)和這些組合在ShanghaiTech Part A數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果,由此可見本文方法中網(wǎng)絡(luò)結(jié)構(gòu)的有效性。
表4 不同網(wǎng)絡(luò)結(jié)構(gòu)組合精度比較Table 4 Accuracy comparative results with different network structures
3.5.2 參數(shù)比較
通常情況下卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù)數(shù)量直接決定了模型的復(fù)雜度[22]。模型復(fù)雜度在很大程度上影響該模型的運(yùn)行時(shí)性能,網(wǎng)絡(luò)模型空間復(fù)雜度的計(jì)算式[23]為
(7)
式(7)中:P為模型空間復(fù)雜度;K為卷積核的尺寸;C為通道數(shù);D為網(wǎng)絡(luò)深度。
自CNN出現(xiàn)以來(lái),研究人員在優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和改善模型復(fù)雜度方面做了大量的工作,意在用包含較少參數(shù)的簡(jiǎn)單模型完成較為復(fù)雜的任務(wù)[24-25]。復(fù)雜度與輸入數(shù)據(jù)大小沒有關(guān)系。本文方法與近年來(lái)的一些人群計(jì)數(shù)方法在模型參數(shù)數(shù)量大小比較如表5所示。由此可見,本文方法提出的網(wǎng)絡(luò)模型含有較少的參數(shù),是一種結(jié)構(gòu)簡(jiǎn)單且性能良好的網(wǎng)絡(luò)模型。
表5 不同方法的模型參數(shù)比較Table 5 Comparative results on model parameter size with different methods
為了解決人群計(jì)數(shù)中存在的人群互遮擋、空間尺度多變和復(fù)雜深度網(wǎng)絡(luò)難以訓(xùn)練的問題,提出了一種基于多尺度融合的卷積神經(jīng)網(wǎng)絡(luò)人群計(jì)數(shù)方法。網(wǎng)絡(luò)結(jié)構(gòu)由特征提取和特征融合兩部分構(gòu)成。特征提取部分能夠有效提取圖像中不同空間尺度的人群特征;特征融合部分以合作的方式對(duì)提取到的特征進(jìn)行融合,進(jìn)而建立輸入圖像與密度圖的映射關(guān)系。同時(shí),采用相對(duì)更少的網(wǎng)絡(luò)層數(shù)和卷積核個(gè)數(shù),利用反卷積來(lái)提高預(yù)測(cè)密度圖像分辨率。最后,實(shí)驗(yàn)驗(yàn)證了本文方法的有效性,在ShanghaiTech和UCF_CC_50數(shù)據(jù)集上與近年來(lái)的多種流行的人群計(jì)數(shù)方法相比。結(jié)果表明本文方法易于訓(xùn)練,具有良好的準(zhǔn)確性和魯棒性。
在后續(xù)工作中,將繼續(xù)優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),并在圖像透視和損失函數(shù)等方面開展深入研究。