張 泓,范自柱,石林瑞,符進武
(華東交通大學理學院,江西 南昌330013)
人群計數(shù)一直是計算機視覺領(lǐng)域的熱門問題,有許多重要的應(yīng)用,如公共安全管理,災(zāi)難管理,公共空間設(shè)計,情報收集及分析和嫌疑人搜索[1],這些各式各樣的應(yīng)用促使研究人員去開發(fā)各種適用于不同環(huán)境的人群計數(shù)方法。目前的人群計數(shù)方法主要有兩種:①基于回歸的方法;②基于檢測的方法。
在基于回歸的方法中,研究人員[2-3]將人群整體當作一個對象來進行人群計數(shù),Wang[2]提出了一個端到端的卷積神經(jīng)網(wǎng)絡(luò)模型來對密集場景中的人群進行計數(shù),他們的模型直接輸出密集人群圖像中的人數(shù)。陸金剛[3]設(shè)計了一個基于多尺度多列卷積神經(jīng)網(wǎng)絡(luò)(multi-scale multi-column convolutional neural network,MSMCNN),每一列網(wǎng)絡(luò)使用不同大小的卷積核來提取不同尺度的特征以便感受到不同尺度的人頭。但是這些方法都將人群整體作為研究對象,直接輸出場景里的人數(shù)或與輸入圖像對應(yīng)的密度圖,無法精確的定位到場景中的每一個人。
在基于檢測的方法中,研究人員[4-8]使用基于頭部檢測的方法來對場景中的人群進行計數(shù)。李歡[4]提出了一種基于SSD的行人頭部檢測方法,添加類別預(yù)測和位置預(yù)測兩個旁支網(wǎng)絡(luò)實現(xiàn)特征分離來改進SSD。張曉琪[5]提出了一種基于多特征協(xié)同的人頭檢測方法,相對于傳統(tǒng)方法檢測方法精度上更好。邢志祥[6]對經(jīng)典的目標檢測方法進行了實驗,通過選取不同的特征提取網(wǎng)絡(luò)和檢測網(wǎng)絡(luò)進行搭配,得到了一種最優(yōu)的檢測方法。Vora[7]設(shè)計了一個輕量級的人頭檢測網(wǎng)絡(luò),他們使用VGG16作為特征提取網(wǎng)絡(luò),然后將最后一層特征送入一個3*3大小的卷積核,最后分別使用兩個1*1大小的卷積做分類和回歸。Merad[8]提出了一種結(jié)合跟蹤過程的頭部檢測方法,他們通過頭部參考系統(tǒng)與攝像機參考系統(tǒng)之間的剛體變換來估計頭部姿態(tài)。但是這些方法在高遮擋,尺度差異大的場景中精度很低。
本文提出了一種基于改進的Faster-RCNN[9]的頭部檢測方法,該方法可以有效的感知多尺度信息,具有較高的準確性和魯棒性。
事實上,在一張靜態(tài)圖片中,靠近攝像機的人頭往往較大,遠離相機的人頭較小,使用單一的特征圖進行檢測往往不能取得很好的效果。為了解決這個問題,本文提出了一個新的人頭檢測方法,該方法能有效的利用多尺度特征來檢測密集場景中的人群[10]。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,該的方法基于Faster-RCNN,為了進一步提高精度,設(shè)計了一個多尺度特征融合模塊 (multi-scale feature fusion,MSFF),該模塊可以融合不同層的特征,加強特征圖之間的相關(guān)性。此外,通過先驗框的設(shè)計和使用Roi-Align層代替了原來網(wǎng)絡(luò)中的Roi-Pooling層,提高了在IoU(intersection over union)等于0.7時的檢測效果。為了進一步提高檢測效果使用大分辨率的圖片進行訓練,在保證圖片的寬高比不變的情況下,將輸入的圖片放大到1 024*768,送入到特征提取網(wǎng)絡(luò)中提取特征,然后將得到的特征送入多尺度特征融合模塊進行融合,將融合后的特征圖送入到RPN(region proposal network)網(wǎng)絡(luò)中提取候選框,這些不同大小的候選框會通過Roi-Align映射成相同大小的特征圖,最后將這些特征圖送入到后續(xù)的網(wǎng)絡(luò)中進行分類和回歸。
圖1 基于多尺度特征融合的Faster-RCNNFig.1 Faster-RCNN based on multi-scale feature fusion
通過對數(shù)據(jù)集中人頭標注框的分析發(fā)現(xiàn),人頭的包圍框可以近似看成一個正方形。去除了原Faster-RCNN網(wǎng)絡(luò)中寬高比為0.5和2先驗框,只保留了寬高比為1的先驗框,即在每個特征圖的每個像素點上只生成1種尺度的候選框。如圖2所示,多尺度特征融合模塊得到的N2-N6特征圖分別對應(yīng)的感受野(特征圖上的像素點映射到原圖所對應(yīng)像素區(qū)域)的大小為{32^2,64^2,128^2,256^2,512^2}(32^2表示32*32大小的像素區(qū)域)。
在一個深度特征提取網(wǎng)絡(luò)當中,深層的特征包含著豐富的語義信息但不利于小物體的檢測,淺層的特征包含著豐富的位置信息但語義信息則較少。若只使用最后一層特征來進行檢測,其它層的特征信息就會被忽略。Lin等[11]設(shè)計了一種具有橫向連接的自頂向下的特征金字塔網(wǎng)絡(luò)結(jié)構(gòu)(feature pyramid networks,F(xiàn)PN),該結(jié)構(gòu)可以融合特征提取網(wǎng)絡(luò)中不同尺度的特征來提升物體檢測的準確率。我們參考了Liu等[12]在FPN結(jié)構(gòu)上的改進,增加了一條自底向上路徑,如圖2所示,C1-C5表示大小為1 024*768的輸入圖片經(jīng)過ResNet101的第一到第五層卷積等得到的特征圖,P5由C5經(jīng)過一個卷積核大小為1*1的卷積層得到,P4由橫向連接的C4和下采樣的C5得到,P3-P2以此類推,P2-P5的通道數(shù)都為512,特征圖的大小分別為(256*192,128*96,64*48,32*24)。N2由橫向連接的P2得到,N3-N5得到的方式與P2-P3類似,N6由N5上采樣得到。此外,為了降低上采樣帶來的混疊效應(yīng),在N3-N5之后分別加上了一個3*3的卷積層,但保持特征圖的大小不變,N2-N6的通道數(shù)都為256,特征圖的大小分別為(256*192,128*96,64*48,32*24)。這樣做的目的是充分利用特征融合,使用五層不同大小的特征圖分別進行預(yù)測,能夠極大的提高網(wǎng)絡(luò)對不同尺度人頭的檢測效果。
圖2 多尺度特征融合模塊Fig.2 Multi-scale feature fusion module
此外,受Mask-RCNN[13]的啟發(fā),將Faster-RCNN里的Roi-Pooling換成了Roi-Align。為了使檢測網(wǎng)絡(luò)能夠輸入任意大小的圖片,Roi-Pooling被用來將感興趣區(qū)域池化成固定大小的特征圖,以便后續(xù)網(wǎng)絡(luò)進行分類和回歸的操作。但Roi-Pooling有一個局限性,Roi-Pooling進行池化操作的時候會有兩次量化過程,即對浮點數(shù)進行向下取整。這樣一來,經(jīng)過Roi-Pooling得到的候選框和最開始候選框會有一些偏差,這在IoU較低的情況下影響不大,但IoU較高時精度會有很大的影響,特別是對于小物體。假設(shè)原圖中有一個區(qū)域的大小為655*655,經(jīng)過ResNet101特征提取網(wǎng)絡(luò)后在最后一層特征圖的大小為20.47*20.47,這個時候Roi-Pooling會進行向下取整操作,最后得到的特征圖的大小為20*20。將20*20大小的特征圖映射成大小為7*7大小的特征圖時,Roi-Pooling平均將20*20的特征圖劃分成7*7的大小,也就是49個小區(qū)域,每個區(qū)域的大小為2.86*2.86,這個時候Roi-Pooling又會進行第二次量化操作,小區(qū)域大小變成2*2的大小。Roi-Align對Roi-Pooling進行了改進,Roi-Align取消了量化操作,使用雙線性插值法來計算最后的值,可以得到更精確的候選框。
實驗代碼基于Python3.5,使用的深度學習框架為Pytorch(0.4版本),顯卡為RTX 1080ti,內(nèi)存為16 G,運行環(huán)境Ubuntu16.04。
本文分別在HollwoodHeads[14],Brainwash[15]這兩個公開的數(shù)據(jù)集上測試了該模型。如表1所示,Brainwash數(shù)據(jù)集是一個密集人頭檢測數(shù)據(jù)集,拍攝的是在一個咖啡館里出現(xiàn)的人群,然后對這群人進行標注而得到的數(shù)據(jù)集。該數(shù)據(jù)集包含3個部分:訓練集由10 769張圖像組成,共包含81 975個人頭;驗證集由500張圖像組成,共包含3 318個人頭;測試集由500張圖像,共包含5 007個人頭,平均每副圖像包含7.64個人頭。HollwoodHeads數(shù)據(jù)集是在21部電影場景里收集的,由224 740張圖像構(gòu)成,共369 846個人頭,平均每張圖片包含1.65個人頭。
表1 數(shù)據(jù)集介紹Tab.1 Introduction to dataset
訓練過程中的初始學習率為0.001,訓練16萬次,訓練到80 000次時進行一次學習率的調(diào)整,調(diào)整大小為初始學習率的十分之一。使用隨機梯度下降法(stochastic gradient descent,SGD)來優(yōu)化模型,動量(momentum)的大小設(shè)置為0.9。使用非極大抑制(non-maximum suppression,NMS)來去除重復(fù)比例較大的候選框。正負樣本的判定與Faster-RCNN的設(shè)置一樣,小于0.3的樣本作為負樣本,大于0.7的樣本作為正樣本,在此之間的樣本忽略不計。使用VOC[16]的評價標準來計算平均精度(AP),在測試時,對于輸出的檢測框如果與實際框的IoU比值大于預(yù)先設(shè)定的閾值(0.5和0.7),那么就認為這個檢測框檢測到了人頭。
對于Brainwash數(shù)據(jù)集,為了方便訓練,去除了數(shù)據(jù)集中的沒有人頭的圖片,構(gòu)成的新數(shù)據(jù)集包含10 461張訓練圖片,484張測試圖片,493張驗證集圖片。表2給出了該模型與之前一些經(jīng)典方法的對比,Sermanet等[17]提出了一種多尺度和滑動窗口的方法,他們稱之為Overfeat-AlexNet模型。Stewart[15]用該方法進行了密集場景下的人頭檢測實驗,并進一步提出了一個基于LSTM的人頭計數(shù)方法,通過GoogLeNet來提取圖片中的特征,然后將這些特征送入到一個LSTM中進行解碼,輸出一系列的人頭檢測框。通過使用不同的損失函數(shù),他們提出了3種不同的檢測模型,分別是:ReInspect,Lfix;ReInspect,Lfirstk;ReInspect,Lhungarian。除此之外,我們還與其他的一些經(jīng)典的檢測方法做了對比SSD[18],YOLO9000[19],Tiny[20]和HeadNet[21]。如表2所示,本文方法在Brainwash數(shù)據(jù)集上取得了最高的精度。圖3展示了本文方法和FCHD模型在Brainwash數(shù)據(jù)集上的檢測結(jié)果,從圖3(a)中可以看到FCHD模型對一些小人頭很難進行有效的檢測。圖3(b)展示了本文方法的檢測結(jié)果,可以看到對一些小人頭本文方法也能檢測出來(其中黃色框是檢測框,藍色框是真實標注的人頭)。值得一提的是,數(shù)據(jù)集中有一些沒有標注的人頭,如圖3(b)中紅色箭頭所指,這些數(shù)據(jù)或許會對精度的計算產(chǎn)生不利的影響。
表2 在Brainwash上的對比實驗Tab.2 The comparison experiment on Brainwash
圖3 模型檢測效果對比Fig.3 Model detection result comparison
HollwoodHeads數(shù)據(jù)集是一個電影場景里收集的數(shù)據(jù)集,訓練集,驗證集,測試集分別包含216 694,6 719,1 297張圖片。我們和一些基線方法進行了對比,如SSD[18],YOLO9000[19],Tiny[20],HeadNet[21]的人頭檢測方法,Merad[8]提出的兩種人頭檢測模型Context-Local和Context-Local+Global+Pairwise方法。表3展示了本文方法在IoU=0.5和0.7的情況下都優(yōu)于以前的方法。圖5展示了一些本文方法的檢測結(jié)果,對于電影場景中正常的人頭都能有一個很好的檢測,但是對于一些影子數(shù)據(jù),該方法會有漏檢測的結(jié)果。
表3 在HollwoodHeads上的對比實驗Tab.3 The comparison experiment on Hollwood Heads
圖4 HollwoodHeads數(shù)據(jù)集檢測示例Fig.4 Detection result on Hollwood Heads
為了驗證多尺度融合模塊和Roi-Align的有效性,在Brainwash數(shù)據(jù)集和HollwoodHeads數(shù)據(jù)集上進行了一些實驗。IoU的大小表示檢測框和真實框之間的重合度,IoU越大則表明檢測框和真實框之間越接近。一般IoU大于等于0.5就可以認為是一個正確的檢測,但在某些場景中對檢測框有更高的要求,本文在IoU=0.5和0.7的這兩種情況下進行了實驗。表4展示了在Brainwash數(shù)據(jù)集上的實驗結(jié)果,可以看到本文方法比原始的Faster-RCNN網(wǎng)絡(luò)提高了15.7%,將RoI_Pooling替換為Roi_Align在IoU=0.5時候精度相差不大,而在IoU=0.7的情況下可以帶來6%的提升。這說明Roi_Align使得模型輸出得框更接近真實得框。
表4 在Brainwash數(shù)據(jù)集上的實驗結(jié)果Tab.4 Experimental results on Brainwash
表5展示了在HollwoodHeads數(shù)據(jù)集上的實驗結(jié)果,F(xiàn)aster-RCNN(C4)表示用特征提取網(wǎng)絡(luò)第4層特征(C4)進行的實驗。在HollwoodHeads數(shù)據(jù)集上本文方法比原始的Faster-RCNN網(wǎng)絡(luò)提高了8.28%,將RoI_Pooling替換為Roi_Align在IoU=0.7的情況下可以在此基礎(chǔ)上再帶來1.4%的提升。
表5 在HollwoodHeads數(shù)據(jù)集上的實驗結(jié)果Tab.5 Experimental results on Hollwood Heads
此外,我們還在不同分辨率下的訓練圖片進行了實驗,實驗結(jié)果如表6所示,在保持圖片寬高比不變的情況下1 024*768表示將圖片放大到1 024*768的大小,640*480相同,IoU的取值為0.5,由表6可知在相同條件下,輸入圖片分辨率越大精度越高。
表6 在不同分辨率下的實驗結(jié)果Tab.6 Experimental results at different resolutions
本文提出了一種端到端的人頭檢測模型,該模型能夠很好的檢測到密集場景的人頭。
1)使用ResNet101作為特征提取網(wǎng)絡(luò)提取特征,然后將提取到的特征送入一個多尺度特征融合模塊(MSFF)進行特征融合,該模塊將融合后的特征分別送入后續(xù)的網(wǎng)絡(luò)進行檢測。
2)通過先驗框的設(shè)計和使用Roi-Align代替了Roi-Pooling進一步的提高了精度。由于融合了不同層的特征,該模型能夠有效的檢測到不同尺度的人頭。實驗表明,該方法在Brainwash和Hollwood-Heads數(shù)據(jù)集上達到了最優(yōu)的結(jié)果。