【Tracker】KCF跟踪方法百度翻译

论文

High-Speed Tracking with Kernelized Correlation Filters
Joao F. Henriques, Rui Caseiro, Pedro Martins, Jorge Batista
IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 37, pp. 583-596, March, 2015.

对于理解 KCF 强烈推荐
作者:lichong
文章:KCF相关滤波跟踪算法
网址:https://zhuanlan.zhihu.com/p/48249974
部分引用其中内容

摘要

目标视觉跟踪(Visual Object Tracking),大家比较公认分为两大类:生成(generative)模型方法和判别(discriminative) 模型方法,目前比较流行的是判别类方法,也叫检测跟踪tracking-by-detection
目前大多数跟踪方法核心是一个判别分类器,负责区分目标和周围环境。为了应对自然图像的变化,该分类器通常使用平移和缩放样本块进行训练。这些样本集充满了冗余——任何重叠像素都被限制为相同。基于这个简单的观察,我们提出了一个分析模型,用于数千个已标记的数据集。通过证明结果数据矩阵是循环的,我们可以用离散傅里叶变换对其进行对角化,从而减少了几个数量级的存储和计算。有趣的是,对于线性回归,我们的公式相当于一些最快的竞争跟踪器使用的相关滤波器。然而,对于核回归,我们推导了一种新的核化相关滤波器 Kernelized Correlation Filter(KCF),它与其他核算法不同,具有与线性算法完全相同的复杂度。在此基础上,我们还提出了一种线性相关滤波器的快速多通道扩展,通过一个线性核,我们称之为双相关滤波器 Dual Correlation Filter (DCF)。KCF和DCF在50个视频基准上的表现都优于排名靠前的跟踪器,如Struck或TLD,尽管它们以每秒数百帧的速度运行,并且只需几行代码即可实现(算法1)。为了鼓励进一步的开发,我们的跟踪框架是开源的。
(KCF与DCF区别:KCF采用高斯核,DCF采用线性核)

1. 引言

可以说,最近视觉跟踪研究中最大的突破之一是广泛采用了区别性学习方法。跟踪任务是许多计算机视觉系统的关键组成部分,可以自然地指定为在线学习问题[1],[2]。给定包含目标的初始图像块,目标是学习分类器以区分其外观和环境外观。该分类器可以在多个位置进行详尽的评估,以便在后续帧中检测它。当然,每个新的检测都会提供一个新的图像修补程序,用于更新模型。将注意力集中在描述感兴趣的对象上是很有诱惑力的——分类器的正样本。然而,鉴别方法的一个核心原则是对相关环境——阴性样本——给予同等或更多的重视。最常用的负样本是来自不同位置和尺度的图像块,反映了在这些条件下将评估分类器的先验知识。
一个极具挑战性的因素是,从一幅图像中可以获得几乎无限量的负片样本。由于跟踪的时间敏感性,现代跟踪器在合并尽可能多的样本和保持低计算需求之间走了一条很好的路线。通常的做法是在每帧[3]、[4]、[5]、[6]、[7]中随机选择几个样本。虽然这样做的原因是可以理解的,但我们认为采样不足的负片是抑制跟踪性能的主要因素。
在本文中,我们开发了一些工具,可以分析地将数千个样本合并到不同的相对变换中,而无需显式地迭代它们。这是因为我们发现,在傅里叶域中,如果我们使用特定的模型进行变换,随着我们添加更多的样本,一些学习算法实际上变得更容易。这些分析工具,即循环矩阵,在流行的学习算法和经典信号处理之间提供了一个有用的桥梁。这意味着我们能够提出一种基于核岭回归[8]的跟踪器,该跟踪器不受“核化诅咒”的影响,即其更大的渐近复杂性,甚至比非结构化线性回归的复杂性更低。相反,它可以被视为线性相关滤波器的核化版本,它构成了可用的最快跟踪器的基础[9],[10]。我们利用了强大的内核技巧,其计算复杂度与线性相关滤波器相同。我们的框架很容易合并多个特征通道,通过使用线性核,我们将线性相关滤波器快速扩展到多通道情况。

2. 相关工作

2.1 检测跟踪

对通过检测进行跟踪的全面回顾超出了本文的范围,但我们建议感兴趣的读者参考两个优秀的和最近的调查[1],[2]。最流行的方法是使用判别外观模型[3]、[4]、[5]、[6]。它包括在线训练分类器,受统计机器学习方法的启发,预测图像块中目标的存在或不存在。然后在许多候选块上使用分类器进行测试,以找到最可能的位置。或者,也可以直接预测位置[7]。带有类标签的回归可以看作是分类,因此我们可以互换使用这两个术语。

在关注与我们的分析方法更直接相关的文献之前,我们将讨论一些相关的跟踪方法。跟踪检测范式的典型示例包括基于支持向量机(SVM)[12]、随机森林分类器[6]或boosting变量[13]、[5]的例子。所有提到的算法都必须适应在线学习,以便对跟踪有用。Zhang等人[3]受压缩感知技术的启发,提出了一种固定随机基的投影,以训练朴素贝叶斯分类器。为了直接预测目标的位置,Hare等人[7]采用了基于大量图像特征的结构化输出支持向量机和高斯核,而不是预测目标在给定图像块中的位置。非歧视性跟踪器的例子包括Wu等人[14]的工作,他们将跟踪描述为一系列图像对齐目标,以及Sevilla Lara和Learn Miller[15]的工作,他们提出了基于分布场的强外观描述符。Kalal等人[4]的另一种鉴别方法使用一组结构约束来指导boosting分类器的采样过程。最后,Bolme等人[9]利用经典信号处理分析推导出快速相关滤波器。稍后,我们将更详细地讨论最后两项工作。

2.2 样本转换和相关滤波

回想一下,我们的目标是有效地学习和检测过度翻译的图像补丁。与我们的方法不同,到目前为止,大多数尝试都集中在试图剔除不相关的图像补丁。在检测方面,可以使用branch和bound来查找分类器响应的最大值,同时避免不希望出现的候选补丁[16]。不幸的是,在最坏的情况下,算法可能仍然需要迭代所有补丁。一种相关的方法可以有效地找到一对图像中最相似的面片[17],但不能直接转换为我们的设置。虽然这并不排除穷举搜索,但值得注意的优化是使用快速但不准确的分类器来选择有希望的补丁,并且只在这些补丁上应用完整、较慢的分类器[18],[19]。

在训练方面,Kalal等人[4]建议使用结构约束从每个新图像中选择相关的样本面片。这种方法相对昂贵,限制了可以使用的功能,并且需要仔细调整结构启发式。一种流行且相关的方法是硬负挖掘,尽管它主要用于离线检测器学习[20]。它包括在图像池上运行初始检测器,并选择任何错误的检测作为样本进行重新训练。尽管这两种方法都减少了训练样本的数量,但一个主要缺点是必须通过运行检测器来彻底考虑候选补丁。

我们研究的最初动机是最近相关滤波器在跟踪方面的成功[9],[10]。相关滤波器已被证明与更复杂的方法具有竞争力,但只使用了计算能力的一小部分,每秒数百帧。它们利用了这样一个事实,即两个面片(松散地说,它们在不同相对平移处的点积)的卷积相当于傅里叶域中的元素积。因此,通过在傅里叶域中制定目标,他们可以同时为多个平移或图像偏移指定线性分类器的期望输出。

傅里叶域方法可能非常有效,并且在信号处理方面有几十年的研究可借鉴[21]。不幸的是,它也可能是极其有限的。我们希望同时利用计算机视觉领域的最新进展,例如更强大的功能、大幅度的分类器或内核方法[22]、[20]、[23]。

一些研究朝着这个方向发展,并试图将内核方法应用于相关滤波器[24]、[25]、[26]、[27]。在这些作品中,必须区分两种类型

3. 贡献

