1. 程式人生 > >影象目標檢測(Object Detection)原理與實現(三)

影象目標檢測(Object Detection)原理與實現(三)

基於霍夫森林的目標檢測

       上節說了霍夫變換(HT)和廣義霍夫變換(GHT),今天就接著廣義霍夫變換說下去,在廣義霍夫變換中,每個投票元素(比如邊緣畫素中的點)在霍夫空間中累加投票的權重是相等的,每個元素投票的權重互不影響,這其實是假設了影象空間中的每個畫素點是獨立的,但現實是這樣的嗎?答案:不是,尤其是牽扯到我們今天的基於部件的投票時,這種投票元素互相獨立的觀點更站不腳,學過概率圖模型(probabilistic graphic model)的都知道,圖模型裡有一種V結構,如(圖一)所示:


(圖一)

         X1,X2是投票元素,Y是我們在霍夫空間中的投票,假設我們觀察Y時,或者說給定Y時,就是觀察影象空間中的目標,假設X1和X2是目標生成的,X1和X2是獨立的嗎?很明顯不是,這些元素應該向Y投票的權重應該更大才說的通,而其他元素投更小的權重(圖一也可以看出,當給定Y=1時,X1,X2的概率由0.25提高0.33)。這就是Judea peal提出的explain away問題(Even if two hidden causes are independent in the prior, they can become dependent when we observe an effect that they can both influence)。既然有現成的框架:概率圖模型,或者嚴格的說概率模型,那我們就改進廣義霍夫投票,進入概率空間。

       先來說說霍夫森林吧,霍夫森林是Juergen Gall在2009發表在CVPR上的。它通過構建一個隨機森林把影象塊(patch appearance)直接對映成對目標重心位置的投票,找到了目標重心也就找到了目標,其他做法也有構建codebook來作為投票元素。無論用什麼方法,我們都可以把他們看成像霍夫變換中影象空間裡的畫素點一樣的投票元素,然後進入霍夫空間找峰值點來檢測目標。別忘了今天的主題是進入概率空間進行投票,下面來看看作者是怎麼進入概率空間的。作者構建一個隨機森林模型,叉開一下,隨機森林由N個決策樹構成,這N個決策時互相獨立,分別來對目標分類,最終由N個分類的數目類別多少來決定目標類別。每個決策樹的訓練樣本是

,其中I是目標的一個區域性影象塊(patch),c是它的類標籤(1表示是目標,0表示背景),d表示bouding box內影象塊到目標中心的偏移(offset)向量(2D),這個對後面的目標重心投票起著很大的作用;隨機樹生長的目的是使節點樣本的類別和offset不純度最小化,這兩項的具體定義如(圖二)中的公式(2)、(3)所示:


(圖二)

     節點上的分裂準則採用了畫素值比較的方法,通過交替的最小化(公式一)來完成決策樹的構建。

(公式一)

      最後葉子節點記錄兩項重要的資訊:CL表示正樣本比例,DL樣本偏移的集合,這兩項(正樣本比例和offset向量)就是投票元素。另外,訓練的時候作者也採用類似級聯的方式,forest=5trees+5trees+5trees,即第一次5棵樹生長完成後,一些分類比較困難的樣本再用來訓練下一批樹。檢測階段,從影象上提取patch,然後在隨機森林中的每個決策樹上進行判處理,接著在霍夫空間中進行投票,對影象進行密集塊取樣,最後輸出霍夫影象。不過話說回來,概率空間體現在何處?關鍵點就在於如何投票,假設E(X)表示目標重心在位置X的隨機事件的話,
表示給定影象塊時目標重心在位置X的概率,利用貝葉斯公式和一些等價替換,該概率可以分解如(公式二)所示:


(公式二)

       (公式二)的最後一行有兩項,第一項可以結合決策樹葉子節點的DL用pazen窗來估計,而第二項則直接用葉子節點的CL來計算。這樣(公式二)又可轉換為(公式三):

(公式三)

     不過(公式三)只是一個決策樹的概率,考慮用到是隨機森林,對所有決策樹來個平均,計算下平均概率,如(公式四)所示:

(公式四)

      這樣就完成了一個patch在概率空間對其附近目標重心的投票,累加所有patch的投票如(公式五)所示:

(公式五)

        檢測結果如(圖三)所示,不過要說的是,檢測到重心並不能說明會嚴格的框住目標,對於不同尺度的目標,需要區分對待,換句話要增加一個引數scale,如果還想考慮bounding box的aspect ratio,那就在增加一個引數,不過計算量也會隨著引數增加而指數增長。

(圖三)

       最後提下patch的構成,作者在實驗中使用的patch成分為:3 channels were used (intensity, absolute valueof x- and y-derivatives),實驗結果不錯,但缺點也如上所述,實現程式碼Juergen Gall首頁已掛出,還有一些細節實現請查閱參考文獻。霍夫森林雖然進入了概率空間進行投票,但是畢竟是從隨機森林中計算出來的,霍夫投票概率的好壞取決於隨機森林獲取的概率,而且投票元素和目標之間沒有形成雙向因果推理,這是他的瑕疵,結合著概率圖模型,我們可以把概率空間中的霍夫投票理論整的更優美些,並且降低與隨機森林之間的耦合度,使之可以擴充套件到任意概率獲取方式,所以基於霍夫投票的目標檢測打算再繼續擴充套件一節。

參考文獻:

Class-Specific Hough Forests for ObjectDetection. Juergen Gall