目標跟蹤算法——KCF入門詳解

一直以來沒有很想寫這個,以爲這個東西比較簡單,還算是比較容易理解的一個算法,但是在知乎上回答過一個問題之後就有朋友私信我一些關於細節的東西,我一直以爲關於細節的東西大家可以自己去理解,大家都是想快速瞭解這個,那我就厚臉皮了在這寫一下自己的見解了,如果有寫的不詳細或者大家想了解的東西沒寫到的都可以留言,我給補充上去。

————————————————————————————————————————————

一、算法介紹

KCF全稱爲Kernel Correlation Filter 核相關濾波算法。是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins, and Jorge Batista提出來的,算法出來之後也算是轟動一時,這個算法不論是在跟蹤效果還是跟蹤速度上都有十分亮眼的表現,所以引起了一大批的學者對這個算法進行研究以及工業界也在陸續把這個算法應用在實際場景當中。這個算法主頁裏面有論文還有代碼都可以在這裏面下載,也有一些簡介之類的,這篇文章在2015年作者又發在了TPAMI上面,所以大家可能會看到兩個版本,但是沒有改動,都是可以看到。論文下載地址相關濾波算法算是判別式跟蹤,主要是使用給出的樣本去訓練一個判別分類器,判斷跟蹤到的是目標還是周圍的背景信息。主要使用輪轉矩陣對樣本進行採集,使用快速傅里葉變化對算法進行加速計算。

二、詳細介紹

這部分就直接根據論文當中的安排給大家解釋一下,這樣大家對照論文去看,也算是比較舒服的理解了。

Abstract:主要介紹了一下這篇文章的想法的由來以及算法的成就和所使用的東西,還介紹了一下論文在哪些數據集上測試了等。簡介一般就是論文的總結,對論文做一個總體的介紹,大致的思想基本看了間接之後就能明白了,就是上面我寫的那些,使用核相關濾波器訓練一個判別式分類器,使用輪轉矩陣生成樣本去訓練分類器,代碼也是開源的。

1、Introduction

第一部分就是對整個跟蹤的問題進行一個介紹,跟蹤是計算機視覺領域一個比較重要的成分,可以應用在多種領域,人機交互、監控等我就不一一列舉了,這個大家可以自己去查了,在第一部分比較重要的有這麼幾句話,Although the reasons for doing so are understandable, we argue that under sampling negatives is the main factor inhibiting performance in tracking. In this paper, we develop tools to analytically incorporate thousands of samples at different relative translations, without iterating over them explicitly. This is made possible by the discovery that, in the Fourier domain, some learning algorithms actually become easier as we add more samples, if we use a specific model for translations.
主要的意思就是說負樣本對訓練一個分類器是一個比較重要的存在,但是在訓練的時候負樣本的數量是比較少的,所以我們本文的算法就是爲了更加方便地產生更多的樣本,以便於我們能夠訓練一個更好的分類器。
Our framework easily incorporates multiple feature channels, and by using a linear kernel we show a fast extension of linear correlation filters to the multi-channel case.
相關濾波器是根據之前的MOSSE算法(論文地址)改進的,可以說是後來CSK、STC、Color Attributes等tracker的鼻祖。Correlation Filter(以下簡稱CF)源於信號處理領域,後被運用於圖像分類等方面。而Correlation Filter應用於tracking方面最樸素的想法就是:相關是衡量兩個信號相似值的度量,如果兩個信號越相似,那麼其相關值就越高,而在tracking的應用裏,就是需要設計一個濾波模板,使得當它作用在跟蹤目標上時,得到的響應最大,最大響應值的位置就是目標的位置。(詳細的介紹大家可以參考一下王泥喜龍一的博客地址)如下圖所示:
這裏寫圖片描述
CSK(論文下載地址)是這個算法改進的初級版本,這篇是主要引進了循環矩陣生成樣本,使用相關濾波器進行跟蹤,本篇KCF是對CSK進行更進一步的改進,引進了多通道特徵,可以使用比着灰度特徵更好的HOG(梯度顏色直方圖)特徵或者其他的顏色特徵等。

2、Related Work

