隨機蕨(Random Fern)


最近在做 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),區別在於隨機森林的樹中每層節點判斷准則不同,而隨機蕨的“蕨”中每層只有一種判斷准則。

random-ferns

 

如上圖所示,把左面的樹每層節點改成相同的判斷條件,就變成了右面的蕨。所以蕨也不再是樹狀結構,而是線性結構。隨機蕨分類器根據樣本的特征值判斷其分類。從圖像元中任意選取兩點A和B,比較這兩點的亮度值,若A的亮度大於B,則特征值為1,否則為0。每選取一對新位置,就是一個新的特征值。蕨的每個節點就是對一對像素點進行比較。

比如取5對點,紅色為A,藍色為B,樣本圖像經過含有5個節點的蕨,每個節點的結果按順序排列起來,得到長度為5的二進制序列01011,轉化成十進制數字11。這個11就是該樣本經過這個蕨得到的結果。

random-ferns-2

  

同一類的很多個樣本經過同一個蕨,得到了該類結果的分布直方圖。高度代表類的先驗概率p(F|C),F代表蕨的結果(如果蕨有s個節點,則共有1+2^s種結果)。

random-ferns-3

不同類的樣本經過同一個蕨,得到不同的先驗概率分布。

random-ferns-4

以上過程可以視為對分類器的訓練。當有新的未標簽樣本加入時,假設它經過這個蕨的結果為00011(即3),然后從已知的分布中尋找后驗概率最大的一個。由於樣本集固定時,右下角公式的分母是相同的,所以只要找在F=3時高度最大的那一類,就是新樣本的分類。

 

random-ferns-5

只用一個蕨進行分類會有較大的偶然性。另取5個新的特征值就可以構成新的蕨。用很多個蕨對同一樣本分類,投票數最大的類就作為新樣本的分類,這樣在很大程度上提高了分類器的准確度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM