任小康 陳鴻享
(西京學(xué)院,陜西 西安710123)
方向梯度直方圖(Histogram of Oriented Gradient, HOG)是用于計算機視覺識別和處理過程中對物體形狀、輪廓進(jìn)行檢測的特征描述子。通過計算并統(tǒng)計數(shù)字圖像中被識別物體邊緣的梯度方向直方圖來構(gòu)成特征描述子。
2005 年在IEEE 國際計算機視覺與模式識別會議(IEEE Conference on Computer Vision and Pattern Recognition,CVPR)[1]上,來自法國的研究人員Navneet Dalal 和Bill Triggs 提出利用HOG 對圖像邊緣特征進(jìn)行提取,并利用支持向量機(Support Vector Machine,SVM)作為二分類器訓(xùn)練此模型,該模型經(jīng)過大量對測試樣本測試后發(fā)現(xiàn),HOG 與SVM 相結(jié)合的方法是速度和效果綜合平衡性能較好的一種行人檢測(Pedestrian Detection)方法。
HOG+SVM模型廣泛應(yīng)用于計算機視覺,尤其在行人檢測領(lǐng)域獲得了極大的成功。行人檢測技術(shù)可與行人跟蹤、行人重識別等技術(shù)結(jié)合,應(yīng)用于人工智能系統(tǒng)、車輛輔助駕駛系統(tǒng)、智能機器人、智能視頻監(jiān)控、人體行為分析、智能交通等領(lǐng)域,是當(dāng)前的熱門研究方向之一。
一幅數(shù)字圖像,其梯度主要在與被檢測圖像的輪廓處,即目標(biāo)區(qū)域的邊緣部分可以很好地用方向密度分布進(jìn)行描述。
通過提取關(guān)鍵信息并丟棄冗余信息來簡化圖像,通常對于HOG 特征描述子,輸入圖像的大小為64×128×3,輸出特征向量的長度為3780。為了解決光照變化和陰影對結(jié)果的影響,將這些在細(xì)胞單元中獲取到的局部直方圖在圖像的更大的范圍,即區(qū)間(block) 進(jìn)行對比度歸一化[2](Contrast normalization)。
被檢測的物體輪廓能夠被梯度的分布所描述。首先將整幅圖像分割成小的連接區(qū)域,然后每個區(qū)域生成一個方向梯度直方圖,最后將這些直方圖的組合即可表示出特征描述子。
圖像梯度算法:
用于行人檢測的HOG 特征描述符是在圖像的64×128 塊上計算的,要計算HOG 描述子,首先需要計算像素點的水平和垂直梯度,根據(jù)原始圖像計算像素點(x,y)梯度圖像Gx和Gy。研究者分析了許多一階微分算子,結(jié)果最終表明[-1,0,1]和[1,0,-1]T算子效果最好,而由此可以給出梯度在[-1,0,1]和[1,0,-1]T算子下的定義為:
其中I(x,y)為圖像在像素點(x,y)處的灰度值,Gx(x,y)和Gy(x,y)分別是某像素點(x,y)處的梯度水平值和梯度垂直值,由此可以給出像素點(x,y)處的梯度幅值大小以及梯度方向的定義如下公式(2)。
其中,G(x,y)為像素點(x,y)處的梯度幅值,α(x,y)為像素點Gx(x,y)處的梯度方向。梯度方向會取絕對值,計算得出的梯度是“無符號的”,因此得到的角度范圍是[0,180°]。
3.2.1 細(xì)胞
最小的連通區(qū)域即細(xì)胞(cell),而由細(xì)胞再組成塊(block),對一張灰度圖像,1 個細(xì)胞大小為8px×8px,而1 個塊由4 個細(xì)胞構(gòu)成,則1 個塊大小為16px×16px。在統(tǒng)計梯度方向時首先是以細(xì)胞為單位進(jìn)行統(tǒng)計,之后再以塊為單位進(jìn)行處理。
3.2.2 塊
塊由細(xì)胞構(gòu)成,塊與塊之間有重疊,作用是在檢測窗口(window) 中依次水平和垂直滑動從而遍歷并統(tǒng)計每個塊內(nèi)的方向梯度直方圖,由于每個塊由4 個細(xì)胞構(gòu)成,每個細(xì)胞的寬和高均為8px,遍歷結(jié)束后要統(tǒng)計所有細(xì)胞中的方向梯度直方圖,因此在滑動時塊的橫向滑動增量和縱向滑動增量均與細(xì)胞的寬和高相等,即為8px。
3.2.3 檢測窗口
通常檢測圖像像素比較大,但是作為訓(xùn)練樣本,只關(guān)注其具有特征部分的圖像區(qū)域,譬如人臉,因此需要對原始圖像進(jìn)行預(yù)處理,即選擇出需要研究的區(qū)域作為采樣目標(biāo)區(qū)域,而這個目標(biāo)區(qū)域即為檢測窗口,檢測窗口的選取可以在圖像的任意部位,圖中窗口大小為64px×128px,HOG 輸入的并不是原始圖像,而是由預(yù)處理之后的檢測窗口。
研究者結(jié)果表明,將圖像分成若干個細(xì)胞單元,每個細(xì)胞單元大小為8px×8px,采用9 個bins 直方圖來統(tǒng)計8px×8px 個像素的梯度信息[3],每個bins 方向塊為20 度時能夠得到最好的檢測結(jié)果,量化的公式如下:
3.3.1 計算cell 內(nèi)每個像素的梯度
對某個梯度的反向塊進(jìn)行投票(vote),從而形成這個方向的梯度直方圖。細(xì)胞單元可以是矩形或者環(huán)形。直方圖的方向塊在0 度-180 度(無符號梯度)或者0 度-360 度(有符號梯度)之間均分。為了減少混疊現(xiàn)象,梯度投票在相鄰bin 的中心之間需要進(jìn)行方向和位置上的雙線性插值,投票的權(quán)重根據(jù)梯度幅值進(jìn)行計算。
將原64×128 的圖像劃分為8×8 的cell 單元格,并為每個8×8 個單元格計算梯度直方圖。8×8 圖像塊包含8×8×3=192 個像素值。該色塊的梯度每個像素包含2 個值(大小和方向),總計8×8×2 = 128 個數(shù)字,直方圖本質(zhì)上是9 個bin(數(shù)字)的矢量(或數(shù)組),對應(yīng)于角度0、20、40、60…160。
3.3.2 cell 細(xì)胞單元格中創(chuàng)建HOG 直方圖
直方圖包含對應(yīng)于角度0、20、40…160 的9 個面元。創(chuàng)建漸變直方圖過程如下,根據(jù)方向選擇數(shù)組下標(biāo)位置,并根據(jù)大小選擇投票(進(jìn)入數(shù)組的值)。例如某像素點,它的角度方向為80度,大小為2。因此,它向第5 個數(shù)組中添加了2。另一個像素點的漸變角度為10 度,大小為4。由于10 度位于0 到20 之間的一半,因此像素的投票平均分為兩個區(qū)域。
一般情況下,如果該角度大于160 度,則該角度在160 到180 之間,該角度將使0 和180 相等。因此,如果角度為165 度的像素對0 度和160 度成比例地貢獻(xiàn)。將8×8 單元中所有像素的貢獻(xiàn)相加,得到9 bins 直方圖。
上述步驟結(jié)束后,即創(chuàng)建了圖像的梯度直方圖,但是圖像的梯度對于整張圖片的光照變化會很敏感。如果將所有的像素點都除以2,梯度的幅值也會減半,那么直方圖里的值也會減半,這樣并不能消除光線的影響。理想情況下,特征描述子可以和光線變換無關(guān),為了解決光照變化對直方圖的影響,將直方圖做歸一化處理,首先對某向量用L2范數(shù)做歸一化處理:
將V 中的每一個元素除以146.642 得到[0.87,0.43,0.22]。當(dāng)對V 進(jìn)行按比例縮放時,歸一化得到的結(jié)果還是[0.87,0.43,0.22],故可以解決光照等噪聲對結(jié)果的影響。
上一步得到了細(xì)胞的梯度方向直方圖,而1 個塊是由2×2=4 個細(xì)胞構(gòu)成,由此,便可得到一個塊的梯度方向直方圖是4×9=36 維的。將各個細(xì)胞單元組合成大的區(qū)域塊(blocks),得到一個block 內(nèi)所有細(xì)胞單元的特征向量串聯(lián)起來便得到此block 的HOG 特征,其中這些區(qū)間上的HOG 特征向量是互相重疊的,將歸一化之后的塊描述子就稱為HOG 描述符。
為了計算這整個patch 的特征向量,需要把36×1 的向量全部合并組成一個的向量。向量的大?。含F(xiàn)有16×16 塊共有7 個水平和15 個垂直位置,總共7×15=105 個位置。每個16×16 塊由一個36×1 向量表示。因此,將它們?nèi)亢喜橐粋€增益向量時,將獲得一個36×105=3780 維向量。
通過分析和研究HOG+SVM實現(xiàn)行人檢測。雖然運行結(jié)果達(dá)到了預(yù)期效果,但是此模型還需要有大量的正、負(fù)樣本的訓(xùn)練,才能提高本模型的泛化能力,由結(jié)果可看出,墻壁上的畫和地上的鴿子被誤分類為行人。這足以說明此模型還需要再訓(xùn)練,同時給出以下解決辦法:
5.1 構(gòu)建充足豐富的負(fù)樣本(房屋、汽車和樹木等非行人樣本)來訓(xùn)練此模型的泛化能力,使得該模型在測試樣本中有較高的正確率。
5.2 在樣本集不變的情況下,利用AdaBoost(自適應(yīng)增強算法)提高誤分類樣本的權(quán)重,減小被正確分類樣本的權(quán)重,使算法更加關(guān)注被分錯的樣本,直到算法達(dá)到某個預(yù)定的足夠小的錯誤率或者達(dá)到預(yù)先指定的最大迭代次數(shù)。