影象目標檢測(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)。既然有現成的框架:概率圖模型,或者嚴格的說概率模型,那我們就改進廣義霍夫投票,進入概率空間。
,其中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的隨機事件的話,
(公式二)
(公式二)的最後一行有兩項,第一項可以結合決策樹葉子節點的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