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

相關推薦

人臉跟蹤KCF相關濾波演算法

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

相關濾波-KCF-視訊跟蹤演算法解析(1)

動機: 大部分基於檢測的視訊跟蹤演算法,當選取充足的樣本時,計算量太大無法保證跟蹤演算法的實時性,因此,大部分基於檢測的演算法都以犧牲樣本的數量來保證演算法的實時性。這使得跟蹤演算法的魯棒性比較差。因此,有沒有一種比交好的方法,既能保證實時性又能儘量選取足夠的的樣本進行訓

人臉跟蹤Kalman跟蹤原理講解

一、卡爾曼濾波的方程推導        直接從數學公式和概念入手來考慮卡爾曼濾波無疑是一件非常枯燥的事情。為了便於理解,我們仍然從一個現實中的例項開始下面的介紹,這一過程中你所需的預備知識僅僅是高中程度的物理學內容。        假如現在有一輛在路上做直線運動的小車(如

目標跟蹤KCF執行流程圖(matlab版本)

前言 今天忽然看到自己寫的非常粗糙的部落格 目標跟蹤:KCF程式碼分析(matlab版本) 得到了兩個贊,感覺很開心,所以就把自己最近總結的KCF執行流程圖分享出來。 ps:換位體驗了一次部落格被

人臉跟蹤Goturn中的forward的前處理

void Regressor::SetMean() { // Set the mean image. mean_ = cv::Mat(input_geometry_, CV_32FC3, cv::Scalar(104, 117, 123)); } void Reg

人臉跟蹤POI多目標跟蹤

網上已有很多關於MOT的文章,此係列僅為個人閱讀隨筆,便於初學者的共同成長。若希望詳細瞭解,建議閱讀原文。 本文是tracking by detection 方法進行多目標跟蹤的文章,最大的特點是使用了state-of-the-art的detection和feature

影象保邊濾波演算法集錦--Surface Blur(表面模糊濾波)演算法與實現

本文介紹經典的表面模糊Surface Blur演算法與實現。表面模糊是PS裡一個重要的保邊濾波器,它的演算法很簡單,公式如下所示:主要思想還是計算當前畫素X的鄰域範圍內不同畫素的加權求和,邊緣地方的畫素,加權比較大,平滑的地方加權比較小,以此來保留邊緣資訊,平滑平坦區域;效果

人臉跟蹤簡單跟蹤

一、概述       目標跟蹤是計算機視覺領域的一個重要分支。研究的人很多,近幾年也出現了很多很多的演算法。大家看看淋漓滿目的paper就知道了。但在這裡,我們也聚焦下比較簡單的演算法,看看它的優勢在哪裡。畢竟有時候簡單就是一種美。       在這裡我們一起來欣賞下“模板匹

KCF相關濾波跟蹤公式推導筆記(1)——線性情況下濾波器的解

線上性條件下,利用迴圈矩陣,最終的解為 w^=x^∗⊙y^x^∗⊙x^+λ(1)(1)w^=x^∗⊙y^x^∗⊙x^+λ 即為論文原文的(12)式,其中: (1)x^x^即F(x)F(x),表示xx的離散傅立葉變換 (2)字母右上角的星號表示共軛

相關濾波跟蹤演算法“道別”

         今天跑完了最後優化的一次傳統類別的相關濾波演算法          在 error threshold、overlap threshold、overlap AUC 方面已經超過了所有的傳統相關濾波類方法(這裡僅和TB-50的結果比,都是https://gi

人臉識別之人臉對齊(三)--AAM演算法原文 http://blog.csdn.net/colourfulcloud/article/details/9774017 AAM(Active Appear

原文: http://blog.csdn.net/colourfulcloud/article/details/9774017 AAM(Active Appearance Model)主動外觀模型主要分為兩個階段,模型建立階段和模型匹配階段。其中模型建立階段包括了對訓練樣本分別建立形狀模型(

NLP之WE之CBOW&Skip-GramCBOW&Skip-Gram演算法概念相關論文、原理配圖、關鍵步驟詳細攻略

NLP之WE之CBOW&Skip-Gram:CBOW&Skip-Gram演算法相關論文、原理配圖、關鍵步驟詳細攻略 CBOW&Skip-Gram演算法相關論文 CBOW 模型和Skip-Gram 模型,參考論文《Efficient Estimation of Wo

常用軟體濾波演算法---摘自FeoTech

感謝原作者: FeoTech  原文:http://feotech.com/?p=120 1、限幅濾波法(又稱程式判斷濾波法) A、名稱:限幅濾波法(又稱程式判斷濾波法) B、方法: 根據經驗判斷,確定兩次取樣允許的最大偏差值(設為A), 每次檢測到新值時判斷:如果本次值與上次值之差&

濾波演算法卡爾曼濾波

這兩天學習了一些卡爾曼濾波演算法的相關知識。相比其它的濾波演算法,卡爾曼濾波在對計算量需求非常之低,同時又能達到相當不錯的濾波結果。 1. 演算法原理 網上看到一篇文章http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/對

MOSSE相關濾波目標跟蹤論文

論文全名:Visual Object Tracking using Adaptive Correlation Filters 論文摘自CVPR 2010,由David S. Bolme、J.Ross Beveridge、Bruce A. Draper與Yui Man Lui撰寫,簡稱MOSSE。

基於卡爾曼濾波演算法在三維球軌跡中跟蹤應用

關於卡爾曼濾波跟蹤演算法的理解文章實在太多,絕大多數都在敘述演算法原理和一些理解,而且一般舉例都限於一維直線運動或者二維平面運動,故在此不做過多的重複表述,有關原理理解性的文章請參考本部落格後的refe

Android整機效能監控CPU相關資料的獲取(使用率、主頻)

根據最近的調研,Android整機的效能主要有如下方面: 1、CPU 2、記憶體 3、耗電量 4、網路 本文著重介紹CPU相關資料的獲取,在多核情況下,對每個CPU執行情況進行監控,獲取相關的屬性。 A. 當前主頻,通過 cat /sys/devices/system/cp

人臉識別即使不上傳任何照片依然能跟蹤你的個人資訊

本文為數盟原創譯文 請註明出處為數盟社群 除非你是來自俄羅斯,否則你可能從來沒有聽說過這種服務,即通過分析一個人的照片就能找到他在VK.com社交網路中的帳戶。這就是所謂的FindFace。它在2016年2月上線,最近已經頗為流行;這歸功於由聖彼得堡攝影師葉Egor

目標跟蹤CamShift演算法

1.前言 camshift利用目標的顏色直方圖模型將影象轉換為顏色概率分佈圖,初始化一個搜尋窗的大小和位置,並根據上一幀得到的結果自適應調整搜尋視窗的位置和大小,從而定位出當前影象中目標的中心位置

相關濾波KCF、迴圈對角化

設訓練樣本集(xi,yi),i=1,2….n,我們需要求出一個線性迴歸函式f(x)=wTx ,使得對測試樣本(x,y),能用f(x) 估計y 此時目標函式表示為: 對w求偏導,得: 求w必須要求矩陣的逆,矩陣求逆是一個非常耗時的過程,因此,如果