High-Speed Tracking with Kernelized Correlation Filters翻译

原文链接:https://zhuanlan.zhihu.com/p/55157416

 

 

摘 要

大多数现代跟踪器的核心组件是判别分类器,其任务是区分目标和目标周边的环境。为了应对自然图像的变化,通常使用经过平移和缩放的样本patch进行训练。但这样的样本充满冗余,任何重叠的像素都被视为相同。基于这个简单的观察,我们提出了数千个平移patch的数据集分析模型。结果显示数据是循环的,我们能够使用离散傅里叶变换对数据矩阵进行对角化,从而将存储和计算开销减少几个数量级。有趣的是对于线性回归我们的公式相当于一个相关滤波器,例如目前使用的那些最快的有竞争力的跟踪器。然而,对于核回归,我们推导了一个新的核化相关滤波器(KCF),不同于其他核算法,它与线性核相应部分有完全相同的复杂度。在此基础上,通过线性核,我们还提出了一种线性相关滤波器的快速多通道扩展,我们称之为双相关滤波器。KCF和DCF在50个视频基准(OTB-50)测试中的表现优于Struck或TLD等顶级跟踪器,虽然每秒运行数百帧,但是只需几行代码即可实现(算法1)。为了鼓励更进一步的发展,我们开源了跟踪框架。

索引术语 - 视觉跟踪,循环矩阵,离散傅立叶变换,核方法,岭回归,相关滤波器

1 引言

可以说近些年视觉跟踪研究重大突破之一就是判别学习方法的广泛采用。跟踪任务作为许多计算机视觉系统的关键组成部分,可以自然的指定为在线学习问题[1],[2]。给定一个包含目标的初始图像patch(我觉得翻译成补丁不好理解,其实就是boundingbox包含的区域),学习一个能够区分目标的外观和周边环境的分类器。能够在许多位置对这个分类器进行详细的评估,以便后续能够检测目标。当然,每一个新的检测提供一个新的图像patch,该patch能够用于更新模型。

对于分类器,很有可能专注于目标表征的感兴趣特征 —— 正样本。然而判别方法的核心原则是给目标相关环境 —— 负样本(给予其相同重要性或者更多重要性)。通常最常用的负样本来自于不同位置和尺度的图像patch,反映了在这些条件下将对分类器进行评估的先验知识。

一个极大的挑战因素是:虽可以从图像中获得几乎无限的的负样本,但由于跟踪的时间敏感性,现代跟踪器需要在尽可能合并更多样本和保持较低的计算需求中进行折衷。通常的做法是每帧随机选择几个样本[3],[4],[5],[6],[7]。

尽管这样做的原因可以理解,但我们认为负样本的欠采样是阻碍跟踪性能的主要因素(即负样本不足)。在本文中,我们开发了分析包括数千相对平移的样本的工具,且无需明确的迭代。如果我们使用特定的平移模型,那么在傅里叶域,一些学习算法实际上变得更加容易,因为我们添加了更多样本,这使得更容易的学习算法成为可能。

这些分析工具即循环矩阵,在流行的学习算法和经典的信号处理之间提供了一个有用的桥梁。这意味着我们能够提出一种基于核化岭回归[8]的跟踪器而不会遭受“核化的诅咒”,其较大的渐进复杂性,甚至比非结构化线性回归表现出更低的复杂性(这里我的理解:随样本变化复杂度渐进变化)。另外,它可以被看作是线性相关滤波器的核化版本,它构成了可用的最快跟踪器的基础[9],[10]。 我们利用强大内核技巧实现线性相关滤波器相同的计算复杂度。 我们的框架很容易包含多个特征通道,通过使用线性内核,我们可以快速扩展线性相关滤波器到多通道情况。

 

2 相关工作

2.1 关于跟踪检测

对检测跟踪的全面综述超出了本文的范围,但我们将感兴趣的读者引到最近两个极好的调查[1],[2]。 现在最流行的方法是使用判别性的外观模型[3],[4],[5],[6]。 它包括受统计机器学习方法的启发的在线训练分类器,以预测图像patch中目标的存在与否。 然后该分类器在众多候选patch上测试,找到最可能的目标位置。

图1.KCF与最佳性能Struck和TLD相比的定性结果。 最好在高分辨率屏幕上观看。 在HOG特征上选择的高斯核。 这些快照是在最近的基准(OTB)测试50个视频的中点拍摄的[11]。 丢失的跟踪器用“x”表示。 KCF优于Struck和TLD,而且KCF实现最少的代码且运行速度达到172 FPS(参见算法1和表1)。

另外,也可以直接预测目标位置[7]。 使用类标签的回归可以看作是分类,因此我们可以互换地使用这两个术语。

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

2.2 样本平移和相关滤波

回忆一下我们的目标是有效的学习和检测图像patch的变化。到目前为止大多数尝试都不同于我们的方法,主要都集中在移除不相关的图像patch。在检测方面,可以使用分支界定来找到分类器的最大响应,同时避免不合理的候选patches[16]。不幸的是,在最坏情况下算法可能仍不得不迭代全部patches。一个相关的方法能够有效的发现一对图像最相似的patches[17],但是不能直接为我们的设置平移。虽然它并不排除详尽的搜索,一个显著典型的优化是使用快速但不精确的分类器来选择合理的patch,并且只应用完整的,较慢的分类器[18],[19]。

在训练方面,Kalal等人[4]提出使用结构化约束去从每一张新的图像中选择相关样本patches。这种方法代价昂贵,限制了能够使用的特征,并且需要仔细的调整结构化启发式。一种流行且相关的方法虽然主要用于离线检测器学习,它采用hard negative mining[20]。它包括在图像池上运行初始检测器,并选择任何错误的检测作为重新训练的样本。 尽管两种方法都减少了训练样本的数量,但主要缺点是必须通过运行检测器来详尽考虑候选补丁。

我们研究方向的最初动机是近期成功的跟踪器 — 相关滤波器[9],[10]。事实证明,相关滤波与更加复杂的方法相比具有竞争力,而且仅仅使用了一小部分计算资源实现了几百帧每秒的速度。他们利用了这样一个事实,即两个patch的卷积(稀疏的,它们在不同相对平移时的点积)相当于傅里叶域中的元素乘积(时域卷积 = 频域点积)。 因此,通过在傅里叶域中描述它们的目标,对于几次平移或图像移位,可以指定线性分类器期望的输出。

傅里叶域方法非常有效,并且在信号处理领域有几十年的研究[21]。不幸的是,它也可能是及其有限的。我们希望同时利用计算机视觉领域的先进进展,例如:更强大的特征,大余量分类器和核方法[20],[22],[23]。

一些研究正在朝着这个方向发展,并且尝试将核方法应用到相关滤波[24],[25],[26],[27]。在这些工作中,必须区分两种类型的目标函数:不考虑功率谱或图像转换的那些,例如合成判别函数(SDF)滤波器[25],[26],以及那些, 例如最小平均相关能量[28],最优权衡[27]和最小平方误差输出和(MOSSE)滤波器[9]。由于空间结构可以有效的被忽略,前者更容易被核化,而且核化SDF已经被提出[25],[26],[27]。然而由于在图像变换(平移),非线性核和傅里叶域间缺乏一个清楚的关系,向其他滤波器应用核技巧已经被证明极其困难[24],[25],其他推荐需要显著、更高的计算时间并且需要考虑大量图片平移被强制限制的问题。