这项工作的初步版本已在前面介绍[29]。它首次证明了周期移位样本岭回归与经典相关滤波器之间的联系。这使得使用O(n logn)快速傅里叶变换而不是昂贵的矩阵代数进行快速学习成为可能。还提出了第一个核化相关滤波器,但仅限于单个信道。此外,它还提出了在所有循环移位时计算核的闭式解。它们具有相同的O(n logn)计算成本,并且是针对径向基和点积核推导的。

目前的工作在很大程度上增加了初始版本。使用更简单的对角化技术重新推导了所有原始结果(第4-6节)。我们将原始作品扩展到处理多个频道,从而允许使用最先进的功能,从而显著提高性能(第7节)。初始结果中添加了大量新的分析和直观的解释。我们还将原始实验从12个视频扩展到50个视频,并添加了一种新的基于方向梯度直方图(HOG)特征的核化相关滤波器(KCF)跟踪器,而不是原始像素。通过线性核,我们还提出了一种计算复杂度非常低的线性多通道滤波器,其性能几乎与非线性核相匹配。我们将其命名为双相关滤波器(DCF),并说明它与一组最近更昂贵的多通道滤波器的关系[31]。在实验上,我们证明了KCF在不进行任何特征提取的情况下,其性能已经优于线性滤波器。由于具有HOG功能,线性DCF和非线性KCF的性能大大优于排名靠前的跟踪器,如Stroke[7]或Track Learn Detect(TLD)[4],同时以数百帧/秒的速度舒适地运行。

4. 创建区域

在这一部分中,我们提出了一个分析模型,用于在不同的变换中提取图像块,并计算出对线性回归算法的影响。我们将展示与经典相关滤波器的自然内在联系。我们开发的工具将允许我们研究第5-7节中更复杂的算法。

4.1 线性回归

我们将重点关注岭回归,因为它允许一个简单的封闭形式的解决方案,并且可以实现接近更复杂方法的性能,如支持向量机[8]。训练的目标是找到一个函数 f ( z ) = w T z f(\mathbf{z}) =\mathbf{w}^{T}\mathbf{z} f(z)=wTz 使样本 x i x_i xi与他们回归目标 y i y_i yi的最小化平方误差最小。

min ⁡ f ∑ i n L ( f ( x i ) − y i ) + λ Ω ( f ) \min_{f}\sum_{i}^{n}L(f(\mathbf{x}_i)-y_i)+\lambda\Omega(f) fmininL(f(xi)yi)+λΩ(f)
min ⁡ w ∑ i ( f ( x i ) − y i ) 2 + λ ∥ w ∥ 2 (1) \min_{\mathbf{w}}\sum_{i}(f(x_i)-y_i)^2+\lambda\left \| \mathbf{w} \right \|^2\tag{1} wmini(f(xi)yi)2+λw2(1)
min ⁡ w ∑ i ( w T x i − y i ) 2 + λ ∥ w ∥ 2 \min_{\mathbf{w}}\sum_{i}(\mathbf{w}^Tx_i-y_i)^2+\lambda\left \| \mathbf{w} \right \|^2 wmini(wTxiyi)2+λw2
写成矩阵形式
min ⁡ w ∥ X w − y ∥ 2 + λ ∥ w ∥ 2 \min_{\mathbf{w}}\left \|X\mathbf{w}-\mathbf{y} \right \|^2+\lambda\left \| \mathbf{w} \right \|^2 wminXwy2+λw2
w \mathbf{w} w为列向量,表示权重系数
X X X为列向量, X = [ x 1 , x 2 , ⋯   , x n ] T X=[x_1,x_2,\cdots,x_n]^T X=[x1,x2,,xn]T,每行表示一个向量 x i x_i xi x i x_i xi是一个样本)。
y \mathbf{y} y为列向量, y = [ y 1 , y 2 , ⋯   , y n ] T \mathbf{y}=[y_1,y_2,\cdots,y_n]^T y=[y1,y2,,yn]T,每行表示一个向量 y i y_i yi y i y_i yi是一个回归目标)。

Tikhonov正则化
在这里插入图片描述
摘自:Picassooo,《Tikhonov正则化》,https://www.cnblogs.com/picassooo/p/13082208.html
摘自:张贤达的《矩阵分析与应用》第六章第2节

λ \lambda λ为正则化参数用来控制过拟合(惩罚项系数,系数越大惩罚项作用越明显,当为0时退化成最小二乘回归),如SVM中的。
解析解 给出解的具体函数形式,从解的表达式中就可以算出任何对应值; 数值解是在特定条件下通过近似计算得出来的一个数值 )
w闭合解如下式
w = ( X T X + λ I ) − 1 X T y (2) \mathbf{w} =(X^TX+\lambda I)^{-1}X^T \mathbf{y} \tag{2} w=(XTX+λI)1XTy(2)
数据矩阵 X X X每行 x i x_i xi有一个样本, y y y中每一个元素是一个回归目标 y i y_i yi, I I I是一个单位矩阵。
从第4.4节开始,我们必须在傅里叶域中工作,在这里,量通常是复数值。它们并不难处理,只要我们使用公式2的复数版本,
w = ( X H X + λ I ) − 1 X H y (3) \mathbf{w} =(X^HX+\lambda I)^{-1}X^H \mathbf{y} \tag{3} w=(XHX+λI)1XHy(3)
X H X^H XH是厄米特转置,共轭转置 X H = ( X ∗ ) T X^H=(X^*)^T XH=(X)T X ∗ X^* X X X X的复共轭。对于实数,等式3简化为等式2

一般来说,必须求解一个大型线性方程组来计算解,这在实时设置中可能会变得非常困难。在接下来的段落中,我们将看到 x i x_i xi的特殊情况,绕过这个限制。

4.2 循环移位

为了简单起见,我们将重点讨论单通道、一维信号。这些结果以简单的方式推广到多通道二维图像(第7节)。

一个 N × 1 N\times1 N×1向量表示一个目标的感兴趣区域,表示 x \mathbf{x} x。我们将把它作为 N × 1 N\times1 N×1。我们的目标是用基础样本(正例)和通过平移得到的几个虚拟样本(作为反例)来训练分类器。我们可以通过循环移位算子(置换矩阵)来模拟该向量的一维平移
P = [ 0 0 0 ⋯ 1 1 0 0 ⋯ 0 0 1 0 ⋯ 0 ⋮ ⋮ ⋱ ⋮ ⋮ 0 0 ⋯ 1 0 ] (4) P=\begin{bmatrix} &0 &0 &0 &\cdots &1\\ &1 &0 &0 &\cdots &0\\ &0 &1 &0 &\cdots &0 \\ &\vdots &\vdots &\ddots &\vdots &\vdots\\ &0 &0 &\cdots &1 &0 \end{bmatrix} \tag{4} P=0100001000011000(4)

乘积 P x = [ x n , x 1 , x 2 , . . . x n − 1 ] T P\mathbf{x}=[x_n,x_1,x_2,...x_{n-1}]^T Px=[xn,x1,x2,...xn1]T x \mathbf{x} x移动一个元素,模拟一个小平移。我们能够连接 u u u个移位来获得一个大的平移通过使用矩阵的幂 P u x P^u\mathbf{x} Pux P 1 x P^1\mathbf{x} P1x移动一个元素距离,如 ( x 1 , x 2 , x 3 ) T (x_1,x_2,x_3)^T (x1,x2,x3)T移动为 ( x 3 , x 1 , x 2 ) T (x_3,x_1,x_2)^T (x3,x1,x2)T P 2 x P^2\mathbf{x} P2x移动一个元素距离,移动为 ( x 2 , x 3 , x 1 ) T (x_2,x_3,x_1)^T (x2,x3,x1)T
u u u将反向移动。图3示出了用该模型水平平移的1D信号,图2示出了2D图像的示例。

在这里插入图片描述
图2:基准样品的垂直循环位移示例。我们的傅里叶域公式允许我们训练一个跟踪器,使其具有基本样本的所有可能的循环位移,包括垂直和水平位移,而无需显式迭代它们。可以看到环绕边缘的瑕疵(最左侧图像的顶部),但余弦窗口和填充可以减轻瑕疵。
在这里插入图片描述
图3:循环矩阵的图示。这些行是矢量图像的循环移位,或其一维平移。包含2D图像的循环矩阵也具有相同的特性。

