基于樹形檢測器的多標(biāo)志識別
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:本文首先采用了soft cascade結(jié)構(gòu)的頭結(jié)點(diǎn)分類器檢測出大量的背景圖像;然后,通過一個(gè)貪婪搜索算法構(gòu)建分叉樹分類器,將不同的臺標(biāo)分類到正確的檢測線路中;最后,使用普通cascade結(jié)構(gòu)來得到更加準(zhǔn)確的識別結(jié)果。實(shí)驗(yàn)結(jié)果,本文的檢測器可以獲得較高的識別準(zhǔn)確度。
關(guān)鍵詞:soft cascade,joint boosting,canny算子
0 引言
自動(dòng)的電視臺標(biāo)檢測和識別已經(jīng)在多媒體領(lǐng)域獲得非常高的關(guān)注度。如今,多數(shù)的手機(jī)都具備了攝像頭功能,所以人們可以隨心所欲地拍攝各種事物,然后利用各種算法去分析處理獲得的圖像。本文中,展示一個(gè)系統(tǒng)一利用手機(jī)內(nèi)置攝像頭幫助人們識別電視頻道信息。日常觀看的電視頻道就有幾十個(gè)不同的臺標(biāo),所以可以把這個(gè)問題看作是一個(gè)多類檢測問題,而單類的檢測即識別,最終就實(shí)現(xiàn)了多類識別。
對于單類檢測問題,Viola和Jones給出了state-of-the-art算法。他們先訓(xùn)練了一系列節(jié)點(diǎn)分類器去檢測圖像里的每一個(gè)子窗口,只有那些能夠通過所有節(jié)點(diǎn)分類器的子窗口圖像才被認(rèn)為是正樣本。吳將Voila的工作簡單地拓展到了多視角人臉檢測上,為每個(gè)獨(dú)立的人臉視角訓(xùn)練了一個(gè)不同的 cascade結(jié)構(gòu),并且并行地運(yùn)用它們進(jìn)行檢測。但是當(dāng)正樣本的類型數(shù)量增加時(shí),這個(gè)方案所花費(fèi)的檢測時(shí)間也是線性增長的,而這個(gè)代價(jià)是我們無法負(fù)擔(dān)的。Torrobla提出了一種新的boosting框架,命名為jointboosting。他將N類分類問題轉(zhuǎn)化為N-1個(gè)兩類分類問題,然后自動(dòng)地共享相同的弱分類器。盡管它的檢測器可以共享特征,但是當(dāng)檢測目標(biāo)時(shí),它仍然需要計(jì)算全部特征,所以它并不是一個(gè)快速檢測框架。
近些年來,樹形檢測器被引入了多視角人臉檢測應(yīng)用中。許多研究者更加偏愛于這種樹形結(jié)構(gòu),例如,F(xiàn)leuret和Geman的scalar tree,Li等人的金字塔結(jié)構(gòu),還有Huang chang的廣度優(yōu)先搜索樹。在他們的工作里,Huang的工作最有新意,他提出來一種新的輸出一個(gè)布爾矢量的boosting算法,取名為vector boosting。由于它具有良好的性能,本文選用它作為分叉樹的部分。有別于多視角人臉的并行結(jié)構(gòu),經(jīng)驗(yàn)證明直接構(gòu)建一個(gè)由粗到精的樹是比較困難的。故此,本文設(shè)計(jì)了一種根據(jù)不同組合的誤報(bào)率來構(gòu)建分叉樹的方法。詳細(xì)的方案會(huì)在1.3中闡述。
本文的其他部分是這樣組織的:在1.1小節(jié)中,本文介紹所采用的特征集,然后簡要地描述下普通cascade結(jié)構(gòu)和soft cascade結(jié)構(gòu)。在實(shí)驗(yàn)過程中,作者測試了本文算法的精確度和檢測所需的平均特征數(shù)。
1 檢測器框架
在實(shí)驗(yàn)中,本文采用了一架攝像機(jī)來拍攝電視節(jié)目的全屏幕圖像??紤]到此方法的通用性,不假設(shè)關(guān)于臺標(biāo)位置的先驗(yàn)信息(盡管臺標(biāo)通常會(huì)出現(xiàn)在屏幕的上部)。為了可以檢測出臺標(biāo),本文先使用了一個(gè)分類器對大量的不同尺度和位置的子窗口進(jìn)行掃描。因?yàn)槎鄶?shù)的子窗
口都是背景,而背景的輪廓特征不明顯,所以可以將任務(wù)分割成兩個(gè)部分:首先是盡可能早的拒判掉非臺標(biāo)的子窗口,然后是區(qū)別每個(gè)臺標(biāo)屬于哪個(gè)頻道。接下來描述下算法的第一部分。
1.1 通用檢測器
Viola在他的人臉檢測中成功地運(yùn)用了adaboost結(jié)構(gòu)和由haar特征構(gòu)成的弱分類器。OpenCV也給出了該算法的代碼。許多目標(biāo)檢測的問題也經(jīng)常用到Viola的檢測框架,有時(shí)也只是用別的特征集替換了haar特征。
如圖2所示,電視臺標(biāo)的主要屬性就是它的輪廓特征。在行人檢測中,基于梯度方向直方圖(HOG)的特征是一種描述輪廓的十分有效的特征。這個(gè)特征的缺點(diǎn)是它的輸出是一個(gè)矢量,所以需要用一個(gè)基于支持向量機(jī)的弱分類器,但是它要花費(fèi)大量的計(jì)算時(shí)間。文獻(xiàn)提出了一個(gè)EHOG特征,它只輸出一個(gè)值,并可以很容易地被Adaboost算法使用。
因此在本文的臺標(biāo)檢測器中,使用了EHOG特征。對于一副訓(xùn)練圖像,計(jì)算一個(gè)塊Rb里的梯度直方圖,然后在n個(gè)方向分別統(tǒng)計(jì)梯度幅度的總和。
n是HOG特征的維數(shù)(在中,n=9),本文中設(shè)置為6。
然后,本文使用了中定義的主方向梯度D概念,D是上述區(qū)間集的一個(gè)子集,即,并計(jì)算對應(yīng)D方向的EHOG特征:
為了快速地計(jì)算特征,本文也應(yīng)用了積分直方圖方法。
本文采用了EHOG特征和gentle adaboost訓(xùn)練了一個(gè)普通cascade結(jié)構(gòu),然后在所有樁分類器中收集全部的弱分類器,并用校正算法重新排序它們,得到一個(gè)新的“soft cascade”檢測器。
本文定義為前t個(gè)弱分類器的響應(yīng)值的和。運(yùn)用了校正算法后,可以得到一個(gè)跡數(shù)組trace=(r1,r2,…,rN)。當(dāng)對一個(gè)樣本x做決策時(shí),加上每一個(gè)弱分類器的響應(yīng)值ht(x),然后就將ht(x)和rt進(jìn)行比較,如果低于,就立刻拒絕該樣本。Soft cascade結(jié)構(gòu)的性能要優(yōu)于Viola的Cascade,在獲得相當(dāng)?shù)臋z測性能時(shí),它需要較少的特征數(shù)。這些將會(huì)在后面的實(shí)驗(yàn)中展示。
第一層的普通檢測器可以拒判大量的背景圖像,卻還不能區(qū)別不同類的臺標(biāo)。為了做進(jìn)一步處理,仍需要一個(gè)可以解決多類別分類問題的算法結(jié)構(gòu)。
1.2 分叉樹
在Huang的工作里,他構(gòu)建了一棵由粗到精標(biāo)注了人臉的不同視角的樹。分叉樹上的每個(gè)節(jié)點(diǎn)分類器采用了矢量boosting算法訓(xùn)練得到,依靠假設(shè)輸出空間的矢量化來解決多類問題。舉例說明,在一個(gè)節(jié)點(diǎn)分類器上,有四個(gè)可能的輸出矢量((0,O),(0,1),(1,0),(1,1)):(0,0)代表著該樣本的檢測將終止于當(dāng)前節(jié)點(diǎn)。(0,1),(1,0),(1,1)代表著該樣本將會(huì)通過哪個(gè)孩子節(jié)點(diǎn)。
在文獻(xiàn)中,相鄰的視角在分叉樹里的距離也很近。全部15個(gè)不同視角是根據(jù)旋轉(zhuǎn)角度平分成15份得到的。由于在本文的多臺標(biāo)檢測中沒有關(guān)于某兩個(gè)臺標(biāo)是近鄰的先驗(yàn)知識,所以不能依靠經(jīng)驗(yàn)來構(gòu)建一棵由粗到精的分叉樹。例如,當(dāng)面對圖2中的6類臺標(biāo)時(shí),在分叉樹的根節(jié)點(diǎn)上,不知道該如何將它們劃分成兩個(gè)子節(jié)點(diǎn)。如果將明顯不同的臺標(biāo)放在同一個(gè)節(jié)點(diǎn)里,訓(xùn)練算法將會(huì)耗費(fèi)更多的特征才能獲得一個(gè)相對較好的分類?;谶@樣的想法,作者認(rèn)為一個(gè)較好的劃分應(yīng)該是在固定的迭代次數(shù)上利用矢量boosting訓(xùn)練得到一個(gè)更好的分類結(jié)果。
假設(shè)有N類正樣本集,在第一層分叉節(jié)點(diǎn)上,就有2N-1-1種組合數(shù)可以將一個(gè)包含N類的集合劃分成兩個(gè)正樣本子集。
如果盲目地尋找一個(gè)合適的樹,總的時(shí)間復(fù)雜度會(huì)是log(N)*2N,這是無法實(shí)現(xiàn)的。為了解決這個(gè)問題,以下本文將引入一個(gè)貪婪搜索算法。
在一個(gè)二維矢量boosting算法里,正樣本數(shù)據(jù)被標(biāo)示為(O,1)或者(1,0),負(fù)樣本數(shù)據(jù)被標(biāo)示為(-1,-1)。本文用{S1,S2,…,SN}來表示所有的數(shù)據(jù),那么左邊子節(jié)點(diǎn)的數(shù)據(jù)集就是,右邊子節(jié)點(diǎn)的數(shù)據(jù)集就是,這里Dleft和Dright是(1,2,…,N)的子集。
本文設(shè)置檢測率為O.995,迭代次數(shù)為10。誤報(bào)率被用來評估算法性能。在矢量boosting算法中,判決準(zhǔn)則如下:
對于本文的6類臺標(biāo)數(shù)據(jù)集,將給出節(jié)點(diǎn)劃分的算法流程,這里一個(gè)二進(jìn)制串001001表示一種劃分模式,0代表進(jìn)入左子節(jié)點(diǎn),1代表進(jìn)入右子節(jié)點(diǎn)。
算法1劃分節(jié)點(diǎn)集合的貪婪搜索算法
輸入:{S1,S2,…,SN}
輸出:劃分模式p
初始化p:p={00,…,0};
初始化一個(gè)包含比特串的空列表;
外層循環(huán)i=1:N-1
內(nèi)層循環(huán)結(jié)束
p(Selectedidx)=1
將p和其局部最小fp值插入列表;
外層循環(huán)結(jié)束
輸出列表中最小fp值對應(yīng)的比特串。
有了生成的二叉樹和soft cascade結(jié)構(gòu),本文基本上完成了多類臺標(biāo)的檢測和識別。其中一個(gè)重要參數(shù)是soft cascade的長度,如果選擇較短的cascade,檢測器看上去更接近并行cascade結(jié)構(gòu)的檢測器;如果選擇較長的cascade,分叉樹可能要面對很難區(qū)分的負(fù)樣本,從而降
低檢測性能。本文中,嘗試了很多種不同長度的soft cascade,然后挑選性能最好的一個(gè)。算法2如下:
算法2混合分叉樹分類器
輸入:訓(xùn)練好的soft cascade結(jié)構(gòu),查詢樹,N類正樣本數(shù)據(jù)集S,還有一個(gè)數(shù)量很大的背景圖像集B;
輸出:一個(gè)混合分叉樹分類器
(1)初始化:分叉樹的根節(jié)點(diǎn)用soft cascade結(jié)構(gòu)替代;
(2)樹的節(jié)點(diǎn)訓(xùn)練:
a.從S集和B集中,挑選出所有可以通過分叉樹當(dāng)前節(jié)點(diǎn)E的父節(jié)點(diǎn)的樣本,確保正負(fù)樣本集p和n的規(guī)模相當(dāng);
b.如果背景圖像集規(guī)模不夠,終止該節(jié)點(diǎn)E的分叉,將E設(shè)為葉子節(jié)點(diǎn);
(3)在查詢樹中搜索當(dāng)前節(jié)點(diǎn):
a.如果找到了,就根據(jù)查詢節(jié)點(diǎn)集合將正樣本集分成兩部分,然后用Vector Boosting訓(xùn)練一個(gè)節(jié)點(diǎn)分類器。
b.否則,就用Gentle Adaboost訓(xùn)練一個(gè)強(qiáng)分類器。
(4)對于當(dāng)前節(jié)點(diǎn)E的每個(gè)孩子節(jié)點(diǎn),循環(huán)使用步驟(2)和(3)進(jìn)行訓(xùn)練生成。
3 實(shí)驗(yàn)方案和結(jié)果
本文收集了6類臺標(biāo)集合,每一類包含了200張圖像。而臺標(biāo)圖像就是從這些圖像中裁剪出來的,然后縮放成24×24像素大小的塊,作為正樣本集。負(fù)樣本集則是從將臺標(biāo)區(qū)域掩蓋掉后的圖像上收集的。首先進(jìn)行了一個(gè)實(shí)驗(yàn),來解釋W(xué)FS樹的不同設(shè)計(jì)方案將會(huì)對算法性能帶來怎樣的影響,然后研究了soft cascade長度帶來的影響,最后拿隨機(jī)生成的樹與本文的樹進(jìn)行對比。
本文首先使用了文獻(xiàn)中提到的方法訓(xùn)練一個(gè)普通檢測器,然后將其791個(gè)弱分類器組成了soft cascade。本文用這個(gè)soft cascade對一組測試圖像進(jìn)行了測試,統(tǒng)計(jì)結(jié)果表示每幅圖像通過的平均特征數(shù)約為8。在實(shí)驗(yàn)中,作者發(fā)現(xiàn)這個(gè)長度值設(shè)置在平均特征數(shù)的1倍和2倍之間比較合適。
本文使用了上述正樣本數(shù)據(jù)集和規(guī)模為1200的負(fù)樣本數(shù)據(jù)集來構(gòu)建查詢樹。最終生成的分叉樹如圖3所示。
正如分叉樹所示的,越相似的臺標(biāo),它們在樹里的位置越近。同時(shí),本文也隨機(jī)地生成了另一個(gè)查詢樹。使用這兩棵樹和同樣的訓(xùn)練數(shù)據(jù)集,本文訓(xùn)練了兩個(gè)WFS樹檢測器。
3.1 soft cascade的長度
當(dāng)選擇好查詢樹,本文就可以開始訓(xùn)練檢測器了。作者嘗試了不同的soft cascade的長度。本文調(diào)整葉子節(jié)點(diǎn)上分類器的閾值,確保兩個(gè)檢測器擁有相同的分類結(jié)果。
3.2 檢測器的精確度
在本文的框架里,第一部分是整個(gè)結(jié)構(gòu)的核心。在soft cascade中設(shè)置不同的alpha參數(shù)值,然后對將作為根節(jié)點(diǎn)分類器的soft casca-de嘗試不同的長度。接著,調(diào)整每個(gè)葉子節(jié)點(diǎn)分類器上的閾值,可以得到如圖4的ROC曲線。本文的soft cascade加WFS樹結(jié)構(gòu)的臺標(biāo)檢測精確度要優(yōu)于Huang的WFS樹。與此同時(shí),本文框架使用的特征數(shù)也比Huang的要少。
對于識別同一家電視臺的不同頻道,本文也采用了改進(jìn)后的WFS結(jié)構(gòu)。本文收集了9個(gè)不同的CCTV頻道中央一至中央九,訓(xùn)練了一個(gè)CCTV系列檢測器,它可以檢測并識別出CCTV標(biāo)志及其右側(cè)區(qū)域里的數(shù)字符號。本文實(shí)驗(yàn)的結(jié)果數(shù)據(jù)如表1:
4 結(jié)語
本文實(shí)現(xiàn)了一個(gè)基于多層樹形分類器結(jié)構(gòu)的多臺標(biāo)識別方法,此方法具有對多類別標(biāo)志識別的通用性。本文雖然在檢測樣本的平均特征數(shù)上有進(jìn)一步減少,提高了算法的速度,并且在分叉樹的葉子每個(gè)節(jié)點(diǎn)上增加了一個(gè)單類別cascade,降低了誤檢率。但是這種查詢樹結(jié)構(gòu)在增加新類型臺標(biāo)時(shí),需要重新生成和訓(xùn)練,花費(fèi)大量時(shí)間。如果能找到一種增量學(xué)習(xí)算法,在增加新類別時(shí),只需要對原有的查詢樹做局部修改,而不用全盤推翻重新計(jì)算,則該框架將更具實(shí)用性。