对于我们而言,这暗示我们需要在变化图像patches和训练算法之间找到更深的连接,以克服直接傅里叶域公式的局限性。

2.3 后续工作

自从我们工作的初始版本(CSK)以来,我们提出的循环移位模型的一个有趣的时域变体已经非常成功的用于视频事件检索[30]。还提出了线性相关滤波器的多通道推广[31],[32],[33],其中一些建立我们初始工作的基础之上。这允许他们利用更先进的特征(如:方向梯度直方图 — HOG)。我们还对其他线性算法进行了推广,诸如支持向量回归[31]。我们必须指出这些工作的均以离线训练目标,而且依赖较慢的求解器[31],[32],[33]。相比之下,我们关注于快速的元素操作,即使使用核技巧它也更适合实时跟踪。

 

3 贡献

这些工作的早期版本(CSK),在更早的时间提出。第一次证明了岭回归与循环移位样本和经典相关滤波之间的联系。这使得能够使用复杂度 O(n \log n) 的快速傅里叶变化进行快速学习而不是昂贵的矩阵代数计算。提出了首个核化相关滤波,但其受到单通道的限制。另外,它提出了在所有循环移位中计算内核的封闭形式解决方案(即该方法存在闭式解)。这些方法针对径向基和点积内核,具有相同的计算成本 O(n \log n) 。

目前的工作在初始版本上进行了显著性加强。使用更简单的对角化技术(第4,5,6节)重新推导所有的初始结果。我们将原始工作的单通道扩展为多通道,让更先进的特征能被使用,这使得性能显著增加(第7节)。在初始结果上增加了大量新的分析和直观解释。我们也将初始的实验测试视频序列从12个增加到50个视频序列,并且增加了一个新的基于HOG特征而不是原始像素的KCF跟踪器变体。通过线性核,我们进一步提出了更低计算复杂度的一个线性多通道滤波器,几乎和非线性核的性能相当。我们将其命名为双相关滤波器(DCF),并展示它如何与一组最近的,更昂贵的多通道滤波器相关[31]。通过实验,我们证明了KCF已经比线性滤波器表现更好,没有任何其他特征提取。如果将Raw特征换成HOG特征,线性DCF和非线性KCF均优于Struck[7]和TLD[4]等大排名靠前的跟踪器,同时可以轻松保证100多帧每秒的速度。

 

4 主要工作

在本节中,我们提出了在不同平移下抽取的图像patches的分析模型,并且计算其对线性回归算法的影响。并将展示和经典相关滤波器自然潜在连接。我们开发的这个工具使得我们可以研究更加复杂的算法(第5,6,7节)。

4.1 线性回归

我们将专注于岭回归,因为它存在一个简单的闭式解,且可以实现接近更复杂方法的性能,例如支持向量机(SVM)[8]。训练的目标是找到一个函数 f(\mathrm{z}) = \boldsymbol{\mathrm{w}}^T\mathrm{z} ,它最小化样本 \mathrm{x_i} 和它的回归目标 y_i 的平方误差。

\min\limits_{\boldsymbol{\mathrm{w}}}\sum\limits_i(f(\mathrm{x_i})-y_i)^2+\lambda \|\mathrm{w}\|^2 (1)

\lambda 是控制过拟合的正则化参数,参考SVM。正如前述可知,公式(1)存在闭式解,参考文献[8]。

\boldsymbol{\mathrm{w}}=(X^TX+\lambda I{)^{-1}X^T\mathrm{y}} (2)

其中,数据矩阵 \mathrm{X} 每一行 \mathrm{x_i} 有一个样本,并且 \mathrm{y} 每一个元素是回归目标 y_i 。 I 是单位矩阵。从4.4节开始,通常量值是复数,我们将不得不进去傅里叶域,只要我们使用公式(2)对应的复数版本,这些也不难处理。

\boldsymbol{\mathrm{w}} = (X^HX+\lambda I)^{-1}X^H\mathrm{y} (3)

其中,X^H是Hermitian转置,即 X^H = (X^*)^T 也就是共轭转置且 X^* 是矩阵 X 的复共轭。对于实数,公式(3)变为公式(2)。

通常,必须求解一个大的线性方程组来计算闭式解,但这在实时设置中会变成阻碍。在接下来的一节中我们将看到绕过这个限制的 \boldsymbol {\mathrm{x_i}} 的特殊情况。

4.2 循环移位

为了简化符号,我们将关注于单通道一维信号。这些结果可以直接一般化(推广)多通道二维图像(第7节)。

考虑一个 n\times 1 的矢量,表示感兴趣目标的patch,记为\boldsymbol{\mathrm{x}} 。我们将其称为基础样本。我们的目标是使用一个包括基础样本和一些通过平移获得的虚拟样本训练分类器。

图2.基础样本的垂直循环移位的例子。 我们的傅立叶域公式允许我们训练跟踪器,其具有垂直和水平基础样本的所有可能的循环移位,而无需明确地迭代它们。 可以看到来自环绕在边缘的伪像(最左侧图像的顶部),但是通过余弦窗口和填充来减轻这些伪像。

我们可以通过循环移位算子来建模该向量的一维平移,循环移位算子是置换矩阵

P=\begin{bmatrix}  0 & 0 & 0 & \cdots & 1 \\ 1 & 0 & 0 & \cdots & 0 \\ 0 & 1 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & \ddots & \vdots \\  0 & 0 & \cdots & 1 & 0  \end{bmatrix} (4)

点积 \boldsymbol{P\mathrm{x} = [x_n,x_1,x_2,\cdots,x_{n-1}]^T}, 将\boldsymbol{\mathrm{x}}平移一个元素,对小的平移进行建模。我们能够通过使用矩阵的幂 \boldsymbol{P^u\mathrm{x}} 链接 \boldsymbol{u} 的平移以实现更大的平移。负\boldsymbol{u}将反向移动。该模型水平平移的1D信号如图3所示,2D图像如图2所示。

图3.循环矩阵的示意图(这里是水平方向上的1维循环移位)。 行是矢量图像的循环移位,或其在1D中的平移。 相同的性质延续到包含2D图像的循环矩阵。

细心的读者会注意到最后一个元素缠绕在一起,导致相对真实平移有一些失真。 但是,通过适当的填充和加窗可以减轻这种不良特性(附录A.1)。 即使对于相对较大的平移,信号的大部分元素仍然正确建模(见图2)解释了循环移位在实际中运行良好的观察结果。

由于循环特性,我们每n个周期得到相同的信号 \boldsymbol{x} 。 这意味着用公式(5)获得全套移位信号。

\{P^u\mathrm{x}|u=0,\cdots,n-1\} (5)

另外,由于循环性质,我们可以等效地将该组的前半部分视为正方向的变化,而后半部分则视为负方向的变化。

4.3 循环矩阵

为了计算样本平移的回归值,我们可以使用一组方程(5)作为矩阵 X 的行。模式结果如图3所示。

X=C(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} (6)

我们刚刚得到的是一个循环矩阵,他有几个有趣的特性[34],[35]。需要注意的是这个模式是确定的,完全由生成向量 \boldsymbol {\mathrm{x}} 的第一行指定。最令人惊奇和适用的事实是,无需考虑生成向量 \boldsymbol {\mathrm{x}}[34],所有循环矩阵都通过离散傅里叶变换(DFT)对角化。 这可以表示为公式(7)。

