Visual Tracking with Online Multiple Instance Learning (MIL)目標跟蹤論文筆記

1. 論文信息

  • 論文標題 :Visual Tracking with Online Multiple Instance Learning
  • 論文作者:
    1. Boris Babenko,University of California, San Diego
    2. Ming-Hsuan Yang,University of California, Merced
    3. Serge Belongie,University of California, San Diego
  • 發表會議:CVPR,2009

2. 基礎知識

  • 目標跟蹤的三大要素:圖像表示(Image Representation)、外觀模型(Appearance Model)和運動模型(Motion Model)。
  • 本文中的圖像表示爲Haar-like特徵,外觀模型由一個判別分類器組成,運動模型就是在上一幀目標周圍取一系列的patches(要求:距離 < s ),看哪一個patch的概率最高就將新的目標框給它(貪心算法)。
  • 本文的重點是外觀模型
  • 本文沒有考慮旋轉和尺度變化。

3. 整體思路

  • 只要能夠在每一幀中都能應用上述貪心算法,理論上就能實現目標跟蹤,那麼,程序如何計算各個patches(要求:距離 < s )的概率呢?
  • 只要每一幀確定了當前的目標位置,程序就會對外觀模型進行更新,實質上是更新判別分類器,新的分類器會對各個patches(要求:距離 < s )的概率重新進行計算,將概率最大的patch作爲新的目標位置。

這裏寫圖片描述

4. 判別分類器如何更新

  • 一旦確定了當前的目標位置,就選取一組patches(要求:γ < 距離 < β ),把這些patch放到一個包裏面,標記爲positive,即假設這個包裏面的所有patch中,至少有一個是正樣本。
  • 同時也另選取一組patches(要求:γ < 距離 < β ),對於這些patch,每個都作爲一個獨立的包(有多少個patch,就有多少個包),標記爲negative,即假設這個包裏面的patch是負樣本。
  • 注意:這裏用的判別分類器並不是一個單獨的分類器,實際上它由許多獨立的基於Haar-like特徵的弱分類器構成,將這些弱分類器用線性的方式加起來,就形成了一個Haar級聯分類器:

H(x)=k=1Kαkhk(x)(1)

上述公式(1)中的K 表示候選分類器,αk 是權值,最終目的是從M 個Haar-like特徵分類器中選出K 個用於進行判別。

  • 該論文在更新判別分類器時,核心算法如下所示:

    1. for k = 1 to K do
    2.     for m = 1 to M do
    3.         pmij=σ(Hij+hm(xij))
    4.         pmi=1j(1pmij)
    5.         Lm=i(yilog(pmi)+(1yi)log(1pmi))
    6.     end for
    7.     m=argmaxmLm
    8.     hk(x)hm(x)
    9. Hij=Hij+hk(x)
    10. end for
  • 在上述算法中,第三行中求的是樣本的概率,第四行求的是包的概率。

  • 從上面的算法可以看出,本文MIL算法主要依賴對數似然函數進行求解,每處理一幀圖像,算法就會採集一些訓練樣本{(X1,y1),(X2,y2)} ,其中Xi={Xi1,Xi2} ,這時,算法會通過估計p(y|x) 的值來使對數似然函數最大化,如下所示:

    logL=ilog(p(yi|Xi))(2)

    其中,

    p(y|x)=σ(H(x))(3)

    σ(x)=11+ex(4)

    σ(x) 是Sigmoid函數,其中xH(x) ,表示分類器的結果。

5. 一些不足及相應的修補方法

  • 對於positive包,一個包中有多個實例,文章在計算時假定這些實例全部爲正樣本,這種假設離真實情況存在差異,其補救辦法是:基於似然損失函數來選擇弱分類器h
  • 在選擇弱分類器時,沒有采用係數,文章沒有對此問題加以補救,文章認爲這並沒有影響性能。
  • 似然函數在計算時,僅僅依據當前的樣本,可能導致對當前樣本的過擬合,文章通過保留歷史數據的做法進行修補(前面的算法有沒有體現這種思想?)

6. 實現細節

  • 在文章中,每一個弱分類器hk 由一個Haar-like特徵fk 以及對應的4個參數構成,弱分類器返回一個對數概率,如下所示:

    hk(x)=log[pt(y=1|fk(x))pt(y=0|fk(x))](5)

    其中,

    pt(ft(x)|y=1)N(μ1,σ1)pt(ft(x)|y=0)N(μ2,σ2)(6)

    文章令p(y=1)=p(y=0) ,採用貝葉斯來計算hk(x) 。當這個弱分類器接收了一組新數據{(x1,y1),(x2,y2),...,(xn,yn))} 時,更新的原則如下所示:
    μ1γμ1+(1γ)1ni|yi=1fk(xi)σ1γσ1+(1γ)1ni|yi=1(fk(xi)μ1)2(7)

    其中,γ 被稱爲學習率參數。
  • μ0σ0 的更新原則也是一樣的。

  • 上述弱分類器函數hk(x) 的計算在配套代碼中有所體現,比如:

x = samples.feature;
p0 = exp((x - mu0).^2.*e0).*n0;
p1 = exp((x - mu1).^2.*e1).*n1;

r = log(eps + p1) - log(eps + p0);

7. 源碼分析

  • 源碼中幾個重要的步驟有:採樣、爲每個樣本計算Haar特徵、更新弱分類器和選擇分類器,其中更新弱分類器有三個相關函數(weakClassifierUpdate、weakClassifier、MilBoostClassifierUpdate)。
  • 函數weakClassifierUpdate、weakClassifier、MilBoostClassifierUpdate之間的區別在於,weakClassifierUpdate 主要用於更新μσ ,weakClassifier。 主要用於存放各個弱分類器對各個樣本的分類結果, MilBoostClassifierUpdate主要用於選出50個分類器。
  • 算法的主要結構如下圖所示:
Created with Raphaël 2.1.0新的一幀開始採集樣本detectx(這一組樣本不分正負,就是用來定位的)利用上一輪選擇好的 50 個弱分類器,計算每個 detectx 樣本的 Haar 特徵計算各個弱分類器對所有detectx樣本的分類結果(每個結果都是一個數值)對每個detectx樣本,將各個分類器的分類結果進行求和 Sum找出一個數值最大的Sum,將它對應的detectx樣本作爲當前這一幀的目標採集正樣本和負樣本分別對正樣本和負樣本計算特徵分別爲正樣本和負樣本更新mu和sigma各個弱分類器對各個樣本進行分類,打分選出50個最好的分類器,用於下一幀新的一幀結束
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章