目标跟踪算法——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的应用里,就是需要设计一个滤波模板,使得当它作用在跟踪目标上时,得到的响应最大,最大响应值的位置就是目标的位置。(详细的介绍大家可以参考一下王泥喜龙一的博客地址)如下图所示:
目标跟踪算法——KCF入门详解_第1张图片
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个样本了,这就是循环矩阵在这里最大的用处,制造样本的数量,以图像的形式展示就是这样的,一个样本经过循环矩阵之后就可以产生这么多的样本。

目标跟踪算法——KCF入门详解_第2张图片

在二维图像的情况下就是像下图这样

目标跟踪算法——KCF入门详解_第3张图片
把图像向上、向下分别移动不同的像素得到新的样本图像,这就是循环之后的样本,这样算是直接增加了样本的数量,然后用来对分类器进行训练,更多的样本肯定能够训练的分类器的效果就更好了。
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

目标跟踪算法——KCF入门详解_第4张图片

8.2 Evaluation

在50个序列集上进行测试对比。
目标跟踪算法——KCF入门详解_第5张图片

最后结果是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计算有一个大致的方向,如果只是想拿来使用,基本没什么问题了,想要进一步提升的话就要你去仔细专研,如果只是想要毕业设计用这个来做,水一下,基本看完我说的这些,然后配合代码完全没问题的,希望各路同学和大牛们指出,如果有哪里分析不对和想要知道我没有写到的地方可以直接留言跟我说,我会回来继续补充完整,或者直接给你解答。

你可能感兴趣的:(笔记)