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