2.1、基於檢測的跟蹤
這個聽名字就比較好理解了,基於檢測到的目標進行跟蹤,首先在跟蹤之前對目標進行檢測,得到目標的位置,然後對目標進行學習,跟蹤。
2.2、樣本轉換和相關濾波
對一些以前存在的樣本轉換的方法和相關濾波的一些知識進行一個介紹。For us, this hinted that a deeper connection between translated image patches and training algorithms was needed, in order to overcome the limitations of direct Fourier domain formulations.而且說出了樣本和訓練算法都是必須的,直接在頻域使用傅里葉變化加快算法。
2.3、後來的工作
初始版本就是我上面說的CSK那篇,然後把多通道特徵以及核函數這個加進來對算法進行提升。

3、Contributions

提出了一個快速的效果良好的跟蹤算法,把以前只能用單通道的灰度特徵改進爲現在可以使用多通道的HOG特徵或者其他特徵,而且在現有算法中是表現比較好的,使用HOG替換掉了灰度特徵,對實驗部分進行了擴充,充分證明自己的效果是比較好的。使用核函數,對偶相關濾波去計算。

4、Building Blocks

4.1、 Linear regression
主要使用嶺迴歸函數,能夠像SVM那些有良好的表現。訓練的目的就是找到這麼一個函數這裏寫圖片描述使得我們的誤差函數最小,在本文中使用的誤差函數爲這裏寫圖片描述
接下來的一切內容都是去講怎麼去最小化這個二次函數,以及怎麼去找這個函數,這個方法也是比較簡單的,就是對函數求導,然後使導數等於0,然後得到w,既是我們要求的函數。
4.2、Cyclic Shifts
本文的重點來了,循環矩陣,文章中爲了介紹方便,作者使用了單通道一維的數據表示去進行講解,可以直接擴展到二維的情況。一維的情況下就是矩陣想乘的問題了,就是矩陣分析當中學過的左乘一個單位矩陣和右乘一個單位矩陣。左乘是行變換,右乘列變化。目的就是得到更多的樣本,每乘一次都是一個新的樣本,這樣的話就可以多出來n*n個樣本了,這就是循環矩陣在這裏最大的用處,製造樣本的數量,以圖像的形式展示就是這樣的,一個樣本經過循環矩陣之後就可以產生這麼多的樣本。

這裏寫圖片描述

在二維圖像的情況下就是像下圖這樣

這裏寫圖片描述
把圖像向上、向下分別移動不同的像素得到新的樣本圖像,這就是循環之後的樣本,這樣算是直接增加了樣本的數量,然後用來對分類器進行訓練,更多的樣本肯定能夠訓練的分類器的效果就更好了。
4.3、Circulant matrices
循環矩陣的計算可以直接把所有的樣本都轉換爲對角矩陣進行處理,因爲在循環矩陣對樣本進行處理的時候,樣本並不是真實存在的樣本,存在的只是虛擬的樣本,可以直接利用循環矩陣所特有的特性,直接把樣本矩陣轉換爲對角矩陣進行計算, 這樣可以大幅度加快矩陣之間的計算,因爲對角矩陣的運算只需要計算對角線上非零元素的值即可。Eq. 7 expresses the eigendecomposition of a general circulant matrix. The shared, deterministic eigenvectors Flie at the root of many uncommon features, such as commutativity or closed-form inversion. 說的意思就是大概是做了特徵分解,其實是一個意思就是簡化運算,加快速度。

4.4 Putting it all together

本節就是對上面w進行一個求解的過程,具體的公式推導的部分我不會做詳細的推導,主要是我也不是很懂,哈哈,雖然自己推出來了,如果有想知道的或者大神希望指點,想要知道沒有推出來的同學也可以問問我,我給你們說一下我的思路。

4.5 Relationship to Correlation filters

Correlation filters have been a part of signal processing since the 80’s, with solutions to a myriad of objective functions in the Fourier domain . Recently, they made a reappearance as MOSSE filters [9], which have shown remarkable performance in tracking, despite their simplicity and high FPS rate.
相關濾波一開始是信號處理的東西,經過MOSSE的發表之後引進到tracking 當中,因爲計算的速度和精度都很不錯,所以取得了很好的效果。

