最近剛開始學習単目標跟蹤龟梦,最近想搞明白KCF的思想,看了一個星期的公式推導窃躲,要看哭了<品 !5僦稀躁倒!把自己現(xiàn)在已經(jīng)知道的一些結(jié)論寫下來理理思路。歡迎指正洒琢。
先說一下它的優(yōu)點吧:
1.通過圖片的矩陣循環(huán)秧秉,增加了訓練樣本,提高了正確率衰抑。
2.進行傅里葉變換象迎,避免矩陣求逆操作,計算更快速呛踊。
3.使用高斯label砾淌,更合理。
現(xiàn)在來梳理一下它整個計算的流程:
1.目標函數(shù):
我們的目標是最小化我們的采樣數(shù)據(jù)xi的計算標簽f(xi)與下一幀真實目標位置的真實標簽yi(回歸目標)的距離谭网。(這個應該不難理解吧汪厨,我計算出來的標簽越像真實標簽,說明我找到的下一幀得得位置離它真實位置越近)
這個表示的形式為脊回歸蜻底,下面的部分求解過程骄崩,可以參考SVM的求解過程聘鳞。雖然不是一摸一樣的形式,但是幫助理解本篇文章中的求解方式是非常有用的(“支持向量機通俗導論(理解SVM的三層境界)LaTex最新版_2015.1.9.pdf”這篇文章中關于表達式的意思和求解寫的很清楚)
在線性問題中:
在求解這里的最小值的時候要拂,將f(xi)根據(jù)公式(1)換成矩陣形式Wt*X(為什么可以轉(zhuǎn)換成這種形式參考SVM)抠璃,X的每一行表示一個采樣結(jié)果的xi,X是經(jīng)過第一行的xi不斷循環(huán)得到的一個矩陣,Wt表示W(wǎng)的轉(zhuǎn)置脱惰。y表示yi組成的向量搏嗡。然后計算公式(2)對W的求導等于0可以得到:
(4)式即將(3)式中的轉(zhuǎn)置轉(zhuǎn)換成了共軛,只要是考慮在下面的傅里葉轉(zhuǎn)換中有負數(shù)的出現(xiàn)拉一。
這里我們看到在求w得最小值的時候有矩陣求逆的操作采盒,這使得計算量比較大。然而根據(jù)之前說的X是一個循環(huán)矩陣蔚润,形式為:
將矩陣進行傅立葉變換后磅氨,循環(huán)矩陣有一個性質(zhì):
即一個循環(huán)矩陣可以用它的第一行的向量進行傅里葉變換之后表示,x帶一個帽子表示對向量x進行了傅里葉變換嫡纠。傅里葉變換的具體理解可以參考:此篇傅里葉博客
對于如何進行傅里葉轉(zhuǎn)換可以參考:傅里葉轉(zhuǎn)換方法
然后就可以發(fā)現(xiàn)一個循環(huán)矩陣可以轉(zhuǎn)換成用一個向量來表示烦租。將(6)式帶入(4)式化簡:
w戴帽子的意思就是進行了傅里葉轉(zhuǎn)換,這樣就從一個矩陣的運算換到了向量的運算除盏。減少了求逆的操作叉橱。
當然在大多數(shù)情況下我們解決的是非線性問題:
那我們就引進了高維求解和 核函數(shù)的概念(仔細的求解參考上文提到的SVM文章)。
在高維空間中非線性問題w可以變成一個線性問題者蠕。
fai(xi)表示將x映射到高位空間的函數(shù)窃祝。
那我們的目標函數(shù)就可以表示成
其中k表示核函數(shù)它的定義運算如下:
由(8)可見之前求最小w的問題轉(zhuǎn)換成了求最小阿爾法的問題。將(8)帶入(2)阿爾法的求解參考一篇文章“R. Rifkin, G. Yeo, and T. Poggio, “Regularized least-squares classification,Nato Science Series Sub Series III Computer and Systems Sciences, vol. 190, pp. 131–154, 2003.”
最后可以解得
進行傅里葉變換:
這里Kxx代表K矩陣的第一行元素的傅里葉變換踱侣。K也是一個循環(huán)矩陣可證粪小,此處省略具體方式可參考“High-Speed Tracking with Kernelized Correlation Filters Jo?o F. Henriques, Rui Caseiro, Pedro Martins, and Jorge Batista”的5.2節(jié)。
這樣(8)式可以表示成:
Kz是所有訓練樣本和候補patch之間的核矩陣
現(xiàn)在就剩討論一下k的形式泻仙,如果k是線性核的話就可以轉(zhuǎn)換成我們在討論線性問題時求得的w的傅里葉轉(zhuǎn)換之后的形式糕再。本篇文章中用的是高斯核,形式如下:
這就是里面用到的主要的公式的推倒吧玉转。
推倒下一幀的地方時就是計算采樣的特征和之前的訓練完的數(shù)據(jù)做高斯匹配再與阿爾法相乘,得到的一個響應值最大的就是下一幀的可能值最大的地方殴蹄。