1. 程式人生 > >目標跟蹤演算法——KCF入門詳解

目標跟蹤演算法——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計算有一個大致的方向,如果只是想拿來使用,基本沒什麼問題了,想要進一步提升的話就要你去仔細專研,如果只是想要畢業設計用這個來做,水一下,基本看完我說的這些,然後配合程式碼完全沒問題的,希望各路同學和大牛們指出,如果有哪裡分析不對和想要知道我沒有寫到的地方可以直接留言跟我說,我會回來繼續補充完整,或者直接給你解答。