楊 英,劉衛(wèi)國,鐘 令,李亞文
(1.東北大學(xué)機(jī)械工程與自動(dòng)化學(xué)院,遼寧沈陽110819;2.浙江省汽車安全技術(shù)研究重點(diǎn)實(shí)驗(yàn)室,浙江杭州311228)
道路行人識(shí)別的核心是利用安裝在運(yùn)動(dòng)車輛上的攝像機(jī)檢測行人,從而估計(jì)出潛在的危險(xiǎn)以便采取策略保護(hù)行人[1]。基于統(tǒng)計(jì)分類的方法是通過機(jī)器學(xué)習(xí),從一系列訓(xùn)練數(shù)據(jù)中得到一個(gè)分類器,利用該分類器對(duì)輸入窗口圖像進(jìn)行識(shí)別,并判斷是否為行人[2]?;诮y(tǒng)計(jì)分類方法的優(yōu)點(diǎn)是魯棒較好,但是需要很多訓(xùn)練數(shù)據(jù),實(shí)時(shí)性差。目前,基于統(tǒng)計(jì)分類方法識(shí)別行人主要類型有:神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)和AdaBoost方法。神經(jīng)網(wǎng)絡(luò)方法可以描述極為復(fù)雜的模式,已經(jīng)成功地應(yīng)用在字符識(shí)別和人臉檢測上,它在行人的檢測上也有應(yīng)用,但實(shí)時(shí)性和魯棒性都不夠理想。支持向量機(jī)是基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化原理的統(tǒng)計(jì)學(xué)習(xí)理論,該方法比神經(jīng)網(wǎng)絡(luò)方法具有更好的泛化能力。Ada?Boost是一種分類器組合的策略,它的目的是將一些弱分類器組合成一個(gè)強(qiáng)分類器,廣泛應(yīng)用于模式識(shí)別和計(jì)算機(jī)視覺領(lǐng)域[3]。
本研究提出一種基于AdaBoost 的行人檢測優(yōu)化算法,該算法在行人識(shí)別分類器訓(xùn)練時(shí),通過在線更新分類器錯(cuò)誤率權(quán)重,實(shí)時(shí)調(diào)整權(quán)重系數(shù),并采用擴(kuò)展的類Haar 特征,在保證分類器準(zhǔn)確率的前提下,降低分類器的級(jí)數(shù),減少分類器識(shí)別行人所需時(shí)間,減少計(jì)算的復(fù)雜性,滿足實(shí)時(shí)性要求。
AdaBoost 是一種構(gòu)建準(zhǔn)確分類器的學(xué)習(xí)算法,該算法包括兩個(gè)基本問題[4]:一是每一輪循環(huán)中訓(xùn)練集上的樣本權(quán)重如何分布;二是多條弱規(guī)則如何合并成為一條準(zhǔn)確的預(yù)測規(guī)則。
傳統(tǒng)的AdaBoost 算法,將訓(xùn)練集中的每一個(gè)樣本集賦予相同的權(quán)重ω。然后,進(jìn)行迭代運(yùn)算。該算法根據(jù)每次迭代運(yùn)算中樣本集的分類錯(cuò)誤率εt,對(duì)訓(xùn)練集中的每一個(gè)樣本集重新賦予一個(gè)新的權(quán)重值ωt。ωt是一個(gè)與εt相關(guān)的函數(shù),即分類錯(cuò)誤率小的樣本集權(quán)重值小,反之,分類錯(cuò)誤率大的樣本集權(quán)重值大。
它含兩個(gè)步驟[5]:
式(1)為樣本權(quán)重更新過程,式(2)為樣本集歸一化過程。在傳統(tǒng)的AdaBoost 算法中,當(dāng)單個(gè)樣本權(quán)重更新時(shí),如果前一輪弱分類器分類錯(cuò)誤,則那些樣本的權(quán)重不斷增大,結(jié)果每輪產(chǎn)生的弱分類器的錯(cuò)誤率相對(duì)增大,并在最后的加權(quán)投票中所占的權(quán)重變得很小。
權(quán)重與分類錯(cuò)誤率密切相關(guān),分類錯(cuò)誤率由兩部分構(gòu)成:一是正樣本錯(cuò)分率(False Positive Rate,F(xiàn)PR),即包含行人的正樣本,沒有檢查出來;二是負(fù)樣本的錯(cuò)分率(False Negative Rate,F(xiàn)NR),即不包含行人的樣本,檢查出來是行人。為了能夠準(zhǔn)確地描述錯(cuò)分率,權(quán)重更新過程應(yīng)該同時(shí)考慮正負(fù)樣本錯(cuò)分率,因此,將式(1)的擴(kuò)展為:
式中:k—調(diào)節(jié)因子,可以調(diào)節(jié)或改變樣本權(quán)重。
為了研究樣本權(quán)重對(duì)分類錯(cuò)誤的影響規(guī)律,正、負(fù)樣本分布有3 種情況:①正、負(fù)樣本的分布比較均勻;②正樣本分布比較集中,負(fù)樣本分布比較分散;③負(fù)樣本分布比較集中而正樣本分布分散。為了描述樣本權(quán)重與分類錯(cuò)誤率的關(guān)系,本研究進(jìn)行仿真實(shí)驗(yàn)。
本研究將正、負(fù)樣本的分布通過二維平面內(nèi)的點(diǎn)集進(jìn)行仿真分析。用實(shí)心點(diǎn)表示正樣本,空心點(diǎn)表示負(fù)樣本。在Matlab 下,由rand 函數(shù)隨機(jī)生成一組點(diǎn)集,如圖1所示,每個(gè)點(diǎn)集都包含1 000 個(gè)數(shù)據(jù)。點(diǎn)集1中正樣本750個(gè),負(fù)樣本250個(gè),分別仿真3種不同分布情況,在AdaBoost 訓(xùn)練過程中,僅用樣本點(diǎn)的坐標(biāo)(x,y)作為簡單特征。為了分析FNR和FPR對(duì)新的權(quán)重更新方法的影響,本研究使用全局歸一化權(quán)重方法,并保持k=1不變。
圖1 樣本點(diǎn)集
通過大量仿真實(shí)驗(yàn)得出:
(1)當(dāng)負(fù)樣本分布比較集中而正樣本分布分散時(shí),適合通過(1-FPR)作為指數(shù)修正樣本權(quán)重,增加算法對(duì)正樣本的重視度;
(2)對(duì)于正樣本分布比較集中而負(fù)樣本分布分散的情況,用(1-FNR)作為指數(shù)修正樣本權(quán)重更適合,增加算法對(duì)負(fù)樣本的重視度;
(3)當(dāng)正負(fù)樣本分布比較均勻時(shí),根據(jù)需要可使用(1-FPR)或(1-FNR)作為指數(shù)來修正樣本權(quán)重,可以達(dá)到相同的效果。
通過對(duì)權(quán)重與分類錯(cuò)誤率的關(guān)系進(jìn)行實(shí)驗(yàn)分析,本研究采用了一種閾值自適應(yīng)的權(quán)重更新算法[6],這種算法的優(yōu)勢(shì)在于可以根據(jù)需要,限制FNR或FPR的值。在AdaBoost訓(xùn)練過程中,研究者先關(guān)注正樣本的分類正確率,當(dāng)FNR降低足夠小以后,再注重整體的誤差率,盡量降低負(fù)樣本的錯(cuò)分率。閾值自適應(yīng)權(quán)重更新算法:
(1)初始化,樣本權(quán)重初始值為1/N,N為樣本總數(shù);
(5)全局歸一化樣本集,進(jìn)入下一輪訓(xùn)練。
注:f1—正樣本的錯(cuò)分率;f2—負(fù)樣本的錯(cuò)分率。并且f1<f2,k<1。
閾值自適應(yīng)的樣本權(quán)重更新優(yōu)化方法可以在保證整體誤差率一定的情況下,在更少的訓(xùn)練輪數(shù)內(nèi)迅速降低FNR的值。
目標(biāo)特征的選取是實(shí)現(xiàn)目標(biāo)檢測的重要環(huán)節(jié)之一。類Haar 特征是行人檢測領(lǐng)域中廣泛運(yùn)用的一種常見特征,但由于其易受光照變化等因素的影響,該特征僅適用于靜態(tài)目標(biāo)檢測。本研究針對(duì)行人運(yùn)動(dòng)情況和光照情況定義了一個(gè)新的對(duì)角線特征,該擴(kuò)展特征能夠根據(jù)兩幀圖片的不同提取運(yùn)動(dòng)信息從而提高特征的魯棒性[7]。擴(kuò)展的類Haar 特征如表1所示。
表1 圖像(16×32)特征模板數(shù)量
本研究利用OpenCV 進(jìn)行樣本特征提取和強(qiáng)、弱分類器的訓(xùn)練,形成用于確定行人候選區(qū)域的級(jí)聯(lián)分類器。其中,所設(shè)置的訓(xùn)練階段數(shù)為N=24,檢測子窗口的大小為16×32,計(jì)算得到子窗口類Haar 特征數(shù)量如表1所示。所設(shè)置的每個(gè)階段分類器的最小命中率為0.995,總的錯(cuò)誤警告率0.5。
訓(xùn)練得到的行人分割級(jí)聯(lián)分類器包含24 個(gè)強(qiáng)分類器,每個(gè)強(qiáng)分類器包含了不同個(gè)數(shù)的弱分類器,每個(gè)弱分類器由一個(gè)Haar特征、閾值和指示不等號(hào)方向的組成,對(duì)于本研究的矩形特征來說,弱分類器的特征值就是上面計(jì)算的矩形特征的特征值。訓(xùn)練得到的前5 個(gè)強(qiáng)分類器中所包含的類Haar 特征及其數(shù)量如表2所示。
表2 前5個(gè)強(qiáng)分類器的類Haar特征數(shù)量
AdaBoost 算法是一種分類器算法,是利用大量的分類能力一般的簡單分類器通過一定的方法疊加起來,構(gòu)成一個(gè)分類能力很強(qiáng)的強(qiáng)分類器,再將若干個(gè)強(qiáng)分類器串聯(lián)成為級(jí)聯(lián)分類器完成圖像搜索檢測。具體訓(xùn)練步驟如下[8]:
(1)給定N個(gè)訓(xùn)練樣本組成的集合、弱分類器空間H。其中:xi—樣本特征向量,yi—對(duì)應(yīng)于行人假樣本和真樣本,。已知訓(xùn)練樣本包含有k個(gè)假樣本,l個(gè)真樣本,N=k+l。
(3)對(duì)于每個(gè)t=1,2,…,T(其中:T—訓(xùn)練次數(shù))進(jìn)行如下操作:
①歸一化權(quán)重:
②對(duì)每個(gè)特征j,訓(xùn)練得到相應(yīng)的弱分類器hj(x):
式中:pj—不等式的方向,只能取±1;fj(x)—特征值;θj—閾值。
③計(jì)算弱分類器的加權(quán)錯(cuò)誤率εj:
④選擇具有最小誤差εt的簡單分類器ht(x)加入到強(qiáng)分類器中去:
⑤按照這個(gè)最佳的簡單分類器ht(x),采用前文1.3節(jié)中的閾值自適應(yīng)方法,更新每個(gè)樣本所對(duì)應(yīng)的權(quán)重。
(4)經(jīng)過T次迭代后,獲得了T個(gè)最佳弱分類器ht(x),h2(x),…h(huán)T(x),可以將它們按照下面的方式組合成一個(gè)強(qiáng)分類器:
其中:?t=log[(1-εt)/εt]。
算法訓(xùn)練分類器的特點(diǎn)是:當(dāng)提取的分類器對(duì)于某些樣本分類正確時(shí),減小這些樣本的權(quán)重;反之,則增加這些樣本的權(quán)重。其結(jié)果是,后序訓(xùn)練的簡單分類器就會(huì)更加強(qiáng)化對(duì)這些分類錯(cuò)誤樣本的訓(xùn)練,根據(jù)訓(xùn)練數(shù)據(jù),取f1=0.054 3,f2=0.298 1,k=0.333 3。
為了驗(yàn)證算法的有效性,本研究將該算法采用Vi?sual C++6.0編程實(shí)現(xiàn)。行人分類檢測系統(tǒng)在2.2 GHz的處理器1.00 GB 的內(nèi)存,WINDOWS XP 操作系統(tǒng)上運(yùn)行,分類器訓(xùn)練是在OpenCV軟件平臺(tái)上進(jìn)行,并將該程序加載訓(xùn)練得到的分類器,實(shí)現(xiàn)圖像中行人候選區(qū)域的在線分割。
訓(xùn)練樣本包括兩個(gè)行人圖像數(shù)據(jù)庫樣本,第一樣本庫選取2 700 個(gè)來自MIT 數(shù)據(jù)庫的行人圖像,第二樣本庫是來自東北大學(xué)校園的1 188 個(gè)拍攝圖像,訓(xùn)練樣本庫中部分樣本圖像如圖2所示。訓(xùn)練樣本分為真樣本和假樣本,訓(xùn)練樣本是通過手工標(biāo)定的方法獲取,它們的尺寸被統(tǒng)一進(jìn)行縮放成320×240 大小的圖像。
通過在校園內(nèi)試驗(yàn)分析,該試驗(yàn)得到了較好的效果,基本可以把行人分割出來。
圖2 訓(xùn)練樣本庫中部分圖像
本研究采用上述樣本分別采用傳統(tǒng)和改進(jìn)兩種方法進(jìn)行分類器離線訓(xùn)練,得到行人識(shí)別分類器,再應(yīng)用采集的118幅圖像作為測試集,判斷分類器性能,部分圖像的行人區(qū)域分割結(jié)果如圖3所示。從圖3中可以看出,該算法取得了很好的行人定位效果。
圖3 行人檢測結(jié)果
兩種方法的對(duì)比試驗(yàn)結(jié)果如表3所示??梢姼倪M(jìn)后的算法實(shí)時(shí)性好,檢測速度快,系統(tǒng)檢測一幅320×240大小的圖像需要的時(shí)間僅為0.308 s。在保證檢測準(zhǔn)確率的前提下,提高了行人檢測的實(shí)時(shí)性。跟傳統(tǒng)的行人分割方法比較,基于AdaBoost 算法行人分割算法在速度方面具有很大的優(yōu)越性。
表3 傳統(tǒng)與改進(jìn)AdaBoost 算法對(duì)比
本研究提出一種基于AdaBoost 算法的新的行人檢測方法,針對(duì)類Haar特征易受光照變化等因素的影響,對(duì)其進(jìn)行了改進(jìn)和擴(kuò)展,增強(qiáng)了其光照不變性;然后,筆者對(duì)AdaBoost 算法加以改進(jìn),提出了閾值自適應(yīng)的權(quán)重更新方法,該方法可以在保證整體錯(cuò)分率一定的情況下,有效地限制正樣本的錯(cuò)分率;也可以在保證整體錯(cuò)分率一定的情況下,根據(jù)實(shí)際需要限定正樣本或負(fù)樣本的錯(cuò)分率,明顯減少強(qiáng)分類器所需的特征數(shù)目,優(yōu)化分類器結(jié)構(gòu),降低算法復(fù)雜性。試驗(yàn)結(jié)果表明:在相同的誤檢率下,改進(jìn)的AdaBoost 算法具備更少的檢測時(shí)間;在相同的訓(xùn)練層數(shù)下,改進(jìn)算法具有更高的識(shí)別率。
(References):
[1]賈慧星,章毓晉.車輛輔助駕駛系統(tǒng)中基于計(jì)算機(jī)視覺的行人檢測研究綜述[J].自動(dòng)化學(xué)報(bào),2007,33(1):84-90.
[2]常好麗,史忠科.基于單目視覺的運(yùn)動(dòng)行人檢測與跟蹤方法[J].交通運(yùn)輸工程學(xué)報(bào),2006,6(2):55-59.
[3]孔凡芝,張興周,謝耀菊.基于AdaBoost 的人臉檢測技術(shù)[J].應(yīng)用科技,2005,32(6):7-9.
[4]呂慧娟,武 澎.基于改進(jìn)的AdaBoost 算法的人臉檢測[J].河南大學(xué)學(xué)報(bào):自然科學(xué)版,2010,40(1):81-84.
[5]SUN Yi-jun,TODOROVIC S,LI Jian.Unifying multi-class AdaBoost algorithms with binary base learners under the margin framework[J].Pattern Recognition Letters,2007,28(5):631-643.
[6]武 妍,項(xiàng)恩寧.動(dòng)態(tài)權(quán)值預(yù)劃分實(shí)值A(chǔ)daboost 人臉檢測算法[J].計(jì)算機(jī)應(yīng)用研究,2007,24(10):178-184.
[7]黃如錦,李 誼,李文輝,等.基于多特征的AdaBoost 行人檢測算法[J].吉林大學(xué)學(xué)報(bào):理學(xué)版,2010,48(3):449-453.
[8]蔣 焰,丁曉青.基于多步校正的改進(jìn)AdaBoost 算法[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2008,48(10):1613-1616.