X = F \mathrm{diag(\boldsymbol{\mathrm{\hat{x}})}}F^H (7)

其中, F 是不依赖 \boldsymbol {\mathrm{x}} 的常数矩阵, \boldsymbol{\mathrm{\hat{x}}} 表示生成向量 \boldsymbol {\mathrm{x}} 的离散傅里叶变换, \boldsymbol{\mathrm{\hat x}} = \mathcal{F}(x) 。从现在开始我们将始终使用符号 \hat{} 作为向量DFT的简写。常数矩阵 F 即DFT矩阵,并且是计算任何输入向量DFT的唯一矩阵,如, \mathcal{F}(z) = \sqrt{n}F(z) 。

这可能是因为DFT是线性操作。公式(7)表示一般循环矩阵的特征分解。 共享的,确定性的特征向量 F 根植于那些不常见特征,例如交换或闭合形式的求逆。

4.4 综合分析

现在,当训练数据是通过循环移位组成时,我们可以用这些新的知识简化公式(3)的线性回归。仅使用对角矩阵是非常有吸引人的,因为所有操作都可以在其对角元素上以操作元素方式完成。

考虑项 X^HX ,可以将其视为非中心的协方差矩阵。将其带入公式(7)中得到公式(8)。

X^HX = F\mathrm{diag(\hat{x}^*)}F^HF\mathrm{diag(\hat{x})}F^H (8)

由于对角矩阵是对称的,通过Hermitian转置仅留下复共轭部分,即 。另外,我们可以消除因子 F^HF=I 。这是酉矩阵 F 的性质,这个性质可以在很多表达式中进行化简。我们可以将公式(8)化简。

X^HX = F\mathrm{diag(\hat{x}^*)}\mathrm{diag(\hat{x})}F^H (9)

因为对角矩阵的运算是点操作,所以我们定义点积符号 \odot 并且化简公式(9)。

X^HX = F\mathrm{diag(\hat{x}^* \odot \hat{x})}F^H (10)

一个有趣的方面是括号中的向量被称为信号 \boldsymbol {\mathrm{x}} 的自相关(在傅里叶域被称为功率谱[21])。在经典信号处理中,它包含不同时间滞后的时变过程的变化,或者在我们的情况下,空间变化。

以上步骤总结了用循环矩阵对角化表达式所采用的一般方法。递归地将它们应用于线性回归的完整表达式(公式(3)),我们可以将大多数放在对角内,参考公式(11)。

\boldsymbol{\mathrm{\hat{w}}} = \mathrm{diag \left( \frac{\hat{x}^*}{\hat{x}^ \odot \hat{x} + \lambda} \right) \hat{y}} (11)

再对公式(11)化简。

\boldsymbol{\mathrm{\hat{w}}} = \mathrm{  \frac{\hat{x}^* \odot  \hat{y}}{\hat{x}^* \odot \hat{x} + \lambda}} (12)

这里的分式表示逐元素分割(点积)。 我们可以使用DFT反变换在空域中轻松恢复 \boldsymbol{\mathrm{w}} ,其具有与正DFT相同的开销成本。 公式(12)的递归对角化的详细步骤在附录A.5中给出。

在这一点上,我们刚从经典信号处理中找到了一个意想不到的公式 — 一个正则化的相关滤波器[9],[21]。

在进一步探索他们的关系之前,对比需要明确抽取patch的流行方法和解决一般回归问题通用方法,我们必须高度重视公式(12)的计算效率。例如,岭回归受限于矩阵求逆和积,其成本开销(复杂度): O(n^3) 。另一方面,公式(12)的所有操作均是元素的点积(复杂度为 O(n)),而DFT的复杂度是近线性的( O(n\log n) )。对于典型的数据尺寸,上述方法可以缩减存储和计算几个数量级。

4.5 与相关滤波的关系

自80年代以来,相关滤波一直作为信号处理的一部分,在傅里叶域解决了无数的目标函数[21],[28]。在近来其以MOSSE滤波器[9]重现,凭借在跟踪领域展现出来的简单和高速(FPS > 600),有着极其显著的性能。

对于这些滤波器(如MOSSE)的解决方案看上去类似公式(12)(参考附录 A.2),但是又有两个明显关键的不同。第一,MOSSE滤波器源自在傅里叶域中特定公式化的目标函数。第二,正则化参数 \lambda 以对点对(ad-hoc)方式添加,有效避免公式(12)除数为零。我们在上面展示的推导通过将起点指定为具有循环移位的岭回归并且实现相同的解决效果,增加了相当大的洞察力。

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

 

5 非线性回归

允许更强大的非线性回归函数 f(\mathrm{z}) 的一种方法是使用 “核技巧”[23]。最有吸引力的是优化问题仍然是线性的,尽管是在一组不同的变量(双重空间)中。不利的方面是 f(\mathrm{z}) 的复杂度随着样本量的增大而增大。

然而,使用我们的新分析工具,我们将在训练和评估两方面证明可以克服这一限制,并获得与线性相关滤波器一样快的非线性滤波器,

5.1 核技巧简述

本节将简要回顾核心技巧,并定义相关的符号。

将线性问题的输入映射成非线性问题,具有核技巧的特征空间 \mathrm{\varphi(x)} 包括:

1. 将解 \boldsymbol{\mathrm{w}} 表示为样本的线性组合:

\boldsymbol{\mathrm{w}} = \sum_{i}\alpha_i\varphi(\mathrm{x}_i) (13)

因此,优化下的变量是 \alpha 而不是 \boldsymbol{\mathrm{w}} 。 这个替代表示\alpha在双空间中,与原始空间 \boldsymbol{\mathrm{w}} 相反(代表性定理 [23,p.89])。

2. 用点积编写算法 \varphi^{T}(\boldsymbol{\mathrm{x}})\varphi(\boldsymbol{\mathrm{x'}}) = \kappa(\boldsymbol{\mathrm{x}},\boldsymbol{\mathrm{x'}}) ,该点积使用核函数 \kappa (例如,高斯函数或多项式)计算。
所有样本对之间的点积通常存储在 n \times n大小的核矩阵 K中,且有元素,

K_{ij} = \kappa(\boldsymbol{\mathrm{x_i}, \mathrm{x_j}}) (14)

核技巧的强大之处来自于隐式的使用高维特征空间 \mathrm{\varphi(x)} ,而无需再空间中实例化向量。不幸的是,这也是它最大的弱点,因为回归函数的复杂性随着样本的数量增加而增加,

f(\boldsymbol{\mathrm{z}}) = \boldsymbol{\mathrm{w}}^T{\boldsymbol{\mathrm{z}}}  = \sum_{i=1}^{n}\alpha_i\kappa(\boldsymbol{\mathrm{z}},\boldsymbol{\mathrm{x}}_i) (15)

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

5.2 快速核回归

文献[8]给出了岭回归核化版本的解决方案。

\boldsymbol{\alpha} = (K+\lambda I)^{-1} \boldsymbol{\mathrm{y}} (16)

其中, K 是核化矩阵, \boldsymbol{\alpha} 是系数 {\alpha_i} 的向量,代表在双(对偶)空间中的解。