细心的读者会注意到,最后一个元素环绕,导致与真实平移相关的一些失真。但是,可以通过适当的填充和窗口设置(第A.1节)来缓解这种不良特性。即使对于相对较大的平移(见图2),信号的大部分元素仍然正确建模,这一事实解释了循环移位在实践中工作良好的观察结果。

由于循环特性,我们每 n n n个移位地得到相同的信号 x \mathbf{x} x周期性。这意味着通过以下方式获得全套移位信号:

{ P u x ∣ u = 0 , . . . n − 1 } (5) \left \{ P^{u}\mathbf{x}|u=0,...n-1 \right \}\tag{5} {Puxu=0,...n1}(5)

同样,由于循环性质,我们可以等效地将该集合的前半部分视为正向偏移,将后半部分视为负向偏移。

4.3 循环矩阵

为了计算带有移位样本的回归,我们可以使用等式5的集合作为数据矩阵 X X X的行:

X = C ( x ) = [ x 1 x 2 x 3 ⋯ x n x n x 1 x 2 ⋯ x n − 1 x n − 1 x n x 1 ⋯ x n − 2 ⋮ ⋮ ⋮ ⋱ ⋮ x 2 x 3 x 4 ⋯ x 1 ] (6) X=C(\mathbf{x})=\begin{bmatrix} &x_{1} &x_{2} &x_{3} &\cdots &x_{n} \\ &x_{n} &x_{1} &x_{2} &\cdots &x_{n-1} \\ &x_{n-1} &x_{n} &x_{1} &\cdots &x_{n-2} \\ &\vdots &\vdots &\vdots &\ddots &\vdots \\ &x_{2} &x_{3} &x_{4} &\cdots &x_{1} \end{bmatrix}\tag{6} X=C(x)=x1xnxn1x2x2x1xnx3x3x2x1x4xnxn1xn2x1(6)

图3中给出了所得图案的图示。我们刚刚得到的是一个循环矩阵,它有几个有趣的性质[34],[35]。请注意,模式是确定的,并且完全由生成向量 x \mathbf x x指定,该向量是第一行。也许最令人惊奇和有用的是,所有循环矩阵都是通过离散傅里叶变换 Discrete Fourier Transform (DFT), 形成对角的,而不管生成向量 x \mathbf x x[34]。这可以表示为

X = F d i a g ( x ^ ) F H (7) X=F\mathrm{diag}(\hat{\mathbf{x}})F^H\tag{7} X=Fdiag(x^)FH(7)

其中 F F F是不依赖于 x \mathbf{x} x的常数矩阵,傅里叶变换矩阵, x ^ \hat{\mathbf{x}} x^是DFT生成向量, x ^ = F ( x ) \hat{\mathbf{x}}=\mathcal{F}(\mathbf{x}) x^=F(x) 从现在起,我们将始终使用hat ^ 作为向量傅里叶变换的简写。

常数矩阵F称为DFT矩阵,是计算任何输入向量DFT的唯一矩阵,如 F ( z ) = n F z \mathcal{F}(\mathbf{z})=\sqrt{n}F\mathbf{z} F(z)=n Fz,这是可能的,因为DFT是线性运算。

式7表示一般循环矩阵的特征分解。共享的确定性特征向量F是许多不常见特征的根源,例如交换性或闭合形式转置 ??

循环矩阵性质

  • F H F = F F H = I F^HF=FF^H=I FHF=FFH=I
  • X T = F ⋅ d i a g ( ( x ^ ) ∗ ) ⋅ F H X^T=F \cdot diag \left ( \left (\hat x \right )^* \right) \cdot F^H XT=Fdiag((x^))FH
  • F ( X y ) = F ( C ( x ) y ) = F ∗ ( x ) ⊙ F ( y ) \mathcal{F}(Xy)=\mathcal{F}(C(x)y)=\mathcal{F}^*(x) \odot \mathcal{F}(y) F(Xy)=F(C(x)y)=F(x)F(y)
  • A B = C ( F − 1 ( a ^ ⊙ b ^ ) ) AB=C(\mathcal{F}^{-1}(\hat a \odot \hat b )) AB=C(F1(a^b^))
  • A + B = C ( a + b ) A+B=C(a+b) A+B=C(a+b)

    A,B为循环矩阵,a,b为A,B对应的生成向量
    F \mathcal{F} F为傅里叶变换, F − 1 \mathcal{F}^{-1} F1为傅里叶逆变换
    ⊙ \odot 为向量的对位相乘

4.4 结合

当训练数据由循环移位组成时,我们现在可以应用这一新知识简化等式3中的线性回归。能够单独处理对角矩阵非常吸引人,因为所有操作都可以在对角元素上按元素进行。以术语 X H X X^HX XHX,为例,它可以看作是一个非中心协方差矩阵。替换其中的等式7,

X H X = F d i a g ( x ^ ∗ ) F H F d i a g ( x ^ ) F H (8) X^HX=F\mathrm{diag}(\hat{\mathbf{x}}^*)F^HF\mathrm{diag}(\hat{\mathbf{x}})F^H\tag{8} XHX=Fdiag(x^)FHFdiag(x^)FH(8)

由于对角矩阵是对称的,采用厄米特转置只留下一个复共轭, x ^ ∗ \hat{\mathbf{x}}^* x^

此外,我们可以消除因子 F H F F^HF FHF。因为 F F F是酉矩阵,可以在许多表达式中抵消。我们只剩下

X H X = F d i a g ( x ^ ∗ ) d i a g ( x ^ ) F H (9) X^HX=F\mathrm{diag}(\hat{\mathbf{x}}^*)\mathrm{diag}(\hat{\mathbf{x}})F^H\tag{9} XHX=Fdiag(x^)diag(x^)FH(9)

因为对角矩阵的运算是元素式的,所以我们可以将逐元素式乘积定义为 ⊙ \odot

X H X = F d i a g ( x ^ ∗ ⊙ x ^ ) F H (10) X^HX=F\mathrm{diag}(\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}})F^H\tag{10} XHX=Fdiag(x^x^)FH(10)

一个有趣的方面是括号中的向量被称为信号 x \mathbf{x} x的自相关(在傅里叶域中,也称为功率谱[21])。在经典信号处理中,它包含不同时间滞后或空间的时变过程的方差。以上步骤总结了使用循环矩阵对角化表达式时所采用的一般方法。将它们递归地应用于线性回归的完整表达式(等式3),我们可以将大多数数量放在对角线内,

