最近在做 Zdenek Kalal 的 TLD 算法,其成果發表在CVPR 2010 上,文章的名字叫做 P-N Learning: Bootstrapping Binary Classifiers by Structural Constraints,是關於一個跟蹤算法的,主要思想還是實時地對跟蹤對象的模型進行更新。檢測部分用到了一種作者稱為 Fern 的結構,它是在 Random Forests 的基礎上改進得到的,不妨稱之為Random Fern。下面,根據我的理解和體會總結下 Random Fern 是怎么做的。
首先,不得不先說一下論文在進行檢測時所使用的特征,是作者定義的一種稱之為 2bitBP(2bit Binary Pattern)的特征。
2bitBP(2bit Binary Pattern)的特征
這種特征是一種類似於 harr-like 的特征,這種特征包括了特征類型以及相應的特征取值。
假定現在我們要判斷一個Patch 塊是不是我們要檢測的目標。所謂特征類型,就是指在這個 Patch 在 (x,y)坐標,取的一個長 width,高 height 的框子,這個組合 (x, y, width, height) 就是相應的特征類型。
下面解釋什么是特征的取值。在已經選定了特征類型的情況下,如果我們把框子左右分成相等的兩部分,分別計算左右兩部分的灰度和,那么就有兩種情況:(1)左邊灰度大,(2)右邊灰度大,直觀的看,就是左右兩邊哪邊顏色更深。同樣的,把框子分成上下相等的兩部分,也會有兩種情況,直觀地看,就是上下兩邊哪邊顏色更深。於是在分了上下左右后,總共會有4種情況,可以用 2bit 來描述這4種情況,即可得到相應的特征取值。這個過程可以參見圖1。
實際上每種類型的特征都從某個角度來看待我們要跟蹤的對象。比如圖1中的紅框,這個框子中,車燈的地方灰度應該要深一些,那么紅框這個類型的特征,實際上就意味着,它認為,如果該 Patch 是一個車子,在相應的地方,相應的長和高,這個地方顏色也應該深一些。
圖1. 2bitBP特征說明
接下來,開始介紹 Random Fern。
Random Fern
前面已經提及,每種類型的特征都代表了一種看待跟蹤對象的觀點,那么是否可以用若干種類型的特征來進行一個組合,使之更好地描述跟蹤的對象呢?答案是肯定的,還是舉圖1的例子,左邊有一個車燈,右邊也有一個車燈,如果我們把這兩個框子都取到了,可以預見檢測的效果會比只有一個框子來得好。Random Fern 的思想就是用多個特征組合來表達對象。
下面,我們先講一個 Fern 是怎么生成和決策的,再講多個 Fern 的情況下,如何進行統一決策。
不妨假設我們選定了 nFeat 種類型的特征來表達對象。每個棵 Fern 實際上是一棵4叉樹,如圖2所示,選了多少種類型的特征,這棵4叉樹就有多少層。對於一個 Patch,每一層就用相應的類型的特征去判斷,計算出相應類型特征的特征取值,由於采用的是2bitBP特征,會有4種可能取值,在下一層又進行相同的操作,這樣每個 Patch 最終會走到最末層的一個葉子節點上。
對於訓練過程,要記錄落到每個葉子結點上的正樣本個數(用nP記),同時也要記錄落到每個葉子結點上的負樣本的個數(用nN記)。則可算出正樣本落到每個葉子結點上的后驗概率nP/(nP+nN)。
對於檢測過程,要檢測的 Patch 最終會落到某個葉子結點上,由於訓練過程已經記錄了 正樣本落到每個葉子結點上的后驗概率,最終可輸出該 Patch 為正樣本的概率。
圖2. Fern 的結構
前面介紹了一個 Fern 的生成,以及用 Fern 檢測一個 Patch,並給出它為正樣本的概率。這樣多個 Fern進行判斷時,就會給出多個后驗概率。這就好比我們讓多個人來決策,看這個東西是不是正樣本,每個人對應於一個 Fern。最終我們計算這一系列的 Fern 輸出的后驗的均值,看是否大於閾值,從而最終確定它是否是正樣本。
補充:
隨機蕨分類器(Random Ferns Classifier),類似於隨機森林(Random Forest),區別在於隨機森林的樹中每層節點判斷准則不同,而隨機蕨的“蕨”中每層只有一種判斷准則。
如上圖所示,把左面的樹每層節點改成相同的判斷條件,就變成了右面的蕨。所以蕨也不再是樹狀結構,而是線性結構。隨機蕨分類器根據樣本的特征值判斷其分類。從圖像元中任意選取兩點A和B,比較這兩點的亮度值,若A的亮度大於B,則特征值為1,否則為0。每選取一對新位置,就是一個新的特征值。蕨的每個節點就是對一對像素點進行比較。
比如取5對點,紅色為A,藍色為B,樣本圖像經過含有5個節點的蕨,每個節點的結果按順序排列起來,得到長度為5的二進制序列01011,轉化成十進制數字11。這個11就是該樣本經過這個蕨得到的結果。
同一類的很多個樣本經過同一個蕨,得到了該類結果的分布直方圖。高度代表類的先驗概率p(F|C),F代表蕨的結果(如果蕨有s個節點,則共有1+2^s種結果)。
不同類的樣本經過同一個蕨,得到不同的先驗概率分布。
以上過程可以視為對分類器的訓練。當有新的未標簽樣本加入時,假設它經過這個蕨的結果為00011(即3),然后從已知的分布中尋找后驗概率最大的一個。由於樣本集固定時,右下角公式的分母是相同的,所以只要找在F=3時高度最大的那一類,就是新樣本的分類。
只用一個蕨進行分類會有較大的偶然性。另取5個新的特征值就可以構成新的蕨。用很多個蕨對同一樣本分類,投票數最大的類就作為新樣本的分類,這樣在很大程度上提高了分類器的准確度。





