張雙賀
(西南交通大學信息科學與技術(shù)學院,成都610000)
近年來,隨著中國小汽車保有量的持續(xù)增長,城市公路交通系統(tǒng)的壓力不斷加大,交通堵塞頻發(fā),其帶來的各種社會問題也日益突出。而在高速公路的情境中,交通堵塞通常意味著有意外事故發(fā)生,實時的車輛計數(shù)不僅有助于快速發(fā)現(xiàn)事故路段,還能夠幫助預測交通事故持續(xù)時間,為事故下誘導性和預測性交通信息的及時發(fā)布,以及事故影響的快速消除提供依據(jù)。
在如何準確地估計圖像中的車輛數(shù)量這個課題上,近年來眾多學者做出了許多研究,提出了許多對于車輛計數(shù)的方法和方案。一類方法基于目標檢測,這些方法通常試圖識別和定位圖像中的每個車輛,再把檢測到的對象數(shù)量相加得到結(jié)果。最近,已經(jīng)出現(xiàn)了許多優(yōu)秀的目標檢測方法,例如Faster R-CNN[1]、YOLO[2]和SSD[3],它們在稀疏場景中可以實現(xiàn)驚人的檢測精度。但是,在極度密集的車輛擁堵場景,或遇到遮擋和背景雜亂的情況時,它們的結(jié)果不令人滿意。
基于車輛計數(shù)也是目標計數(shù)的思想,近年來眾多研究者們開始使用借鑒以深度學習為驅(qū)動的密度估計方法來實現(xiàn)圖像中的車輛統(tǒng)計,并取得了不錯的結(jié)果。它們利用CNN強大的特征表示生成高質(zhì)量的估計密度圖,從密度圖中獲取最終的計數(shù)結(jié)果。早期的啟發(fā)式模型通常利用基本的CNN來預測計數(shù)對象的密度[4-6],這一點很有意義,與傳統(tǒng)的手工制作功能相比有所改進。最近,基于完全卷積網(wǎng)絡(FCN)的模型越來越有效,該模型已成為密度估計和對象計數(shù)的主流網(wǎng)絡體系結(jié)構(gòu)。Cross-scene[6]中的網(wǎng)絡輸出一維特征向量并擬合回歸器以執(zhí)行最終密度估計,這無法執(zhí)行逐像素預測并會丟失空間信息,估計的密度圖不能具有與輸入圖像相同的尺寸。Onoro-Rubio等人[7]使用了兩個網(wǎng)絡Counting CNN(CCNN)和Hydra CNN。CCNN主要依靠回歸函數(shù)將圖像塊的外觀投影到其相應的對象密度圖上,Hydra CNN使用對應于不同比例尺的圖像補丁金字塔來學習用于最終密度圖估計的多尺度非線性回歸模型。但是其輸出密度圖仍然比輸入圖像小得多,這在遇到大規(guī)模變化場景時會限制準確性。Arteta等人[8]聯(lián)合學習密度圖和前景mask進行對象計數(shù),但并不能解決較大的視角和對象比例變化問題。CSRNet[9]采用了膨脹卷積層來擴展接收域,同時保持作為后端網(wǎng)絡的分辨率。通過利用這種創(chuàng)新的結(jié)構(gòu),CSRNet顯著提高了輸出質(zhì)量。但這些密度估計研究偏向于以人群計數(shù)作為目標,使用人群計數(shù)數(shù)據(jù)集進行訓練,僅把車輛數(shù)據(jù)集作為驗證模型泛用性的佐證,很少有研究專門以車輛計數(shù)為目標。本文對經(jīng)典的密度估計算法進行研究并進行優(yōu)化,最終基于VGGNet[10]結(jié)合注意力機制和金字塔結(jié)構(gòu)設計了名為AAMNet的神經(jīng)網(wǎng)絡模型,并在車輛數(shù)據(jù)集High_Vehicles上進行實驗,取得了很好的計數(shù)結(jié)果。
VGGNet[10]的特點是結(jié)構(gòu)簡潔,由5層卷積層、3層全連接層和Softmax輸出層構(gòu)成,層與層之間使用maxpooling(最大化池)分開,使用ReLU函數(shù)作為所有隱層的激活單元。VGGNet使用多個較小卷積核(3×3)的卷積層代替一個卷積核較大的卷積層,這種做法不僅可以減少參數(shù),還增加了網(wǎng)絡的深度和非線性,有利于決策函數(shù)辨別。
VGG網(wǎng)絡架構(gòu)由Simonyan和Zisserman在他們的論文中提出,圖1為文中介紹的A、A-LRN、B、C、D、E這6種VGGNet結(jié)構(gòu)。這6種網(wǎng)絡結(jié)構(gòu)相似,其中區(qū)別在于每個卷積層的子層數(shù)量不同,從A至E依次增加,總的網(wǎng)絡深度從11層到19層,而ReLU激活函數(shù)不顯示在表格中。其中,D和E這兩種結(jié)構(gòu)應用較廣,分別記為VGG16和VGG19。
圖1 VGGNet的網(wǎng)絡結(jié)構(gòu)
神經(jīng)網(wǎng)絡進行特征提取的時候,會將所有的輸入進行處理,而我們通常希望神經(jīng)網(wǎng)絡能夠“注意”到那些我們真正關(guān)心的特征,這就是為什么需要加入注意力機制。注意力有兩種,一種是軟注意力(Soft Attention),另一種則是強注意力(Hard Attention)。在本文網(wǎng)絡中使用了軟注意力中的通道域(channel domain)注意力和空間域(spatial domain)注意力機制來強調(diào)或抑制網(wǎng)絡提取到的特征。
在神經(jīng)網(wǎng)絡中,每個通道的特征表示該圖像在不同卷積核上的分量,所以我們可以給每個通道上的特征都增加一個權(quán)重,來代表該通道與關(guān)鍵特征的相關(guān)度,這個權(quán)重越大,則表示相關(guān)度越高,神經(jīng)網(wǎng)絡越需要去“注意”,這就是通道域注意力。Sanghyun Woo等人[11]提出的CBAM模塊中介紹了包含有全局平均池化和最大池化層的通道注意力模塊,而By Jie Hu等人提出的SElayer實際上也是一種通道注意力模塊,通過Squeeze和Excitation操作得到不同通道特征的重要程度。與之類似的,空間域注意力的目標是得到特征重要程度在空間上的分布。為了計算空間注意力,沿著通道軸應用平均池化和最大池化操作,然后將它們連接起來應用卷積層生成空間注意力圖,該空間注意力圖表明了需要增強或抑制的特征位置。圖2和圖3分別展示了CBAM[11]中通道注意力模塊和空間注意力模塊的實現(xiàn)方式。
圖2 CBAM中的通道注意力模塊
圖3 CBAM中的空間注意力模塊
空洞空間金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)[12]是由空間金字塔池化(Spatial Pyramid Pooling,SPP)[13]結(jié)合空洞卷積(Atrous/Dilated Convolution)而來。SPP通過將候選區(qū)的特征圖劃分為多個不同尺寸的網(wǎng)格,然后對每個網(wǎng)格內(nèi)做最大池化,使后面的全連接層得到固定的輸入。這樣網(wǎng)絡就不需要固定圖像尺寸輸入,避免了扭曲原始特征??斩淳矸e的優(yōu)點是不做池化損失信息的情況下,加大了卷積核感受野。而ASPP將其中的最大池化操作替換為不同膨脹速率的空洞卷積,可以很好地捕獲多尺度特征。
圖4展示了本文提出的車輛計數(shù)網(wǎng)絡模型的架構(gòu)。本文選擇VGGNet作為網(wǎng)絡的backbone,但僅利用VGG16中的特征提取部分(前13層)作為編碼器,去除了后續(xù)的分類器輸出層。如圖所示,本文采用來自conv2_2、conv3_3、conv4_3和conv5_3的特征圖作為解碼器部分的輸入,這些不同級別的輸入有助于表示多尺度特征和保留圖像空間信息。
圖4 AAMNet的網(wǎng)絡架構(gòu)
注意力模塊:首先本文將來自conv3_3、conv4_3和conv5_3的輸入分別接入SE模塊,用以獲取不同層次的通道域注意力,修正后的特征圖分別命名為f_se3~f_se5。接著,將來自conv2_2的輸入以及f_se3分別接入SA模塊,生成空間注意力修正特征圖f_sa2和f_sa3。這樣做是因為低層次的特征中往往含有更明顯的空間信息,而高層次特征經(jīng)過空間注意力調(diào)整后,效果反而會有所降低。
空洞空間金字塔池化:本文將f_se5作為輸入進行空洞空間金字塔池化,用以捕獲多尺度特征。如圖5所示,其中空洞卷積的空洞率分別為1、12、24、36??斩淳矸e減輕了編碼器中整個卷積層中與對象邊界有關(guān)的信息丟失,并擴大了卷積核感受視野,以包含更大的上下文,而不會損失圖像分辨率。輸出的特征圖記為f_aspp。
圖5 AAMNet的ASPP模塊
多路特征融合解碼器:解碼器部分由BackEnd1~BackEnd3構(gòu)成,如圖4所示。首先,使用雙線性插值法將ASSP的輸出特征圖f_aspp進行2倍上采樣,然后與特征圖f_se4進行級聯(lián)。接下來,級聯(lián)的特征圖通過1×1×256和3×3×256卷積層生成特征圖f_bn1。再次,f_bn1進行2倍上采樣與f_sa3進行級聯(lián),并通過1×1×128和3×3×128卷積層將來自ASSP的4倍上采樣進行特征映射,得到特征圖f_bn2。然后,對f_bn2進行2倍上采樣與f_sa2串聯(lián),并通過1×1×128和3×3×128卷積層得到特征圖f_bn3。最終,對f_bn3進行conv2d(128,1,1)卷積并取絕對值得到密度分布圖DM。
Trancos數(shù)據(jù)集[14]是當下廣泛應用于車輛計數(shù)實驗的公開數(shù)據(jù)集,但該數(shù)據(jù)集圖片質(zhì)量較差且圖片數(shù)量較少,所以本文選擇建立一個新的車輛計數(shù)數(shù)據(jù)集High_Vehicles進行實驗。該數(shù)據(jù)集圖像來自于高速公路沿線及其收費站的監(jiān)控攝像頭,表1中羅列出了數(shù)據(jù)集的具體信息。
表1 High_Vehicles數(shù)據(jù)集
計數(shù)估計方法通過兩種廣泛使用的指標進行評估:平均絕對誤差(MAE)和均方誤差(MSE),其定義如下:
其中K是測試圖像的數(shù)量,Nk和Ck分別是第k張圖像的地面計數(shù)和估計計數(shù)。
使用AAMNet訓練時,優(yōu)化器選擇Adam,batch_size大小為1,設置迭代150次。本文使用隨機裁剪和水平翻轉(zhuǎn)來擴充訓練數(shù)據(jù),裁剪尺寸為512×512。本文采用Bayesian+Loss方法[15]來生成網(wǎng)絡模型所學習的目標,而不是利用高斯核將其轉(zhuǎn)換為“地面真相”密度圖的方法。因為在可用的車輛計數(shù)數(shù)據(jù)集中的點注釋可以被認為是密度圖估計的弱標簽,更合理的做法是將這些注釋作為先驗,而不是學習目標。設置不同學習速率與權(quán)重衰減,在訓練過程中從第50個epoch開始每5個epoch進行驗證,得到的損失曲線如圖6所示(由PyTorch可視化訓練工具Visdom繪制)。保存驗證結(jié)果最好的一次epoch的網(wǎng)絡參數(shù)作為最終訓練得到的模型。
圖6 不同學習率和權(quán)重衰減對訓練過程中損失曲線的影響
由(a)和(b)中曲線可以得出,權(quán)重衰減為1e-4時的損失曲線更為平緩,而由(c)能夠看出當學習率為1e-5時,訓練得到的模型效果較好,表2中對應的模型測試結(jié)果也驗證了這點。
表2 AMMNet在不同學習率和權(quán)重衰減訓練下的測試結(jié)果
圖7展示了部分白天和夜間場景的可視化測試結(jié)果。其中第一排為輸入圖像,第二排為AMMNet得到的密度分布圖,第三排為將輸入圖像與密度分布圖疊加得到的對比圖??梢钥闯?,AMMNet能夠直觀地表現(xiàn)圖像中車輛的分布情況,并得到較為準確的計數(shù)結(jié)果。
圖7 部分可視化結(jié)果展示
在VGGNet中,VGG16和VGG19的結(jié)構(gòu)效果較好,得到了廣泛認可。本文分別使用VGG16和VGG19作為AAMNet的backbone在數(shù)據(jù)集High_Vehicles上進行實驗,實驗結(jié)果如表3所示。可以看出,使用VGG19做backbone的效果較好。
表3 VGG16和VGG19作為backbone的比較
本文提出的網(wǎng)絡模型中采用了空間注意力和通道注意力機制,所以如何有效得將兩種注意力組合運用也是本文需要研究的課題。本文首先比較兩種注意力在網(wǎng)絡中“串聯(lián)”和“并聯(lián)”的效果,再對每一層VGGNet輸出需要何種注意力進行研究。從表4可以看出,一般來說先經(jīng)過通道注意力,再經(jīng)過空間注意力能更好地強調(diào)或抑制網(wǎng)絡提取到的特征。但如表5所示,在實際網(wǎng)絡AAMNet中,方案(iv)效果最好,這是因為低層特征含有更豐富的空間信息,而高層特征對空間信息的貢獻不大甚至會有干擾。
表4 注意力模塊不同組合方式的比較
表5 VGG19各層輸出與注意力模塊搭配的比較
在國內(nèi)私家車保有量急速增長,車輛擁堵問題日益嚴重的當下,實現(xiàn)實時車輛計數(shù)對完善智能交通體系來說意義非凡。本文通過密度估計的方法,將車輛計數(shù)作為回歸任務,基于VGGNet提出了名為AAMNet的神經(jīng)網(wǎng)絡模型,在車輛數(shù)據(jù)集High_Vehicles上取得了較好的效果,實現(xiàn)了對道路場景中的車輛計數(shù)。最后對于VGGNet選擇,注意力模塊組合方式等方面進行了消融研究實驗,充分說明了提出的AAMNet網(wǎng)絡架構(gòu)的有效性。