陳江川,吳云韜*,孔 權
1.武漢工程大學計算機科學與工程學院,湖北 武漢 430205;
2.智能機器人湖北省重點實驗室(武漢工程大學),湖北 武漢 430205;
3.武漢工程大學藝術設計學院,湖北 武漢 430205
人群計數(shù)是近年來計算機視覺領域中的一個熱門研究領域,其目的是通過計算機對輸入圖像的處理來估計圖像中的人數(shù)。隨著城市化的進程以及世界人口的不斷增長,在火車站、體育場、音樂會和游行等許多場景中,可能會出現(xiàn)大量人群快速聚集的情況。而人群計數(shù)能夠針對這些特定場景下的人群目標數(shù)量進行估計,做到對重大事件的事先警告以及在事后復盤中發(fā)揮積極作用[1]。此外,人群計數(shù)方法也能夠輔助實現(xiàn)實時估計場景人數(shù),進而對各個場景中人數(shù)進行有效的管控,減少人群的聚集,這對當下新冠肺炎疫情的控制起著不可或缺的作用。
在早期的人群計數(shù)中,大多使用基于檢測的方法,這些方法通常通過一個滑動窗口在圖像上對人或頭部進行檢測。然而其準確性和模型性能卻極容易受到目標尺度大小不一、目標間重疊、背景干擾、圖像分辨率低等因素的影響。為了改善這些問題,Chen等[2]提出了基于回歸的方法。該方法直接學習從圖像到計數(shù)的映射,雖然從整體上來說提升了計數(shù)的性能,然而回歸的計數(shù)方法依舊忽視了圖像中的空間信息,僅僅只得到一個最終的計數(shù)結果,因此缺乏可靠性和解釋性。
近年來,卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)發(fā)展迅速,相較于傳統(tǒng)技術來說,使用深度學習技術的算法往往能夠獲得更好的性能,并且具有更強的泛化能力。因此,越來越多的基于CNN的方法被應用于人群計數(shù)領域[3-5]。不同于傳統(tǒng)方法需要手工制作特征,基于CNN的方法[6]對于輸入的人群圖像自動的提取特征,并在末端通過一個卷積核大小為1×1的輸出層生成包含人群數(shù)量信息和位置信息的密度圖。
針對人群計數(shù)中的尺度變化問題,Zhang等[7]提出了一種多列卷積神經(jīng)網(wǎng)絡(multi-column CNN,MCNN),每一列使用不同大小的卷積核,這種結構在一定程度上緩解了計數(shù)目標尺寸大小不一致的問題。Shi等[8]提出了一種尺度聚合網(wǎng)絡(scale aggregation network,SANet),不 同 于MCNN,該網(wǎng)絡采用分層的方式提取多尺度特征,以進行后續(xù)處理。雖然多列卷積神經(jīng)網(wǎng)絡相較于傳統(tǒng)算法擁有了更好的性能和泛化能力,但由于其多列的特性導致網(wǎng)絡結構冗余,模型參數(shù)繁多、訓練困難,因此為了克服這些問題,越來越多新型的CNN結構被引入到人群計數(shù)領域。Li等[9]提出了一種空洞卷積神經(jīng)網(wǎng)絡模型(network for congested scene recognition,CSRNet),采用空洞卷積神經(jīng)網(wǎng)絡,在保持分辨率的同時擴大感受野,保留了更多的圖像細節(jié)信息。Liu等[10]提出了一種融合注意力機制的可形變卷積網(wǎng)絡(attentioninjective deformable convolutional network for crowd understanding,ADCrowdNet),該網(wǎng)絡的注意力生成器(attention map generator,AMG)可以過濾掉復雜背景等無關信息,使得后續(xù)模型只關注人群區(qū)域。
本文提出的方法從增強特征的尺度適應性和降低背景噪聲干擾兩方面進行了優(yōu)化,從而達到提高人群計數(shù)性能的目的,并進行了模型消融性實驗,驗證了本文方法的有效性。
為了實現(xiàn)在靜態(tài)圖像中進行人群計數(shù),本文結合卷積注意力模塊(convolutional block attention module,CBAM)[11]與Res2Net模塊[12],提出了一種基于CBAM-Res2Net的人群計數(shù)算法,網(wǎng)絡模型的結構如圖1所示。該網(wǎng)絡可以分為前端網(wǎng)絡、CBAM-Res2Net模塊以及后端網(wǎng)絡3個部分,整個網(wǎng)絡的輸入為一幅人群圖像,輸出為對應的人群密度圖。
圖1 整體網(wǎng)絡架構Fig.1 Overall network architecture
該網(wǎng)絡前端部分為視覺幾何組網(wǎng)絡(visual geometry group networks,VGG)16[13]網(wǎng)絡的前10層,對輸入圖像進行初步的特征提取。為了解決背景噪聲干擾等問題引入了CBAM模塊,該模塊能夠?qū)斎氲奶卣鞣謩e在空間域和通道域上編碼注意力特征,讓模型更多的去關注人群區(qū)域。由于人群圖像廣泛存在拍攝角度差異大,目標尺度變化不均勻等問題,僅靠VGG在整個圖像上編碼相同的感受野難以得到完整的多尺度信息,因此引入了多尺度特征提取模塊Res2Net,它通過在一個殘差塊中構造分層殘差連接來實現(xiàn)。并在此基礎上串聯(lián)Res2Net模塊和CBAM模塊組合成CBAM-Res2Net模塊來提升模型的計數(shù)性能和泛化能力。后端網(wǎng)絡設計了一個擴張模塊以提取更深層的特征并進行特征融合回歸。
在計算機視覺領域,注意力機制可以讓網(wǎng)絡像人一樣有選擇地關注圖像信息的突出部分。因此,為了防止背景噪聲對特征圖的干擾,在網(wǎng)絡中引入了卷積注意力模塊CBAM,如圖2所示。CBAM模塊不僅關注通道域信息,同時也關注空間域信息,因此相較于單通道域注意力網(wǎng)絡(squeeze-and-excitation networks,SENet)[14],
圖2 卷積注意力模塊Fig.2 Convolutional block attention module
CBAM模塊更適合需要關注人群空間分布信息的人群計數(shù)任務。通道注意力模塊通過學習特征間的通道關系生成通道注意圖,空間注意力模塊通過學習特征間的空間關系生成空間注意力圖,根據(jù)通道和空間注意力圖對特征進行調(diào)整,以達到提高特征圖中人群區(qū)域權重的目的。
多尺度特征現(xiàn)已廣泛應用于計算機視覺任務中。然而,大多數(shù)現(xiàn)有方法以分層的方式表示多尺度特征。Gao等[12]提出了一種新的構建模塊,即Res2Net模塊,它通過卷積分組的方式以更細的粒度提取多尺度特征。輸入特征圖在通過1×1卷積后被均分為s組,原先通道數(shù)為n的卷積層也被均分為s組通道數(shù)為n/s的小卷積層,每一組特征圖都會輸入到與其對應的小卷積層,并將其輸出結果和下一組特征圖相加后輸入到下一個小卷積層。當所有的小卷積層都輸出結果后,將這些特征圖進行拼接并通過1×1卷積對多尺度信息進行融合。在這個過程中,分組后的輸入特征圖經(jīng)過所有路徑,并融合為輸出特征圖,由于組合效應,每經(jīng)過一個3×3的卷積層,其感受野都會增加。
圖3展示了殘差塊和Res2Net模塊之間的差異[12]。在通過1×1卷積之后,將輸入特征均勻地分割為s個特征子集,并用xi表示,其中i∈{1,2,…,s}。每個特征子集xi都具有相同的空間大小。除了x1以外每個xi都有與之相對應的3×3卷積,用Ki來表示,并將其輸出表示為yi。yi的定義公式如下:
在Res2Net模塊中,使用了一個新的控制參數(shù)“規(guī)?!?,用s來表示,更大的s能使模型擁有更大的感受野。圖3(b)中s設定為4,在模型中s設定為8。為了減少模型的參數(shù)量,省略了第1次分割后的卷積,這也是特征重用的一種形式,假設輸入輸出特征的通道數(shù)分別為Ic和Oc,對于殘差塊,其參數(shù) 量 為3×3×Ic×Oc,即9×Ic×Oc,對 于Res2Net模塊,其參數(shù)量為(s-1)×9×(Ic/s)(Oc/s)。顯然Res2Net模塊具有更少的參數(shù)量。
圖3 (a)殘差塊,(b)Res2Net模塊Fig.3(a)Bottleneck block,(b)Res2Net module
本文設計的CBAM-Res2Net模塊如圖4所示。在Res2Net模塊中集成CBAM模塊,能夠使CBAM模塊的優(yōu)勢更加突出,即在殘差單元內(nèi)部實現(xiàn)在空間域和通道域上對原始特征的重標定,完成特征調(diào)整。將CBAM模塊添加在Res2Net模塊的殘差連接之前,1×1卷積之后,這也是目前主流的網(wǎng)絡結構對于殘差塊和注意力模塊的組合構造 方 式,如SE-Res2Net、SE-ResNet以 及SEInception等。
圖4 CBAM-Res2Net模塊Fig.4 CBAM-Res2Net module
本文模型在訓練中使用歐氏距離來評估真實密度圖與預測密度圖之間的差異,因此將歐氏距離作為損失函數(shù)來調(diào)整預測密度圖的生成,具體公式如下:
式中,N是一次訓練圖片的總數(shù)量,Xi為第i張訓練圖片,D(Xi;θ)為第i張圖片的預測密度圖,其中i∈[1,N],θ為網(wǎng)絡模型參數(shù),為第i張訓練圖片的真實密度圖。
為了獲得真實密度圖,采用了與之前工作[9]相同的策略,即使用幾何自適應高斯核生成密度圖,作為預測學習的標簽,具體公式如下:
式中,x為圖像中的像素點,xi表示第i個人頭在圖片中的位置,G(x)為高斯核濾波器為每個人的頭部與其相鄰的k個人之間的平均距離,β參照文獻[9]設置為0.3。
實驗所使用的是NVIDIA-3060 12 GB顯卡,深度學習框架為PyTorch 1.11.0。在模型的訓練過程中,對于圖像尺寸大小不一致的數(shù)據(jù)集使用批量大小為1的隨機梯度下降(stochastic gradient descent,SGD)優(yōu)化器進行訓練,對于圖像尺寸固定的數(shù)據(jù)集使用批量大小為8的Adam優(yōu)化器進行模型優(yōu)化。由于人群數(shù)據(jù)集圖片有限,為了獲得更多的圖片用于訓練,進行了數(shù)據(jù)增強工作,即在不同的位置將圖像隨機裁剪為原始大小的1/4,并對裁剪后的圖片進行鏡像翻轉(zhuǎn)。
選取平均絕對誤差(mean absolute error,MAE)和均方根誤差(root mean square error,RMSE)作為評價指標,MAE通常用來評估人數(shù)估計的準確性,其值越小也就表明該算法的準確性越好,而RMSE通常用來量度算法的魯棒性,其值越小也就表明該算法的魯棒性越好。MAE和RMSE的定義公式如下:Ci和CGTi分別為第i張圖像中的預測人數(shù)和真實人數(shù)。
2.4.1 ShanghaiTech數(shù)據(jù)集ShanghaiTech數(shù)據(jù)集中共有1 198張圖片并根據(jù)人群密度等級分為A、B兩個部分。其中A部分包含482張人數(shù)從33到3 193人不等的圖像,平均人數(shù)為501人,訓練集和測試集分別包含了300和182張圖像。B部分中包含了716張人數(shù)范圍為9到578人的圖片,平均人數(shù)為124人,訓練集和測試集分別包含了400和316張圖像。數(shù)據(jù)集的總共標記人數(shù)達到了330 165人。該數(shù)據(jù)集的實驗結果如表1所示。
表1 基于ShanghaiTech數(shù)據(jù)集的實驗結果對比Tab.1 Comparison of experimental results on ShanghaiTech dataset
與現(xiàn)有算法相比,本文方法在B部分上的性能指標MAE與RMSE均取得了最優(yōu)的結果。而在A部分,本文方法在RMSE的表現(xiàn)上僅次于ASD,在MAE的表現(xiàn)上取得了最優(yōu)。
2.4.2 UCF_CC_50數(shù)據(jù)集UCF_CC_50數(shù)據(jù)集中共有50張圖片,其中場景包括火車站、大型游行、演唱會等大量人群聚集的場合。每張圖片包含的人數(shù)從94到4 543人不等,數(shù)據(jù)集的總共標記人數(shù)達到了63 974人,平均每張圖片標記的人數(shù)為1 280人。該數(shù)據(jù)集的實驗結果如表2所示。由表2可見,即使在這種人群密度變化大、人頭模糊、背景復雜的數(shù)據(jù)集上,本文方法的性能依然優(yōu)于其它算法。
表2 基于UCF_CC_50數(shù)據(jù)集的實驗結果對比Tab.2 Comparison of experimental results on UCF_CC_50 dataset
2.4.3 實驗結果可視化為了能夠直觀的展示本文方法的預測效果,列出了部分在不同數(shù)據(jù)集上生成的預測密度圖的可視化結果,真實密度圖和預測密度圖的計數(shù)結果均標注在圖片右下角,如圖5所示,其中第1行和第2行為ShanghaiTech數(shù)據(jù)集Part B中的測試圖像,第3行和第4行為ShanghaiTech數(shù)據(jù)集Part A中的測試圖像,第5行和第6行為UCF_CC_50數(shù)據(jù)集的測試圖像。由圖5結果可知,本文模型能夠有效的學習人群圖像和人群密度圖之間的映射關系。
圖5 可視化結果:(a)人群圖像,(b)真實密度圖,(c)預測密度圖Fig.5 Visual results:(a)crowd images,(b)ground-truth density maps,(c)estimation density maps
2.4.4 消融實驗為了驗證Res2Net模塊和CBAM模塊的有效性。在ShanghaiTech B數(shù)據(jù)集中進行了相關的消融實驗。其中Baseline為本文模型去掉CBAM-Res2Net模塊之后的網(wǎng)絡,結果如表3所示。
表3 基于ShanghaiTech Part B數(shù)據(jù)集的消融實驗結果Tab.3 Ablation experimental results on ShanghaiTech Part B dataset
從表3中可以看出在加入Res2Net模塊和CBAM注意力模塊后均可以使人群計數(shù)的MAE和RMSE下降,具有提升計數(shù)準確性的效果。在加入CBAM-Res2Net模塊之后,本文模型的計數(shù)效果得到了顯著的提升。
本文對CSRNet進行改進,在其后端網(wǎng)絡前加入一種融合注意機制的多尺度特征提取模塊CBAM-Res2Net,該模塊采用Res2Net提取多尺度特征進行融合,融合后的多尺度特征對尺度變化具有良好的魯棒性;采用CBAM提升特征圖中人群區(qū)域的權重,并抑制弱相關的背景特征。在ShanghaiTech和UCF_CC_50公共數(shù)據(jù)集上,本文模型均具有良好的準確性和魯棒性。但本文中的方法仍有不足之處,在經(jīng)過3次最大池化后,生成的密度圖的高度和寬度只有輸入圖片的1/8大小,這對最終的計數(shù)結果帶來了負面影響。在未來的工作中,將針對如何生成高分辨率高質(zhì)量的密度圖進行研究,進一步提高人群計數(shù)的精度。