w = ( F d i a g ( x ^ ∗ ⊙ x ^ ) F H + λ I ) − 1 X H y (52) \mathbf{w}=(F\mathrm{diag}(\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}})F^H+\lambda I)^{-1}X^H \mathbf{y} \tag{52} w=(Fdiag(x^x^)FH+λI)1XHy(52)
w = ( F d i a g ( x ^ ∗ ⊙ x ^ ) F H + λ F F H ) − 1 X H y (53) \mathbf{w}=(F\mathrm{diag}(\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}})F^H+\lambda FF^H)^{-1}X^H \mathbf{y} \tag{53} w=(Fdiag(x^x^)FH+λFFH)1XHy(53)
= ( F d i a g ( x ^ ∗ ⊙ x ^ + λ ) − 1 F H ) X H y (54) =(F\mathrm{diag}(\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}}+\lambda )^{-1}F^H)X^H \mathbf{y} \tag{54} =(Fdiag(x^x^+λ)1FH)XHy(54)
= F d i a g ( x ^ ∗ ⊙ x ^ + λ ) − 1 F H F d i a g ( x ^ ∗ ) F H y (55) =F\mathrm{diag}(\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}}+\lambda )^{-1}F^HF\mathrm{diag}(\hat{\mathbf{x}}^*)F^H \mathbf{y} \tag{55} =Fdiag(x^x^+λ)1FHFdiag(x^)FHy(55)
= F d i a g ( x ^ ∗ x ^ ∗ ⊙ x ^ + λ ) F H y (56) =F\mathrm{diag}\left ( \frac{\hat{\mathbf{x}}^*}{\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}}+\lambda }\right)F^H \mathbf{y} \tag{56} =Fdiag(x^x^+λx^)FHy(56)
分号表示用1进行对位相除
F H w = d i a g ( x ^ ∗ x ^ ∗ ⊙ x ^ + λ ) F H y (57) F^H\mathbf{w}=\mathrm{diag}\left ( \frac{\hat{\mathbf{x}}^*}{\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}}+\lambda }\right)F^H \mathbf{y} \tag{57} FHw=diag(x^x^+λx^)FHy(57)
由于 F z = 1 n z ^ F\mathbf{z}=\frac{1}{\sqrt{n}}\hat\mathbf{z} Fz=n 1z^, F H z = 1 n z ^ ∗ F^H\mathbf{z}=\frac{1}{\sqrt{n}}\hat{\mathbf{z}}^* FHz=n 1z^
w ^ ∗ = d i a g ( x ^ ∗ x ^ ∗ ⊙ x ^ + λ ) y ^ ∗ (58) \hat{\mathbf{w}}^*=\mathrm{diag}\left ( \frac{\hat{\mathbf{x}}^*}{\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}}+\lambda }\right)\hat{\mathbf{y}}^* \tag{58} w^=diag(x^x^+λx^)y^(58)
w ^ = d i a g ( x ^ x ^ ∗ ⊙ x ^ + λ ) y ^ (11) \hat{\mathbf{w}}=\mathrm{diag}\left ( \frac{\hat{\mathbf{x}}}{\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}}+\lambda } \right )\hat{\mathbf{y}}\tag{11} w^=diag(x^x^+λx^)y^(11)

更好
w ^ = x ^ ⊙ y ^ x ^ ∗ ⊙ x ^ + λ (12) \hat{\mathbf{w}}= \frac{\hat{\mathbf{x}}\odot\hat{\mathbf{y}}}{\hat{\mathbf{x}}^*\odot\hat{\mathbf{x}}+\lambda } \tag{12} w^=x^x^+λx^y^(12)

分数表示按元素划分。我们可以很容易地用逆DFT在空间域中恢复 w \mathbf{w} w,其代价与正向DFT相同。附录A.5中给出了产生公式12的递归对角化的详细步骤。
在这一点上,我们刚刚从经典信号处理中发现了一个意想不到的公式——解决方案是正则化相关滤波器[9],[21]。在进一步探索这种关系之前,我们必须强调等式12的计算效率,与显式提取面片和解决一般回归问题的流行方法相比。例如,岭回归的成本为 O ( n 3 ) \mathcal{O}(n^3) O(n3),受矩阵求逆和乘积1的约束。另一方面,等式12中的所有操作都是元素级的 O ( n ) \mathcal{O}(n) O(n),除了DFT,DFT将成本限制在接近线性的 O ( n l o g n ) \mathcal{O}(n\mathrm{log}n) O(nlogn)上。对于典型的数据大小,这会将存储和计算减少几个数量级。

我们注意到,训练算法的复杂性通常以样本数 n n n来表示,而不考虑特征数 m m m。因为在我们的例子中, m = n m=n m=n X X X是平方的),我们将这两个量合并在一起。相比之下,最快的SVM解算器在样本 O ( n m ) \mathcal{O}(nm) O(nm)中具有“线性”复杂度,但在相同条件下, m = n m=n m=n实际上会表现出二次复杂度 O ( n 2 ) \mathcal{O}(n^2) O(n2)

4.5 与相关滤波器的关系

自80年代以来,相关滤波器已成为信号处理的一部分,在傅里叶域中解决了无数目标函数[21],[28]。最近,它们作为MOSSE滤波器[9]再次出现,虽然它们简单且FPS率很高,但在跟踪方面表现出了卓越的性能。

这些过滤器的解决方案类似于等式12(见附录A.2),但有两个关键区别。首先,MOSSE滤波器是从傅里叶域中专门制定的目标函数导出的。其次,正则化器是以一种特殊的方式添加的,以避免被零除。我们上面展示的推导通过将起点指定为带循环移位的岭回归,并得出相同的解,增加了相当多的洞察力。

循环矩阵使我们能够丰富经典信号处理和现代相关滤波器提出的工具集,并将傅里叶技巧应用于新算法。在下一节中,我们将看到一个这样的例子,即训练非线性滤波器。

5. 非线性回归

允许使用更强大的非线性回归函数 f ( z ) f(\mathbf{z}) f(z)的一种方法是使用“内核技巧”[23]。最吸引人的特性是优化问题仍然是线性的,尽管是在不同的变量集(对偶空间)中。缺点是,计算 f ( z ) f(\mathbf{z}) f(z)的复杂度通常随着样本数的增加而增加。然而,使用我们的新分析工具,我们将证明有可能克服这一限制,并获得与线性相关滤波器一样快的非线性滤波器,用于训练和评估。

5.1 内核技巧-简要概述

本节将简要回顾内核技巧,并定义相关符号。
使用内核技巧将线性问题的输入映射到非线性特征空间 φ ( x ) \varphi(\mathbf{x}) φ(x),包括:

  1. 将解析解 w \mathbf{w} w表示为样本的线性组合:
    w = ∑ i α i φ ( x i ) (13) \mathbf{w}=\sum_i\alpha_i\varphi(\mathbf{x}_i)\tag{13} w=iαiφ(xi)(13)
    因此,优化变量为 α \alpha α,而不是 w \mathbf{w} w。这种替代表示法被认为是在对偶空间中,与原始空间 w \mathbf{w} w相反(Representer定理[23,p.89])。

    核空间的岭回归
    表示定理:任何带有L2正则化的线性模型,其最后的 w \mathbf w w都可以表示为训练样本 x i x_i xi的线性组合
    w = ∑ i = 1 n α i x i \mathbf w=\sum^{n}_{i=1}\alpha_ix_i w=i=1nαixi
    则线性回归函数可表示为 f ( z ) = w T z = ∑ i = 1 n α i x i T ⋅ z f(z)=\mathbf w^Tz=\sum^{n}_{i=1}\alpha_ix_i^T\cdot z f(z)=wTz=i=1nαixiTz (这里 x i 是 1 维 或 二 维 的 向 量 、 矩 阵 , 所 以 需 要 转 置 x_i是1维或二维的向量、矩阵,所以需要转置 xi1
    如果原特征向量 x x x无法线性回归拟合到样本标签,可以找到一个非线性映射函数 ϕ ( x ) \phi(x) ϕ(x)
    使映射后的样本在新空间中可线性回归拟合,既 x → ϕ ( x ) \mathbf x \rightarrow\phi(\mathbf x) xϕ(x), z → ϕ ( z ) z \rightarrow\phi(z) zϕ(z)
    则有 f ( z ) = ∑ i = 1 n α i x i T ⋅ z ⇒ f ( z ) = ∑ i = 1 n α i ϕ ( x i ) T ⋅ ϕ ( z ) f(z)=\sum^{n}_{i=1} \alpha_i x_i^T\cdot z \Rightarrow f(z)=\sum^{n}_{i=1}\alpha_i\phi(x_i)^T\cdot \phi (z) f(z)=i=1nαixiTzf(z)=i=1nαiϕ(xi)Tϕ(z)
    f ( z ) = w T ϕ ( z ) = ∑ i = 1 n α i ϕ ( x i ) T ⋅ ϕ ( z ) = α T ϕ ( X ) ϕ ( z ) f(z)=\mathbf w^T\phi(z)=\sum^{n}_{i=1}\alpha_i\phi(x_i)^T\cdot \phi (z)=\alpha^T\phi(X)\phi(z) f(z)=wTϕ(z)=i=1nαiϕ(xi)Tϕ(z)=αTϕ(X)ϕ(z)
    这里
    α = [ α 1 , α 2 , ⋯   , α n ] T \alpha=[\alpha_1, \alpha_2, \cdots, \alpha_n]^T α=[α1,α2,,αn]T
    ϕ ( X ) = [ ϕ ( x 1 ) T , ϕ ( x 2 ) T , ⋯   , ϕ ( x n ) T ] T \phi(X)=[\phi(x_1)^T, \phi(x_2)^T, \cdots , \phi(x_n)^T]^T ϕ(X)=[ϕ(x1)T,ϕ(x2)T,,ϕ(xn)T]T

    f ( z ) = α T ϕ ( X ) ϕ ( z ) f(z)=\alpha^T\phi(X)\phi(z) f(z)=αTϕ(X)ϕ(z)
    w = ϕ ( X ) T α \mathbf w=\phi(X)^T\alpha w=ϕ(X)Tα
    代入损失函数
    l o s s = m i n w ∑ i ( f ( x i ) − y i ) 2 + λ ∥ w ∥ 2 loss=\underset{w}{min} \sum_{i}(f(x_i)-y_i)^2+\lambda \left \| \mathbf w \right \|^2 loss=wmini(f(xi)yi)2+λw2
    l o s s = m i n α ∑ i ( α T ϕ ( X ) ϕ ( x i ) − y i ) 2 + λ ∥ ϕ ( X ) T α ∥ 2 loss=\underset{\alpha}{min} \sum_{i}(\alpha^T\phi(X)\phi(x_i)-y_i)^2+\lambda \left \| \phi(X)^T\alpha \right \|^2 loss=αmini(αTϕ(X)ϕ(xi)yi)2+λϕ(X)Tα2
    转矩阵形式:
    l o s s = m i n α ∥ ϕ ( X ) ϕ ( X ) T α − y ) ∥ 2 + λ ∥ ϕ ( X ) T α ∥ 2 loss=\underset{\alpha}{min} \left \| \phi(X)\phi(X)^T\alpha-\mathbf y)\right \|^2+\lambda \left \| \phi(X)^T\alpha \right \|^2 loss=αminϕ(X)ϕ(X)Tαy)2+λϕ(X)Tα2
    求导解得
    α = ( ϕ ( X ) ϕ ( X ) T + λ I ) − 1 y = ( K + λ I ) − 1 y \alpha =(\phi(X)\phi(X)^T+\lambda I)^{-1}\mathbf y=(K+\lambda I)^{-1}\mathbf y α=(ϕ(X)ϕ(X)T+λI)1y=(K+λI)1y

  2. 根据点积 φ T ( x ) φ ( x ′ ) = κ ( x , x ′ ) \varphi^T(\mathbf{x})\varphi({\mathbf{x}}')=\kappa (\mathbf{x},{\mathbf{x}}') φT(x)φ(x)=κ(x,x)编写算法,这些点积是使用核函数(例如高斯函数或多项式)计算的。

