翁佳鑫,仝明磊
(上海電力大學 電子與信息工程學院,上海 200090)
近年來,人群計數(shù)的典型解決方案是使用基于卷積神經網絡(CNN)的密度回歸估計人群密度,通過訓練CNN 來學習人群圖像和密度圖之間的映射,再通過密度圖求和獲得總人數(shù)。MCNN[1]是將多尺度融合應用于人群計數(shù)的開拓性工作,使用三個不同大小的卷積核模塊解決人場場景中規(guī)模變化問題。Switch-CNN[2]在圖像塊上訓練幾個獨立的CNN 人群密度回歸器,這些回歸器與MCNN 具有相同的結構。此外,還對回歸分類器進行了交替分類訓練,以選擇最佳分類器進行密度估計。雖然以上兩個網絡使用多列模塊但幾乎使用相同的結構,不可避免地導致大量信息冗余;且在將圖像發(fā)送到網絡之前,多列網絡始終需要密度分類器,使網絡結構變的更復雜。Maesden 等人[3]提出了一種用于單圖像人群計數(shù)的多尺度卷積神經網絡(MSCNN),通過膨脹卷積和Inception 結構在單列架構中實現(xiàn)更高的人群計數(shù)性能。SaCNN[4]是一種具有規(guī)模自適應的CNN,它以具有固定小接受域的FCN 為骨架,并將從多層提取的特征圖改變?yōu)橄嗤笮?然后將它們融合以生成最終密度圖。由于高分辨率密度圖包含更精細的細節(jié),所以生成高分辨率和高質量的密度圖對人群密度估計很有幫助。ic-CNN[5]提出了一個兩分支網絡,其中一個生成低分辨率密度圖,另一個將低分辨率圖和前一層提取的特征圖融合以生成更高分辨率的密度圖。但該模型生成低分辨率密度圖時欠缺考慮淺層網絡的細節(jié)信息,人群較為密集時難以提取到小尺度人頭的特征。
針對上述問題,本文提出的模型首先用并行連接的方式將淺層網絡提取的細節(jié)信息和深層網絡提取的高分辨率表征進行多尺度融合生成高質量密度圖;其次提出加固模塊以考慮密度圖的局部相關性且加快模型收斂速度;最后提出一種新的損失函數(shù),在人群計數(shù)常用的均方誤差(MSE)損失函數(shù)的基礎上聯(lián)合二進制交叉熵(BCE)損失。
為解決人群計數(shù)算法在擁擠環(huán)境下精度下降的問題,提出了新穎的編碼器/解碼器網絡Triangle Net。
圖1 Triangle Net 網絡結構
如圖1 所示,本文提出的網絡以編碼解碼器結構為基礎。網絡中每個卷積核大小為 3×3,每個最大值池化核的大小為 2×2。
編碼器模塊使用VGG16 的前10 層作為網絡的特征提取器,在特征提取的過程中增加池化層對圖像進行下采樣操作,能夠有效地降低網絡參數(shù)量,擴大感受野,同時生成4 種不同分辨率的特征圖。
解碼器分為密度圖估計模塊和加固模塊?,F(xiàn)有的大多數(shù)方法通過最大池化生成低分辨率特征圖,再從低分辨率特征圖通過上采樣恢復至高分辨率,實現(xiàn)了多尺度特征提取的一個過程。這種方法并沒有考慮到淺層網絡的細節(jié)信息,當人群較為密集時,很容易提取不到小尺度人頭的特征。不同尺度的特征圖包含不同信息并且高度互補。例如,較深層特征可以提取出高級語義信息,而在淺層特征中可以獲得更多細節(jié)信息。有一些這方面的研究[6-7]表明,這些互補特征可以相互完善。但若使用簡單方法如加權平均和串聯(lián)來直接融合,則不能很好地捕獲這些互補信息,所以本文使用并行連接深層網絡和淺層網絡的方式,多尺度融合不同分辨率的特征圖,使得從深層網絡到淺層網絡的過程中都從其他并行表示中反復接收高階語義信息,有效解決像素定位問題,提高生成密度圖的質量。
加固模塊通過上采樣恢復特征圖尺寸,每經過一次上采樣恢復的特征圖就與密度圖估計模塊的特征圖融合,這樣既能影響密度圖估計模塊,還能幫助網絡更快的收斂。最后融合密度圖估計模塊和加固模塊,通過ReLU激活函數(shù)將其送到最后的conv1×1×1 層,生成高精度人群密度圖。
本節(jié)使用由均方誤差(MSE)和二進制交叉熵(BCE)損失組成的聯(lián)合損失。現(xiàn)有人群計數(shù)算法大多使用SSIM損失來確保不忽略密度圖的局部相關性,但是在本文實驗中,發(fā)現(xiàn)加固模塊不僅能加速收斂并且可以用來影響密度圖估計模塊。這樣,不僅可以幫助網絡更快地收斂,還可以幫助檢查密度圖的局部相關性。
MSE 損失:Hang 等人[8]在他們的圖像恢復研究中,發(fā)現(xiàn)了一個有趣的現(xiàn)象,在獨立且均勻分布的高斯噪聲的情況下,L2 提供了最大似然估計。通常使用基于像素獨立性假設的歐幾里得距離,會忽略掉密度圖的局部相關性。但由于本文中的加固模塊能有效的解決這個問題,所以選擇使用MSE 損失函數(shù),如式(1)所示
其中y 是預測值,t 是真實值,N 是像素總數(shù)。
BCE 損失:本文選用分類交叉熵損失函數(shù)來訓練加固模塊。
其中y 是預測值,t 是真實值,N 是像素總數(shù)。
本文選用回歸問題常用的平均絕對誤差(MAE)和均方誤差(MSE)作為評價指標,MAE 可以反應算法的準確性,而MSE 則反應算法的魯棒性,定義如(3)(4)兩式所示。
其中N 為測試集圖片的總數(shù)量,P(i)為測試集標記的真實人數(shù),Q(i)為測試集的預測人數(shù)。
本文將在兩個較為密集的人群計數(shù)數(shù)據集上進行,這兩個數(shù)據集是ShanghaiTech 和UCF_CC_50。
深度度學習網絡框架為Tensorflow+ Keras,模型訓練參數(shù)如表3 所示。在訓練網絡時,出現(xiàn)了梯度逐漸消失的問題,嘗試使用批理規(guī)范化(BN)和實例規(guī)范化(IN)來緩解此問題,但由于小批量統(tǒng)計信息不穩(wěn)定,使用BN 時會得到更差的結果。因此選擇在每個卷積層后加入IN層,如式(5)所示
其中w 和b 是卷積層的權重和偏差項,γ 和β 是實例規(guī)范化層的權重和偏差項,μ 和σ 是輸入的均值和方差。
實驗在ShanghaiTech 和UCF_CC_50 兩個通用人群密度估計數(shù)據集上進行,這兩個數(shù)據集的參數(shù)如表1 所示。本文只使用一種數(shù)據增強方式是水平翻轉。
表1 數(shù)據集參數(shù)
Shanghai Tech 數(shù)據集是最大的人群密度公共數(shù)據集,可分為A,B 兩部分,A 部分的人群密度遠大于B 部分。其特點是場景變化多,且人群密度變化也大,具有較高的復雜性和挑戰(zhàn)性。
表2 不同實驗在Shanghai Tech 數(shù)據集上的對比
表3 不同實驗在UCF_CC_50 數(shù)據集上的對比
表2 將本文提出的算法與其他人群計數(shù)算法在Shanghai Tech 數(shù)據集進行了比較,從表中可知本文在PartA 部分取得最小的MAE 和MSE,而在PartB 部分的MAE 和MSE 僅比ic-CNN 大一些。從實驗結果表明,本文提出的算法在較為稀疏的人群上能取得不錯的效果,并且在較為密集的人群上取得的效果更加。
UCF_CC_50 數(shù)據集總共50 張圖片,這個數(shù)據集雖然圖片數(shù)量最少,但人群最為密集,且每張圖片的人數(shù)變化大,是最有挑戰(zhàn)性的數(shù)據集。本文選擇與文獻[1]一樣的五折交叉方法進行實驗,各個不同算法在UCF_CC_50 數(shù)據集上的結果如表3 所示。本文提出的算法在MAE 和MSE 上均取得最小值,充分證明本文提出的算法在較為密集的人群上能取得不錯的準確性和魯棒性。
為了提高人群密度算法在擁擠人群的精度,本文提出了一種新穎的編碼解碼器網絡Triangle Net,用并行連接深層網絡和淺層網絡的方式,多尺度融合不同分辨率的特征圖,使得從深層網絡到淺層網絡的過程中都從其他并行表示中反復接收高階語義信息,提高生成密度圖的質量,并且加入的加固模塊既能加快網絡收斂,還能有效解決密度圖的局部相關性問題。在兩個具有擁擠嘈雜特征的數(shù)據集上進行大量實驗表明,本文的方法在較為密集場景下人群計數(shù)有著不錯的準確性和魯棒性。
本文進行實驗的兩個數(shù)據集都較小,未來考慮自主生成不同密度的虛擬人群圖像作為訓練集來擴充數(shù)據集以提升人群計數(shù)的準確度。