王力++劉子龍++張帥旗+
摘要:提出一種基于梯度方向直方圖與AdaBoost+SVM的行人檢測算法。方向梯度直方圖用于描述和提取行人的外觀及運(yùn)動(dòng)特征,并使得外觀、運(yùn)動(dòng)特征實(shí)現(xiàn)相互融合。在分類器的選擇上使用SVM作為AdaBoost的弱分類器對行人檢測器進(jìn)行分類訓(xùn)練,最終得到分類效果好的行人檢測器,實(shí)現(xiàn)更好的檢測性能。
關(guān)鍵詞:行人檢測;HOG算法;AdaBoost算法;支持向量機(jī)
DOIDOI:10.11907/rjdk.171991
中圖分類號:TP312文獻(xiàn)標(biāo)識(shí)碼:A文章編號:16727800(2017)010006804
0引言
行人檢測是指對所需檢測的圖像采用一定的方法從而確定行人存在與否,若存在,則返回樣本并給予精確定位(包括行人的位置、大小、形態(tài)等)。近年來,隨著科學(xué)技術(shù)蓬勃發(fā)展,電子商務(wù)在人們生活中的應(yīng)用逐漸深入,行人檢測在人臉識(shí)別、智能交通、身份確認(rèn)、內(nèi)容檢索等方面具有重要價(jià)值。雖然行人檢測技術(shù)已經(jīng)相當(dāng)成熟,并且應(yīng)用也十分廣泛,但該技術(shù)依然面臨著巨大挑戰(zhàn)。這些挑戰(zhàn)來自于多個(gè)方面:一是圖像的復(fù)雜程度,比如一張圖像里每個(gè)行人的行為動(dòng)作各不相同,有的跳,有的蹲,動(dòng)作各異,在特征提取時(shí)難度和工作量就會(huì)增加,動(dòng)作差異所帶來的影響較大;二是圖像里行人穿戴的衣服和頭飾,穿的衣服是寬松還是緊身、有沒有戴帽子等因素都會(huì)對特征的提取產(chǎn)生較大影響;三是圖像背景的不同對檢測結(jié)果造成差異,不同背景可能會(huì)造成誤檢,比如,行人和雕像或者人形樹(或者外觀類似人的一些物體)一起拍攝,則很有可能造成誤檢。還有一些其它外在因素,比如攝像頭拍攝角度、光照強(qiáng)弱等。但隨著科學(xué)技術(shù)的不斷發(fā)展,行業(yè)專家學(xué)者對行人檢測核心算法也在逐漸完善和改進(jìn),并取得了一系列突破,使得行人檢測技術(shù)的應(yīng)用領(lǐng)域更加寬廣。
2005年,Dalal和Triggs[1]提出了一種基于梯度方向直方圖(Histograms ofOriented Gradients, HOG)的方法,對特征提取有很好效果。HOG算法主要思想是:先將一張待檢測的圖像分成64個(gè)像素塊,每個(gè)像素塊都被簡稱為一個(gè)單元,每個(gè)單元形成9個(gè)方向(bin)上的直方圖,每4個(gè)單元構(gòu)成一個(gè)block,在處理過程中使每個(gè)block間存在重疊部分,最終在滑動(dòng)檢測窗口(由幾個(gè)block構(gòu)成)會(huì)得到空間上的特征向量。這就是特征提取基本原理,如圖1、圖2所示。
本方案采用的方法是:在特征提取部分采用基于自適
應(yīng)的滑動(dòng)窗口HOG。梯度直方圖特征提取基本思想是:即使沒有確切的相關(guān)梯度或者邊緣位置信息,物體局部外觀和形狀也往往深受局部強(qiáng)度梯度或者邊緣方向的影響。在實(shí)際應(yīng)用中,其通過將圖片窗口劃分成小的空間區(qū)域(細(xì)胞元)實(shí)現(xiàn),對于每一個(gè)胞元,都要對其中像素的一維梯度方向直方圖或是邊緣方向進(jìn)行累積統(tǒng)計(jì),合并后的直方圖就構(gòu)成了被檢測物的特征。為了使其對光照、陰影等條件更加不敏感,在使用它們之前進(jìn)行對比度歸一化尤為必要。此歸一化是指通過對更大的空間區(qū)域(塊)中某一特征的局部直方圖的“能量”進(jìn)行累積統(tǒng)計(jì),進(jìn)而對塊上的每一個(gè)胞元進(jìn)行歸一化實(shí)現(xiàn),將歸一化之后的描述子塊作為方向梯度直方圖(HOG)描述子。在分類器選擇上,本文對AdaBoost級聯(lián)分類器算法[2]加以改進(jìn)創(chuàng)新,將SVM[3]作為AdaBoost的弱分類器,將SVM和AdaBoost各自優(yōu)點(diǎn)進(jìn)行融合,然后選擇適宜的核函數(shù)參數(shù)(該核函數(shù)和參數(shù)下文會(huì)給出),從而提高特征分類的精準(zhǔn)度,直接去除一部分非人形區(qū)域,進(jìn)而減少了實(shí)驗(yàn)訓(xùn)練時(shí)間。實(shí)驗(yàn)結(jié)果表明,這種行人檢測方法性能好,且準(zhǔn)確性、誤檢率和漏檢率等均優(yōu)于傳統(tǒng)行人檢測方法。
1方向梯度直方圖
HOG算法是基于表面局部信息統(tǒng)計(jì)的特征描述子,在特征提取部分采用滑動(dòng)窗口機(jī)制,如圖1所示。HOG算法的核心思想是將一幅圖中局部目標(biāo)的形狀及表象通過梯度或邊緣的方向密度分布描述出來。首先將一幅圖片均勻劃分為多個(gè)互不重疊的單元cell(細(xì)胞),每一個(gè)cell的大小為n×n,然后分別計(jì)算出每一個(gè)像素的梯度,并且使用直方圖統(tǒng)計(jì)每個(gè)cell的梯度,最后將多個(gè)cell進(jìn)行合并,組成一個(gè)block(塊),將每個(gè)細(xì)胞的直方圖組合起來就可以構(gòu)成特征描述器。該算法原理如圖3所示。
HOG算法包含5個(gè)步驟[4]:
(1)圖像標(biāo)準(zhǔn)化。前人經(jīng)過大量的實(shí)驗(yàn)得出結(jié)論,圖像顏色所提供的信息作用不大,可先轉(zhuǎn)化為灰度圖,一方面便于處理,減少工作量,再者可以減少光照因素的影響,提高檢測器對光照的魯棒性。將圖像進(jìn)行壓縮處理轉(zhuǎn)化為灰度圖可以使原本某些局域光線亮度和陰影部分的反差不那么明顯,因此處理圖片信息的第一步是將圖像轉(zhuǎn)化為灰度圖,如圖4所示。
(2)計(jì)算梯度。圖像中像素點(diǎn)(x,y)的梯度為:
Gx(x,y)=H(x+1,y)-H(x-1,y)
Gy(x,y)=H(x,y+1)-H(x,y-1)
梯度幅值和方向分別為:
G(x,y)=Gx(x,y)2+Gy(x,y)2
α(x,y)=tan-1Gy(x,y)2Gx(x,y)2
上式中,Gx(x,y)、Gy(x,y)、H(x,y)表示輸入圖像中像素點(diǎn)(x,y)處的水平方向梯度、垂直方向梯度和像素值。
(3)單元格梯度投影。計(jì)算每個(gè)像素對基于以自身為中心的方向梯度元素邊緣方向直方圖的加權(quán)投影,并且將這些投影累積到cell的局部空間區(qū)域中的方向區(qū)間,細(xì)胞元可以是長方形或者環(huán)形,方向區(qū)間在0~180°(無符號梯度)或是0~360°(有符號梯度)之間均勻分布。本文將cell的梯度方向360°分成9個(gè)方向塊進(jìn)行,從而為每個(gè)細(xì)胞單元構(gòu)建梯度方向直方圖。
(4)塊內(nèi)歸一化梯度直方圖。由于圖像局部陰影使得各部分光照強(qiáng)弱不同,還存在前景背景對比差異,梯度幅值將會(huì)分布在一個(gè)很寬的范圍之內(nèi),因此有效的局部對比度歸一化對性能檢測效果尤為重要。本文將歸一化之后的塊描述符稱之為HOG描述符。endprint
(5)收集HOG特征。在得到歸一化的梯度直方圖之后,還需要對滑動(dòng)檢測窗口中所有重疊的block收集其HOG特征,形成特征向量,然后才能送入AdaBoost+SVM組成的分類器中進(jìn)行分類訓(xùn)練,得到最終結(jié)果。
例如,對于一個(gè)40*40的訓(xùn)練圖片,單元格=8*8像素,塊=2*2單元格,塊每次滑動(dòng)一個(gè)單元格,則特征維數(shù)=4*4*(2*2*9)=576維。
2算法實(shí)現(xiàn)
2.1Adaboost算法
Boosting是一種用于提高學(xué)習(xí)算法準(zhǔn)確度,將弱學(xué)習(xí)方法提升為強(qiáng)學(xué)習(xí)方法的算法。Boosting算法的核心思想是把若干個(gè)分類器整合為一個(gè)分類器,它是AdaBoost算法的前身,繼承了Boosting算法的思想[5]。
AdaBoost算法描述如下:
首先輸入樣本集(x1,y1),…,(xN,yN),其中yi∈{1,-1},迭代次數(shù)為T;然后進(jìn)行初始化,樣本集上樣本的初始分布D1(i)=1N,也即樣本的權(quán)重為1N;For t=1 to T。
(1)訓(xùn)練弱分類器h1:X→{-1,1},該弱分類器分布在Di上的誤差為:
ε1=PD1htxi≠yi
(2)計(jì)算該弱分類器的權(quán)重:
α1=12In1-εtεt
(3)更新訓(xùn)練樣本的分布:
Dt+1(i)=Dt(i)exp(-αtyiht(xi))Zt
其中,Zt為歸一化常數(shù)。zt=∑Ni=1Dt(i)exp(-αtyihi(xi))
最后輸出強(qiáng)分類器:
Hfinal(x)=sign∑Tt=1αtht(x)
2.2支持向量機(jī)(SVM)
支持向量機(jī)算法于1995年由Vapnik提出,該算法在解決小樣本、非線性及高維的模式識(shí)別上有許多獨(dú)特優(yōu)勢。SVM是建立在統(tǒng)計(jì)學(xué)習(xí)理論的VC維理論(所謂VC維是對函數(shù)類的一種度量,可以簡單理解為問題的復(fù)雜程度,VC維越高,一個(gè)問題就越復(fù)雜。)和結(jié)構(gòu)風(fēng)險(xiǎn)最小原理基礎(chǔ)上,根據(jù)有限的樣本信息在模型的復(fù)雜性和學(xué)習(xí)能力之間尋找一個(gè)最佳折衷,從而得到最優(yōu)的泛化能力[5]。
支持向量機(jī)其實(shí)也是基于最優(yōu)分類面的思想訓(xùn)練出的一種分類算法,簡言之,它是一個(gè)兩類分類模型,依賴預(yù)處理后的數(shù)據(jù),最終可轉(zhuǎn)化為一個(gè)凸二次規(guī)劃問題的求解,在n維空間中找到一個(gè)分類超平面,將空間上的點(diǎn)進(jìn)行分類。圖5是線性分類的一個(gè)例子。
圖5線性可分情況下的最優(yōu)分類線
2.3AdaBoost+SVM算法
上文分別介紹了AdaBoost和SVM算法。本文研究的重點(diǎn)在分類器的選擇上,對AdaBoost級聯(lián)分類器的算法加以改進(jìn),使用SVM作為AdaBoost的弱分類器,通過選擇并確定合適的核函數(shù)參數(shù),從而提高分類精度,減少訓(xùn)練時(shí)間,達(dá)到比較快速的檢測目的。本文SVM的核函數(shù)選取的是徑向基函數(shù),其函數(shù)表達(dá)式為[7]:
k(x,xi)=exp-‖x-xi‖22σ2
算法步驟可簡化為:
(1)SVM核函數(shù)的參數(shù)σ={σ1,σ2…},C={C1,C2…}。訓(xùn)練樣本S={(x1,y1),…,(xn,yn)},循環(huán)次數(shù)為T。
(2)樣本的權(quán)重設(shè)定為:
ω1i=1/N,i=1,…,N
(3)訓(xùn)練一個(gè)基于徑向基核函數(shù)的SVM弱分類器。
(4)對錯(cuò)誤率進(jìn)行計(jì)算。錯(cuò)誤率εt為:
εt=∑Ni-1ωti,yi≠ht(xi)
如果錯(cuò)誤率大于50%,則返回上一步重新訓(xùn)練,否則進(jìn)行下一步。
(5)重置分類器的權(quán)重:
αt=12ln1-εtεt
(6)對訓(xùn)練樣本集的權(quán)重進(jìn)行重置:
ωt+1i=ωtiexp-αtyihtxi Ct
說明:i=1,K、N、Ct均為歸一化參數(shù)。
(7)T次循環(huán)或者達(dá)到預(yù)期精確度后,輸出經(jīng)過訓(xùn)練后的分類器:
fx=sign∑Tt-1αthtx
3實(shí)驗(yàn)結(jié)果與分析
3.1實(shí)驗(yàn)數(shù)據(jù)庫
實(shí)驗(yàn)數(shù)據(jù)庫樣本之一來自于自拍的行人圖片數(shù)據(jù)庫,該數(shù)據(jù)庫包含了多種場所,背景各異。為了體現(xiàn)該算法的優(yōu)越性,本文采用的實(shí)驗(yàn)數(shù)據(jù)庫也包括比較專業(yè)的INRIA行人庫[8](http://pascal. inri一alpes. fr/data/human)。訓(xùn)練集有正樣本614張,其中包含2 416個(gè)行人,負(fù)樣本1 218張;測試集有正樣本288張,其中包含1 126個(gè)行人,負(fù)樣本453張。圖片中人體大部分為站立姿勢且高度大于100個(gè)像素。圖片主要來源于個(gè)人照片、谷歌等。照片清晰度較高,可用OpenCV正常讀取和顯示。具體實(shí)驗(yàn)樣本組成如表1所示。
3.2實(shí)驗(yàn)過程
本文算法驗(yàn)算是在OpenCV和Visual C++開發(fā)環(huán)境中實(shí)現(xiàn)。為了充分說明該算法在行人檢測上確實(shí)有較大優(yōu)勢,將得到的實(shí)驗(yàn)結(jié)果與文獻(xiàn)[1]和文獻(xiàn)[2]中的傳統(tǒng)算法分別基于HOG+AdaBoost、基于HOG+SVM進(jìn)行比較。為了更好對比實(shí)驗(yàn)結(jié)果,提出兩種衡量標(biāo)準(zhǔn)下的漏檢率和誤檢率。漏檢率(MR)是指未檢測出來的行人樣本數(shù)與行人樣本總數(shù)的比值,誤檢率(FPR)是指不是行人樣本卻被檢測為行人的數(shù)量與非行人樣本總數(shù)的比值。圖6為在被檢測樣本數(shù)據(jù)庫中隨機(jī)選取的一張檢測成功圖片。
3.3實(shí)驗(yàn)結(jié)果
在樣本庫中隨機(jī)選取1 000個(gè)樣本作為測試樣本集,總共進(jìn)行6次試驗(yàn),每次測試所得到的漏檢率和誤檢率分別如圖7、圖8所示。
取6次試驗(yàn)的平均值作為結(jié)果,算法的漏檢率、誤檢率、運(yùn)行時(shí)間與傳統(tǒng)方法對比如表2所示。endprint
4結(jié)語
行人檢測是機(jī)器視覺和人工智能領(lǐng)域的研究熱點(diǎn),隨著該領(lǐng)域技術(shù)的日漸成熟,其重要性及應(yīng)用價(jià)值正為人們所了解,它在智能交通、樓宇智能監(jiān)控系統(tǒng)、高級人機(jī)接口、機(jī)動(dòng)車輔助系統(tǒng)等領(lǐng)域都具有重要應(yīng)用。本文將兩種傳統(tǒng)的分類器重新組合在一起,設(shè)計(jì)出一種新的算法分類器,該算法分別繼承了AdaBsoot和SVM算法的優(yōu)點(diǎn),在檢測的正確率上得到了很大提升,在訓(xùn)練時(shí)間上也有明顯縮短。實(shí)驗(yàn)結(jié)果表明,該算法具有檢測精度高、實(shí)時(shí)性好等優(yōu)點(diǎn),應(yīng)用前景極其廣泛。但是行人檢測領(lǐng)域還有很多困難仍需克服,比如,如何正確快速地檢測被遮擋的行人等。相信隨著科學(xué)技術(shù)的進(jìn)步及算法的改進(jìn),目前存在的問題會(huì)得到解決,行人檢測技術(shù)也會(huì)在更多領(lǐng)域得到應(yīng)用和推廣。
參考文獻(xiàn)參考文獻(xiàn):
[1]DALAL NTRIGGS B.Histograms of oriented gradients for human detection[C].Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition,2005:886893.
[2]DAMIEN SIMONNET,SERGIO A VELASTIN. Pedestrian detection based on Adaboost algorithm with a pseudo calibrated camera[C].2010 International Conference on Image Processing Theory,Tolls and Application,2010:5459.
[3]B WU,R NEVATIA.Cluster boosted tree classifier for multiview.multipose object detection[C].IEEE 11th International Conference on computer Vision,2007:18.
[4]張旭東.行人檢測技術(shù)研究[D].成都:電子科技大學(xué),2011.
[5]錢惟賢,楊力,胡楷,等.一種基于AdaBoost的弱分類器內(nèi)部結(jié)構(gòu)調(diào)整方法[Z].CN,CN 103246897 A,2013.
[6]VAPNIK V.統(tǒng)計(jì)學(xué)習(xí)理論的本質(zhì)[M].張學(xué)工,譯.北京:清華大學(xué)出版社,2000.
[7]張莉.基于SVMAdaboost算法的行人檢測方法[J].工業(yè)儀表與自動(dòng)化裝置,2016(4):117120.
[8]張春風(fēng),宋加濤,王萬良.行人檢測技術(shù)綜述[J].電視技術(shù),2014,38(3):157162.
責(zé)任編輯(責(zé)任編輯:孫娟)endprint