翁佳鑫, 仝明磊
(上海電力大學 電子與信息工程學院, 上海 200090)
人群密度作為人群的基本屬性之一,反映了人群在空間中的擁擠程度。人群越擁擠,發(fā)生人員傷亡事故的可能性就越大,從而導致更大的人員傷亡和財產(chǎn)損失。對人群密度的實時監(jiān)控可以及時發(fā)現(xiàn)異常狀況,通知有關部門采取預防措施,以防止事故的發(fā)生。人群密度分布圖可以直接反映人群密度的空間分布,連續(xù)的密度分布變化反映了人群行為的動態(tài)變化。聚集、奔跑、逃逸等異常行為經(jīng)常導致人群的混亂和恐慌,增加事故的發(fā)生率,因此加強對異常行為的檢測和報警,是降低事故風險的有效手段之一。
早期的人群密度估計相關研究大多是基于檢測的方法,主要分為局部檢測和整體檢測[1]。其中,整體檢測方式在對低密度人群的檢測中表現(xiàn)非常出色,但在高密度條件下存在模糊阻擋等問題,檢測性能下降。因此,研究人員通過使用基于特殊部位的檢測技術[2]來解決這一問題,對特定的身體部位(包括肩膀和頭部)使用增強分類器來估計該區(qū)域的人數(shù)。但該方法計算過程復雜,還需要訓練一個能對圖像全局掃描的多尺度檢測器。另外,研究人員通過已知的圖像輸入和輸出進行回歸計數(shù)以獲得更具魯棒性和準確性的結(jié)果?;貧w計數(shù)由低級特征提取和回歸建模兩部分組成[3]。但是,這些技術著重于場景的整體屬性。方向梯度直方圖[4](Histogram of Oriented Gradient,HOG)是針對圖像局部特征和紋理的檢測技術,可進一步提高分類、檢測和人群計數(shù)的準確性。完成局部和全局特征的提取后,可以采用線性回歸、高斯回歸、嶺回歸[5]和神經(jīng)網(wǎng)絡等方法來學習實際人群數(shù)與低層特征之間的映射。
近年來,深度學習在圖像處理、模式識別及其他計算機視覺任務中獲得了廣泛的應用。使用深度學習的方法進行人群密度估計解決了規(guī)模、準確性、場景復雜性等問題,在視頻監(jiān)控中的應用日益成熟,能在突發(fā)情況時提供有效決策,保障人民群眾的安全。文獻[6]提出了一種具有多目標任務的可切換訓練方法。文獻[7]提出了一種多列卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)人群計數(shù)技術,將幾何自適應內(nèi)核用于密度估計。每一列CNN中使用的卷積核大小不同,用于處理和計算不同范圍內(nèi)的人頭數(shù)量,但最后的密度圖聚合可能會降低預測密度圖的質(zhì)量。文獻[8]首先通過一個網(wǎng)絡將圖像分為低、中、高密度3類,然后根據(jù)分類結(jié)果分別將圖像傳送到相應的3個CNN進行密度估計。但該方法沒有聯(lián)系淺層網(wǎng)絡和深層網(wǎng)絡,且引入的分類器增加了網(wǎng)絡的復雜度。
針對上述問題,本文提出了一種以Unet++為基礎的CNN,用并行連接的方式將淺層網(wǎng)絡提取的細節(jié)信息和深層網(wǎng)絡提取的高階語義信息進行多尺度融合,以消除兩者之間過大的語義鴻溝,并在網(wǎng)絡前端引入膨脹卷積增大感受野,從而提高網(wǎng)絡性能。
通過CNN進行人群計數(shù)的方法通常分為兩種:一是端到端的方式,即輸入圖像輸出總?cè)藬?shù);二是輸出預測的人群密度圖,通過求和的方式得到總?cè)藬?shù)。本文采用第2種方法,其優(yōu)點是利用密度圖提取頭部信息,預測效率更高,且有助于適應人頭尺度的多樣性。
如果一個標注點的位置為xi,則該點的沖擊函數(shù)可以表示為δ(x-xi)。因此,具有N個人頭的標簽可以表示為
(1)
但式(1)生成的密度圖很稀疏,在網(wǎng)絡計算損失時整體輸出趨近于零,且不利于人群密度較大時的人數(shù)統(tǒng)計。因此,本文使用高斯函數(shù)對式(1)進行卷積,將標記為人頭的位置變成該區(qū)域的密度函數(shù),這樣在一定程度上解決了圖片的稀疏問題,又不改變圖片中人數(shù)的計數(shù)方式。在真實場景下,特別是人群密度較大時,每個xi的位置并不是獨立的。由于圖片存在著透視失真現(xiàn)象,導致像素與周邊樣本在不同場景區(qū)域尺度下是不一致的,因此為了精確估計群體密度函數(shù),需要考慮透視變換。
(2)
原始圖像與基于幾何自適應內(nèi)核的方法生成的真值密度圖如圖1所示。將真值密度圖的像素值求和,就可得到標記的總?cè)藬?shù)。
圖1 原始圖片和基于幾何自適應內(nèi)核的真值密度圖
本文提出的網(wǎng)絡模型如圖2所示,此網(wǎng)絡的特征提取模塊(Conv1-1,Conv2-1,Conv3-1,Conv4-1)為VGG-16的前10層。
不同尺度的特征包含不同的信息,并且所有特征之間高度互補。例如,較深層的網(wǎng)絡可以提取出高級語義信息,而在淺層網(wǎng)絡中可以獲得更多的低層細節(jié)信息。相關研究表明[9-10],這些互補特征可以相互完善。但使用加權平均和串聯(lián)等簡單的方法進行直接融合,無法很好地捕獲這些互補信息,因此本文采用并行連接的方式進行重復的多尺度融合,以減小特征之間的語義鴻溝。
圖2 網(wǎng)絡模型示意
本文選擇在Conv3-1和Conv4-1模塊中引入膨脹卷積,在增大感受野的同時減少信息丟失。疊加卷積的膨脹率不能有大于1的公約數(shù),否則會出現(xiàn)網(wǎng)格效應[11],因此需要將膨脹率設計為1,2,5的鋸齒狀。日常生活中的人群圖像存在不同程度的透視失真,在局部區(qū)域的人通常具有相似的比例,與之對應在密度圖上頭部的半徑相對均勻,但靠近攝像頭的區(qū)域和遠離攝像頭的區(qū)域內(nèi)人頭半徑差距較大。因此,將膨脹率設計成鋸齒狀,可以較好地實現(xiàn)同時捕獲,即膨脹率小的卷積網(wǎng)絡捕獲靠近攝像頭區(qū)域的信息,膨脹率大的網(wǎng)絡捕獲遠離攝像頭區(qū)域的信息。卷積核為3×3,不同膨脹率的膨脹卷積如圖3所示。圖3(a)對應膨脹率為1的膨脹卷積,與普通的卷積操作相同,感受野為3。圖3(b)是膨脹率為2的膨脹卷積,只有灰色的點和3×3的核發(fā)生卷積操作,則感受野為(3-1)+(2×2+1)=7。圖3(c)是膨脹率為5的膨脹卷積,疊加在膨脹率1和2的膨脹卷積的后面,能達到(7-1)+(2×5+1)=17的感受野。對比傳統(tǒng)的卷積操作,3層3×3的卷積疊加起來,步長為1的情況,只能達到(核-1)×層數(shù)+1=7的感受野,與層數(shù)成線性關系,而膨脹卷積的感受野隨著卷積核的增大呈指數(shù)級增長。
圖3 不同膨脹率的膨脹卷積
實驗設備為配置TITAN XPascal的Ubuntu16.04系統(tǒng),16 G內(nèi)存。深度學習網(wǎng)絡框架為Keras,后端使用的是Tensorflow,選擇Adam優(yōu)化器有助于網(wǎng)絡更好地收斂,具體參數(shù)如表1所示。
表1 訓練網(wǎng)絡具體參數(shù)
其中,每個最大值池化核為2×2,每個卷積核為3×3,選擇修正線性單元(Rectified Linear Units,ReLU)作為每個卷積后的激活函數(shù)。
選用平均絕對誤差(Mean Absolute Error,MAE)和均方誤差(Mean Square Error,MSE)作為評價指標。MAE可以反映算法的準確性,MSE則反映算法的魯棒性,其定義分別為
(3)
(4)
式中:M——測試集圖片總數(shù)量;
Q(i)——測試集的預測人數(shù);
P(i)——測試集標記的真實人數(shù)。
利用歐氏距離對預測密度圖和真值密度圖進行比較,損失函數(shù)定義為
(5)
式中:Le——人群密度估計任務的損失;
S——一個訓練批次中圖像的數(shù)目;
G(Xi,θ)——第i張訓練樣本Xi的估測密度值,參數(shù)為θ;
本文在公開可用數(shù)據(jù)集Shanghai Tech和UCF_CC_50上進行實驗。數(shù)據(jù)集參數(shù)如表2所示。
表2 數(shù)據(jù)集參數(shù)
3.5.1 Shanghai Tech數(shù)據(jù)集
Shanghai Tech數(shù)據(jù)集共有1 198張標記圖片,分為part A和part B兩部分。part B部分的圖片相較于part A部分的圖片人群分布更為稀疏。本文選用300張part A部分的圖片用于訓練,182張用于測試;400張part B部分的圖片用于訓練,316張用于測試。
不同算法在Shanghai Tech數(shù)據(jù)集上的實驗結(jié)果如表3所示。
表3 不同算法在Shanghai Tech數(shù)據(jù)集上的表現(xiàn)
從表3可以看出,與文獻[13]相比,本文提出的網(wǎng)絡模型在Part A部分MAE減小了15.3,MSE減小了17.9;在Part B部分MAE和MSE分別減小了4.8和4.7。這說明本文加入膨脹卷積,用并聯(lián)的方式進行多尺度融合提高了網(wǎng)絡的有效性。
3.5.2 UCF_CC_50數(shù)據(jù)集
UCF_CC_50數(shù)據(jù)集共有50張圖片。該數(shù)據(jù)集雖然圖片數(shù)量最少,但人群最為密集,且每張圖片的人數(shù)變化大。本文選擇與文獻[3]相同的五折交叉方法進行實驗,不同算法在UCF_CC_50數(shù)據(jù)集上的實驗結(jié)果如表4所示。從表4可以看出,與其他算法對比,本文方法的MAE最小,表明本文提出的網(wǎng)絡模型在人群密度較大的情況下也能得出較好的結(jié)果。
表4 不同實驗在UCF_CC_50數(shù)據(jù)集上的實驗結(jié)果
本文提出了一種以Unet為基礎的卷積神經(jīng)網(wǎng)絡用于人群密度估計,用并行連接的方式結(jié)合由淺層網(wǎng)絡提取的細節(jié)信息和由深層網(wǎng)絡提取的高階語義信息,然后進行多次多尺度融合,來消除兩者之間過大的語義鴻溝。通過實驗對比,本文提出的方法在公共數(shù)據(jù)集Shanghai Tech和UCF_CC_50數(shù)據(jù)集上均取得了較好的結(jié)果,驗證了算法的可行性和有效性。