1. 程式人生 > >KCF跟蹤演算法學習筆記(1)

KCF跟蹤演算法學習筆記(1)

KCF跟蹤是相關濾波跟蹤器最具有代表性的,但是作為一個從來沒接觸過跟蹤演算法,線代苦手來說,看懂KCF中的原理簡直是難上加難,網上所有的相關文件要說也夠多了,可惜水平太差,看完以後只想問兩個問題,這是什麼?這又是什麼?再難啃的骨頭也是要啃的,所以決定把目前還一知半解的學習內容寫出來,督促一下自己。

對這個筆記的時間和長度就不做要求了,天知道什麼時候能看完,寫到哪算哪吧。而且因為基礎原因,所以可能會寫的很瑣碎。先按照paper的邏輯從嶺迴歸開始吧!

  • 嶺迴歸

            迴歸問題就是一個預測問題,在給定樣本的前提下,預測新樣本和老樣本什麼關係。那麼預測世界關鍵要看怎麼理解這個世界,憑什麼去猜?常見的迴歸形式就是線性迴歸,認為把樣本線性組合就能預測新樣本。公式長這樣  

                                                                                           f(x_i)=w^T x_i

求解這個問題最著名的辦法就是“最小二乘法”,直白的說就是希望我的學習結果w預測這個問題帶來的誤差平方和要最小,誤差項用矩陣形式表達以後寫成這樣,為什麼這麼寫自己拿個矩陣比劃兩下就明白了,注意X是樣本x的集合

                                                                                         \theta = \left \| Xw-y \right \|^2

這個問題有封閉解,w=(X^TX)^{-1}X^Ty.這一塊內容在西瓜書中已經講得非常詳細了,也是比較容易理解的,這裡要注意一下最小二乘只是線性迴歸問題的一種解法。關於最小二乘可以看大白話解釋如下:

當然了,最小二乘法是存在弊端的,比如魯棒性不是很好,如果樣本有接近共線的情況,解出來的模型可能會變得比較難看。這時候就需要使用嶺迴歸,還不知道嶺迴歸是個什麼玩意?其實簡單了說嶺迴歸就是最小二乘的改良版,改良在哪呢?看一下嶺迴歸形式

                                                                     \theta = \left \| Xw-y \right \|^2+\lambda \left \| w \right \|^2

https://www.zhihu.com/question/28221429  已經說得比較明白了,嶺迴歸是對最小二乘迴歸的一種補充,它損失了無偏性,來換取高的數值穩定性,從而得到較高的計算精度。通過正則項作為懲罰,可以讓模型趨向於簡單,有時候,簡單的就是美的,更可能是正確的?其實簡單的線性迴歸深挖下去還有很多不明白的地方,後面有時間的把這一塊再看看吧。

這個問題也有封閉解,對w求導就可以了,w=(X^TX+\lambda I)^{-1}X^Ty

其實這裡的矩陣形式的式子求導對我而言並不是那麼直觀的,長久以來沒有線上代教材裡看見過相關論述也是很奇怪的,機器學習裡到處都是這種求導。

參考關於矩陣求導的思考,比記公式簡單,而且感覺有依據。

好了,到這裡我們完成KCF理論思想的最核心的工具的介紹——嶺迴歸。作為一種判別式跟蹤演算法,KCF的本質就是利用嶺迴歸逐幀訓練一個2D濾波器,具體內容後面的筆記再介紹。