基于樹形檢測器的多標志識別
1.1 通用檢測器
Viola在他的人臉檢測中成功地運用了adaboost結(jié)構(gòu)和由haar特征構(gòu)成的弱分類器。OpenCV也給出了該算法的代碼。許多目標檢測的問題也經(jīng)常用到Viola的檢測框架,有時也只是用別的特征集替換了haar特征。
如圖2所示,電視臺標的主要屬性就是它的輪廓特征。在行人檢測中,基于梯度方向直方圖(HOG)的特征是一種描述輪廓的十分有效的特征。這個特征的缺點是它的輸出是一個矢量,所以需要用一個基于支持向量機的弱分類器,但是它要花費大量的計算時間。文獻提出了一個EHOG特征,它只輸出一個值,并可以很容易地被Adaboost算法使用。
因此在本文的臺標檢測器中,使用了EHOG特征。對于一副訓練圖像,計算一個塊Rb里的梯度直方圖,然后在n個方向分別統(tǒng)計梯度幅度的總和。
n是HOG特征的維數(shù)(在中,n=9),本文中設置為6。
然后,本文使用了中定義的主方向梯度D概念,D是上述區(qū)間集的一個子集,即,并計算對應D方向的EHOG特征:
為了快速地計算特征,本文也應用了積分直方圖方法。
本文采用了EHOG特征和gentle adaboost訓練了一個普通cascade結(jié)構(gòu),然后在所有樁分類器中收集全部的弱分類器,并用校正算法重新排序它們,得到一個新的“soft cascade”檢測器。
本文定義為前t個弱分類器的響應值的和。運用了校正算法后,可以得到一個跡數(shù)組trace=(r1,r2,…,rN)。當對一個樣本x做決策時,加上每一個弱分類器的響應值ht(x),然后就將ht(x)和rt進行比較,如果低于,就立刻拒絕該樣本。Soft cascade結(jié)構(gòu)的性能要優(yōu)于Viola的Cascade,在獲得相當?shù)臋z測性能時,它需要較少的特征數(shù)。這些將會在后面的實驗中展示。
第一層的普通檢測器可以拒判大量的背景圖像,卻還不能區(qū)別不同類的臺標。為了做進一步處理,仍需要一個可以解決多類別分類問題的算法結(jié)構(gòu)。
1.2 分叉樹
在Huang的工作里,他構(gòu)建了一棵由粗到精標注了人臉的不同視角的樹。分叉樹上的每個節(jié)點分類器采用了矢量boosting算法訓練得到,依靠假設輸出空間的矢量化來解決多類問題。舉例說明,在一個節(jié)點分類器上,有四個可能的輸出矢量((0,O),(0,1),(1,0),(1,1)):(0,0)代表著該樣本的檢測將終止于當前節(jié)點。(0,1),(1,0),(1,1)代表著該樣本將會通過哪個孩子節(jié)點。
在文獻中,相鄰的視角在分叉樹里的距離也很近。全部15個不同視角是根據(jù)旋轉(zhuǎn)角度平分成15份得到的。由于在本文的多臺標檢測中沒有關于某兩個臺標是近鄰的先驗知識,所以不能依靠經(jīng)驗來構(gòu)建一棵由粗到精的分叉樹。例如,當面對圖2中的6類臺標時,在分叉樹的根節(jié)點上,不知道該如何將它們劃分成兩個子節(jié)點。如果將明顯不同的臺標放在同一個節(jié)點里,訓練算法將會耗費更多的特征才能獲得一個相對較好的分類?;谶@樣的想法,作者認為一個較好的劃分應該是在固定的迭代次數(shù)上利用矢量boosting訓練得到一個更好的分類結(jié)果。
假設有N類正樣本集,在第一層分叉節(jié)點上,就有2N-1-1種組合數(shù)可以將一個包含N類的集合劃分成兩個正樣本子集。
如果盲目地尋找一個合適的樹,總的時間復雜度會是log(N)*2N,這是無法實現(xiàn)的。為了解決這個問題,以下本文將引入一個貪婪搜索算法。
在一個二維矢量boosting算法里,正樣本數(shù)據(jù)被標示為(O,1)或者(1,0),負樣本數(shù)據(jù)被標示為(-1,-1)。本文用{S1,S2,…,SN}來表示所有的數(shù)據(jù),那么左邊子節(jié)點的數(shù)據(jù)集就是,右邊子節(jié)點的數(shù)據(jù)集就是,這里Dleft和Dright是(1,2,…,N)的子集。
本文設置檢測率為O.995,迭代次數(shù)為10。誤報率被用來評估算法性能。在矢量boosting算法中,判決準則如下:
對于本文的6類臺標數(shù)據(jù)集,將給出節(jié)點劃分的算法流程,這里一個二進制串001001表示一種劃分模式,0代表進入左子節(jié)點,1代表進入右子節(jié)點。
算法1劃分節(jié)點集合的貪婪搜索算法
輸入:{S1,S2,…,SN}
輸出:劃分模式p
初始化p:p={00,…,0};
初始化一個包含比特串的空列表;
評論