張傳偉,曾虹鈞,楊萌月,李 波,陳尚瑞
(西安科技大學 機械工程學院,西安 710054)
行人檢測[1]的目的是定位圖像中的所有行人。在很多實際應用中,行人檢測的速度與準確率同等重要。雖然深度學習的行人檢測方法已經實現(xiàn)了較高的準確率,但其即便使用高端的GPU,檢測速度仍然很低。而提升決策樹(Boosting Decision Tree,BDT)[2]方法在該領域具有很強的競爭力,能夠在保證檢測準確率的同時,提高檢測速度。
Caltech行人數(shù)據集[3]中的行人樣本高度范圍為7 像素~476像素,并且經常會表現(xiàn)出大范圍的尺度變化,在行人檢測過程中會構成類內差異。因此,如何檢測不同尺度的行人已成為行人檢測的關鍵問題。
不同尺度的行人在原始圖像中具有不同的像素。如果一個特征在不同尺度上保持不變,那么這一特征可用于多尺度檢測。然而,許多特征都是尺度多變的,這意味著在大尺度行人中提取的特征與在小尺度行人中提取的特征不同,即便是被廣泛使用的方向梯度直方圖(Histogram of Oriented Gradient,HOG)也存在這一問題[4]。為了保證尺度不變性,可構建圖像金字塔并計算金字塔每層的特征映射,然后用訓練好的行人模型進行滑動窗口檢測。由于行人尺度范圍較大,金字塔需要包含很多層,因此特征金字塔的構建需要消耗大量時間。
為避免構造特征金字塔,研究者嘗試使用單尺度特征映射實現(xiàn)多尺度行人檢測,并取得了重要進展[5]。本文在MRFC[6]的基礎上提出一種基于多分辨率濾波通道的行人檢測方法。使用尺度感知池進行采樣,并利用差異積分通道(DICs)[7]豐富特征獲得更好的感受域對應性。同時,使用軟決策樹在BDT級聯(lián)中構建弱分類器,軟決策樹的2個分支分別用于大尺度和小尺度實例,以解決尺度多變的問題。
多尺度檢測主要利用尺度的不變性。如果特征尺度不變,則可以使用單尺度特征映射來執(zhí)行檢測,再通過調整模型的大小來檢測多尺度目標。但是,并非所有用于行人檢測的特征都是尺度不變的,且密集圖像金字塔會導致計算成本較高。FPDW[8]使用指數(shù)比例定律計算稀疏特征金字塔和近似中間特征尺度,然而,這種策略通常會導致準確度明顯下降。VeryFast[9]沒有使用特征金字塔,而是根據不同行人的尺度和近似中間分類器尺度,使用指數(shù)比例定律來訓練一個稀疏分類器金字塔,將測試時間轉換為訓練時間。FASCF[10]使用特征金字塔和分類器金字塔進行多尺度檢測。由于BDT能夠處理類內差異并提供良好的結果,因此一些研究者只使用單尺度特征映射,訓練單個行人模型。
為了實現(xiàn)更精確的感受域對應性,本文借鑒空間金字塔池(Spatial Pyramid Pooling,SPP)[11-12]的思想,在每個分區(qū)中進行特征合并,再對特征映射進行劃分,從而將各種尺寸的特征映射轉換成固定長度矢量。因為全連接層需要在具有固定長度的矢量中饋送,所以其在基于卷積神經網絡(Convolutional Neural Network,CNN)[13]的行人檢測中非常有用,是Fast-RCNN和Faster-RCNN[14]檢測器的關鍵組成部分。不同于CNN的最大池化方式,本文使用平均池化來計算積分圖。
MRFC是一個基于CPU的解決方案,其僅使用單一尺度特征圖和單個行人模型進行檢測。MRFC中使用的基本特征映射是10個LUV + HOG通道。對原始圖像計算10個通道后,再對10個通道連續(xù)應用3×3方框進行6次濾波,得到70個通道。該過程利用6個具有不同標準偏差σ的卷積核對原始的10個通道進行處理,然后將2個邊緣濾波器(垂直和水平)應用于每個通道中,總共產生210個通道。
為了檢測多尺度行人,在計算的通道上滑動不同尺度的行人模型,通過網格化方式在通道中進行采樣以提取分類特征。網格空間適應于窗口大小,如圖1(a)所示,通過這種方式使不同尺度的行人獲得相同數(shù)量的特征。在訓練時,不同于傳統(tǒng)方法將行人尺寸調整到固定尺寸,MRFC從圖像的原始行人尺寸中提取特征。在測試時,無需為多尺度檢測計算圖像金字塔,而是直接計算這210個通道。得到多分辨率濾波通道之后,利用類似于ACF檢測器的單像素索引進行特征提取。因此,MRFC檢測器的速度非??臁5?MRFC方法的最初實現(xiàn)存在一些缺點,感受域對應性問題就是其中之一。如圖1(a)所示,在MRFC的實現(xiàn)過程中,特征的感受域不會隨著行人的大小而變化。因此,小行人的特征感受域與大行人的特征感受域不對應。在這種情況下,大行人的鼻子特征可能對應于小行人的整個面部,這是不合理的。理想的情況是特征的感受域隨行人的尺度而改變,如圖1(b)所示。
圖1 MRFC方法中的感受域對應性
為了解決上述問題,本文采用類似于SPP的方法,將檢測窗口劃分成m×n個單元,并通過在一個或多個單元中的平均池來計算特征,根據檢測窗口的大小調整單元的面積,從而使特征感受域更好地對應。本文使用23×11個單元格,池化區(qū)域被約束為不大于4×2個單元格,從而為每個特征映射出1 806個特征。在MRFC中,通過不斷地卷積形成7個不同大小的感受域。圖2給出本文方法的特征提取過程。其中,圖2(a)表示不同尺度的特征映射被劃分為相同數(shù)量的單元格,其大小隨行人大小而變化,圖2(b)通過由一個或多個單元格組成的不同區(qū)域的平均池提取特征,圖2(c)中的上半部分表示特征梯度映射中的池化等效于計算2個移位池化區(qū)域的差異,其效果與非相鄰特征(Nor-Neighboring Features,NNF)類似,下半部分給出DICs中的一些判別特征。
圖2 本文方法的特征提取過程
本文使用10個基本通道和20個梯度通道,總共產生30個特征進行映射。與其他類型的卷積特征映射不同的是,本文方法可以使用流式SIMD擴展[15]計算特征梯度映射。為了快速地進行平均池化,在檢測前預先計算積分映射,然后在與區(qū)域大小無關的恒定時間內計算區(qū)域中的特征值和,即為每一個特征映射(10個基本特征映射和20個梯度特征映射)計算積分映射,并根據卷積換向定律得到式(1)。
Ω(x,y)*G(x,y)*u(x,y)=Ω(x,y)*u(x,y)*G(x,y)
(1)
其中,Ω是特征映射,G(x,y)是梯度濾波器,u(x,y)是階躍函數(shù)。積分可以作為步進函數(shù)的卷積,本文只需計算原始的10個特征映射的積分映射,然后在其基礎上計算20個梯度映射。圖3給出積分圖計算的加速策略示意圖。
圖3 積分圖計算的加速策略
在DICs中提取的特征與NNF類似[16],這些特征已被證明對行人檢測有效。NNF與同一水平面中的非相鄰矩形區(qū)域不同,相較于NNF,本文的DICs的優(yōu)越性主要表現(xiàn)在以下3個方面:
1)NNF使用固定的模型,其需要圖像金字塔,而本文不構造圖像金字塔,節(jié)省了大量計算時間。
2)NNF需要對特征計算2個區(qū)域的平均池,而本文只需要對一個區(qū)域計算平均池。
3)NNF只考慮同一水平面中的2個區(qū)域,而本文還考慮了在同一垂直面中的2個區(qū)域,這對于頭、肩和腳等部位的檢測是非常有用的。
根據定義,本文首先求出區(qū)域中的所有特征值,然后除以區(qū)域大小來計算平均池特征。為了提高效率,本文不在測試時執(zhí)行分割操作,而是提前更改每個決策樹中單層決策樹的閾值。盡管本文只訓練一個檢測器,但是可將這個檢測器切換到n個檢測器中,n為模板尺度的數(shù)量。這些檢測器有相同的特征指標,但閾值不同,其閾值需要乘以它們所對應的區(qū)域大小來獲得。
本文使用軟決策樹在BDT中構建弱分類器,其中,樹的2個分支分別處理大尺度和小尺度的行人。在本文方案中,所有樣本都參與單個BDT級聯(lián)的訓練。雖然硬決策樹中使用的硬決策節(jié)點確定性地將樣本x指向其中的一個子節(jié)點,但軟決策節(jié)點會將樣本x指向其左右分支,其概率分別為P(L|x)和P(R|x),具體計算如式(2)、式(3)所示。
(2)
P(R|x)=1-P(L|x)
(3)
軟決策節(jié)點的輸出通過其2個分支輸出的加權和來計算,如圖4所示。在測試時,每個實例必須通過所有中間節(jié)點,直至到達葉節(jié)點。該方案僅適用于單個決策樹,對于具有數(shù)千個樹的BDT,其計算成本較高。因此,本文只使用根節(jié)點的軟決策節(jié)點對其進行簡化。在處理多尺度檢測問題時,利用左分支對大尺度行人進行分類,而右分支負責小尺度行人分類。
圖4 硬決策樹和軟決策樹的比較
圖4給出硬決策樹和軟決策樹的比較,其中,藍色、綠色和紅色節(jié)點分別表示硬決策節(jié)點、軟決策節(jié)點和葉節(jié)點,箭頭表示樣本權重的流動。由圖4(a)可知,硬決策樹由硬決策節(jié)點和葉節(jié)點組成,對于給定的樣本,硬決策節(jié)點將其所有權重指向其子節(jié)點之一。圖4(b)表示軟決策樹的根節(jié)點是一個軟決策節(jié)點,它根據樣本大小將樣本權重指向兩個子節(jié)點,給定一個大樣本,軟決策節(jié)點將更多的權重引導到它的左分支(左分支的箭頭比右分支的箭頭粗)。圖4(c)表示具有小樣本的軟決策樹,軟決策節(jié)點將更多的權重指向它的右分支。
在樣本x指向根節(jié)點的2個分支之后,通過對2個分支求值可以得到P(y=1|x,L)和P(y=1|x,R)。其中,y∈(1,+1)是樣本標簽。整個軟決策樹給出的x為正樣本的概率為:
P(y=1|x)=P(L|x)P(y=1|x,L)+
P(R|x)P(y=1|x,R)
(4)
本文使用RealSub[17]來訓練BDT,其葉節(jié)點不輸出概率,而是輸出半對數(shù)比,如式(5)所示。
(5)
其中,p(x)是葉節(jié)點中正樣本權重的一部分。為了得到式(4)中的P(y=1|x,L)和P(y=1|x,R),需要用式(5)的反函數(shù)將f(x)轉換成相應的概率,具體如下:
(6)
在使用式(3)得到P(y=1|x)后,通過式(5)將其轉換為對應的半對數(shù)比。在訓練過程中,當為每個樣本獲取半對數(shù)比時,將樣本權重更新為常用的RealBoost,并在訓練后使用式(6)將所有樹節(jié)點的半對數(shù)比轉換為其對應的概率,以提高訓練效率。
與構造密集金字塔的傳統(tǒng)方法相比,使用單尺度特征映射的優(yōu)點在于,其在特征映射計算階段節(jié)省了大量的計算成本。然而,除了特征映射計算之外,行人檢測還存在另一個耗時的過程,即滑動窗口分類。本文采取基于區(qū)域平均池的方法,與ACF和LDCF[18]等其他檢測器相比,此階段的計算成本較高。因此,本文的單尺度特征映射必須采取有效的滑動窗口分類策略,否則其優(yōu)勢非常有限。為了驗證使用單一尺度特征圖的優(yōu)勢,本文將兩種簡單的加速滑動窗口分類策略進行對比。
對于固定車載相機拍攝的圖像,由于地平面約束(Ground Plane Constraint,GPC),一定尺度的行人將不會出現(xiàn)在某些位置,如圖5所示。其中,圖5(a)表示行人可能被實線框框住,但不可能被虛線框框住。圖5(b)表示在Caltech訓練集中,行人的可能位置(h,y)被兩條直線限定。
圖5 GPC圖解
目前,GPC已被廣泛用于行人檢測,其核心思想是在車載相機的一些有效假設下,行人的投影高度h與垂直位置y呈現(xiàn)線性關系。GPC的一些后處理通過支持向量機(Support Vector Machine,SVM)完成。這種方法旨在提高檢測準確率,但其會增加額外的計算成本。本文為了加快滑動窗口分類的速度,在檢測階段只掃描行人可能出現(xiàn)的位置,以節(jié)省計算成本。同時,該方法對消除某些誤報也有積極的作用。
對于480像素×640像素的圖像,其有330 000多個候選窗口(不同尺度、不同位置)需要被分類,其中大部分屬于背景區(qū)域。本文真正需要的是峰值得分窗口,即具有局部最高得分的窗口。在非最大抑制(Non-Maximum Suppression,NMS)[19]之后,峰值得分窗口將抑制其鄰域中具有較低檢測分數(shù)的窗口,本文不需要評估所有候選窗口,只需要確保評估所有峰值得分窗口,以降低計算成本。
由于附近位置處的檢測器響應是相關的,因此峰值得分窗口的相鄰位置通常也具有正響應,說明存在峰值得分窗口的支撐區(qū)域(Region of Support,ROS)。對于BDT級聯(lián),ROS的大小隨著弱分類器的增加而減少。
基于上述分析,本文首先僅評估步長為3的稀疏網格G3。如果G3中的窗口通過級聯(lián)的k個階段,則觸發(fā)其3×3鄰域中的每個窗口進行評估,如圖6所示。在圖6中,假設窗口P是峰值得分窗口但不屬于G3,則在3×3鄰域中存在窗口x1∈G3。窗口x1由于ROS而具有正分數(shù),P被x1觸發(fā)。由于G3僅占所有滑動窗口的1/9,觸發(fā)窗口的數(shù)量較少,因此會大幅降低計算成本。
圖6 稀疏網格檢測策略示意圖
在圖6中,首先評估稀疏網格(x1,x2,x3,x4)[20],假設P是峰值得分窗口,其ROS由虛線圓表示。窗口x1位于ROS中,因此它將通過BDT級聯(lián)的k個階段,并且觸發(fā)3×3鄰域中的每個窗口(圖6中黃色圓圈)。當k增大時,ROS和觸發(fā)窗口變小,檢測速度變高。然而,k增大容易造成峰值得分窗口丟失,從而降低準確性。在本文實驗中,取k=20可以實現(xiàn)速度和準確率的平衡。
本文方法既使用了尺度感知和軟決策樹,又結合了地平面約束和稀疏網格的加速策略,并通過地平面約束和稀疏網格降低滑動窗口分類的計算成本。為了方便描述,下文用SAP、SDT、GPC和SGD分別表示尺度感知池、軟決策樹、地平面約束和稀疏網格檢測算法。在實驗中,如果真實目標邊界框(bg)與檢測到的邊界框(bd)交集與并集之比(IoU)大于閾值,則將bd視為真值,IoU的計算過程如下:
(7)
本文將IoU閾值設置為0.5,并與Caltech的結果進行漏檢率比較。使用每個圖像的假正例(False Positives Per Image,FPPI)曲線作為行人檢測的評估指標。計算9個FPPI點處的平均漏檢率,并將這些點在10-2~100的對數(shù)空間中進行均勻間隔,最終得到的對數(shù)平均漏檢率即可作為評價各種檢測方法的標準。
將本文方法與VJ、HOG+SVM、HOGLBP、Multifu+Motion、WordChannels、ACF-Caltech、SCF+AlexNet和MRFC + Semantic等其他具有代表性的方法進行比較。其中,WordChannels和MRFC + Semantic與本文方法相同,均基于單尺度特征映射,所以在對比時更具說服力。
本文實驗的軟硬件配置如下:圖像視頻處理平臺為華碩臺式機,CPU為Inter Core i7,頻率為2.5 GHz,GPU為NVIDIA GTX1080,120 GB固態(tài)硬盤,內存大小為4 GB,使用OpenCV框架,并參考該開源項目上一些層次結構的具體實現(xiàn)方式。
Caltech行人數(shù)據集是目前規(guī)模最大,使用范圍最廣的行人檢測數(shù)據集。它由250 000個640像素×480像素(大約137 min)的視頻組成,分為11個樣本,前6個樣本用于訓練,后5個樣本用于測試。標準評估在測試集每個視頻的30幀處執(zhí)行,總共產生4 024個圖像。
從每4個連續(xù)幀中抽取一個圖像作為訓練圖像。由于性能評估僅需要檢測高于50 像素的行人,因此將最小的模型尺寸設置為64像素×32像素。為了提高效率,將通道降采樣2倍,則最小模型的特征映射大小為32像素×16像素。因為訓練數(shù)據較多,所以本文在每次自舉循環(huán)中使用兩倍數(shù)量的弱分類器。
圖7給出漏檢率隨FPPI變化的曲線,對于每個FPPI點,漏檢率越低越好。可以看出,在深度學習方法中,SCF+AlexNet的漏檢率為23.09%,而在非深度學習方法中,基于單一尺度特征映射的WordChannels和MRFC+Semantic的漏檢率分別為42.30%和16.84%,而本文方法的漏檢率為10.11%,得到整個FPPI范圍內的最低漏檢率,優(yōu)于其他所有的對比方法。
圖7 漏檢率隨FPPI變化的曲線
此外,本文還在小尺度、不規(guī)則寬高比和部分遮擋的條件下進行實驗。將小尺度行人高度設置在55像素~85像素,結果如圖8所示??梢钥闯?本文方法的漏檢率低至10.17%。將寬高比定義為W/H=0.43±0.1(W和H分別是行人寬度和高度),W/H的分布集中在0.43,其檢測結果如圖9所示,可以看出,本文方法的漏檢率為14.35%,低于WordChannels和MRFC+Semantic方法。部分遮擋表示行人被遮擋的面積不超過40%,其檢測結果如圖10所示。在部分遮擋條件下,本文方法的漏檢率為17.01%。在上述3個條件下,遮擋對于多尺度行人檢測的影響較大,但是從整體來看,本文方法的檢測準確率在所有對比實驗中最高。
圖8 小尺度條件下的檢測結果
圖9 不規(guī)則寬高比條件下的檢測結果
圖10 部分遮擋條件下的檢測結果
為了進一步評估本文方法的檢測效率和準確率,分別對4個組件進行不同的組合,結果如表1所示。從表1可以看出,單使用SAP所達到的準確率和檢測速度最低。將SAP作為基準,分別觀察其他3個組件對Caltech數(shù)據集所產生的效果可以發(fā)現(xiàn),SAP+SDT組合的準確率比SAP高4.91%,說明尺度感知和軟決策樹的結合可以有效提高檢測準確率。而當結合SAP+SDT+GPC+SGD 4個組件時,檢測速度也得到提高,可以達到15.68 frame/s。由此說明,本文方法不僅能夠實現(xiàn)對多尺度行人的快速檢測,也可以達到較高的準確率。
表1 在不同組合下的準確率和檢測速度比較
為了測試本文方法的實時性,使用高清攝像頭拍攝的校園內自然真實場景進行實驗,場景主要是教學樓前的走道。在訓練得到的模型中輸入一段視頻進行實驗,其中部分幀的檢測結果如圖11所示??梢钥闯?所有幀中的行人目標都能夠完整地檢測出來,且概率較大,目標邊界恰好框出目標。
圖11 部分幀的檢測結果
然而,從圖11(a)可以看出,采用SAP+SDT+GPC+SGD相結合的算法也存在一些誤檢測,這是因為非深度學習在提取特征時,會將一個亮度很大的圓形區(qū)域視為人頭,并將其下連接的區(qū)域視為身體和腿,因此出現(xiàn)了誤檢測的情況。由圖11(b)~圖11(d)可知,如果行人處于較遠的位置或者騎車經過時,檢測窗口未能全部準確識別出來,這些需要在后期研究中進行改進。
為了提高多尺度行人檢測的準確性,本文受MRFC的啟發(fā),利用單尺度特征映射對多尺度行人檢測問題進行研究。對MRFC的缺點進行分析,并分別通過尺度感知池和軟決策樹改善感受域對應性和尺度不變性,使用地平面約束和稀疏網格來降低計算成本。在Caltech數(shù)據集上的實驗結果表明,該方法可實現(xiàn)實時有效的行人檢測,與其他先進的檢測方法相比,采取SAP+SDT+GPC+SGD檢測器不僅可以實現(xiàn)快速檢測并且檢測準確率較高。下一步將在,SAP+SDT+GPC+SGD檢測器的基礎上對多尺度行人的實時性檢測問題進行研究,以提高算法的實時性能。