现在,如果我们能够证明对所有循环移位的数据集,矩阵 K 是循环的,我们可以对公式(16)进行对角化并获得线性情况下的快速解。这看起来是似乎是正确直观的,但并不总是如此。 \varphi(\boldsymbol{\mathrm{x}}) 的任意非线性映射并不能保证保留任何类型的结构。但是,我们可以施加一个允许矩阵 K 循环的条件。 事实证明它使用相当广泛,适用于大多数在用的核。

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

有关证明,请参阅附录A.2。 这意味着,为了保持核的循环结构,它必须同样地处理数据的所有维度。 幸运的是,这包括最有用的内核。 示例2. 以下内核满足定理1:

  • 径向基函数核 —— 例如,高斯。
  • 点积内核 —— 例如,线性,多项式。
  • 累积内核 —— 例如,交集, \chi^{2} 和Hellinger内核[36]。
  • 指数累积核。

检查这个事实很容易,因为同时重新排序 \boldsymbol{\mathrm{x}} 和 \boldsymbol{\mathrm{x'}} 的维度不会改变内核 \kappa(\boldsymbol{\mathrm{x}},\boldsymbol{\mathrm{x'}}) 。这适用于通过可交换操作结合维度的任何内核,例如:求和,点积,最小值和最大值操作。

我们知道可以使用哪些内核来使矩阵 K 循环,可以像线性情况那样对公式(16)进行对角化,从而获得

\boldsymbol{\hat{\alpha}}=\frac{ \boldsymbol{\mathrm{\hat{y}}} } { \boldsymbol{\mathrm{\hat{k}^{xx}}} +\lambda } (17)

其中, \boldsymbol{\mathrm{\hat{k}^{xx}}} 是矩阵 K=C(\boldsymbol{\mathrm{​{k}^{xx}}}) 的第一行,符号 \hat{} 表示向量的离散傅里叶变化。详细的推导参考附录A.3。

为了更好的理解 \boldsymbol{\mathrm{​{k}^{xx}}} 的角色,我们发现定义更通用的核相关(kernel correlation)很有用。两个任意向量 \boldsymbol{\mathrm{x}} 和 \boldsymbol{\mathrm{x'}} 的核相关是具有公式(18)所示元素的向量 \boldsymbol{\mathrm{​{k}^{xx'}}} 。

k_{i}^{ \boldsymbol{\mathrm{xx'}} } = \kappa({ \boldsymbol{\mathrm{x'}}, P^{i-1}\boldsymbol{\mathrm{x}} }) (18)

换言之,它包含针对两个参数的不同相对位移进行评估的核。 然后 \boldsymbol{\mathrm{\hat{k}^{xx}}} 是傅立叶域中 \boldsymbol{\mathrm{x}} 与其自身的核相关。 我们可以将它称为核自相关,类似于线性情况。

可以采用更近一步的类似。 由于内核相当于高维空间 \varphi(\cdot{}) 中的点积,因此,方程(18)的另一种表示是

k_{i}^{ \boldsymbol{\mathrm{xx'}} } = {\varphi}^T({ \boldsymbol{\mathrm{x'}}) \varphi(P^{i-1}\boldsymbol{\mathrm{x}}}) (19)