所有样本对之间的点积通常存储在 n × n n\times n n×n核矩阵 K K K

K i j = κ ( x i , x j ) (14) K_{ij}=\kappa(\mathbf{x}_i,\mathbf{x}_j)\tag{14} Kij=κ(xi,xj)(14)

内核技巧的威力来自于隐式使用高维特征空间 φ ( x ) \varphi(\mathbf{x}) φ(x),而从未在该空间中实例化向量。不幸的是,这也是它最大的弱点,因为回归函数的复杂性随着样本数的增加而增加,

f ( z ) = w T z = ∑ i = 1 n α i κ ( z , x j ) (15) f(\mathbf{z})= \mathbf{w}^T\mathbf{z}=\sum_{i=1}^{n}\alpha_i \kappa(\mathbf{z},\mathbf{x}_j)\tag{15} f(z)=wTz=i=1nαiκ(z,xj)(15)
---------------------------------------------------------------------------------------------------------------------
f ( z ) = ∑ i = 1 n α i ϕ ( x i ) T ⋅ ϕ ( z ) f(\mathbf{z})= \sum^{n}_{i=1}\alpha_i\phi(x_i)^T\cdot\phi(z) f(z)=i=1nαiϕ(xi)Tϕ(z)
f ( z ) = [ α 1 , α 2 , ⋯   , α n × n ] [ ϕ T ( x 1 ) ϕ T ( x 2 ) ⋮ ϕ T ( x n × n ) ] ϕ ( z ) f(\mathbf{z})= [\alpha_1,\alpha_2,\cdots,\alpha_{n \times n}] \begin{bmatrix} \phi^T(x_1) \\ \phi^T(x_2) \\ \vdots \\ \phi^T(x_{n\times n}) \end{bmatrix} \phi(\mathbf{z}) f(z)=[α1,α2,,αn×n]ϕT(x1)ϕT(x2)ϕT(xn×n)ϕ(z)
n × n n \times n n×n个循环移位测试样本集合 ϕ ( Z ) = [ ϕ ( z 1 ) , ϕ ( z 1 ) , ⋯   , ϕ ( z n × n ) ] \phi(Z)=[\phi(z_1),\phi(z_1),\cdots,\phi(z_{n \times n})] ϕ(Z)=[ϕ(z1),ϕ(z1),,ϕ(zn×n)]
所有测试样本得分 f T ( Z ) = α T ϕ T ( X ) ϕ ( Z ) = [ α 1 , α 2 , ⋯   , α n × n ] K X Z f^T(Z)=\alpha^T\phi^T(X)\phi(Z)=[\alpha_1,\alpha_2,\cdots,\alpha_{n \times n}]K^{XZ} fT(Z)=αTϕT(X)ϕ(Z)=[α1,α2,,αn×n]KXZ
K X Z = [ ϕ ( x 1 ) T ϕ ( z 1 ) ϕ ( x 1 ) T ϕ ( z 2 ) ⋯ ϕ ( x 1 ) T ϕ ( z n × n ) ϕ ( x 2 ) T ϕ ( z 1 ) ϕ ( x 2 ) T ϕ ( z 2 ) ⋯ ϕ ( x 2 ) T ϕ ( z n × n ) ⋮ ⋮ ⋱ ⋮ ϕ ( x n × n ) T ϕ ( z 1 ) ϕ ( x n × n ) T ϕ ( z 2 ) ⋯ ϕ ( x n × n ) T ϕ ( z n × n ) ] K^{XZ}= \begin{bmatrix} \phi(x_1)^T\phi(z_1) & \phi(x_1)^T\phi(z_2)& \cdots &\phi(x_1)^T\phi(z_{n\times n}) \\ \phi(x_2)^T\phi(z_1) & \phi(x_2)^T\phi(z_2)& \cdots &\phi(x_2)^T\phi(z_{n\times n}) \\ \vdots& \vdots& \ddots &\vdots \\ \phi(x_{n\times n})^T\phi(z_1) & \phi(x_{n\times n})^T\phi(z_2)& \cdots &\phi(x_{n\times n})^T\phi(z_{n\times n}) \end{bmatrix} KXZ=ϕ(x1)Tϕ(z1)ϕ(x2)Tϕ(z1)ϕ(xn×n)Tϕ(z1)ϕ(x1)Tϕ(z2)ϕ(x2)Tϕ(z2)ϕ(xn×n)Tϕ(z2)ϕ(x1)Tϕ(zn×n)ϕ(x2)Tϕ(zn×n)ϕ(xn×n)Tϕ(zn×n)
f ( Z ) = ( α T K X Z ) T = K Z X α f({Z})= (\alpha^TK^{XZ})^T=K^{ZX}\alpha f(Z)=(αTKXZ)T=KZXα
K Z X K^{ZX} KZX的生成向量为: k x z = [ ϕ ( x 1 ) T ϕ ( z ) , ϕ ( x 2 ) T ϕ ( z ) , ⋯   , ϕ ( x n × n ) T ϕ ( z ) ] T k^{xz}=[\phi(x_1)^T\phi(z),\phi(x_2)^T\phi(z),\cdots,\phi(x_{n\times n})^T\phi(z)]^T kxz=[ϕ(x1)Tϕ(z),ϕ(x2)Tϕ(z),,ϕ(xn×n)Tϕ(z)]T

