,, ,
(杭州電子科技大學(xué) 自動(dòng)化學(xué)院,杭州 310018)
移動(dòng)機(jī)器人救援是指在已知或未知的環(huán)境中搜索待救援目標(biāo)人員,主要應(yīng)用地震、礦難、核災(zāi)難等領(lǐng)域中的輔助搜救工作[1]。在災(zāi)后的搜救工作中,對(duì)人體進(jìn)行檢測(cè)是任務(wù)的關(guān)鍵,基于機(jī)器視覺(jué)的識(shí)別方法是人體識(shí)別的關(guān)鍵手段之一。由于災(zāi)難中的被困人員膚色通常被灰塵遮蔽,不適合利用膚色檢測(cè)來(lái)識(shí)別人體[2];而且被困人員的體溫被附近熱源干擾,不適合利用基于紅外溫度的人體檢測(cè)[3]。非完整人體特征檢測(cè)是指基于部分人體特征的人體檢測(cè)技術(shù),如:手勢(shì)識(shí)別[4]、人臉識(shí)別等[5],然而這些基于位姿的非完整人體檢測(cè)方法不適于災(zāi)難環(huán)境。
針對(duì)復(fù)雜環(huán)境下的人體檢測(cè),需要定義好一些特征來(lái)區(qū)分人體和背景,最直接的辦法就是在圖像中根據(jù)人體典型部位的形狀特征對(duì)人體進(jìn)行識(shí)別。在根據(jù)人體形狀特征進(jìn)行人體匹配時(shí),特征提取和分類器設(shè)計(jì)是可靠的人體檢測(cè)的兩個(gè)關(guān)鍵步驟。目前關(guān)于特征提取的方法主要有HOG特征[6]、Haar特征[7]、Shapelet特征[8]和Edgelet特征[9]等。但是由于在復(fù)雜環(huán)境下的人體檢測(cè),使用單一的特征檢測(cè)方法往往很難適應(yīng)復(fù)雜環(huán)境,針對(duì)這種情況,國(guó)內(nèi)外學(xué)者和研究人員也提出了多種特征信息融合的方法。例如文獻(xiàn)[10]中提出了基于頭部和腿部特征組合的方法進(jìn)行人體檢測(cè);文獻(xiàn)[11]中使用使用HOG和Edgelet兩種局部特征,并通過(guò)SVM與Adaboost分別訓(xùn)練各自的分類器,也取得了比較好的結(jié)果。
目前針對(duì)人體輪廓進(jìn)行特征匹配比較主流的算法是HOG與SVM(支持向量機(jī))進(jìn)行結(jié)合,這種算法的缺點(diǎn)是檢測(cè)過(guò)程非常緩慢。通過(guò)多種特征組合或多特征方法融合可以提高檢測(cè)精度,但是如何快速高效的提取人體典型部位的有效特征并且合理的選擇特征組合仍然是一個(gè)難題。為了解決以上問(wèn)題,提出了一種先構(gòu)造相交檢測(cè)窗口,重新檢測(cè)目標(biāo)圖像塊內(nèi)特征,并結(jié)合基于子單元差值計(jì)算塊內(nèi)特征的方法,從而實(shí)現(xiàn)了基于優(yōu)化HOG特征計(jì)算的非完整人體特征檢測(cè)。
HOG 與SVM組合的人體檢測(cè)算法的成功在于其區(qū)分HOG特征和基于邊緣的線性SVM分類器。HOG 與SVM算法組合主要研究輪廓與背景的對(duì)比[12]。不同的人可能有不同的穿著外觀,但他們的輪廓是相似的。因此,輪廓對(duì)于區(qū)分人和非人是有區(qū)別的。HOG與SVM算法組合概述如下。
輸入:按比例縮放的輸入圖像。滑動(dòng)檢測(cè)窗口的大小為64×128。滑動(dòng)步長(zhǎng)d(例如d= 8)。
輸出:大小為64×128的子圖像的位置,設(shè)定這些子圖像包含人類。
步驟1:對(duì)于整個(gè)圖像的每個(gè)像素,計(jì)算梯度▽f(x,y)的大小|▽f(x,y)|和方θ(x,y)。
步驟2:從上到下,從左到右,用64×128窗口掃描整個(gè)圖像。從檢測(cè)(掃描)窗口覆蓋的子圖像中提取3 780個(gè)HOG特征,然后將傾斜SVM分類器應(yīng)用于高維HOG特征向量,將子圖像分為人和非人兩類。
HOG提取的第一步是計(jì)算梯度▽f(x,y)的大小|▽f(x,y)|和方向θ(x,y)。HOG提取的第二步是從方向和幅度導(dǎo)出方向直方圖。檢測(cè)窗口的大小是64×128,被檢測(cè)窗口覆蓋的子圖像被劃分為7×15個(gè)重疊區(qū)塊。每個(gè)塊由4個(gè)單元組成,每個(gè)單元有8×8像素,如圖1(a)。在每個(gè)像元中,方向直方圖有9個(gè)像元,它們對(duì)應(yīng)于方向i×π×9,i=0,1....8 ,如圖1(b)。因此每個(gè)塊包含4×9 = 36個(gè)特征,每個(gè)64×128的子圖像包含7×15×36 = 3 780個(gè)特征。
三線性插值被應(yīng)用于計(jì)算HOG特征可以減少混疊效應(yīng)[12],三線性插值可以平滑地將梯度分布到一個(gè)區(qū)塊的4個(gè)儲(chǔ)存格。在圖2中,塊的4個(gè)單元的中心為(xi,yi),對(duì)應(yīng)于4個(gè)單元的4個(gè)直方圖由h(xi,yi,θ)表示,其中i=1,2,3,4,θ∈(0×π/9,1×π/9,...,8×π/9)。對(duì)于給定的梯度▽f(x,y),它的方向于給定的梯度▽f(x,y),它的方向θ(x,y)的范圍為(i×π/9,(i+1)×π/9),其中i是適當(dāng)?shù)恼麛?shù)。我們用θ1=i×π/9,θ2=(i+1)×π/9來(lái)描述這個(gè)范圍。
圖1 被檢測(cè)窗口的子圖像的劃分
圖2 每個(gè)塊的單元分布(每個(gè)單元的中心坐標(biāo)為(xi,yi),i=1,2,3,4。)
因此,三線性插值方法具體如下[8]:
h(xi,yi,θ1)←h(xi,yi,θ1)+
(1)
h(xi,yi,θ2)←h(xi,yi,θ2)+
(2)
其中:▽f(x,y)對(duì)h(xi,yi,θ1)和h(xi,yi,θ2)都有作用,dx=x2-x1,dθ=θ2-θ1,h(x1,y2,θ1),h(x1,y2,θ2),h(x2,y1,θ1),h(x2,y1,θ2),h(x2,y2,θ1)和h(x2,y2,θ2)都能以相同的方法計(jì)算。
SVM是一種基于邊緣的分類器。給定{xi,yi},i=1,...,N,yi∈{+1,-1},xi∈Rd線性支持向量機(jī)的目標(biāo)是尋找一個(gè)最優(yōu)的超平面WTX+b=0,從而獲得最大的幾何余量γ[13]:
(3)
其中:[·]表示兩個(gè)向量之間的內(nèi)積。如果訓(xùn)練樣本是線性可分的,則SVM的優(yōu)化問(wèn)題可以歸結(jié)為:
minw,b[w·w],yi([w·xi]+b)≥1,i=1,...,N,
(4)
如果訓(xùn)練樣本具有噪聲和異常值,則它們可能不是線性可分離的。為了抵抗噪聲和野值,引入松弛變量x1,得到相應(yīng)的2范數(shù)軟余量支持向量機(jī):
minw,b(w·w) +
(5)
其中:C是通過(guò)使用單獨(dú)的驗(yàn)證集或交叉驗(yàn)證技術(shù)確定的自由參數(shù)。
上述方程(1)和方程(2)被用來(lái)計(jì)算16×16塊內(nèi)的每個(gè)像素,但是計(jì)算每個(gè)檢測(cè)窗口的內(nèi)的3 780維HOG特征是耗時(shí)的,而且在縮放的圖像中存在大量的檢測(cè)窗口,因此總的計(jì)算時(shí)間是非常大的。
針對(duì)這種情況,我們通過(guò)一次計(jì)算基于塊的HOG特征并將其重用于在塊處相交的所有檢測(cè)窗口,從而節(jié)省重復(fù)計(jì)算相同特征快的時(shí)間,高效地計(jì)算基于塊窗口的HOG特征。
如圖3,對(duì)于兩個(gè)相鄰64×128的檢測(cè)窗口,如果如果兩個(gè)相鄰檢測(cè)窗口之間的步長(zhǎng)適當(dāng),則這兩個(gè)檢測(cè)窗口相交(如圖3深色和淺色虛線框?yàn)閮蓚€(gè)相交窗口),窗口內(nèi)的很多塊是共有的(如圖3箭頭所指方塊為共有的)。因此,獨(dú)立計(jì)算兩個(gè)相鄰檢測(cè)窗口中的HOG特征是多余的。下面所示的算法可以減少冗余。
輸入:按當(dāng)前比例縮放的輸入圖像?;瑒?dòng)檢測(cè)窗口的大小為64×128像素?;瑒?dòng)步長(zhǎng)d(例如d= 8)。塊有4個(gè)單元,塊的大小是16×16 像素。
輸出:大小為64×128的子圖像的位置,假設(shè)其中包含人體。
步驟1:對(duì)于整個(gè)圖像的每個(gè)像素,計(jì)算|▽f(x,y)|和θ(x,y)。
步驟2:從上到下,從左到右,用大小為16的塊窗口掃描整個(gè)圖像16×16和步長(zhǎng)d。提取來(lái)自每個(gè)塊4×9 =36維的HOG特征向量。
步驟3:從上到下,從左到右,用64×128的窗口掃面整個(gè)圖像和步長(zhǎng)d注意每個(gè)64×128檢測(cè)窗蓋包含7×15個(gè)塊。在步驟2中獲得每個(gè)塊含有36維HOG特征向量。將檢測(cè)窗口中的所有36維HOG特征向量疊加(而不是計(jì)算)得到7×15×36 = 3 780維特征向量。最后,將傾斜SVM分類器應(yīng)用于HOG特征向量,將子圖像分為人和非人兩類。
圖3 兩個(gè)相交檢測(cè)窗口
該算法假設(shè)兩個(gè)相鄰塊之間的偏移等于檢測(cè)窗口的掃描步長(zhǎng)d。該算法的核心由步驟2和步驟3組成。在步驟2中,圖3中的黑點(diǎn)(即塊中心)的36維特征向量?jī)H計(jì)算一次,并且將在步驟3中使用。在步驟3中所有現(xiàn)有的36維HOG特征向量對(duì)應(yīng)一個(gè)64×128個(gè)檢測(cè)窗口串聯(lián)成7×15×36 =3 780維HOG特征向量?;趬K的HOG特征僅計(jì)算一次,但可以對(duì)所有相交檢測(cè)窗口重復(fù)使用。這就大大縮短了計(jì)算時(shí)間,提高了檢測(cè)效率。
上一節(jié)著重于計(jì)算檢測(cè)窗口的HOG特征,前提是給定塊中的HOG特征,本節(jié)我們提出如何加快計(jì)算每一個(gè)塊中的HOG特征。
每個(gè)塊個(gè)單元中的每個(gè)HOG特征不僅通過(guò)其自身單元中的梯度插入,還通過(guò)其他3個(gè)單元中的梯度插入。平滑地將梯度分布到4個(gè)單元,這種插值有利于減小混疊效應(yīng)。盡管它在抑制混疊效應(yīng)方面具有優(yōu)勢(shì),但是由于將每個(gè)梯度分布到所有4個(gè)單元,所以它的計(jì)算成本很大。我們稱這種方法為基于單元的三線性插值。
在優(yōu)化的的算法中,3種類型的子單元在計(jì)算HOG特征時(shí)具有不同的作用:
1) 由于角子單元位于塊的角處且遠(yuǎn)離其它3個(gè)單元,因此角子單元中的梯度僅用于計(jì)算直方圖對(duì)應(yīng)于它們自己的單元。也就是說(shuō),C11、C22、C33和C44中的梯度僅分別作用于C1、C2、C3和C4的直方圖。
2) 因?yàn)閮?nèi)部子單元接近所有4個(gè)單元,所以內(nèi)部子單元中的梯度對(duì)所有4個(gè)單元的直方圖有作用。
3) 在一個(gè)單元內(nèi)的每個(gè)半內(nèi)部子單元是唯一單元的相鄰單元。因此,在計(jì)算其自身單元和其相鄰單元的直方圖時(shí)涉及每個(gè)半內(nèi)部單元中的梯度。以半內(nèi)單元C13為例,C13包含在C1中并且是C3的鄰居。因此,C13中的梯度用于計(jì)算C1和C3的直方圖,但它們獨(dú)立于C2和C4的直方圖。
設(shè)h1表示細(xì)胞C1的HOG特征。在數(shù)學(xué)上,h1的計(jì)算公式為:
hist(C41)+hist(C32)
(6)
其中:hist(Cij)表示子單元Cij的梯度的適當(dāng)插入直方圖。前4項(xiàng)與單元C1中的所有4個(gè)子單元相關(guān)聯(lián)。hist(C21)和hist(C21)與半內(nèi)部單元C21和C31相關(guān)聯(lián),而最后三項(xiàng)對(duì)應(yīng)于3個(gè)內(nèi)部單元C23、C41和C32。
圖4 將塊劃分為單元與子單元
而傳統(tǒng)的基于單元的方法為:
(7)
與提出的基于子單元的方法相比,傳統(tǒng)方法有16項(xiàng),而提出的方法有9項(xiàng)。因此,用該方法計(jì)算了一個(gè)塊中的3 780個(gè)HOG特征的計(jì)算時(shí)間,比傳統(tǒng)方法減少了9 / 16 = 56.25 %。
經(jīng)過(guò)分析發(fā)現(xiàn),無(wú)論人體呈現(xiàn)什么姿勢(shì),無(wú)論是正面圖還是側(cè)面圖,人體頭部的輪廓變動(dòng)是最小的,呈現(xiàn)出一定的形狀。所以在進(jìn)行頭部匹配時(shí),選擇合適的樣本,訓(xùn)練好樣本就很容易檢測(cè)出頭部。而且人體的頭部不容易被遮擋,所以選擇頭部作為典型部位的特征是非常好的選擇。
圖5 頭部輪廓及正樣本
人體頭部的輪廓類似于“Ω”形,如圖5(a)所示,針對(duì)這樣的頭部輪廓,我們選擇大小為32×24像素的正樣本,如圖5(b)所示。
頭部輪廓提取有效特征包括圓存在性[12],相比于腿部或其他部位的檢測(cè),背景環(huán)境對(duì)頭部檢測(cè)的影響相對(duì)較小,訓(xùn)練好樣本之后, 對(duì)待檢測(cè)圖片先進(jìn)行灰度處理,然后二值化處理進(jìn)行邊緣提取,利用優(yōu)化后的算法計(jì)算輪廓特征,最后利用SVM分類器與訓(xùn)練的樣本數(shù)據(jù)匹配,通過(guò)與設(shè)定的閾值比較來(lái)判斷檢測(cè)到的是否為頭部。
相比于頭部特征,人的腿部特征邊緣輪廓比較明顯,類似于“π”,尤其是人在躺著的情況下,更加與“π”類似。而且腿部特征在某些梯度方向和梯度強(qiáng)度上會(huì)出現(xiàn)一定的峰值,其HOG特征與背景差別較大[14]。但是由于人的形態(tài)可變性比較大,那么就導(dǎo)致腿部的輪廓呈現(xiàn)一定的不定性。針對(duì)這種情況就要訓(xùn)練足夠多的正樣本。
利用上述優(yōu)化過(guò)后的HOG特征提取方法先對(duì)正負(fù)樣本進(jìn)行特征提取,然后利用SVM實(shí)現(xiàn)分類。根據(jù)給定的樣本集,訓(xùn)練出分類平面,d維空間線性判別函數(shù)的一般形式為:
g(x)=w·x+b
(8)
分類平面方程為:
w·x+b=0
(9)
然后將兩類樣本歸一化處理,使?jié)M足:
g(x)≥1
(10)
若要要求所有樣本正確分類,則要滿足方程(4),進(jìn)而構(gòu)造內(nèi)積函數(shù)為k(xi,xj)的SVM,并將其歸結(jié)為求解條件約束二次函數(shù)的極值問(wèn)題:
(11)
其中約束條件為:
構(gòu)成的支持向量機(jī)為:
(12)
其中:b′是分類的閾值。
對(duì)于腿部的檢測(cè)也對(duì)待檢測(cè)圖片進(jìn)行處理后進(jìn)行匹配,單獨(dú)檢測(cè)頭部或者腿部的檢測(cè)流程如圖6所示。
圖6 單一部位檢測(cè)流程圖
由于我們所采用的是基于輪廓的匹配,那么外界環(huán)境的干擾會(huì)很大,尤其是在災(zāi)后的這種復(fù)雜的環(huán)境下,利用單一部位檢測(cè)判斷會(huì)造成誤判影響我們的檢測(cè)精度。所以利用特征組合的方法進(jìn)行人體檢測(cè),這樣可以降低誤檢率,提高檢測(cè)的精度。
在進(jìn)行人體檢測(cè)時(shí),分別對(duì)頭部和腿部進(jìn)行檢測(cè),只有當(dāng)頭部和腿部同時(shí)存在在檢測(cè)圖片中,才能認(rèn)定檢測(cè)到人體。通過(guò)頭部檢測(cè)可以粗略感知此區(qū)域是否包括人,并確定感興趣區(qū)域,再對(duì)感興趣區(qū)域進(jìn)行腿部檢測(cè),并通過(guò)是否檢測(cè)到腿部來(lái)判斷此區(qū)域是否包含人體,通過(guò)設(shè)定不同的閾值,來(lái)達(dá)到在復(fù)雜環(huán)境下人體檢測(cè)的目的。頭部和腿部特征組合的檢測(cè)流程圖如圖7所示。
幾種檢測(cè)算法的檢測(cè)速度實(shí)驗(yàn)如下:我們將兩種優(yōu)化HOG特征計(jì)算結(jié)合后的算法、未優(yōu)化的HOG+SVM算法和常用的基于卷積變化的方法對(duì)進(jìn)行了檢測(cè)速度的比較,結(jié)果如表1所示。
表1 不同檢測(cè)窗口數(shù)量下的算法檢測(cè)時(shí)間統(tǒng)計(jì)
圖7 頭部和腿部組合的檢測(cè)流程圖
由表1的實(shí)驗(yàn)結(jié)果我們可以明顯的看出,與未優(yōu)化的HOG+SVM算法和基于卷積變化的算法相比較,利用兩種優(yōu)化HOG算法相結(jié)合的方法,檢測(cè)速度得到明顯提升,相比于未優(yōu)化的HOG+SVM算法,優(yōu)化后的算法比原來(lái)的HOG+SVM算法快了約5倍,比基于卷積變化的算法快了約2倍。利用此優(yōu)化后的算法可以大大減少檢測(cè)時(shí)間,提高檢測(cè)效率。
優(yōu)化HOG特征計(jì)算方法下的特征組合人體檢測(cè)實(shí)驗(yàn)如下:我們通過(guò)收集自己的人體數(shù)據(jù)集,將包含頭部和腿部的正樣本,與背景環(huán)境的負(fù)樣本進(jìn)行分類訓(xùn)練。測(cè)試圖像大小是320×240像素,頭部檢測(cè)窗口是32×24,腿部檢測(cè)窗口為64×32。圖8的兩幅圖像分別是在頭部未遮擋時(shí)兩種不同姿勢(shì)的檢測(cè)結(jié)果;圖9是在頭部被遮擋住的檢測(cè)結(jié)果。
由圖8和圖9兩種情況下的檢測(cè)結(jié)果我們可以得知,在頭部未遮擋時(shí)兩種姿勢(shì)下都可以檢測(cè)到腿部和頭部,可以檢測(cè)出人體。但是在頭部被遮擋住情況下,則不能檢測(cè)出頭部,只能檢測(cè)到腿部,不能檢測(cè)出人體。本算法在利用特征組合進(jìn)行人體檢測(cè)時(shí),有一定的局限性,雖然在部位未遮擋的情況下能較好識(shí)別出人體,但是當(dāng)選取部位被遮擋則不能較好的識(shí)別出人體。同時(shí),由于團(tuán)隊(duì)能力和時(shí)間的約束下,對(duì)負(fù)樣本數(shù)量的訓(xùn)練數(shù)量較少,導(dǎo)致背景環(huán)境的實(shí)驗(yàn)的影響也較大。
圖8 頭部未遮擋時(shí)兩種姿勢(shì)下的檢測(cè)結(jié)果
圖9 頭部遮擋時(shí)兩種姿勢(shì)下的檢測(cè)結(jié)果
本次優(yōu)化了HOG特征檢測(cè)方法,先構(gòu)造相交檢測(cè)窗口,重新檢測(cè)目標(biāo)圖像塊內(nèi)的HOG特征,并結(jié)合基于子單元插值的方法計(jì)算塊內(nèi)特征,使檢測(cè)速度得到了極大的提升。利用頭部和腿部特征組合的方法,可以有效的降低誤檢率,提高人體檢測(cè)的精準(zhǔn)度。最后,根據(jù)實(shí)驗(yàn)結(jié)果表明,通過(guò)不同部位特征組合的方法可以有效地的檢測(cè)出復(fù)雜環(huán)境下的人體,并排除一定的漏檢可能。
在此次實(shí)驗(yàn)中,由于選取部位被遮擋導(dǎo)致檢測(cè)結(jié)果不準(zhǔn)確,需進(jìn)一步研究部位被遮擋時(shí)的檢測(cè),此外設(shè)可以計(jì)不同部位的匹配優(yōu)先級(jí)來(lái)進(jìn)一步提高檢測(cè)精準(zhǔn)度,但是團(tuán)隊(duì)能力有限并未涉及到。