陶 祝,劉正熙,熊運余,李 征
(四川大學計算機學院,四川 成都 610000)
行人檢測已經成為計算機視覺領域最主要的研究方向,也是目前深度學習必不可少的研究項目。行人檢測的準確性對安防、智能視頻監(jiān)控系統(tǒng)的發(fā)展有極其重要的意義。雖然當前的檢測精確率以及速率都已經取得較好的成果,但行人檢測依舊面臨著許多挑戰(zhàn),如大場景下有多人出現(xiàn)時,兩人及兩人以上互相遮擋的情況較為尋常,要將行人一一準確地檢測出來,仍然比較困難。
為了解決這些難題,從根本方法出發(fā),依據行人的身體部件建模,如人的頭、頭肩等模型可以區(qū)分人和其他物體。起初研究行人檢測時,采用基于背景的建模方法,如經典高斯背景模型[1],其結果只能把前景和背景分離開,根據分離出的前景,人為地判斷運動目標的類別,該方法易受背景變化的干擾,適合背景單一的目標檢測;而基于運動目標建模的方法,首先提取目標的特征,根據特征訓練模型,同時實現(xiàn)目標的分類與定位,提高了檢測的準確率,并能檢測出除了人、車以外的更多物體類別,適合復雜場景多目標檢測。
基于目標建模的方法,首先提取、檢測或跟蹤目標的明顯特征,經典的描述特征如尺度不變特征變換SIFT(Scale-Invariant Feature Tranforma)、Haar-like、方向梯度直方圖HOG(Histogram of Oriented Gradient)等,均為目標檢測中常用的特征。Dalal等[2]將HOG與線性支持向量機SVM(Support Vector Machine)結合,建立了較早的行人檢測經典模型。Ren等[3]提出了稀疏編碼直方圖,從編碼特征的角度實現(xiàn)目標檢測。Vondrick等[4]將圖像的HOG特征進行可視化,發(fā)現(xiàn)了基于HOG特征的檢測方法中出現(xiàn)的錯誤正樣本問題。Felzenszwalb等[5,6]提出的部分形變模型DPM(Deformable Part Models)是基于部件的目標檢測方法,分別提取人的頭部、四肢和軀干這幾個部分的特征,并以整個身體為中心,根據四肢與軀干的距離判斷目標是否為行人,該方法的檢測精度達到了行人檢測的巔峰。曾接賢等[7]根據DPM模型,提出了針對交通場景的行人檢測。最近出現(xiàn)的區(qū)域選擇與卷積神經網絡相結合RCNN(Regions with Convolution Neural Network features)[8]檢測模型,首先選取大約2 000個區(qū)域,在這些可能區(qū)域中,用卷積神經網絡提取目標的特征,輸入圖像通過五個卷積層及對應的池化層后,得到一個多維的特征向量;接著用全連接層將這些特征結合,最后通過Softmax層分類輸出;其中卷積層采用的是AlexNet[9]網絡框架的卷積層,其底層實現(xiàn)環(huán)境為Caffe[10]框架。卷積神經網絡掀起一股深度學習熱潮,DPM的研究者也嘗試對其進行改進,將提取HOG特征這一步轉換為用深度金字塔層DeepPyramid[11]網絡層實現(xiàn),其精度和速率甚至超越了目前的RCNN。He等[12]提出了空間金字塔池化層網絡SPP-net(Spatial Pyramid Pooling net),對RCNN進行改進。上述基于RCNN模型的檢測方法,采用選擇函數(shù)選取大量候選區(qū)域,操作用時較多,He等進行進一步改進,提出Fast-RCNN(Fast-Regions with Convolution Neural Network)、Faster-RCNN[13,14],利用卷積神經網絡選取候選區(qū)域,將區(qū)域選擇與特征提取結合為一體,極大地提高了檢測速率,實現(xiàn)了實時檢測;Liu等[15]提出的單發(fā)多重檢測器SSD(Single Shot Multibox Detector),不再采用“二段式”中先選取區(qū)域、再提取特征的方法,而是直接從圖像中篩選檢測框,使得目標檢測性能比Faster-RCNN網絡更高。
以上行人檢測算法和框架,針對行人整體的檢測效果已難以超越,但在大場景下,人數(shù)多于兩人之后出現(xiàn)的遮擋,以及背景較為豐富時出現(xiàn)的誤檢等問題尚未解決。針對當前目標檢測所面臨的難題,本文所做的主要工作有:
(1)從INRIA、PASCAL-VOC、MICROSOFT COCO等公開數(shù)據集,以及從真實監(jiān)控視頻中抓取行人的頭和頭頸部,包括正面、側面以及背面作為訓練正樣本,訓練出H-Neck(Head-Neck)模型,同時搜集不包含行人的負樣本作為后期的測試集樣本。
(2)采用Faster-RCNN網絡原型實現(xiàn)檢測。先通過五層卷積層對目標實現(xiàn)多層豐富特征的提取,對最后一個卷積層提取的特征圖Feature Map,采用空間金字塔池化層池化,得到固定大小的特征向量,輸入全連接層,從時間上改善了網絡的性能。
(3)分析實驗結果:訓練得到的模型既可以檢測行人的頭部,解決部分遮擋,同時能夠通過行人頭部的朝向,來判斷行人的大致流動方向;該信息不僅有利于景區(qū)人流量統(tǒng)計,同時也能夠解決行人間遮擋嚴重時所出現(xiàn)的粘連問題。
(4)將本文實驗所得結果與目前行人檢測準確率最高的DPM模型檢測結果進行比較。
卷積神經網絡CNN(Convolution Neural Network)是一種前饋神經網絡,是當前計算機視覺包括圖像識別、圖形圖像處理等領域最有效的提取特征并實現(xiàn)分類的網絡結構。Faster-RCNN是一種深度神經網絡,也是當前精度較高的目標檢測方法。該網絡將區(qū)域建議網絡RPN(Region Proposal Network)和Fast-RCNN融為一體,利用RPN為Fast-RCNN的檢測提供位置信息,不再使用選擇函數(shù)Selective Search[8]篩選區(qū)域,且RPN與Fast-RCNN共享五個卷積層的輸出結果,使得檢測的速率無限接近實時。本文在Faster-RCNN的基礎上,加入空間金字塔池化層,對所有卷積層輸出的特征向量進行池化,采用的是多種尺度的池化窗口,每一個窗口都要對每一個目標區(qū)域進行計算,最后的結果為所有窗口的特征向量之和。
CNN中的隱藏網絡層數(shù),以及每層需要的神經元數(shù)這兩個重要參數(shù),是根據多次預測加上實驗驗證后得到的,針對大型的、多類別的圖像數(shù)據集中的目標進行檢測時,網絡層的參數(shù)越多,網絡性能越好。Faster-RCNN包含了兩種網絡結構:VGG16網絡[16]和ZF網絡[17]。VGG16網絡的層數(shù)遠多于ZF網絡的,其主要區(qū)別為卷積層數(shù)的劃分,圖1和圖2分別為VGG16網絡和ZF網絡的卷積層結構。由于本文檢測涉及到的樣本集不大,且實驗結果表明,本文數(shù)據集使用小型的ZF網絡和使用大型VGG16網絡訓練的模型并無差異,而VGG16網絡的訓練過程更加耗時,所以本文采用ZF網絡原型訓練模型,只使用五個卷積層提取目標特征。
在ZF網絡的前5個卷積層中,第一層包含96個大小為7*7*m的卷積核(m為輸入圖像的通道數(shù));第二層包含256個大小5*5*n的卷積核(n表示當前卷積層的輸入通道數(shù));第三層包含384個3*3*n的卷積核;第四層包含384個3*3*n的卷積核;第五層包含256個3*3*n的卷積核。后面三層的每一層之后都加入激活函數(shù)層處理輸出結果;該卷積層結構與AlexNet[18]相似,但每一層的卷積核數(shù)量不同。
合適的激活函數(shù)有利于加快算法的收斂速度,最常用的也是本文網絡中運用的激活函數(shù)為:ReLu(Rectified Linear unit)函數(shù),如公式(1)所示。
φ(x)=max(0,x)
(1)
激活函數(shù)主要作用于卷積層的輸出值,將線性分類器轉換為可以對更復雜目標分類的非線性函數(shù)。
Figure 1 Convolutional layers of VGG16圖1 VGG16網絡的卷積層
Figure 2 Convolutional layers of ZF圖2 ZF網絡的卷積層
2.2.1 DPM
DPM是當前針對行人檢測精度最高的模型,該方法改進了對行人整體提取HOG特征的思想,將人體拆分成軀干、頭部和手臂四個部分,提取每一個部分的HOG特征,以軀干為中心,稱其為ROOT,其余部位稱為Parts,并計算ROOT到各個Parts之間的距離分數(shù),經實驗得出分數(shù)閾值,若手臂和頭到軀干的距離分數(shù)在閾值之內,則判斷目標為行人。利用DPM模型實現(xiàn)行人檢測時提取的特征可視化如圖3所示。
Figure 3 Feature visualization based on the DPM model圖3 DPM行人檢測模型的特征可視化結果
2.2.2 行人頭頸(H-Neck)模型
行人檢測主要面臨的兩大難題分別是檢測用時問題以及由于遮擋出現(xiàn)的誤檢、漏檢問題。隨著深度學習一系列目標檢測方法的崛起,如SSD、Faster-RCNN等,檢測的實時性已不再是難題。對于遮擋問題,主要出現(xiàn)在常見的行人檢測中,大場景下多個人相互遮擋,姿態(tài)各異,無論是DPM還是當前深度學習的方法,都不能將被遮擋的行人檢測出來。視頻監(jiān)控中出現(xiàn)較多的遮擋情況是行人的某些身體部位被擋住,如分別走在前后的行人,只能看見其中一個人的整個身體,而另一人下半身幾乎全被遮擋;或者是多人坐在一起時,某些人大部分身體被遮住,只能看見頭部;其他情況如被其他物體遮擋等,都是大場景下常見的遮擋類型。若行人頭部已被遮擋完全,則只能結合檢測和跟蹤來識別。本文提到的模型主要解決行人的頭頸部位被遮擋的情況,模型可視化如圖4所示。
Figure 4 Visualization of the H-Neck model 圖4 行人頭頸模型的可視化結果
2.2.3 不同方向行人頭部(DD-Head)模型
大場景下視頻背景較為復雜,目標數(shù)量眾多,行人姿態(tài)各異,目標精確跟蹤始終是計算機視覺領域的一個巨大挑戰(zhàn)。例如在旺季的景區(qū),只能用普通“人頭計數(shù)”方法統(tǒng)計行人數(shù)量,跟蹤起來十分困難。本文通過對正面、側面、背面的行人頭部建模,得到不同方向頭部DD-Head(Different Direction-Head)模型,運用該模型,行人運動的方向得到較為準確的判斷,對于后續(xù)的跟蹤研究而言,明確前進方向后,運用該模型也可以減少行人靠近時出現(xiàn)的跟蹤錯誤。行人正面、背面、側面的頭部示例如圖5所示。
Figure 5 Examples of people’s head in different directions圖5 不同方向的行人頭部示例
本文的訓練樣本主要來源于INRIA行人數(shù)據庫、PASCAL-VOC數(shù)據庫以及從攝像頭錄取下來的真實視頻中截取的圖片樣本。樣本需符合大場景兩人及兩人以上同時出現(xiàn)的情況。分別截取行人正面、側面、背面的頭頸(H-Neck)部位作為訓練正樣本,同時也將整個行人作為正樣本之一;從三個數(shù)據庫中篩選5 000張圖片,樣本像素大小分布在100~1 900pix不等。根據訓練需求,將樣本中的目標信息轉換為文檔保存。為了避免過擬合現(xiàn)象,在五個卷積層以及池化層之后的第一和第二個全連接層后使用Dropout方法。神經元由卷積之后得到的特征集(Feature Map)組成,卷積神經網絡每一層都會產生大量神經元(Neurons),特征集輸入到全連接層后的計算公式為公式(2)和公式(3):
(2)
(3)
(4)
(5)
經過五個卷積層之后,本文采用SPP(Spatial Pyramid Pooling)處理卷積的最后結果,SPP結構如圖6所示。根據圖片大小選取多個尺度、不同大小的池化窗口,分別對卷積之后產生的Feature Map池化,每個窗口都要對圖像中所有目標進行池化,因此得到的是相同維數(shù)的向量,將所有窗口的結果相加,由此得到一個固定大小和維數(shù)的向量,接著輸入到fc6,即第六個網絡層,也是第一個全連接層,全連接層的作用為將卷積層所提取的特征映射到樣本標記空間,將不同特征與類別相對應。若按圖6中的方式劃分池化窗口,池化后輸出的結果為(1*1+2*2+…+n*n)*256維的向量。在Faster-RCNN網絡結構中,F(xiàn)ast-RCNN與RPN交替對目標進行訓練,共分為兩個階段,每個階段Fast-RCNN迭代30 000次,RPN迭代60 000次;整個網絡結構如圖7所示。訓練過程運行環(huán)境為Ubuntu14.04,Matlab 2014a,GPU版本為GTX1080。
Figure 6 Spatial pyramid pooling layer圖6 空間金字塔池化層結構
Figure 7 Net structure of ZF圖7 ZF的網絡結構
根據輸入的測試圖片,可以捕獲卷積神經網絡提取特征的中間過程,以下為測試階段,輸入一張測試集樣本中的圖片,經過多個卷積層提取特征后,并輸入到全連接層,在網絡最后一層輸出針對該圖像的檢測結果。將第一個卷積層的卷積核分布進行可視化,結果如圖8b所示。
Figure 8 Original image and the convolution kernel distribution of the first convolutional layer圖8 原始輸入圖片及網絡第一個卷積層的卷積核分布
其中圖8b包含了96個小圖像,代表96個不同的卷積核,在本文的網絡中每一個核大小為7*7*3;卷積核則是提取特征向量的基礎單元。
對比表1的測試結果,并結合實驗過程可知:DPM對于大場景人數(shù)較少時的行人檢測準確度達到80%以上,本文H-Neck模型的檢測準確率達到85%以上,樣本中行人姿態(tài)復雜,不僅有直立行走,也有騎馬、坐姿、騎車等情況。DPM更適合于檢測直立行走的人,且對于行人大部分身體輪廓明顯時的檢測效果更好。若出現(xiàn)行人間的遮擋或是物體遮擋行人的情況,本文提出的頭頸模型(H-Neck)能更加準確地檢測到人的頭部,由此檢測到行人。實驗結果同時表明:在無人的情況下即樣本中可能包含其他物體,如動物、植物等,DPM和H-Neck模型都只產生很少的誤檢,判斷是否存在人的準確率能達到95%以上。
Table 1 Precision comparisonbetween DPM and H-Neck models
由圖9所示的實驗對比結果可知,兩者對于場景中是否有人的判斷準確率都達到95%以上。
Figure 9 P-R figure of DPM and H-Neck models圖9 DPM模型與H-Neck模型的P-R圖
為了驗證H-Neck模型的穩(wěn)定性,將其與更多行人檢測算法作比較,對1 500張圖片組成的測試樣本集分別再用HOG+SVM、DPM進行檢測,其檢測結果和本文H-Neck模型的檢測結果準確率如表2所示。
Table 2 Detection result comparison among different models
表2中,除了本文的H-Neck模型,其他幾個算法的模型都是針對行人整體的檢測,在訓練和測試時均使用完全相同的樣本集。由實驗結果可以看出,HOG結合SVM的方法檢測效果不佳,檢測準確率遠小于其他方法。其原因一方面是由于HOG特征自身的特點,易產生錯誤的正樣本;另一方面則因為該方法對訓練數(shù)據的需求量大,使用本文訓練集數(shù)據不足以得到穩(wěn)定的檢測模型。
對大致包含500個行人的樣本,用本文DD-Head模型實現(xiàn)行人朝向的檢測,并根據檢測結果判斷人群流動方向,檢測結果準確率如表3所示。
Table 3 Detection precision of different head directions
由表3知,在人群密集情況下,DD-Head模型對行人正面朝向的檢測準確率較高,而側面檢測準確率較低,原因是行人側面和正面的差異很小,提取特征時容易混淆正面和側面,而相對于這兩者而言,背面的特征更加獨特,只有當圖像比較模糊時,才會出現(xiàn)漏檢的情況。
本文沒有使用Faster-RCNN網絡原有的池化層,只在五個卷積層之后使用一個空間金字塔池化層對特征向量進行處理。將樣本投入新的網絡結構中訓練,在保證訓練準確率的同時,也能保證網絡的訓練速率。圖10為DPM與本文H-Neck模型的部分實例檢測結果對比。
Figure 10 Partial detection results of DPM and H-Neck models圖10 DPM與H-Neck模型的部分檢測結果
為了解決人群密集時出現(xiàn)的行人身體部分遮擋造成的誤檢問題,本文提出了頭頸(H-Neck)模型,與原來的DPM模型檢測結果對比,可以在人與人相互遮擋至只剩下頭部時,能準確地檢測到行人頭部;同時,本文針對行人頭部的各個方向建模(DD-Head),能夠較為準確地判斷行人行進方向,更好地實現(xiàn)景區(qū)人流量統(tǒng)計;本文同時基于深度卷積神經網絡Faster-RCNN框架,結合SPP-net方法的思想,用空間金字塔池化層替換原有池化層,改善了網絡的訓練速率。雖然針對本文數(shù)據集進行目標檢測的準確率較高,但當行人中遮擋情況更為密集復雜,以及行人戴上帽子等情況下,本文的方法仍無法準確檢測到目標,這都有待于后期對神經網絡進一步地研究和優(yōu)化。