利用循环矩阵的性质: F ( X y ) = F ( C ( x ) y ) = F ∗ ( x ) ⊙ F ( y ) \mathcal{F}(Xy)=\mathcal{F}(C(x)y)=\mathcal{F}^*(x) \odot \mathcal{F}(y) F(Xy)=F(C(x)y)=F(x)F(y)

F ( f ( Z ) ) = F ( K Z X α ) = F ( C ( k ( x , z ) ) α ) = F ∗ ( k ( x , z ) ) ⊙ F ( α ) \mathcal{F}(f(Z))=\mathcal{F}(K^{ZX}\alpha)=\mathcal{F}(C(k(x,z))\alpha)=\mathcal{F}^*(k(x,z)) \odot \mathcal{F}(\alpha) F(f(Z))=F(KZXα)=F(C(k(x,z))α)=F(k(x,z))F(α)

F ( α ) = α ^ = ( 1 k x x ^ + λ ) ∗ ⊙ y ^ \mathcal{F}(\alpha)=\hat \alpha=\left( \frac{1}{\hat{\mathbf{k}^{\mathbf{xx}}}+\lambda}\right)^*\odot \hat \mathbf y F(α)=α^=(kxx^+λ1)y^
最终得到:
f ( Z ) ^ = ( k x z ^ ) ∗ ⊙ α ^ \hat {f( Z)}=(\hat {\mathbf{k}^{\mathbf{xz}}})^*\odot \hat \alpha f(Z)^=(kxz^)α^
响应输出得分的傅里叶变化为:
f ( Z ) ^ = ( k x z ^ ) ∗ ⊙ [ ( 1 k x x ^ + λ ) ∗ ⊙ y ^ ] \hat {f( Z)}=(\hat {\mathbf{k}^{\mathbf{xz}}})^*\odot [\left( \frac{1}{\hat{\mathbf{k}^{\mathbf{xx}}}+\lambda}\right)^*\odot \hat y] f(Z)^=(kxz^)[(kxx^+λ1)y^]
这里x,z分别是训练和测试的循环位移样本。
---------------------------------------------------------------------------------------------------------------------

在接下来的部分中,我们将展示如何避免内核技巧的大多数缺点,假设数据是循环的。

5.2 快速核回归

岭回归的核化版本的解决方案如下所示:

α = ( K + λ I ) − 1 y (16) \mathbf{\alpha}=(K+\lambda I)^{-1}\mathbf{y}\tag{16} α=(K+λI)1y(16)

其中 K K K是核矩阵, α \mathbf{\alpha} α是表示对偶空间中解的系数 α i \alpha_i αi的向量。
现在,如果我们可以证明 K K K对于循环移位的数据集是循环的,我们可以对等式16进行对角化,得到线性情况下的快速解。这似乎在直觉上是正确的,但在一般情况下并不成立。任意非线性映射 φ ( x ) \varphi(\mathbf{x}) φ(x)不能保证保持任何类型的结构。然而,我们可以施加一个条件,允许 K K K循环。结果证明它相当广泛,适用于最有用的内核

定理1 给定循环数据 C ( x ) C(\mathbf{x}) C(x),对于任何置换矩阵 M M M,如果核函数满足 κ ( x , x ′ ) = κ ( M x , M x ′ ) \kappa(\mathbf{x},{\mathbf{x}}')=\kappa(M\mathbf{x},M{\mathbf{x}}') κ(x,x)=κ(Mx,Mx),则相应的核矩阵 K K K是循环的。

有关证明,请参见附录A.2。这意味着,为了使内核保持循环结构,它必须平等地对待数据的所有维度。幸运的是,这包括了最有用的内核

例2。以下核函数满足定理1:
径向基函数核函数-例如高斯核函数。
点积核–例如,线性、多项式。
加性核–例如交集核、 χ 2 \chi^2 χ2核和Hellinger核[36]。
指数加性核。

验证这一事实很容易,因为同时对 x \mathbf{x} x x ′ {\mathbf{x}}' x的维度重新排序不会改变这些内核的 κ ( x , x ′ ) \kappa(\mathbf{x},{\mathbf{x}}') κ(x,x)。这适用于通过交换操作组合维度的任何内核,例如sum、product、min和max。

知道哪些核可以使K循环,就可以像线性情况一样对等式16进行对角化,得到
α = ( F d i a g ( k ^ x x ) F H + F d i a g ( λ ) F H ) − 1 y \alpha=\left( Fdiag(\hat{\mathbf{k}}^{\mathbf{xx}})F^H+Fdiag(\lambda )F^H\right)^{-1}\mathbf y α=(Fdiag(k^xx)FH+Fdiag(λ)FH)1y

= F d i a g ( 1 k ^ x x + λ ) F H y = C ( F − 1 ( 1 k ^ x x + λ δ ) ) y = Fdiag \left(\frac{1}{\hat{\mathbf{k}}^{\mathbf{xx}}+\lambda}\right)F^H\mathbf y =C\left(\mathcal{F}^{-1} \left(\frac{1}{\hat{\mathbf{k}}^{\mathbf{xx}}+\lambda \delta}\right)\right)\mathbf y =Fdiag(k^xx+λ1)FHy=C(F1(k^xx+λδ1))y
利用循环矩阵卷积性质 F ( C ( x ) ⋅ y ) = x ^ ∗ ⊙ y ^ \mathcal{F}(C(x)\cdot y)=\hat x^* \odot \hat y F(C(x)y)=x^y^

α ^ = ( 1 k x x ^ + λ ) ∗ ⊙ y ^ \hat \alpha=\left( \frac{1}{\hat{\mathbf{k}^{\mathbf{xx}}}+\lambda}\right)^*\odot \hat \mathbf y α^=(kxx^+λ1)y^

α ^ = y ^ k ^ x x + λ (17) \hat{\alpha}=\frac{\hat{\mathbf{y}}}{\hat{\mathbf{k}}^{\mathbf{xx}}+\lambda}\tag{17} α^=k^xx+λy^(17)

k x x \mathbf{k}^{\mathbf{xx}} kxx是核矩阵 K = C ( k x x ) K=C(\mathbf{k}^{\mathbf{xx}}) K=C(kxx)第一行, ^ \hat{} ^是向量的离散傅里叶变换,具体细节在附件A.3中。
为了更好的理解 k x x \mathbf{k}^{\mathbf{xx}} kxx所扮演的角色,我们发现他对于定义一个更一般化的 核相关 有用。任意两个向量核相关, x \mathbf{x} x x ′ {\mathbf{x}}' x,是包含元素的向量 k x x ′ \mathbf{k}^{\mathbf{x}\mathbf{x}'} kxx
k i x x ′ = κ ( x ′ , P i − 1 x ) (18) {k}^{\mathbf{x}\mathbf{x}'}_i=\kappa(\mathbf{x}',P^{i-1}\mathbf{x})\tag{18} kixx=κ(x,Pi1x)(18)
换句话说,它包含了对两个参数的不同相对偏移进行计算的内核。然后 k ^ x x \hat{\mathbf{k}}^{\mathbf{xx}} k^xx是内核在傅里叶域中x与自身的相关性。我们可以将其称为内核自相关,与线性情况类似。

这一类比可以更进一步。因为内核是相当于高维空间中的点积 φ ( ⋅ ) \varphi(\cdot) φ(),另一种看待公式18的方法是
k i x x ′ = φ T ( x ′ ) φ ( P i − 1 x ) (19) {k}^{\mathbf{x}\mathbf{x}'}_i=\varphi^T(\mathbf{x}')\varphi(P^{i-1}\mathbf{x})\tag{19} kixx=φT(x)φ(Pi1x)(19)

就是 x \mathbf{x} x x ′ \mathbf{x}' x在高维空间 φ ( ⋅ ) \varphi(\cdot) φ()的互相关

值得注意的是我们只需要计算和操作内核自相关,一个 n × 1 n\times1 n×1向量,他增长与样本数成线性关系。这与传统的核方法相反,传统方法需要计算 n × n n\times n n×n核矩阵,并与样本进行二次缩放?我们对 K K K的精确结构的了解是我们比一般运算法做的更好。