Circulant matrices allow us to enrich the toolset put forward by classical signal processing and modern correlation filters, and apply the Fourier trick to new algorithms.
循環矩陣豐富了樣本庫,給出了更好的相關濾波算法。

這一個小節可以好好看一下,就是相關濾波跟蹤算法怎麼來的。

5 Non-linear regression

使用非線性迴歸對模型進行訓練。

5.1 Kernel trick- brief overview

核技巧,這個是本文的另外一大亮點,把低維空間的計算映射到高維的核空間,在低維空間不可分的情況到高維空間之後變的線性可分了,這樣用一個簡單的核函數直接做映射可以很好的完成這個工作。
核函數主要的目的就是把一個線性問題映射到一個非線性核空間,這樣把在低維空間不可分的到核空間之後就能夠可分了。
本章節接下來的部分就是對核技巧進行很好的解讀了。

5.2 Fast kernel regression

快速的核迴歸。就是怎麼去計算核函數,怎麼快速得到最優解。

5.3 Fast detection

快速檢測。核函數訓練完成之後,新來的樣本直接進行映射到核空間,然後使用訓練得到的函數進行運算得到函數值,對所有的位置都進行計算,就能快速的檢測到目標的位置所在。

6 Fast kernel Correlation

本節就是介紹了幾種常見的核函數的形式,以及每種核函數所對應的計算方式。

6.1 Dot-product and polynomial kernels

6.2 Radial Basis Function and Gaussian kernels

6.3 Other kernels

7 MULTIPLE CHANNELS

In this section, we will see that working in the dual has the advantage of allowing multiple channels (such as the orientation bins of a HOG descriptor [20]) by simply summing over them in the Fourier domain. This characteristic extends to the linear case, simplifying the recently-proposed multi-channel correlation filters [31], [32], [33] considerably, under specific conditions.

7.1 General case

這裏寫圖片描述
這個公式看明白了這一節就沒什麼問題了,無非就是單通道轉換爲多通道,使用高斯核函數。

7.2 Linear kernel

這個就是線性核函數多通道
這裏寫圖片描述

In conclusion, for fast element-wise operations we can choose multiple channels (in the dual, obtaining the DCF) or multiple base samples (in the primal, obtaining the MOSSE), but not both at the same time. This has an important impact on time-critical applications, such as tracking. The general case [31] is much more expensive and suitable mostly for offline training applications.

8 EXPERIMENTS

8.1 Tracking pipeline

這裏寫圖片描述

8.2 Evaluation

在50個序列集上進行測試對比。
這裏寫圖片描述

最後結果是0.732,精度還是不錯的,比着原有算法有大幅度提升。

9 CONCLUSIONS AND FUTURE WORK

In this work, we demonstrated that it is possible to analytically model natural image translations, showing that under some conditions the resulting data and kernel matrices become circulant. Their diagonalization by the DFT provides a general blueprint for creating fast algorithms that deal with translations. We have applied this blueprint to linear and kernel ridge regression, obtaining state-of-the-art trackers that run at hundreds of FPS and can be implemented with only a few lines of code. Extensions of our basic approach seem likely to be useful in other problems. Since the first version of this work, circulant data has been exploited successfully for other algorithms in detection [31] and video event retrieval [30]. An interesting direction for further work is to relax the assumption of periodic boundaries, which may improve performance. Many useful algorithms may also be obtained from the study of other objective functions with circulant data, including classical filters such as SDF or MACE [25], [26], and more robust loss functions than the squared loss. We also hope to generalize this framework to other operators, such as affine transformations or non-rigid deformations.

———————————————————————————————————到此爲止,本篇的主要目的就是給大家梳理一下,給那些不想深入去了解的同學一個可以分析的參考路線,看完我說的這些,基本上你對KCF計算有一個大致的方向,如果只是想拿來使用,基本沒什麼問題了,想要進一步提升的話就要你去仔細專研,如果只是想要畢業設計用這個來做,水一下,基本看完我說的這些,然後配合代碼完全沒問題的,希望各路同學和大牛們指出,如果有哪裏分析不對和想要知道我沒有寫到的地方可以直接留言跟我說,我會回來繼續補充完整,或者直接給你解答。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章