楊 旭,黃 進,秦澤宇,鄭思宇,付國棟
(西南交通大學(xué) 電氣工程學(xué)院,成都 610097)
人群計數(shù)作為計算機視覺領(lǐng)域下的一個重要分支,其目的是通過算法自動統(tǒng)計出場景中的行人數(shù)量,在視頻監(jiān)控、安防等領(lǐng)域有廣泛應(yīng)用.尤其是在商場、車站、景點等公共場所,進行實時的人流量統(tǒng)計有助于對擁擠情況的分析和異常狀況的監(jiān)測.
早期的人群計數(shù)算法基于目標(biāo)檢測進行統(tǒng)計,但其精度較差,尤其是高密度區(qū)域,人頭目標(biāo)范圍小導(dǎo)致目標(biāo)檢測變得困難,因此基于目標(biāo)檢測計數(shù)很快被棄用.后來出現(xiàn)數(shù)量回歸的方法,但該類方法不能體現(xiàn)人群目標(biāo)的分布情況,且計數(shù)精度并無太大提升.直到密度圖的提出給人群計數(shù)算法提供了新的思路,該類型算法通過預(yù)測圖像的密度圖來統(tǒng)計人數(shù),模型學(xué)習(xí)的是圖像特征到密度圖的映射.相比直接回歸人群數(shù)量和基于目標(biāo)檢測進行統(tǒng)計的方法,基于密度圖的計數(shù)算法不僅能直觀體現(xiàn)目標(biāo)的分布情況,統(tǒng)計精度也有很大提高,是現(xiàn)在人群計數(shù)領(lǐng)域的主流方法.
高質(zhì)量真實密度圖的生成和合理的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計是提高基于密度圖的計數(shù)算法精度的關(guān)鍵.真實密度圖的制作大多采用高斯自適應(yīng)核濾波,計數(shù)網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計則有多種方式,按特征提取分支的數(shù)量可以分為多列網(wǎng)絡(luò)和單列網(wǎng)絡(luò).多列網(wǎng)絡(luò)利用多條并行分支提取不同尺度的特征信息,最后匯聚多個特征,共同預(yù)測密度圖.單列網(wǎng)絡(luò)則只使用一條分支進行特征提取和密度圖的預(yù)測,模型結(jié)構(gòu)層次更深,提取的語義特征更高級.多列網(wǎng)絡(luò)存在冗余特征的缺陷,因為各分支的結(jié)構(gòu)往往相似度高,不易控制參數(shù)讓其產(chǎn)生差異大的多尺度特征.單列網(wǎng)絡(luò)雖然能提取更高級的深層語義特征,但淺層的特征信息在傳輸過程中丟失,沒有得到充分利用.
針對以上兩種結(jié)構(gòu)存在的問題,本文提出以單列結(jié)構(gòu)ResNet50[1]為特征提取器,基于注意力加權(quán)融合(AWF)結(jié)構(gòu)與自底向上融合(BUF)模塊為融合層的人群計數(shù)算法.ResNet50 網(wǎng)絡(luò)采用跳躍連接方式使淺層信息能跨層傳輸?shù)缴顚犹卣?從而避免了低層特征的信息丟失.本文算法從ResNet50中抽取3 個特征尺度變化較大的層,作為多尺度圖像特征的低級表達,然后送入融合層進一步疊加特征,最后進行密度圖的預(yù)測.其中AWF 模塊使用3 個分支處理不同層特征圖,在處理特征圖時引入注意力支路學(xué)習(xí)特征圖權(quán)重,加強特征表達,3 個分支處理后的特征圖逐層融合作為最終特征圖,融合方式為逐元素相加.BUF 模塊在AWF的基礎(chǔ)上進行刪減,它從淺層依次與相鄰層融合,在最后一層使用一個注意力層加權(quán)融合.BUF 在處理淺層特征時使用了空洞卷積,目的是在更大的感受野上學(xué)習(xí)到更多的特征信息.BUF的兩個大尺度的淺層特征采用通道拼接的方式融合,而AWF 模塊是深層特征依次與淺層進行逐元素相加.在公開數(shù)據(jù)集上的實驗表明,本文提出的ResNet50+AWF和ResNet50+BUF 都可以顯著提高人群計數(shù)精度,并具有更強的魯棒性.
人群計數(shù)算法可以分為基于檢測和基于回歸兩大類.基于檢測的計數(shù)原理是采用目標(biāo)檢測算法識別并定位人體目標(biāo),最后統(tǒng)計檢測到的目標(biāo)數(shù)量,如Topkaya等[2]利用聚類檢測識別行人進行數(shù)目統(tǒng)計、Li 等[3]通過背景分割檢測出圖像中的人頭和人體肩部來估計人群數(shù)量.隨著深度學(xué)習(xí)的興起,目標(biāo)檢測領(lǐng)域出現(xiàn)了很多高效快速的檢測算法如RCNN 系列[4]、YOLO 系列[5].這些檢測算法在通用目標(biāo)檢測任務(wù)上表現(xiàn)良好,但是由于人群計數(shù)任務(wù)中存在遮擋、場景復(fù)雜和人體姿態(tài)變化大等問題,這類目標(biāo)檢測模型在人群計數(shù)任務(wù)上的表現(xiàn)很差,因此近些年已經(jīng)很少采用目標(biāo)檢測算法進行人群計數(shù).
基于回歸的人群計數(shù)方法可以分為數(shù)量回歸和密度圖回歸,前者是讓模型直接學(xué)習(xí)圖像特征到人群數(shù)量的映射,即輸入一張圖像,模型直接輸出圖像中的人數(shù),如IDREES 等[6]使用SIFT 特征和頻域分析對極度密集場景進行分塊回歸來估計人群數(shù)量、Chan 等[7]使用泊松貝葉斯回歸算法直接計算人群數(shù)量.基于數(shù)量回歸方法的思路通常是先提取如HOG、SIFT、LBP等可以表征圖像信息的特征,然后通過線性回歸或高斯回歸等方法學(xué)習(xí)特征到數(shù)量的映射.基于數(shù)量回歸的方法可以解決場景中人群遮擋的問題,但是忽略了空間信息,模型的輸出只有人數(shù),不能體現(xiàn)圖像中人群的分布情況,現(xiàn)在也基本不再使用該類方法.
基于密度圖回歸的方法由Lempitsky[8]在2010年提出,該類方法的思想是使用密度圖作為圖像中人群的分布表示.密度圖是一張與原始圖像尺寸一致的單通道圖像,其特點是在非人頭目標(biāo)位置的像素值為0,人頭目標(biāo)位置的像素值之和為目標(biāo)個數(shù).該類算法模型學(xué)習(xí)的是從圖像到密度圖的映射關(guān)系,而非圖像到人數(shù)的映射,其普遍思路是采用卷積神經(jīng)網(wǎng)絡(luò)(CNN)提取高級圖像特征,然后解碼得到圖像密度圖,最后對密度圖進行積分得到目標(biāo)數(shù)量.最具代表性的密度圖估計方法是Zhang 等[9]在2016年提出的MCNN 網(wǎng)絡(luò),該網(wǎng)絡(luò)采用3 個不同卷積核大小的分支結(jié)構(gòu)提取不同尺度的特征信息,最后按通道拼接各個分支的特征圖,送入卷積層預(yù)測最終的密度圖.基于密度圖的計數(shù)方法的缺陷是多尺度檢測,由于場景中的人群目標(biāo)近大遠小,密集區(qū)域遮擋嚴重,算法很難同時在高密度和低密度區(qū)域上取得較好結(jié)果.
為了解決多尺度檢測的問題,MCNN的思想是用不同分支提取信息,由于各分支的差異僅在卷積核大小上,提取的特征冗余較多,融合后的特征并不能較好地代表多尺度信息,因此效果不太理想,但其多列分支提取多層特征的思想影響了后續(xù)很多工作的發(fā)展.另一種進行多尺度檢測的思路是使用密度級別分類器將圖像區(qū)域劃分密度等級,對不同等級的區(qū)域使用不同模塊處理.如Sam 等[10]提出Switch CNN 將人群密度定義為高低中3 個級別,圖像被分為不同小塊,各塊根據(jù)其密度級別送入相應(yīng)網(wǎng)絡(luò)進行處理.Rubio 等[11]則是將輸入圖像轉(zhuǎn)換為圖像金字塔,金字塔的各層對應(yīng)著不同尺度的圖像輸入,分別送入網(wǎng)絡(luò)提取多尺度特征.但密度級別分類算法存在級別定義不明、計算量大、分類器精度難以把控等問題.
最近一些研究著重設(shè)計特殊的網(wǎng)絡(luò)結(jié)構(gòu)來提升網(wǎng)絡(luò)性能,如Babu 等[12]提出的TDF-CNN 采用一種自下而上和自上而下交叉的特殊結(jié)構(gòu)來獲取更精確的特征圖.Li 等[13]提出的CSRNet 使用了多層空洞卷積以加強特征圖的表達能力.Zhang 等[14]采用注意力機制,其設(shè)計的RA-Net 疊加全局注意力特征與局部注意力特征,并提出拼接、相加和卷積3 種融合方式.Guo 等[15]提出的DADNet 在網(wǎng)絡(luò)中引入空洞卷積、可形變卷積與注意力機制,網(wǎng)絡(luò)結(jié)構(gòu)更加復(fù)雜,計數(shù)精度有一定提升.
針對多尺度問題,本文從特征融合角度出發(fā),設(shè)計了兩種特殊融合結(jié)構(gòu),基于注意力加權(quán)融合(AWF)模塊與自底向上融合(BUF)模塊.AWF 模塊采用多分支并行融合的方式匯聚不同層次的特征,相比單分支網(wǎng)絡(luò)能捕捉到更多的信息,為了避免多層分支信息的冗余,采用注意力機制為每層特征分配權(quán)重,從而提高特征圖的精度.BUF 模塊中將不同尺度的特征信息逐層融合.為了避免淺層信息丟失,BUF 模塊引入空洞卷積增強特征表達能力,同時在最后一層使用注意力分支學(xué)習(xí)特征權(quán)重,進一步改善特征圖.因此,相比其他多分支結(jié)構(gòu)或單分支網(wǎng)絡(luò),AWF和BUF 模塊的引入可以獲取更高效的特征圖,降低密度圖的預(yù)測誤差.在各個公開人群數(shù)據(jù)集上進行實驗,與未加入融合模塊的網(wǎng)絡(luò)和其他的人群計數(shù)算法進行對比,結(jié)果表明,本文提出的注意力加權(quán)融合方式確實可以進一步提升網(wǎng)絡(luò)性能,降低計數(shù)誤差.
如圖1所示,本文設(shè)計人群算法的整體架構(gòu)由骨干網(wǎng)絡(luò)、融合模塊和解碼模塊3 部分構(gòu)成.算法使用骨干網(wǎng)絡(luò)提取多尺度圖像特征,然后將不同層次的輸出特征送入融合模塊進行處理,解碼模塊則負責(zé)最終密度圖的預(yù)測,密度圖的積分值即為預(yù)測人數(shù).
圖1 算法結(jié)構(gòu)
骨干網(wǎng)絡(luò)是網(wǎng)絡(luò)的特征提取部分,通常選取一些基礎(chǔ)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu).該部分提取的是較為淺層的圖像特征,因此本文在骨干網(wǎng)絡(luò)后面增加了融合模塊,其作用是將淺層特征進一步融合,融合后的特征圖具有更強的特征表達能力.但融合特征圖是一個多通道的特征圖,同時它的分辨率遠遠小于輸入圖像,所以最后將融合特征圖送入解碼模塊進行降維和分辨率的放大,最終得到一個與輸入圖像分辨率相同的單通道密度圖.
多列卷積網(wǎng)絡(luò)存在訓(xùn)練困難和特征圖冗余大的問題,而單列卷積網(wǎng)絡(luò)在人群計數(shù)任務(wù)上的有效性已經(jīng)在CSRNet 模型上得到證實,CSRNet 以經(jīng)典的單列卷積網(wǎng)絡(luò)VGG[16]為骨干提取特征,使用空洞卷積作為解碼器就能超越大多數(shù)多列網(wǎng)絡(luò)的性能.但VGG 完全由卷積-池化-激活模塊順序疊加,在較深的特征層上會忽視掉很多淺層信息,因此本文選取引入跨層連接方式的ResNet50為骨干網(wǎng)絡(luò).
ResNet 網(wǎng)絡(luò)的基本結(jié)構(gòu)是殘差塊,其特點是淺層信息通過跨層連接方式直接疊加到主干分支的輸出上.具體連接方式如圖2,輸入為x,主干支路輸出為F(x),則整個殘差塊的輸出為y=F(x)+x.殘差塊的特殊連接方式可以讓網(wǎng)絡(luò)在較深層中保留淺層特征,解決網(wǎng)絡(luò)過深時梯度消失導(dǎo)致網(wǎng)絡(luò)性能退化的問題.
圖2 殘差塊
ResNet 可以看作多個殘差塊串聯(lián)的網(wǎng)絡(luò),根據(jù)卷積層和全連接層的個數(shù)進行不同的配置.本文使用的是ResNet50,它的各層參數(shù)原始配置如表1所示,其中n×Residual 層表示n個殘差塊的串聯(lián),每個殘差塊的主干支路是3 個參數(shù)不一的卷積層.ResNet50 分為6 個部分,除去頭尾的卷積池化和全連接層,中間4 部分由重復(fù)次數(shù)不一的殘差塊串聯(lián)組成,各層殘差塊的重復(fù)次數(shù)分別是3、4、6、3,表1中的網(wǎng)絡(luò)輸入圖像尺寸設(shè)置為256×256,output 列表示每一層的特征圖輸出大小.
表1 ResNet50的各層參數(shù)配置
原始ResNet50是分類模型,因此網(wǎng)絡(luò)最后一層采用了全連接層和Softmax 函數(shù)預(yù)測類別輸出,而在人群計數(shù)網(wǎng)絡(luò)中需要的輸出是特征圖而非類別,故刪除最后的全連接層和激活函數(shù),同時為了提取不同層次級別的特征信息,本文抽取出網(wǎng)絡(luò)中l(wèi)ayer2、layer3、layer4的輸出作為3 層初級圖像特征送入融合模塊,各層的輸出尺寸可以通過各層的卷積核步長控制.
最終采用作為特征提取模塊的ResNet50 結(jié)構(gòu)如圖3所示,原始ResNet50 配置中的layer4 輸出特征圖分辨率太小,因此將layer2中3×3 卷積核的步長大小修改為1,最終輸出特征圖的形狀格式為512×64×64、1024×32×32和1024×16×16.
圖3 特征提取模塊
從骨干網(wǎng)絡(luò)中提取出3 個層級的特征圖后,對多層特征的處理通常有兩種方法:先各自預(yù)測一個輸出,然后整合不同級別的輸出結(jié)果;先融合各層特征然后進行預(yù)測輸出.本文設(shè)計的融合模塊都采用第二種方法,將提取到的不同層級特征送入一個融合模塊后再進行預(yù)測.
本文設(shè)計的第一種融合模塊為注意力加權(quán)融合,結(jié)構(gòu)如圖4所示,其中Conv2D 表示特征圖的處理部分,由卷積層和SE 模塊[17]串聯(lián)而成,Up 表示雙線性上采樣.
圖4 注意力加權(quán)融合
AWF 模塊的輸入是3 個尺寸和通道數(shù)都不同的特征圖,每個特征圖送入對應(yīng)的處理分支,3 個分支的輸出特征圖逐次疊加.每個處理分支由兩列(1×1 卷積)→(BN 層)→(3×3 卷積)→(BN 層)→(1×1 卷積)→(BN 層)→(ReLU 激活層)→(SE 模塊)的串聯(lián)結(jié)構(gòu)組成.其中一列輸出為多通道,另一列為注意力分支,輸出為單通道,將兩列特征圖相乘后作為該分支的輸出.
SE 模塊如圖5所示,它的作用是在特征圖通道數(shù)較多的層中調(diào)整通道權(quán)重,SE 模塊使用額外一個分支學(xué)習(xí)每個通道的權(quán)重對原始特征圖按通道進行重新組合.融合結(jié)構(gòu)中使用了兩次上采樣層,目的是便于相鄰層特征圖疊加.各層特征經(jīng)過各自分支處理后進行疊加的方式是按元素相加,融合后的特征圖尺寸和淺層較大的特征圖尺寸相同,即64×64,通道數(shù)為512.
圖5 SE 模塊
注意力加權(quán)融合結(jié)構(gòu)在處理輸入特征圖時引入一個與主列結(jié)構(gòu)類似的注意力分支,目的是學(xué)習(xí)特征圖的權(quán)重映射.通過為特征圖逐像素分配權(quán)重的方式,實現(xiàn)對信息的聚焦,權(quán)重系數(shù)大小體現(xiàn)該位置特征的重要程度,讓模型更關(guān)注人群目標(biāo)區(qū)域,而不是圖像背景等無關(guān)區(qū)域,因此加權(quán)融合后的特征具有更強的表達能力.
AWF 模塊的處理方式是各層級的輸入特征分別進行優(yōu)化再進行相加融合,本文設(shè)計的另一種融合模塊,自底向上融合(BUF)模塊則按照由淺到深的順序依次融合3 個特征,其具體結(jié)構(gòu)如圖6所示.f1、f2、f3 分別是ResNet50中的layer2、layer3和layer4 輸出,f1 通過一個卷積塊處理后與f2 按通道方向進行拼接,再進行卷積運算得到f4.f3 與f4 通過加權(quán)疊加,權(quán)重系數(shù)a1為f3 卷積輸出的單通道特征值.
圖6 自底向上融合
和AWF 模塊中的卷積類似,各個conv 塊由(1×1卷積)→(BN 層)→(3×3 卷積)→(BN 層)→(1×1 卷積)→(BN 層)→(ReLU 激活層)的串聯(lián)結(jié)構(gòu)構(gòu)成,1×1 卷積作用是通道變換,3×3 卷積負責(zé)降采樣和特征學(xué)習(xí).f1、f2、f3 本身是骨干網(wǎng)絡(luò)的不同層級輸出,如果采用普通卷積運算后拼接,可能產(chǎn)生較多的冗余,因此3×3 部分采用的是空洞率為2的空洞卷積,目的是在更大的感受野上獲取更多的特征信息.另外f3和f4 疊加時只使用一個卷積塊學(xué)習(xí)特征權(quán)重,而不是分別學(xué)習(xí)權(quán)重系數(shù),目的是減少參數(shù)量.f3和f4 共用權(quán)重系數(shù),最終輸出output=a1*f3+(1-a1)*f4,其尺寸和輸入的深層特征圖尺寸相同,是16×16,通道數(shù)為2048.
BUF 模塊使用空洞卷積,在不增加參數(shù)量的情況下能捕獲更多上下文信息,減少傳輸過程中的淺層信息丟失,同時只在最后一層使用卷積層學(xué)習(xí)特征圖權(quán)重,相比AWF 使用多個分支學(xué)習(xí)權(quán)重的方法,BUF 具有更小的參數(shù)量,結(jié)構(gòu)更加簡潔.
多尺度特征經(jīng)過AWF 模塊或BUF 模塊融合,最后進入解碼模塊預(yù)測圖像密度圖.
解碼模塊的結(jié)構(gòu)如圖7所示,輸入f是融合后的特征圖,經(jīng)過兩個conv 層和上采樣層Up 后輸出最終的密度圖.conv 層的作用是降低特征通道數(shù),由1×1 卷積和ReLU 激活函數(shù)構(gòu)成.Up 層是對特征圖進行雙線性插值,使輸出密度圖的分辨率與輸入圖像一致.
圖7 解碼模塊
人群計數(shù)數(shù)據(jù)集的標(biāo)注是對圖像中人頭中心坐標(biāo)的點標(biāo)注,實驗需要預(yù)先將數(shù)據(jù)集的點標(biāo)簽轉(zhuǎn)換為密度圖標(biāo)簽.本文采用自適應(yīng)高斯核濾波器對坐標(biāo)點位置進行處理,假設(shè)一個人頭大小是3×3 像素,如圖8(a)所示.使用濾波模糊后的密度圖如圖8(b),各個像素點的概率值之和為1,對整張圖的所有人頭區(qū)域進行濾波,即可得到完整圖像的密度圖標(biāo)簽.
圖8 高斯濾波器生成密度圖標(biāo)簽
像素位置xi處存在人頭,則點標(biāo)簽的對應(yīng)處為1,可以用脈沖函數(shù) δ (x-xi) 表示,一張圖的人頭數(shù)量是N,那么圖像可以表示為
選擇自適應(yīng)高斯核濾波器Gσ=其中方差 σ=,超參數(shù) β=0.3,表示位置的k 個鄰近人頭點的平均距離,即根據(jù)目標(biāo)之間的密集程度自動調(diào)整方差大小,從而生成不同的高斯模板.高斯濾波后的密度圖為F(x)=H(x)*Gσ,對其積分就可得到圖像中的人頭數(shù)量.
損失函數(shù)用于衡量網(wǎng)絡(luò)輸出與真實標(biāo)簽之間的誤差,本文采用的是歐幾里得距離損失Le與密度一致性損失Lc[18]加權(quán)求和作為網(wǎng)絡(luò)整體損失函數(shù),其計算公式如下.
其中,系數(shù) λ是常數(shù),通常取100,兩種損失的表達式分別如式(2)和式(3)所示.
其中,N表示數(shù)據(jù)集中的圖像數(shù)量,表示圖像Xi的預(yù)測密度圖,Gti表示該圖像的真實密度圖,s表示尺度級別數(shù),Pavg表示平均池化操作,k表示池化后的輸出大小.Le損失逐像素計算預(yù)測密度圖與真實密度圖的誤差,是像素級的誤差.密度一致性損失衡量的則是局部區(qū)域的誤差,其比較的是將池化后的特征圖差異.文中設(shè)置了3 個尺度級別,即s=3,平均池化的輸出尺寸依次是1×1、2×2和4×4.
對模型的性能評價采用平均絕對誤差MAE和均方誤差MSE兩個指標(biāo),其計算公式如下:
其中,N表示測試的圖片數(shù)量,zi表示預(yù)測的人數(shù),zi'表示該圖像的實際人數(shù).MAE即在測試集上預(yù)測的人數(shù)與實際人數(shù)的平均誤差,反映了模型的準確性.MSE則是度量預(yù)測人數(shù)與實際人數(shù)的偏離程度,可以反映模型的魯棒性.兩個指標(biāo)值都是越低越好.
為了驗證算法的有效性,本文選擇了公開數(shù)據(jù)集Shanghai Tech[9]和UCF_CC_50[6]作為實驗數(shù)據(jù),數(shù)據(jù)集信息如表2所示,其中Shanghai Tech 數(shù)據(jù)集分為A、B 兩部分.A 部分(SHHA)圖像分辨率不統(tǒng)一,場景人群密度較大,B 部分(SHHB) 圖像分辨率均為768×1024,人群密度較低.UCF_CC_50的圖像數(shù)量較少,但圖像分辨率不統(tǒng)一,人群密度極大.
表2 數(shù)據(jù)集信息
3個數(shù)據(jù)集涵蓋了低分辨率、高分辨率、低人群密度和高人群密度場景圖像,能夠較好評估算法的性能.Shanghai Tech 數(shù)據(jù)集已經(jīng)劃分好訓(xùn)練集和測試集,其中SHHA中的訓(xùn)練集共300 張圖像,測試集182 張圖像,SHHB的訓(xùn)練集和測試集圖像數(shù)分別是400和316.而UCFCC_50 僅為50 張零散圖像,為了便于對比,采用業(yè)界通用的交叉驗證劃分方法,即每次選擇不同的10 張圖像作測試集,剩余圖像作訓(xùn)練集,將五次的測試結(jié)果均值作為最終的測試結(jié)果.
實驗環(huán)境基于Ubuntu 18.04 操作系統(tǒng),采用PyTorch 深度學(xué)習(xí)框架,CPU和GPU 配置為Intel(R)Xeon(R) Silver 4116和NVIDIA Tesla K80.
在數(shù)據(jù)處理階段,本文使用了分塊訓(xùn)練.具體操作是使用滑窗法裁剪數(shù)據(jù)集,并在裁剪過程中進行隨機翻轉(zhuǎn)擴充訓(xùn)練集.裁剪和翻轉(zhuǎn)操作可以擴大數(shù)據(jù)集并讓訓(xùn)練集的圖像分辨率相同,方便訓(xùn)練.訓(xùn)練完成后,在模型性能測試階段,對測試集上的圖像也進行裁剪,最后疊加各塊的密度圖結(jié)果.
另外,對于訓(xùn)練集和測試集都進行了歸一化處理,即先計算整個數(shù)據(jù)集圖像的均值和方差,按照該均值和方差對每張圖像進行歸一化處理,再送入網(wǎng)絡(luò)訓(xùn)練和測試.由于高斯濾波器生成的密度圖的像素值很小,范圍0–1.如果直接進行訓(xùn)練,很容易出現(xiàn)梯度彌散現(xiàn)象,因此實驗中對數(shù)據(jù)集的密度圖標(biāo)簽進行等比例放大,放大系數(shù)為100.
融合算法的骨干網(wǎng)絡(luò)部分是ResNet50,在初次訓(xùn)練時的初始化為采用預(yù)訓(xùn)練權(quán)重初始化.預(yù)訓(xùn)練權(quán)重可以加快網(wǎng)絡(luò)收斂,減少訓(xùn)練時間.而網(wǎng)絡(luò)的后半部分是自定義的融合結(jié)構(gòu)和解碼模塊,采用的初始化方式是kaiming 初始化和0 初始化方式,其中卷積核初始化是kaiming 初始化,其余層如BN 層等采用0 初始化.訓(xùn)練初始學(xué)習(xí)率為0.000 1,衰減方式為按輪次衰減,每隔10 輪學(xué)習(xí)率衰減為上一次的0.95 倍,總訓(xùn)練輪數(shù)為500 輪,優(yōu)化損失采用Adam 算法.
為了驗證本文算法的有效性,實驗中與近年的不同類型網(wǎng)絡(luò)進行對比,在各個數(shù)據(jù)集上的測試結(jié)果如表3所示.其中MCNN是多列網(wǎng)絡(luò),各列由簡化的VGG結(jié)構(gòu)組成;MSCNN[19]則是由若干個多列結(jié)構(gòu)Inception模塊串聯(lián)而成;RANet 以Hourglass 結(jié)構(gòu)[20]為特征提取器;CSRNet和PACNN[21]是以VGG為骨干的單列計數(shù)網(wǎng)絡(luò);DUBNet[22]是基于ResNet50的多輸出網(wǎng)絡(luò).實驗中對比的模型基本涵蓋了當(dāng)前人群計數(shù)領(lǐng)域的各種類型方法,結(jié)果較為客觀全面.
從表3可以看出,相對其他方法,引入融合模塊的算法在高低密度場景下都有較好表現(xiàn).在SHHA和SHHB 數(shù)據(jù)集上,引入AWF 模塊后的MAE和MSE都達到最優(yōu).在高密度的UCF_CC_50 上,MAE降低到212,超過其他算法.同時AWF 模塊在Shanghai Tech 數(shù)據(jù)集上的誤差略優(yōu)于BUF 模塊,但在UCF_CC_50 數(shù)據(jù)集上AWF和BUF的誤差相差較大,整體而言AWF 模塊性能更優(yōu).
表3 實驗結(jié)果對比
圖9和圖10分別展示了兩種算法在各個數(shù)據(jù)集上的預(yù)測結(jié)果,其中圖9表示引入AWF 模塊的計數(shù)算法,第1 行是3 個數(shù)據(jù)集中的原始圖像,第2 行表示對應(yīng)的真實密度圖和標(biāo)記人數(shù),第3 行表示預(yù)測結(jié)果,第4 行是預(yù)測密度圖與原始圖像疊加的結(jié)果比較.圖10表示使用BUF 模塊的結(jié)果,3 張測試的圖像和圖9相同,因此圖10只顯示了引入BUF的模型預(yù)測密度圖與其在原始圖像上的疊加效果.從圖9和圖10的結(jié)果可以看出,在3 個數(shù)據(jù)集上,兩種模型都能取得較好的預(yù)測效果.
圖9 AWF 模塊測試圖片結(jié)果
圖10 BUF 模塊測試圖片結(jié)果
為進一步測試AWF和BUF 結(jié)構(gòu)的性能,在SHHA數(shù)據(jù)集上進行消融實驗.選取人群計數(shù)領(lǐng)域常用的骨干結(jié)構(gòu)VGG16,在其基礎(chǔ)上加入AWF和BUF 模塊,對比ResNet50 進行實驗.各種模型的解碼模塊與第3.4 節(jié)實驗中的設(shè)置相同,各自測試結(jié)果如表4所示.
表4 消融實驗
ResNet50 在SHHA 數(shù)據(jù)集上的MAE可以達到54.9,誤差低于VGG16的72.6,表明ResNet50的效果優(yōu)于VGG16,可見使用了殘差塊的ResNet50 能夠更好的提取網(wǎng)絡(luò)特征.而兩種網(wǎng)絡(luò)在加入AWF 模塊和BUF 模塊后的MAE均有8~10的提升,表明兩種模塊對多層特征的復(fù)用是有效的,AWF和BUF 可以靈活嵌入各種骨干網(wǎng)絡(luò),融合多尺度特征,提升網(wǎng)絡(luò)性能,其中AWF的結(jié)構(gòu)比BUF 更復(fù)雜,參數(shù)量更大,但效果更好.
本文針對人群計數(shù)網(wǎng)絡(luò)在密集場景下檢測困難,多尺度信息利用不足等問題,提出兩種多尺度特征圖融合方式:注意力加權(quán)融合AWF 與自底向上融合BUF.AWF 模塊在特征圖處理過程中引入注意力分支學(xué)習(xí)特征圖權(quán)重,加權(quán)后的特征圖再進行逐層疊加融合.BUF 模塊由淺到深依次融合多層特征,較淺的兩層特征處理后按照通道順序拼接,然后與最深層的特征進行加權(quán)融合.在幾個公開數(shù)據(jù)集上進行實驗,結(jié)果表明兩種融合結(jié)構(gòu)都能有效提高網(wǎng)絡(luò)性能.以ResNet50為骨干網(wǎng)絡(luò),AWF為融合層的人群計數(shù)算法在Shanghai Tech 數(shù)據(jù)集上的絕對誤差降低到45.539和7.6,均方誤差降低至100.283和11.4,遠超其他計數(shù)網(wǎng)絡(luò).在高密度的UCF_CC_50 數(shù)據(jù)集上,MAE降低至212.42,優(yōu)于其他算法,引入BUF 融合層的算法效果略差于AWF,但相對現(xiàn)有方法仍有較大提升.在SHHA 數(shù)據(jù)集上的消融實驗表明兩種模塊的有效性,它們不僅可以嵌入ResNet50,在其他骨干網(wǎng)絡(luò)中嵌入也可以實現(xiàn)降低計數(shù)誤差的效果.
AWF和BUF 模塊的有效性證明了從特征融合的角度來設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)對人群計數(shù)算法性能的提升是有效的,但新模塊的加入帶來了參數(shù)量的增長.在未來的工作中,本文將進一步研究更高效的改進方式,設(shè)計更輕量高效的即插即用模塊.