找到最佳的 α \alpha α并不是唯一可以加速的问题,因为在检测跟踪设置中,平移块无处不在。在接下来的段落中,我们将研究循环移位模型对检测阶段的影响,甚至在计算核相关性时。

5.3 快速检测

我们很少会单独评估一个图像块的回归函数 f ( z ) f(\mathbf z) f(z)。 为了检测感兴趣的对象,我们通常希望在多个图像位置上评估 f ( z ) f(\mathbf z) f(z),即,对于多个候选块。这些块可以通过循环移位来建模。
K z K^{\mathbf{z}} Kz表示所有训练样本和所有候选面片之间的(非对称)核矩阵。由于样本和块分别是基样本 x \mathbf x x和基块 z \mathbf z z的循环移位, K z K^{\mathbf{z}} Kz的每个元素由 κ ( P i − 1 z , P i − 1 x ) \kappa(P^{i-1}\mathbf{z},P^{i-1}\mathbf{x}) κ(Pi1z,Pi1x)表示。很容易证明这个核矩阵满足定理1,并且对于适当的核是循环的。与第5.2节类似,我们只需要第一行来定义内核矩阵:
K z = C ( k x z ) (20) K^{\mathbf{z}}=C(\mathbf{k}^{\mathbf{xz}})\tag{20} Kz=C(kxz)(20)

k x z \mathbf{k}^{\mathbf{xz}} kxz x \mathbf{x} x z \mathbf{z} z的核相关,如前所述。
从公式15中,我们可以计算所有候选块的回归函数

f ( z ) = ( K z ) T α (21) \mathbf f(\mathbf z) = (K^{\mathbf z})^T\alpha \tag{21} f(z)=(Kz)Tα(21)
f ( z ) \mathbf f(\mathbf z) f(z)是一个向量,包含 z \mathbf z z的所有循环移位的输出,例如完整的检测响应。为了有效地计算公式21,我们对其进行对角化,得到
f ^ ( z ) = k ^ x z ⊙ α ^ (22) \hat{\mathbf{f}}(\mathbf z) = \hat{\mathbf{k}}^{\mathbf {xz}}\odot\hat{\alpha} \tag{22} f^(z)=k^xzα^(22)
直观地说,在所有位置计算 f ( z ) f(\mathbf z) f(z)可以看作是对内核值 k x z \mathbf{k}^{\mathbf {xz}} kxz的空间滤波操作。每个 f ( z ) f(\mathbf z) f(z) k x z \mathbf{k}^{\mathbf {xz}} kxz中相邻核值的线性组合,由学习系数 α \alpha α加权。由于这是一种滤波操作,因此可以在傅里叶域中更有效地表示。

6. 快速核相关

尽管我们已经找到了更快的训练和检测算法,但它们仍然依赖于分别计算一个内核相关性( k x x \mathbf{k}^{\mathbf {xx}} kxx k x z \mathbf{k}^{\mathbf {xz}} kxz)。回想一下,核相关性包括计算两个输入向量的所有相对位移的核。这代表了最后一个长期存在的计算瓶颈,因为对于大小为 n n n的信号,对 n n n个核的简单评估将具有二次复杂性。然而,使用循环移位模型将允许我们有效地利用这种昂贵计算中的冗余。

6.1 点积与多项式核

对于某些函数 g g g,点积核的形式为 κ ( x , x ′ ) = g ( x T x ′ ) \kappa(\mathbf{x},{\mathbf{x}}')=g(\mathbf{x}^T\mathbf{x}') κ(x,x)=g(xTx)。然后, k x x ′ \mathbf{k}^{\mathbf{xx}'} kxx具有元素
k i x x ′ = κ ( x ′ , P i − 1 x ) = g ( x ′ T , P i − 1 x ) (23) {k}^{\mathbf{x}\mathbf{x}'}_i=\kappa(\mathbf{x}',P^{i-1}\mathbf{x})=g(\mathbf{x}'^T,P^{i-1}\mathbf{x})\tag{23} kixx=κ(x,Pi1x)=g(xT,Pi1x)(23)
g g g也在任何输入向量上逐元素工作。这样我们就可以用向量形式写出等式23
k x x ′ = g ( C ( x ) x ′ ) (24) \mathbf{k}^{\mathbf{xx}'} = g(C(\mathbf{x})\mathbf{x}')\tag{24} kxx=g(C(x)x)(24)
这使得它很容易成为对角化的目标
k x x ′ = g ( F − 1 ( x ^ ∗ ⊙ x ^ ′ ) ) (25) \mathbf{k}^{\mathbf{xx}'} = g(\mathcal{F}^{-1}(\hat{\mathbf{x}}^*\odot \hat{\mathbf{x}}'))\tag{25} kxx=g(F1(x^x^))(25)
这里 F − 1 \mathcal{F}^{-1} F1是DFT的逆变换

特别是对于多项式核 κ ( x , x ′ ) = ( x T x ′ + a ) b \kappa(\mathbf{x},{\mathbf{x}}')=(\mathbf{x}^T\mathbf{x}'+a)^b κ(x,x)=(xTx+a)b
k x x ′ = ( F − 1 ( x ^ ∗ ⊙ x ^ ′ ) + a ) b (26) \mathbf{k}^{\mathbf{xx}'} = (\mathcal{F}^{-1}(\hat{\mathbf{x}}^*\odot \hat{\mathbf{x}}')+a)^b\tag{26} kxx=(F1(x^x^)+a)b(26)
然后,只需使用少量DFT/IDFT和元素操作即可在 O ( n l o g n ) \mathcal{O}(n \mathrm{log} n) O(nlogn)时间内计算这些特定内核的内核相关性。

6.2 径向基函数与高斯核

