1. 程式人生 > >目標跟蹤整理(1)之MOSSE

目標跟蹤整理(1)之MOSSE

之前讀過一遍MOSSE了,讀完還是有一種懵懵的感覺。最近還需要入基於相關濾波的目標跟蹤的坑,所以又屁顛屁顛跑來深入理解一下,畢竟是相關濾波的始祖啊。

Visual Object Tracking using Adaptive Correlation Filter

一、補充知識:

1、複共軛:實部相等,虛部互為相反數(真的連這個都快記不清了。。。)

2、離散傅立葉變換(DFT),是傅立葉變換在時域和頻域上都呈現離散的形式,將時域訊號的取樣變換為在離散時間傅立葉變換(DTFT)頻域的取樣。在形式上,變換兩端(時域和頻域上)的序列是有限長的,而實際上這兩組序列都應當被認為是離散週期訊號的

主值序列。即使對有限長的離散訊號作DFT,也應當將其看作經過週期延拓成為週期訊號再作變換。在實際應用中通常採用快速傅立葉變換(FFT)以高效計算DFT。

二、卷積與相關:

1、卷積:

y\left ( n \right )= x\left ( n \right )\ast h\left ( n \right )= \sum_{m=0}^{N}x\left ( m \right )\cdot h\left ( n-m \right )

2、相關:

y\left ( n \right )= x\left ( n \right )\circledast h\left ( n \right )= \sum_{m=0}^{N}x\left ( m \right )\cdot h\left ( m-n\right )

3、數學關係:

y\left ( n \right )= x\left ( n \right )\circledast h\left ( n \right )=x\left ( n \right )\ast h\left ( -n \right )

頻域關係:

卷積:G= X\odot H;  相關:G= X\odot H^{\ast }

其中\odot表示元素相乘,\ast表示複共軛

4、物理關係:

卷積操作需要將其中一個訊號進行反轉,再平移、相乘再相加。而相關操作則不需要反轉,相關是直接進行平移然後元素相乘再相加的。

三、基於相關濾波的跟蹤器:

1、計算輸入影象的2D傅立葉變換:F= F(f)F= F\left ( f \right )

2、計算濾波器的2D傅立葉變換:H= HH= F\left ( h \right )

3.1 preprocessing

作者在這裡說應用FFT演算法會出現的一個問題是影象和濾波器被轉化到一個環面的拓撲結構上,換句話說,影象的左邊緣與右邊緣被連線在了一起。上邊緣和下邊緣被連線到了一起,進行卷積操作時,影象在環形空間中旋轉而不是像在空間域中一樣。

是因為在做FFT之前需要現將影象和濾波器都進行週期性延拓

作者採用了三種方法來緩解這個現象所帶來的問題:

1、採用對數函式將畫素值進行裡轉換,據說是可以helps with low cintrast lighting situations

2、畫素值歸一化

3、加餘弦窗

3.2 MOSSE filters

開始時需要一系列的訓練影象f_{i}和訓練的輸出g_{i},其中g_{i}一般為峰值在目標中心的2DGaussian

訓練一般是在傅立葉域進行的,有:

H_{i}^{\ast }=G_{i}/F_{i}   這裡的除法為按元素除法

訓練時的優化函式為:

min\sum_{i}\left | F_{i}\odot H^{\ast }-G_{i} \right |^{2}

   需要求解的H^{\ast }為:

H^{\ast }= \frac{\sum_{i}G_{i}\odot F_{i}^{\ast }}{\sum_{i}F_{i}\odot F_{i}^{\ast }}           (5)

作者觀察了一下這個解,發現該解的分子為為輸入與期望輸出的乘積,而分母是輸入的能量譜。而且從該公式可以看出UMACE這個跟蹤器是MOSSE的一種特殊情況(沒有看過UMACE不知道說的是啥意思),反正就是MOSSE更好。

3.3 與ASEF相比:

1、當訓練樣本只有一個時,求解的濾波器為精確濾波器,此時濾波器可從下式求解:

H_{i}^{\ast }= \frac{G_{i}}{F_{i}}= \frac{G_{i}\odot F_{i}^{\ast }}{F_{i}\odot F_{i}^{\ast }}   (7)

但是隻有一個訓練樣本容易過擬合,故:

2、ASEF採用平均的方法,即

H^{\ast }= \frac{1}{N}\sum_{i}\frac{G_{i}\odot F_{i}^{\ast }}{F_{i}\odot F_{i}^{\ast }}

但是它在小樣本時特別是樣本本身的頻譜能量不高時表現不好(分母太小),而此時MOSSE則更加穩定

3、其次針對樣本本身的頻譜能量不高的問題,作者認為可以採用正則化的方法緩解,即(5)式的分母更正為:

F_{i}\odot F_{i}^{\ast }+\varepsilon  作者解釋說這相當於在訓練時候加了白噪聲,使得濾波器更加穩定。

3.4 Filter initialization and online updates

1、訓練集是在第一幀中採用隨機放射變換產生了跟蹤視窗的8個小繞動。

模型更新updates:

2、ASEF的更新策略為:

H_{i}^{\ast }= \eta \frac{G_{i}\odot F_{i}^{\ast }}{F_{i}\odot F_{i}^{\ast }}+\left ( 1-\eta \right )H_{i-1}^{\ast }    (9)

對該更新策略的理解:

加號後面一項比較好理解,把上一幀的濾波器以一定的權重加到該幀的濾波器中,加號前面的那一項可以結合(7)式去理解,即第一項是根據該幀求得的濾波器的解乘以權重\eta

3、MOSSE的更新策略:

H_{i}^{\ast }= \frac{A_{i}}{B_{i}}                                                            (10)

A_{i}= \eta {G_{i}}\odot F_{i}^{\ast }+\left ( 1-\eta \right )A_{i-1}                    (11)

B_{i}= \eta {F_{i}}\odot F_{i}^{\ast }+\left ( 1-\eta \right )B_{i-1}                    (12)

看完ASEF的更新策略再看MOSSE的更新策略有點懵圈:A_{i}B_{i}都是怎麼初始化的呢?根據第一幀(5)式的分子分母初始化?

這樣分別更新分子分母,再相除得到更新後的濾波器與ASEF的更新相比優點在哪裡呢?文章好像也沒有再進行進一步的討論,A_{i}B_{i}初始化的問題留到閱讀完程式碼吧。

3.5 failture detection and PSR

衡量峰值強度的一個簡單方法為 peak to sidelobe ratio(PSR)峰值旁瓣比。計算相關輸出g的PSR:根據峰值周圍11×11的視窗分別計算峰值(即最大值)和剩下的畫素的值。

PSR= \frac{g_{max}-\mu _{s1}}{\sigma _{s1}}

其中g_{max}是峰值,\mu _{s1}\sigma _{s1}是旁瓣的均值和標準差。

PSR:20-60時峰值較穩定,7左右時跟蹤失敗或者已經發生遮擋

遺留問題:Ai和Bi的初始化、PSR計算方法、附錄A的推導也還沒搞懂。。。