即,高维空间 \varphi(\cdot{}) 中 \boldsymbol{\mathrm{x}} 和 \boldsymbol{\mathrm{x'}} 的互相关。

注意,我们只需要知道如何计算和操作核的自相关,一个 n\times1 向量,它随样本数量线性增长。 这与传统核方法需要计算 n\times n 大小核矩阵相反,传统核方法与样本一起平方缩放。 我们对矩阵 K 的确切结构的了解使我们能够比传统算法做得更好。 由于在 "tracking-by-detection" 设置中无处不在的平移patches,找到最佳的 \boldsymbol{\alpha} 并不是可以加速的问题。 在接下来的段落中,我们将研究循环移位模型对检测阶段的影响和计算内核的相关性。

5.3 快速检测

我们很少想去单独评估一副图像patch的回归函数 f(\mathrm{z}) 。为了检测目标,我们会从几个图像位置(即几个候选patch)对 f( \mathrm{z} ) 进行评估。这些patch可以通过循环移位来进行建模。

由 K^\boldsymbol{\mathrm{z}} 表示所有训练样本和所有候选patch之间的(不对称)核矩阵。由于样本和patches是基于初始样本 \boldsymbol{\mathrm{x}} 和初始 patch \boldsymbol{\mathrm{z}} 循环移位所得,因此 K^\boldsymbol{\mathrm{z}} 的每一个元素都能由式: \kappa(P^{i-1}{ \boldsymbol{\mathrm{z}}, P^{j-1}\boldsymbol{\mathrm{x}} }) 给出。很容易验证该核矩阵满足前述原理1,并且对于合适的核它是循环的。

类似5.2 节,我们仅需要第一行来定义核矩阵:

K^{\boldsymbol{\mathrm{z}}} = C(\boldsymbol{\mathrm{k^{xz}}}) (20)

其中,正如前述定义那样, \boldsymbol{\mathrm{k^{xz}}} 是 \boldsymbol{\mathrm{x}} 和 \boldsymbol{\mathrm{z}} 的核相关。

从公式(15),我们可以使用公式(21)计算所有候选patch的回归函数。

\boldsymbol{\mathrm{f}}(\boldsymbol{\mathrm{z}}) =  \left( K^\boldsymbol{\mathrm{z}} \right)^T {\boldsymbol{\mathrm{\alpha}}} (21)

注意, \boldsymbol{\mathrm{f}}(\boldsymbol{\mathrm{z}}) 是一个向量,包含的 \boldsymbol{\mathrm{z}} 所有循环移位的输出,即全部的检测响应。 为了有效地计算公式(21),我们将其通过公式(22)对角化获得。

\boldsymbol{\mathrm{\hat{f}}} (\boldsymbol{\mathrm{z}}) =   {\hat{K}} ^ {\boldsymbol{\mathrm{xz}}} \odot {\boldsymbol{\mathrm{\hat{\alpha}}}} (22)

直观上讲,在所有位置处评估 f( \boldsymbol{\mathrm{z}} ) 可以看作是对核值 \boldsymbol{\mathrm{k^{xz}}} 的空间滤波操作。每个 f( \boldsymbol{\mathrm{z}} ) 是来自 \boldsymbol{\mathrm{k^{xz}}} 的邻域核值的线性组合,由学习系数 \boldsymbol{\alpha} 加权。 由于这是一种滤波操作,因此在傅里叶域中更有效地进行制定。

 

6 快速核相关

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

6.1 点积核和多项式核

对于某些函数 g ,点积核有形式: \kappa(\boldsymbol{\mathrm{x}},\boldsymbol{\mathrm{x'}}) = g(\boldsymbol{\mathrm{x}}^T,\boldsymbol{\mathrm{x'}}) 。 \boldsymbol{\mathrm{k^{xx'}}} 有元素:

k_{i}^{\boldsymbol{\mathrm{xx'}}} = \kappa({ \boldsymbol{\mathrm{x'}}, P^{i-1}\boldsymbol{\mathrm{x}} }) = g({ \boldsymbol{\mathrm{x'}}^TP^{i-1}\boldsymbol{\mathrm{x}} }) (23)

设 g 也可以在任何输入向量上按元素工作。 这样我们就可以用矢量形式写出公式(23)。

\boldsymbol{ \mathrm{k^{xx'}} } = g \left( C \left( \boldsymbol{ \mathrm{x} } \right) \boldsymbol{ \mathrm {x'} } \right) (24)

这使得对角化成为一个容易的目标,如公式(25)产生。

\boldsymbol{ \mathrm{k^{xx'}} } = g \left( \mathcal{F}^{-1} \left( \boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x'} }} } \right)  \right) (25)

其中,符号 \mathcal{F}^{-1} 表示离散傅里叶逆变换。

特别的,对于多项式核 \kappa(\boldsymbol{\mathrm{x}},\boldsymbol{\mathrm{x'}}) = (\mathcal{F}^{-1}(\boldsymbol{\mathrm{\hat{x}^* \odot \hat x'}}) + a)^b

\boldsymbol{ \mathrm{k^{xx'}} } = \left( \mathcal{F}^{-1} \left( \boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x'} }} } \right) + a \right)^b (26)

然后,在 O(n\log n) 时间内,仅使用少量 DFT / IDFT 和元素操作来计算这些特定核的核相关性。

6.2 径向基函数和高斯核

对于某些函数 h ,RBF 核有形式: \kappa(\boldsymbol{\mathrm{x}},\boldsymbol{\mathrm{x'}}) = h(\| \boldsymbol{ \mathrm{x}} - \boldsymbol{\mathrm{x'}}\|^2) 。 \boldsymbol{\mathrm{k^{xx'}}}有元素:

k_{i}^{\boldsymbol{\mathrm{xx'}}} = \kappa({ \boldsymbol{\mathrm{x'}}, P^{i-1}\boldsymbol{\mathrm{x}} }) = h(\| { \boldsymbol{\mathrm{x'}} - P^{i-1}\boldsymbol{\mathrm{x}} }\|^2) (27)

我们将展示(公式(29))这实际上是点积核的一个特例。 将公式(27)这个范数展开,如公式(28)所示

k_{i}^{\boldsymbol{\mathrm{xx'}}} = h( \|{\boldsymbol{\mathrm{x}}} \|^2 +  \|{\boldsymbol{\mathrm{x'}} \|^2 -  2{\boldsymbol{\mathrm{x'}}}^T P^{i-1}\boldsymbol{\mathrm{x}} }) (28)

由于Parseval定理,置换矩阵 P^{i-1} 不影响 \boldsymbol{\mathrm x} 的范数[21]。 因为 \|{\boldsymbol{\mathrm{x}}} \|^2 和 \|{\boldsymbol{\mathrm{x'}} \|^2} 是常数,公式(28)具有与点积核(公式(23))相同的形式。 利用上一节的结果,

{\boldsymbol{\mathrm{k^{xx'}}}} = h \left( \|{\boldsymbol{\mathrm{x}}} \|^2 +  \|{\boldsymbol{\mathrm{x'}} \|^2 -  2\mathcal{F}^{-1}  ( {\boldsymbol{\mathrm{\hat{x}^*}}} \odot \boldsymbol{\mathrm{\hat{x}'}} } ) \right) (29)

作为一个特别有用的特例,对于高斯核 \kappa(\boldsymbol{\mathrm{x}},\boldsymbol{\mathrm{x'}}) = \exp \left( -\frac{1}{\sigma ^2}\| \boldsymbol{ \mathrm{x}} - \boldsymbol{\mathrm{x'}}\|^2 \right) ,我们得到

{\boldsymbol{\mathrm{k^{xx'}}}} = \exp \left( -\frac{1}{\sigma ^2} \left( \|{\boldsymbol{\mathrm{x}}} \|^2 +  \|{\boldsymbol{\mathrm{x'}} \|^2 -  2\mathcal{F}^{-1}  ( {\boldsymbol{\mathrm{\hat{x}^*}}} \odot \boldsymbol{\mathrm{\hat{x}'}} } ) \right) \right) (30)

和前述一样,我们完整的核相关计算时间复杂度为 O(n\log n) 。

6.3 其他核

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

7 多通道

在本节中,我们将看到在双空间(频域核空间域)中工作具有多通道(例如HOG描述符[20]的方向区间)的优点,只需在傅里叶域中对它们求和即可。 该特性延伸到线性情况,在特定条件下显着简化了最近提出的多通道相关滤波器[31],[32],[33]。

7.1 一般情况

为了处理多通道问题,在本节中我们假设向量 \boldsymbol{\mathrm x} 连接 C 每个通道的各个向量(例如,HOG变量的31个梯度方向区[20]),如 \boldsymbol {\mathrm {x = [x_1,\dots ,x_C]}} 。

请注意,第6节中研究的所有核要么是基于参数的点积要么是范式。 可以通过简单地对每个通道的各个点积进行求和来计算点积。 通过DFT的线性,这允许我们对傅里叶域中每个通道的结果求和。 作为一个具体的例子,我们可以将这个方法应用于高斯核,得到公式(30)多通道近似。

{\boldsymbol{\mathrm{k^{xx'}}}} = \exp \left( -\frac{1}{\sigma ^2} \left( \|{\boldsymbol{\mathrm{x}}} \|^2 +  \|{\boldsymbol{\mathrm{x'}} \|^2 -  2\mathcal{F}^{-1}  ( \sum_i {\boldsymbol{\mathrm{\hat{x}^*}}} \odot \boldsymbol{\mathrm{\hat{x}'}} } ) \right) \right) (31)

需要强调的是,多通道的集成不会导致更难的推理问题 - 我们只需在计算核相关性时对通道求和即可。

7.2 线性核

对于线性核 \kappa(\boldsymbol{\mathrm{x}},\boldsymbol{\mathrm{x'}}) = \boldsymbol{\mathrm{x}}^T \boldsymbol{\mathrm{x'}},从前述节可以简单的产生多通道扩展,如公式(32)所示

{\boldsymbol{\mathrm{k^{xx'}}}} = \mathcal{F}^{-1}  ( \sum_c {\boldsymbol{\mathrm{\hat{x}}^*_c}} \odot \boldsymbol{\mathrm{\hat{x}'}_c}  ) (32)

我们将其命名为双相关滤波器 (DCF)。这个滤波器是线性的,但是在双空间 \boldsymbol \alpha 中训练。 我们将很快讨论其他多通道滤波器的优势。

近来线性相关滤波器的多通道扩展,由三组独立发现[31],[32],[33]。 与岭回归相比,它们允许比非结构化算法更快的训练时间,通过将问题分解为每个DFT频率的一个线性系统。 Henriques等人[31] 还将分解推广到其他训练算法。

然而,公式(32)表示,通过线性核进行双(空间)处理,我们仅使用元素操作,就能训练出多通道线性分类器。这可能是第一次出乎意料,因为这些工作需要更昂贵的矩阵求逆[31],[32],[33]。

因为我们只考虑单个基样本 \boldsymbol{\mathrm x} ,所以通过指出这种可能,来解决这种差异。在这种情况下,无论特征或通道的数量如何,核矩阵 K=XX^T 都是 n \times n 大小。 它涉及基样本的 n 个循环移位,并且可以通过DFT的n个基对角化。 由于 K 是完全对角的,我们可以单使用元素操作。 但是,如果我们考虑两个基本样本,则K大小变为 2n \times 2n ,并且n个DFT基不再足以完全对角化它。 这种不完全对角化(块对角化)需要更昂贵的操作来处理,这些都是在这些工作中提出的。 通过一个有趣的对称参数,可以在初始中使用多个基本样本和单个通道进行训练,只需要进行元素操作(附录 A.6)。接下来,将相同的方法应用于非中心协方差矩阵 X^TX ,而不是 XX^T 。 在这种情况下,我们获得了原始的MOSSE滤波器[9]。 总之,对于快速元素操作,我们可以选择多个通道(在双通道中,获得DCF)或多个基本样本(在原始中,获得MOSSE),但不能同时选择两个。 这对时间关键型应用程序(如跟踪)具有重要影响。 一般情况[31]更昂贵,主要适用于线下训练应用。

8 实验

8.1 跟踪流水线

我们在Matlab中实现了两个简单的跟踪器,它们基于所提出的KCF,使用高斯核,以及DCF,使用线性内核。 我们没有曾现多项式内核的结果,因为它们几乎与高斯内核的结果相同,并且需要更多参数。 我们测试了另外两个变体:一个直接作用于原始像素值,另一个适用于单元格大小为4像素的HOG描述符,特别是 Felzenszwalb 的变体[20],[22]。 请注意,在单通道(原始像素)的限制情况下,我们的线性DCF等同于MOSSE [9],但它具有支持多个通道(例如HOG)的优点。 我们的跟踪器只需要很少的参数,我们会在表 2中报告我们使用的值,固定在所有视频中。

KCF的大部分功能在算法1中以Matlab代码表示。与该工作的早期版本[29]不同,它准备处理多通道,作为输入数组的第三维。 它实现了三个函数:(训练函数)train(公式(17)),(检测函数)detect(公式(22))和(相关函数)kernel_correlation(公式(31)),它们由前两个函数使用。

跟踪器的流水线立意简单,并且不包括用于故障检测或运动建模的任何启发式算法。 在第一帧中,我们使用图像补丁在目标的初始位置训练模型。 此patch大于目标,以提供一些上下文背景信息。 对于每个新帧,我们检测前一个位置的patch,并将目标位置更新为产生最大值(相关最大值)的位置。 最后,我们在新位置训练一个新模型,并将获得的 \boldsymbol {\alpha} 和 \boldsymbol{\mathrm{x}} 值与前一帧中的值进行线性插值,为跟踪器提供一些时域记忆。

8.2 评估

我们使用包含50个视频序列的最新基准[11](OTB50 见图1)对我们的跟踪器进行测试。 此数据集收集了以前作品中使用的许多视频,因此我们避免了过拟合到一小部分的危险。

对于性能标准,我们没有选择平均位置误差或平均帧数等其他度量,因为它们对丢失的跟踪器施加任意惩罚,这取决于偶然因素(例如:跟踪位置丢失),使得它们不具有可比性。类似的替代方案是边界框重叠,其缺点是严重惩罚没有跨越尺度的跟踪器,即使目标位置被完美地跟踪。

算法1:Matlab代码,高斯核。 支持多通道(图像 patch的第三维)。 可以进一步减少FFT调用的数量。
% Inputs
%   - x: 训练样本patch, Size: m * n * c
%   - y: 回归目标, 高斯形状, Size: m * n
%   - z: 测试样本patch, Size: m * n * c
%
% Output
%   - 响应: 每一个位置的检测分数, Size: m * n

% ==================== functions ==================== %
function alphaf = train(x, y, sigma, lambda)
    k = kernel_correlation(x, y, sigma);
    alphaf = fft2(y) ./ (fft2(k) + lambda);
end

function responses = detect(alphaf, x, z, sigma)
    k = kernel_correlation(z, x, sigma);
    responses = real(ifft2(alphaf .* fft2(k)));
end

function k = kernel_correlation(x1, x2, sigma)
    c = ifft2(sum(conj(fft2(x1)) .* fft2(x2), 3));
    d = x1(:)' * x1(:) + x2(:)' * x2(:) - 2 * c;
    k = exp(-1 / sigma^2 * abs(d) / numel(d));
end
% ================================================== %

我们选择用于评估的替代方案是越来越受欢迎的精确度曲线[5],[11],[29]。 如果预测的目标中心在目标真实值的距离阈值内,则可以认为正确地跟踪了该帧。 精确度曲线仅显示一系列距离阈值的正确跟踪帧的百分比。 请注意,通过绘制所有阈值的精度,不需要任何参数。 这使得曲线明确且易于解释。 低阈值时的更高精度意味着跟踪器更准确,而丢失目标将阻止其在非常大的阈值范围内实现完美精度。 当需要代表性的精确分数时,所选择的阈值为20 像素,如之前的工作[5],[11],[29]所做。

8.3 完整数据集上的实验

我们首先总结表1和图4中所有视频的结果。为了进行比较,我们还报告了其他几个算法系统的结果[3],[4],[5],[7],[9],[14] ],包括一些最具弹性(灵活性)的跟踪器 - 即Struck和TLD。 与我们的简单实现(算法1)不同,这些跟踪器包含许多工程改进。 Struck可以运行许多不同类型的功能和不断增长的支持向量。 TLD特别适用于重新检测(丢失再检测),使用一组具有许多参数的结构规则。 尽管存在这种不对称性,但我们的KCF已经可以通过单独操作原始像素来达到竞争性能,如图4所示。在此设置中,由高斯内核引入的丰富隐式特征比提出的DCF产生明显的优势。

图 4 所有50个序列的精确图。KCF跟踪器(粗体)优于最先进的系统,如TLD和Struck,它们实现起来更复杂,速度更慢(见表1)。 参考最好看的颜色曲线。

我们注意到具有单通道特征(原始像素)的DCF在理论上MOSSE滤波器[9]相同。 为了直观比较,我们在图4中包含了作者的MOSSE跟踪器[9]的结果。可以看出,两者的性能非常接近,表明它们的实现中的任何特定差异似乎都不重要。 但是,我们提出的核心算法(KCF)确实使得性能显着提升。 用HOG特征替换院士像素(Raw Pixel)KCF和DCF算法超过TLD和Struck(图4)并且留有相对较大的余量。 这表明,与其他使用相似特征的跟踪器相比,高性能的最关键因素是从目标环境中有效地结合了数千个负样本,而这些样本的开销非常小。 定时 。如前所述,由于我们闭式解的总体复杂性是 O(n \log n) ,所以能实现高速(表1)。跟踪器的速度与跟踪区域的大小直接相关。这在基于相关滤波器和其他跟踪器比较时,是一个重要因素。 MOSSE [9]跟踪目标对象的区域和跟踪区域一样大小,而我们的实现跟踪的区域是目标区域的2.5倍(平均 116 \times170)。减小跟踪区域使得我们的速度接近615FPS(表1),但我们发现它会损害性能,特别是对于核变量。表1中另一个有趣的观察结果是,即使我们考虑计算HOG特征的开销,每个空间cell上的31个HOG特征的操作也可能比在原始像素(Raw Pixel)上操作稍快。由于每个 4\times 4 像素单元表示单个HOG描述子,因此较小尺寸的DFT抵消了在特征通道上迭代的成本。利用台式计算机的全部四个核心,KCF / DCF只需不到2分钟即可处理所有50个视频(约29,000帧)。

8.4 不同类型视频序列测试

基准数据集[11]中的视频使用属性(不同的类型)来进行注释,这些属性描述了跟踪器在每个序列中将面临的挑战 - 例如,光照变化或遮挡。这些属性对于在大型数据集中诊断和表征跟踪器的行为非常有用,而无需分析每个单独的视频。我们报告了四个属性的结果(如图 5所示):非刚性变形,遮挡,目标脱离视野和背景杂波。 我们的跟踪器的HOG变量在非刚性变形和遮挡下的鲁棒并不令人惊讶,因为已知这些特征具有高度辨别性[20]。然而,仅原始像素的KCF仍然几乎与Struck和TLD一样好,核 弥补了特征上的不足。 由于缺乏目标丢失恢复机制,我们实施的系统面临的一个挑战是“目标脱离视野”。在这种情况下,TLD比大多数其他跟踪器表现更好,这表明它专注于再检测和目标丢失恢复。这些工程改进可能有利于我们的跟踪器,但KCF / DCF仍然可以超越TLD的事实表明 “再检测和目标丢失再恢复” 不是决定性因素。 背景杂波严重影响几乎所有的跟踪器,除了我们提出的跟踪器和较小程度影响的Struck。对于我们的跟踪器变量,通过在跟踪目标对象周围隐式包含数千个负样本可以来解释。因为在这种情况下,即使我们的跟踪器的原始像素变量具有非常接近最佳的性能,而TLD,CT,ORIA和MIL显示性能下降,我们猜测这是由于它们的负样本影响不足造成的。

图 5 不同属性的精度曲线:遮挡,非刚性形变 ,目标脱离视野,背景杂波。我们提出的跟踪器(黑色粗体)的HOG变量对所有这些问题最具弹性。

我们还在图7中给出了其他属性测试结果。一般来说,我们提出的跟踪器对七个挑战中的六个最强大,除了低分辨率,除了Struck,它同样影响其他所有跟踪器。

图 7 数据集中6个属性的精度曲线。由于空间限制,面内旋转被遗漏。 其结果实际上与平面外旋转的结果相同(上图),因为它们共享几乎相同的序列集。

9 结论和未来工作

在本文研究中,我们证明了对自然图像平移进行分析建模是可行的,表明在某些条件下,结果数据和核矩阵可循环。通过DFT进行对角化提供了创建处理平移的快速算法的一般蓝图。我们已将此蓝图应用于线性和核岭回归,获得了数百FPS运行的最先进的跟踪器,并且只需几行代码即可实现。我们基本方法的扩展似乎可能在其他问题中有用。自从这项工作的第一个版本以来,循环数据已成功用于检测[31]和视频事件检索[30]中的其他算法。进一步工作的一个有趣方向是放宽周期性边界的假设,这可以提高性能。许多有用的算法也可以从循环数据的其他目标函数的研究中获得,包括经典滤波器,如SDF或MACE [25],[26],以及比平方损失更稳健的损失函数。我们也希望将此框架推广到其他运算,例如自然变换或非刚性变形。

附录

A.1 实现细节

与相关滤波器一样,输入patch(原始像素或从通道中提取的特征)由余弦窗口加权,可以平滑地消除由循环假设引起的图像边界的不连续性[9],[21]。 跟踪区域的大小是目标区域框的2.5倍,以提供一些背景和额外的负样本。

图 6 回归目标  \mathrm y ,遵循空间带宽为  s 的高斯函数(白色表示值1,黑色值0)。 
(a)将峰值放在中间会不必要地导致检测输出偏移半个窗口(在附录A.1中讨论)。 
(b)将峰值放置在左上角的元素(并环绕)正确地将检测输出对中。

回想一下,训练样本由基样本移位组成,因为我们必须为 {\boldsymbol{\mathrm y}} 中每一个 \boldsymbol{\mathrm y_i} 指定回归目标 。回归目标 {\boldsymbol{\mathrm y}} 简单遵循高斯函数,其目标中心值为1,根据空间带宽 s 从中间向周边平滑衰减到0。高斯目标比二进制标签更加平滑,而且有利于减轻在傅里叶域中的振铃伪像问题。

一个微妙的问题是确定 {\boldsymbol{\mathrm y}} 的哪个元素是居中样本的回归目标,我们将以高斯函数为中心。虽然直观地看起来它似乎是输出平面的中间(图 6a),但事实证明正确的选择是左上角的元素(图 6b)。 原因是,在计算傅立叶域中的两个图像之间的互相关并转换回空间域之后,结果的左上角元素对应于零的移位[21]。 当然,由于我们总是处理循环信号,因此高斯函数的峰值必须从左上角到其他角落环绕,如图6b所示。 将高斯峰放置在回归目标的中间在一些过滤器实现中是常见的,并且导致相关输出被不必要地移动半个窗口,必须在事后更正。

另一个常见的误差源是快速傅立叶变换的大多数实现不计算单一DFT的事实。 这意味着不保留信号的 L2范数,除非输出由常数因子校正。 有些滥用符号,我们可以说单一DFT可以通过公式(33)计算(这里使用matlab等中的函数表示)

\mathcal{F}_U(x) = \boldsymbol {\mathrm {fft}2}(x) /  \boldsymbol{ \mathrm{sqrt}} {(m*n)} (33)

其中,输入 x 的大小是 m \times n ,类似可以求出公式(33)的离散傅里叶逆变换

\mathcal{F}^{-1}_U(x) = \boldsymbol{ \mathrm{ifft2}}(x) *  \boldsymbol{\mathrm{sqrt}}(m * n) (34)

A.2 原理1的证明

根据定理假设 \kappa(\boldsymbol{\mathrm{x}, \mathrm{x'}}) = \kappa(M\boldsymbol{\mathrm{x}}, M\boldsymbol{ \mathrm{x'}}) ,对于任何置换矩阵 M ,这时

K_{ij} = \kappa(P^i{\boldsymbol{\mathrm{x}}},P^j{\boldsymbol{\mathrm{x}}}) (35)

K_{ij} = \kappa( P^{-i}P^i{\boldsymbol{\mathrm{x}}}, P^{-i}P^j{\boldsymbol{\mathrm{x}}} ) (36)

这里使用置换矩阵的属性对公式(36)进行化简

K_{ij} = \kappa( {\boldsymbol{\mathrm{x}}}, P^{j-i}{\boldsymbol{\mathrm{x}}} ) (37)

通过矩阵 P 的循环性质,假设矩阵是 n 行,则每循环 n 行后又还原了。即重复了 n 次幂, P^n=P^0 。 则公式(37)等价于

K_{ij} = \kappa( {\boldsymbol{\mathrm{x}}}, P^{(j-i) \mod n} \ {\boldsymbol{\mathrm{x}}} ) (38)

其中,\mod{}是模数运算(除以 n 的余数)。

我们现在使用循环矩阵 X = C(x) (公式(6))的元素满足上述的情况。

X_{ij} = x_{\left((j-i) \mod n \right)+1} (39)

也就是说,如果矩阵的元素仅依赖于 (j-i) \mod n ,则矩阵是循环的。 方程(6)很容易检查这个条件是否满足,实际上它常被用作循环矩阵的定义[34]。

因为 K_{ij} 也依赖于 (j-i) \mod n ,我们必须得出结论 K 也是循环的,完成我们的证明。

A.3 循环数据的核岭回归

本节将展示公式(17)的详细推导。我们先在公式(16)岭回归公式中替换 K = C({\boldsymbol{\mathrm{k^{xx}}}}) ,并将其进行对角化。

\boldsymbol{\alpha} = ( C({\boldsymbol{\mathrm{k^{xx}}}} + \lambda I) )^{-1} {\boldsymbol{\mathrm{y}}} (40)

\boldsymbol{\alpha} = (F  \mathrm{diag}({\boldsymbol{\mathrm {\hat{k}^{xx}}}})F^H + \lambda I )^{-1} {\boldsymbol{\mathrm{y}}} (41)

通过简单的线性代数,和 F 的幺正性 FF^H = I ,

\boldsymbol{\alpha} = (F  \mathrm{diag}({\boldsymbol{\mathrm {\hat{k}^{xx}}}})F^H +  \lambda FIF^H )^{-1} {\boldsymbol{\mathrm{y}}} (42)

\boldsymbol{\alpha} = F \mathrm{diag}({\boldsymbol{\mathrm {\hat{k}^{xx}}}} + \lambda )^{-1}F^H {\boldsymbol{\mathrm{y}}} (43)

上式等同于

F^H \boldsymbol{\alpha} = \mathrm{diag}({\boldsymbol{\mathrm {\hat{k}^{xx}}}} + \lambda )^{-1}F^H {\boldsymbol{\mathrm{y}}} (44)

因为对于任何向量有 F \boldsymbol{\mathrm z} = \boldsymbol{\mathrm {\hat{z} }} ,则

\boldsymbol{\hat{\alpha}^*} = \mathrm{diag} \left( {\frac{1}{\boldsymbol{\mathrm {\hat{k}^{xx}}} + \lambda}} \right) {\boldsymbol{\mathrm{\hat {y}^* }}} (45)

最后,因为在傅里叶域对角矩阵和向量的乘积对应只是它们的元素点积,

\boldsymbol{\hat{\alpha}^*} = \frac{\boldsymbol{\mathrm{\hat {y}^* }}} {\boldsymbol{\mathrm {\hat{k}^{xx}}} + \lambda} (46)

A.4 快速检测公式的推导

为了对公式(21)进行对角化,我们使用与上一节相同的属性。 我们有

\boldsymbol{\mathrm{f}}(\boldsymbol{\mathrm{z}}) =  ( C(\boldsymbol{\mathrm{ k^{xz} }}) )^T \boldsymbol{\alpha} (47)

\boldsymbol{\mathrm{f}}(\boldsymbol{\mathrm{z}}) =  ( F \mathrm{diag}(\boldsymbol{\mathrm{ \hat{k}^{xz} }}) F^H )^T \boldsymbol{\alpha} (48)

\boldsymbol{\mathrm{f}}(\boldsymbol{\mathrm{z}}) =  F^H \mathrm{diag}(\boldsymbol{\mathrm{ \hat{k}^{xz} }}) F \boldsymbol{\alpha} (49)

近一步化简,其等同于

F\boldsymbol{\mathrm{f}}(\boldsymbol{\mathrm{z}}) =  \mathrm{diag}(\boldsymbol{\mathrm{ \hat{k}^{xz} }}) F \boldsymbol{\alpha} (50)

与上一节最后一致,公式(50)变为

\boldsymbol{\mathrm{\hat f}}(\boldsymbol{\mathrm{z}}) =  \boldsymbol{\mathrm{ \hat{k}^{xz} }} \odot \boldsymbol{\hat {\alpha}} (51)

A.5 循环数据的线性岭回归

这是第4.4节中步骤的详细版本。 它与核案例非常相似。 我们首先在岭回归公式(公式(3))中替换成公式(10)。

\boldsymbol{ \mathrm{w} } = ( F \mathrm{diag} (\boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} }) F^H +\lambda I )^{-1}X^H {\boldsymbol{\mathrm{y}}} (52)

结合线性代数知识,以及 F 的幺正性。化简

幺正性:  F = F^T,F^* = F^H=F^{-1}, F \ne F^T

\boldsymbol{ \mathrm{w} } = ( F \mathrm{diag} (\boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} }) F^H +\lambda FIF^H )^{-1}X^H {\boldsymbol{\mathrm{y}}} (53)

\boldsymbol{ \mathrm{w} } = ( F \mathrm{diag} (\boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} } +\lambda )^{-1}F^H)X^H {\boldsymbol{\mathrm{y}}} (54)

\boldsymbol{ \mathrm{w} } = F \mathrm{diag} (\boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} } +\lambda )^{-1}F^HF \mathrm{diag}(\boldsymbol{\mathrm {\hat x}^*} )F^H {\boldsymbol{\mathrm{y}}} (55)

\boldsymbol{ \mathrm{w} } = F \mathrm{diag} \left( \frac{ \boldsymbol{\mathrm {\hat x}^*} }  {\boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} } +\lambda} \right) F^H {\boldsymbol{\mathrm{y}}} (56)

这等价于

F^H \boldsymbol{ \mathrm{w} } = \mathrm{diag} \left( \frac{ \boldsymbol{\mathrm {\hat x}^*} }  {\boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} } +\lambda} \right) F^H {\boldsymbol{\mathrm{y}}} (57)

\boldsymbol{ \mathrm{\hat w}^* } = \mathrm{diag} \frac{ \boldsymbol{\mathrm {\hat x}^*} \odot {​{\boldsymbol{ \mathrm{\hat y}^* }}}}  {\boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} } +\lambda} (58)

则,由 \left(\hat{\boldsymbol {\mathrm{w}} }^*\right)^* = \hat{\boldsymbol {\mathrm w}} ,且 \hat{x}^* \odot\ \hat{x} 在频域中为点积,所以值保持不变:

\boldsymbol{ \mathrm{\hat w} } = \mathrm{diag} \frac{ \boldsymbol{\mathrm {\hat x}^*} \odot {​{\boldsymbol{ \mathrm{\hat y} }}}}  {\boldsymbol{ \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} } +\lambda} (59)

A.6 MOSSE 滤波器

公式(12)和MOSSE滤波器[9]之间的唯一区别在于后者最小化了多个基本样本 \mathrm{x_i} (循环移位)的误差,而公式(12)是针对单个基本样本 \boldsymbol{\mathrm x} 定义的。 这样做是为了清楚地呈现,并且一般情况很容易得出。 另请注意,MOSSE不支持多个通道,我们通过两个公式来完成。

每个基础样本 \mathrm x_i 的循环移位可以用循环矩阵 X_i 表示。 然后,替换公式(3)中的数据矩阵 X'=\begin{bmatrix} X_1 \\ X_2 \\  \vdots \end{bmatrix} 导致

\boldsymbol{ \mathrm{ w} }= \sum_j \left( \sum_iX_i^HX_i+\lambda I \right)^{-1} X_j^H\boldsymbol{\mathrm y} (60)

通过直接应用块矩阵乘积的规则。 考虑括号内的表达,

\boldsymbol{ \mathrm{ w} }= \left( \left( \sum_iX_i^HX_i+\lambda I \right)^{-1} \sum_i X_i^H \right) \boldsymbol{\mathrm y} (61)

公式(61)看起来与公式(3)完全相同,除了求和符号。 然后,按照第4.4节中的相同步骤对其进行对角化,并获得滤波器方程式很轻松

\boldsymbol{ \mathrm{\hat w} } = \mathrm{diag} \frac{ \sum_i \boldsymbol{\mathrm {\hat x}^*} \odot {​{\boldsymbol{ \mathrm{\hat y} }}}}  {\boldsymbol{ \sum_i \mathrm{\hat{x}^* \odot \boldsymbol{ \mathrm {\hat x} }} } +\lambda} (62)

  • 13
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值