对于某些函数 h h h,径向基函数和高斯核RBF核的形式为 κ ( x , x ′ ) = h ( ∥ x − x ′ ) ∥ 2 ) \kappa(\mathbf{x},{\mathbf{x}}')=h(\left \| \mathbf{x}-\mathbf{x}')\right \|^2) κ(x,x)=h(xx)2), k x x ′ \mathbf{k}^{\mathbf{xx}'} kxx的元素是
k i x x ′ = κ ( x ′ , P i − 1 x ) = h ( ∥ x ′ − P i − 1 x ) ∥ 2 ) (27) {k}^{\mathbf{x}\mathbf{x}'}_i=\kappa(\mathbf{x}',P^{i-1}\mathbf{x})=h(\left \| \mathbf{x}'-P^{i-1}\mathbf{x})\right \|^2)\tag{27} kixx=κ(x,Pi1x)=h(xPi1x)2)(27)
我们将展示(等式29),这实际上是点积内核的一个特例。我们只需要扩大标准,
k i x x ′ = = h ( ∥ x ∥ 2 + ∥ x ′ ∥ 2 − 2 x ′ T P i − 1 x ) (28) {k}^{\mathbf{x}\mathbf{x}'}_i==h\left (\left \| \mathbf{x} \right \|^2 +\left \| \mathbf{x}' \right \|^2 - 2 \mathbf{x}'^TP^{i-1}\mathbf{x}\right )\tag{28} kixx==h(x2+x22xTPi1x)(28)
由于Parseval’s Theorem,组合 P i − 1 P^{i-1} Pi1不影响 x \mathbf{x} x的规范。由于 ∥ x ∥ 2 \left \| \mathbf{x} \right \|^2 x2 ∥ x ′ ∥ 2 \left \| \mathbf{x}' \right \|^2 x2是关于 i i i常数。公式28与点集核公式23相同,利用上一节的结果
k x x ′ = h ( ∥ x ∥ 2 + ∥ x ′ ∥ 2 − 2 F − 1 ( x ^ ∗ ⊙ x ^ ′ ) ) (29) \mathbf{k}^{\mathbf{x}\mathbf{x}'}=h\left (\left \| \mathbf{x} \right \|^2 +\left \| \mathbf{x}' \right \|^2 - 2 \mathcal{F}^{-1}(\hat{\mathbf{x}}^*\odot \hat{\mathbf{x}}')\right)\tag{29} kxx=h(x2+x22F1(x^x^))(29)
作为一个特别有用的特例,对于高斯核 κ ( x , x ′ ) = e x p ( − 1 σ 2 ∥ x − x ′ ) ∥ 2 ) \kappa(\mathbf{x},{\mathbf{x}}')=\mathrm{exp}\left ( -\frac{1}{\sigma^2}\left \| \mathbf{x}-\mathbf{x}')\right \|^2\right) κ(x,x)=exp(σ21xx)2)可得
k x x ′ = e x p ( − 1 σ 2 ( ∥ x ∥ 2 + ∥ x ′ ∥ 2 − 2 F − 1 ( x ^ ∗ ⊙ x ^ ′ ) ) ) (30) \mathbf{k}^{\mathbf{x}\mathbf{x}'}=\mathrm{exp}\left (-\frac{1}{\sigma^2} \left ( \left \| \mathbf{x} \right \|^2 +\left \| \mathbf{x}' \right \|^2 - 2 \mathcal{F}^{-1}(\hat{\mathbf{x}}^*\odot \hat{\mathbf{x}}')\right)\right)\tag{30} kxx=exp(σ21(x2+x22F1(x^x^)))(30)
和之前一样,我们可以在 O ( n l o g n ) \mathcal{O}(n\mathrm{log}n) O(nlogn)时间内计算完整的内核相关性。

6.3 其他核

前两部分的方法依赖于通过酉变换(如DFT)保持核值不变。这通常不适用于其他内核,例如交叉内核。我们仍然可以使用快速的训练和检测结果(第5.2节和第5.3节),但是内核相关性必须通过更昂贵的滑动窗口方法进行评估。

7 多通道

在本节中,我们将看到,通过在傅里叶域中简单地对多个通道(如HOG描述符的方向箱[20])求和,在对偶中工作具有允许多个通道的优势。该特性扩展到线性情况,在特定条件下大大简化了最近提出的多通道相关滤波器[31]、[32]、[33]。

7.1 一般情况

为了处理多个通道,在本节中,我们将假设向量 x \mathbf{x} x连接 C C C通道的各个向量(例如,HOG变体[20]的31个梯度方向箱), x = [ x 1 , . . . , x C ] \mathbf{x}=[\mathbf{x}_1,...,\mathbf{x}_C] x=[x1,...,xC]
请注意,第6节中研究的所有内核都基于点积或参数范数。点积可以通过简单地对每个通道的单个点积求和来计算。通过DFT的线性,这允许我们对傅里叶域中每个通道的结果求和。作为一个具体的例子,我们可以将此推理应用到高斯核,获得等式30的多通道模拟,
k x x ′ = e x p ( − 1 σ 2 ( ∥ x ∥ 2 + ∥ x ′ ∥ 2 − 2 F − 1 ( ∑ C x ^ C ∗ ⊙ x ^ C ′ ) ) ) (31) \mathbf{k}^{\mathbf{x}\mathbf{x}'}=\mathrm{exp}\left (-\frac{1}{\sigma^2} \left ( \left \| \mathbf{x} \right \|^2 +\left \| \mathbf{x}' \right \|^2 - 2 \mathcal{F}^{-1}(\sum_C \hat{\mathbf{x}}_C^*\odot \hat{\mathbf{x}}_C')\right)\right)\tag{31} kxx=exp(σ21(x2+x22F1(Cx^Cx^C)))(31)
值得强调的是,多个通道的集成不会导致更困难的推理问题——在计算内核相关性时,我们只需对通道求和。

7.3 线性核

对于线性核 κ ( x , x ′ ) = x T x ′ \kappa(\mathbf{x},{\mathbf{x}}')=\mathbf{x}^T\mathbf{x}' κ(x,x)=xTx上一节中的多通道扩展只会产生
k x x ′ = F − 1 ( ∑ C x ^ C ∗ ⊙ x ^ C ′ ) (32) \mathbf{k}^{\mathbf{x}\mathbf{x}'}= \mathcal{F}^{-1}(\sum_C \hat{\mathbf{x}}_C^*\odot \hat{\mathbf{x}}_C')\tag{32} kxx=F1(Cx^Cx^C)(32)
我们将其命名为双相关滤波器(DCF)。该滤波器是线性的,但在对偶空间中训练。我们将很快讨论与其他多通道滤波器相比的优势。
最近,三个小组独立发现了线性相关滤波器对多个信道的扩展[31]、[32]、[33]。在岭回归的情况下,通过将问题分解为每个DFT频率的一个线性系统,它们允许比非结构化算法更快的训练时间。Henriques等人[31]还将分解推广到其他训练算法。
然而,等式32表明,通过使用线性核的对偶运算,我们可以训练具有多个通道的线性分类器,但只使用元素操作。这在一开始可能出乎意料,因为这些工作需要更昂贵的矩阵求逆[31]、[32]、[33]。
我们解决这个差异指出,这是可能的,因为我们只考虑一个单一的基础样本 x \mathbf x x。在这种情况下,内核矩阵 K = X X T K=XX^T K=XXT n × n n \times n n×n,与特征或通道的数量无关。它与基样本的 n n n个循环移位相关,并且可以通过DFT的 n n n个基对角化。因为 K K K是完全对角的,所以我们可以单独使用元素操作。然而,如果我们考虑两个基样本, K K K变成 2 n × 2 n 2n \times 2n 2n×2n,并且 n n n DFT基不再足以完全对角线化。这种不完全对角化(块对角化)需要处理更昂贵的操作,这是这些工作中提出的。
通过一个有趣的对称参数,使用多个基本样本和一个通道的训练可以在原始中完成,只需进行元素操作(附录a.6)。随后,对非中心协方差矩阵 X T X X^TX XTX而不是 X X T XX^T XXT应用相同的推理。在这种情况下,我们得到了原始的MOSSE滤波器[9]。
总之,对于快速元素操作,我们可以选择多个通道(在双通道中,获得DCF)或多个基础样本(在原始通道中,获得MOSSE),但不能同时选择两者。这对时间关键型应用程序(如跟踪)具有重要影响。一般情况下[31]的成本要高得多,并且主要适用于离线培训应用程序。

KCF(Kernelized Correlation Filters)是一种在计算机视觉中常用的目标跟踪算法。在Python中,您可以使用OpenCV库来实现KCF目标跟踪。 首先,确保您已经安装了OpenCV库。如果没有安装,您可以使用以下命令在终端或命令提示符中安装: ``` pip install opencv-python ``` 接下来,您可以使用以下代码示例来进行KCF目标跟踪: ```python import cv2 # 创建KCF跟踪tracker = cv2.TrackerKCF_create() # 加载视频或图像文件 video = cv2.VideoCapture('path_to_video.mp4') # 从第一帧中选择要跟踪的目标区域(例如,通过鼠标选择) ret, frame = video.read() bbox = cv2.selectROI(frame, False) tracker.init(frame, bbox) while True: # 读取视频帧 ret, frame = video.read() if not ret: break # 跟踪目标 success, bbox = tracker.update(frame) # 根据新的边界框位置绘制矩形 if success: (x, y, w, h) = [int(v) for v in bbox] cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 3) # 显示结果帧 cv2.imshow('Tracking', frame) # 退出键 'q',终止程序 if cv2.waitKey(1) & 0xFF == ord('q'): break # 清理资源并关闭窗口 video.release() cv2.destroyAllWindows() ``` 上述代码使用OpenCV中的`TrackerKCF_create()`函数创建KCF跟踪器对象。然后,您可以使用`selectROI()`函数选择要跟踪的目标区域,并使用`init()`函数初始化跟踪器。接下来,循环读取视频帧,使用`update()`函数进行目标跟踪,并使用`rectangle()`函数在图像上绘制检测到的目标框。最后,使用`imshow()`函数显示结果帧,并通过按下键盘上的 'q' 键来退出程序。 请注意,上述代码是一个简单示例,您可以根据您的需求进行修改和调整。另外,您还可以尝试其他的目标跟踪算法和技术,以提高跟踪的准确性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏Gordon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值