CSK与KCF算法推导(四)

article/2025/11/11 2:23:02

  本文是CSK与KCF算法推导的第四篇,主要介绍将前面推导采用的一维情况推广到二维。

  • CSK与KCF算法推导(一)——DFT、相关运算和循环卷积
  • CSK与KCF算法推导(二)——带核函数的岭回归问题求解
  • CSK与KCF算法推导(三)——算法主体部分推导
  • (本文)CSK与KCF算法推导(四)——从一维推广到二维
  • CSK与KCF算法推导(五)——具体实现细节
  • CSK与KCF算法推导(六)——HOG特征提取与多通道计算

  KCF全文的推导都是建立在一维样本上的,但是实际使用却是用于二维的图像。那么它是怎样从一维推广到二维的呢?本文参照一维推导的思路给出二维的推导过程。

矩阵内积与矩阵的迹

  二维的推导,需要定义一些新的运算。 A A A B B B都是 m × n m\times n m×n的矩阵,数学上有 t r a c e ( A T B ) {\rm trace}(A^TB) trace(ATB)表示矩阵对应位置元素相乘并求和的结果。参考向量内积,为了方便起见,定义两个矩阵的内积 < A , B > <A,B> <A,B> A A A B B B都是 m × n m\times n m×n的矩阵。它们两个的内积就是矩阵中对应位置的数相乘再相加。
< A , B > : = t r a c e ( A T B ) < A,B > : = {\mathop{\rm trace}\nolimits} ({A^T}B) <A,B>:=trace(ATB)

矩阵阵列

  用 [ ⋅ ] [\cdot] []表示矩阵阵列,矩阵阵列是一个四维的结构,就是矩阵里面嵌套矩阵。 [ ⋅ ] u v [\cdot]_{uv} []uv表示矩阵阵列中的每个矩阵。

矩阵阵列和矩阵的乘法

  定义矩阵阵列和矩阵的乘法,用 ∘ \circ 表示。如下图所示:
在这里插入图片描述
  一个矩阵阵列 [ A ] [A] [A]和一个矩阵 B B B相乘,就是矩阵阵列 [ A ] [A] [A]中的每个矩阵和 B B B内积,然后结果放到对应的位置,得到一个新的矩阵。
[ A ] ∘ B = C C ( x , y ) = < [ A ] x y , B > [A]\circ B=C\ \ \ \ C(x,y)=<[A]_{xy},B> [A]B=C    C(x,y)=<[A]xy,B>

矩阵阵列和矩阵阵列的乘法

  矩阵阵列和矩阵的乘法,类似于矩阵和列向量的乘法。自然,类似于矩阵和矩阵的乘法,我们也能有矩阵阵列和矩阵阵列的乘法。
在这里插入图片描述
  矩阵阵列 [ A ] [A] [A]依次和矩阵阵列 [ B ] [B] [B]中的每个矩阵相乘,然后就能得到一个矩阵阵列 [ C ] [C] [C]
[ A ] ∘ [ B ] u v = [ C ] u v [A]\circ [B]_{uv}=[C]_{uv} [A][B]uv=[C]uv

矩阵分裂

  两个列向量的哈达玛积可以写成对角矩阵和列向量相乘的形式,两个矩阵的哈达玛积也可以写成一个矩阵阵列和矩阵相乘的形式。
在这里插入图片描述
  定义 s p l i t ( ) \rm split() split()函数,它可以将一个矩阵中的所有元素分散到矩阵阵列中的每个矩阵中去。类似于 d i a g ( ) \rm diag() diag()的过程。

单位矩阵阵列

在这里插入图片描述
  单位矩阵阵列指的是满足以下条件的矩阵阵列:
[ I ] u v ( x , y ) = { 1 , x = u & y = v 0 , e l s e {\left[ I \right]_{uv}}(x,y) = \left\{ \begin{matrix} 1,\;x = u\;\& \;y = v\\ 0,\;else \end{matrix} \right. [I]uv(x,y)={1,x=u&y=v0,else

二维DFT的矩阵阵列表示

  首先给出二维DFT运算的式子。有一个矩阵m×n的矩阵 A ( x , y ) A(x,y) A(x,y),它的二维DFT结果为 A ^ ( u , v ) \hat A(u,v) A^(u,v)
A ^ ( u , v ) = ∑ y = 0 M − 1 ∑ x = 0 N − 1 A ( x , y ) W N u x W M v y \hat A(u,v) = \sum\limits_{y = 0}^{M - 1} {\sum\limits_{x = 0}^{N - 1} {A(x,y)W_N^{ux}W_M^{vy}} } A^(u,v)=y=0M1x=0N1A(x,y)WNuxWMvy

在这里插入图片描述
  根据二维DFT的计算公式,我们可以直接画出二维DFT对应的矩阵阵列 [ D F T 2 ] [DFT2] [DFT2]。上图中右边每个黄色方框内的值是对应的行列旋转因子相乘。类似一维情况下的推导,我们可以得出:
[ D F T 2 ] ∘ [ D F T 2 ] ∗ = M N [ I ] \left[ {DFT2} \right] \circ {\left[ {DFT2} \right]^*} = MN\left[ I \right] [DFT2][DFT2]=MN[I]
( 1 M N [ D F T 2 ] ) ∘ ( 1 M N [ D F T 2 ] ∗ ) = [ I ] \left( {\frac{1}{{\sqrt {MN} }}\left[ {DFT2} \right]} \right) \circ \left( {\frac{1}{{\sqrt {MN} }}{{\left[ {DFT2} \right]}^*}} \right) = \left[ I \right] (MN 1[DFT2])(MN 1[DFT2])=[I]

二维相关运算

  首先给出二维的相关运算:
f ( x , y ) = ∑ q = 0 M − 1 ∑ p = 0 N − 1 A ( p , q ) B ( x + p , y + q ) f(x,y) = \sum\limits_{q = 0}^{M - 1} {\sum\limits_{p = 0}^{N - 1} {A(p,q)B\left( {x + p,y + q} \right)} } f(x,y)=q=0M1p=0N1A(p,q)B(x+p,y+q)
F ( u , v ) = ∑ y = 0 M − 1 ∑ x = 0 N − 1 ∑ q = 0 M − 1 ∑ p = 0 N − 1 A ( p , q ) B ( x + p , y + q ) W N u x W M v y F(u,v) = \sum\limits_{y = 0}^{M - 1} {\sum\limits_{x = 0}^{N - 1} {\sum\limits_{q = 0}^{M - 1} {\sum\limits_{p = 0}^{N - 1} {A(p,q)B\left( {x + p,y + q} \right)} } W_N^{ux}W_M^{vy}} } F(u,v)=y=0M1x=0N1q=0M1p=0N1A(p,q)B(x+p,y+q)WNuxWMvy
F ( u , v ) = ∑ q = 0 M − 1 W M − v q ∑ p = 0 N − 1 A ( p , q ) W N − u p ∑ x = 0 M − 1 W M v ( y + q ) ∑ y = 0 N − 1 B ( x + p , y + q ) W N u ( x + p ) = A ^ ∗ ( u , v ) B ^ ( u , v ) F(u,v) = \sum\limits_{q = 0}^{M - 1} {W_M^{ - vq}\sum\limits_{p = 0}^{N - 1} {A(p,q)W_N^{ - up}\sum\limits_{x = 0}^{M - 1} {W_M^{v(y + q)}\sum\limits_{y = 0}^{N - 1} {B\left( {x + p,y + q} \right)} } W_N^{u(x + p)}} } = {{\hat A}^*}(u,v)\hat B(u,v) F(u,v)=q=0M1WMvqp=0N1A(p,q)WNupx=0M1WMv(y+q)y=0N1B(x+p,y+q)WNu(x+p)=A^(u,v)B^(u,v)
  二维相关运算也可以用二维DFT加速。

循环矩阵阵列

  类似论文中提出的循环矩阵,这里我们定义循环矩阵阵列 C ( A ) C(A) C(A),由m×n的矩阵 A A A通过循环移位产生。

  • 定义算符 P i P^i Pi P i A P^iA PiA表示矩阵 A A A在沿着 x x x正方向整体循环移位 i i i个单位;
  • 定义算符 Q i Q^i Qi Q i A Q^iA QiA表示矩阵 A A A在沿着 y y y正方向整体循环移位 i i i个单位;
    C ( A ) u v = P u Q v A C(A)_{uv}=P^uQ^vA C(A)uv=PuQvA

  这个图太难画了,但我觉得这应该不难理解,就和一维的向量循环移位构成矩阵类似,矩阵循环移位构成矩阵阵列。
   C ( A ) ∘ B C(A)\circ B C(A)B表示的就是相关运算。这里我没有用二维卷积是因为我没想到怎样在矩阵阵列里定义对应的转置运算
C ( A ) ∘ B = [ I D F T 2 ] ∘ ( A ^ ∗ ⊙ B ^ ) = [ I D F T 2 ] ∘ s p l i t ( A ^ ∗ ) ( [ D F T 2 ] ∘ B ) C(A) \circ B = \left[ {IDFT2} \right] \circ \left( {{{\hat A}^*} \odot \hat B} \right) = \left[ {IDFT2} \right] \circ {\mathop{\rm split}\nolimits} ({{\hat A}^*})\left( {\left[ {DFT2} \right] \circ B} \right) C(A)B=[IDFT2](A^B^)=[IDFT2]split(A^)([DFT2]B)
C ( A ) = [ U ∗ ] ∘ s p l i t ( A ^ ∗ ) ∘ [ U ] U = 1 M N [ D F T 2 ] C(A) = \left[ {{U^*}} \right] \circ {\mathop{\rm split}\nolimits} ({{\hat A}^*}) \circ \left[ U \right]\;\;\;\;U = \frac{1}{{\sqrt {MN} }}\left[ {DFT2} \right] C(A)=[U]split(A^)[U]U=MN 1[DFT2]
  所以循环矩阵阵列也能够用DFT实现“分裂化”,即基础矩阵的二维DFT得到的结果分散到矩阵阵列的每个小矩阵中。正是因为能够做这样的特征分解,才有后面的element-wise的运算。
  后面我推不下去了,二维的岭回归大概是每个样本都是一个矩阵,所有样本排列在一起构成矩阵阵列,样本的标签值是一个二维函数,要优化的目标 ω \omega ω也是一个二维的矩阵……

训练标签

  左上角第一个点表示样本不发生循环移动,如果用二维高斯函数作为训练标签,而且一开始我们关心的目标在训练样本图像的正中央,那么二维标签的左上角才是峰值点,因为左上角对应的位移量为0。又因为是循环移位的结构,所以四个角落都是峰值。
在这里插入图片描述
  如果我们关心的目标在样本图像的左上角,那么这个训练样本需要向左和向下平移一半的图像大小才能将样本移动到正中央,那样对应的二维高斯标签就是峰值在中央的情况。但这样做是不合理的,因为如果目标在左上角,那么目标周围的上下文信息就是残缺的。在做DFT之前为了保持周期的连续性,防止频谱泄露,还需要在给样本加窗。那样在左上角的目标信息就会丢失。
  所以如果目标是在训练样本的正中央的话,二维标签的峰值一定是在四个角落上。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/BPybSaPp.shtml

相关文章

CSK与KCF算法推导(三)

本文是CSK与KCF算法推导的第三篇&#xff0c;主要介绍算法的主体部分推导。 CSK与KCF算法推导&#xff08;一&#xff09;——DFT、相关运算和循环卷积CSK与KCF算法推导&#xff08;二&#xff09;——带核函数的岭回归问题求解&#xff08;本文&#xff09;CSK与KCF算法推导&…

容积卡尔曼(CKF)算法介绍_附例子和代码

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。https://blog.csdn.net/weixin_38451800/article/details/87982400本文&#xff0c;主要的目的向大家介绍容积卡尔曼&#xff08;CKF&#xff09;算法&#xff0c;包括两方面:&#xff08;1&#xff…

KCF

转载&#xff1a;http://www.cnblogs.com/YiXiaoZhou/p/5925019.html KCF是一种鉴别式追踪方法&#xff0c;这类方法一般都是在追踪过程中训练一个目标检测器&#xff0c;使用目标检测器去检测下一帧预测位置是否是目标&#xff0c;然后再使用新检测结果去更新训练集进而更新目…

CSK与KCF算法推导(二)

本文是CSK与KCF算法推导的第二篇&#xff0c;主要介绍标量对向量求导、核函数、岭回归问题求解等内容。 CSK与KCF算法推导&#xff08;一&#xff09;——DFT、相关运算和循环卷积&#xff08;本文&#xff09;CSK与KCF算法推导&#xff08;二&#xff09;——带核函数的岭回归…

KCF跟踪算法(1):KCF跟踪demo

前言&#xff1a; 最近在看跟踪算法&#xff0c;看了下比较久远的meanshift、Lk光流算法等&#xff0c;感觉效果和速度都不是很满意。直到我看了KCF跟踪算法&#xff0c;这个算法速度快&#xff0c;效果好&#xff0c;具有很强的鲁棒性&#xff0c;思路清晰。此外作者在主页上…

CSK与KCF算法推导(一)

从2015年Joo F. Henriques等人提出KCF以来&#xff0c;网上已经有了很多相关的科普&#xff0c;也有博主给出了非常详细的推导&#xff0c;但如果想要真正理解我觉得还是得自己推导一遍&#xff0c;所以我在这里准备写一下自己学习过程中的一些想法。   本文是CSK与KCF算法推…

KCF算法学习笔记

背景 博主正准备往tracking方向入坑&#xff0c;在师兄推荐下学习KCF算法&#xff0c;据说是目前最流行的online visual tracking算法。 论文&#xff1a;J. F. Henriques, R. Caseiro, P. Martins, J. Batista, ‘High-speed tracking with kernelized correlation filters’ …

KCF目标跟踪算法

论文链接&#xff1a;https://link.zhihu.com/?targethttp%3A//ieeexplore.ieee.org/abstract/document/6870486/ 代码链接&#xff1a;http://www.robots.ox.ac.uk/~joao/ 个人认为&#xff0c;这篇论文是近年来跟踪界最经典的论文&#xff0c;没有之一。主要思想就是利用了…

目标跟踪算法----KCF进阶(基于KCF改进的算法总结)

一、前情提要 如果你对目标跟踪和KCF是什么东西还不了解的话欢迎你看前一篇博文KCF入门详解&#xff1a;http://blog.csdn.net/crazyice521/article/details/53525366。如果你已经对基于KCF的目标跟踪有了一定的了解&#xff0c;并想知道这个算法有怎么样的后续的发展的话&a…

KCF算法公式推导

1 最小二乘法求解矩阵形式推导 设训练样本集为 ( x i , y i ) (x_i,y_i) (xi​,yi​)&#xff0c;一元&#xff08;向量&#xff09;线性回归可表示为&#xff1a; f ( x i ) w T x i ⃗ b f(x_i)w^T\vec{x_i}b f(xi​)wTxi​ ​b若把样本输入 x i ⃗ \vec{x_i} xi​ ​表示…

目标跟踪算法——KCF 进阶

一、前情提要 如果你对目标跟踪和KCF是什么东西还不了解的话欢迎你看前一篇博文KCF入门详解&#xff1a;http://blog.csdn.net/crazyice521/article/details/53525366。如果你已经对基于KCF的目标跟踪有了一定的了解&#xff0c;并想知道这个算法有怎么样的后续的发展的话&am…

追踪算法KCF体验

本文使用KCF的opencv版本实现。 对应论文&#xff1a;High-Speed Tracking with Kernelized Correlation Filters 编译环境&#xff1a;VS2015 win7 64位 相关软件下载安装 需要下载opencv3.10&#xff0c;opencv_contrib和cmake-gui。 图&#xff1a;opencv下载说明 图&…

单目标跟踪--KCF算法(核化相关滤波算法)Python实现(超详细)

Tracking-KCF Algorithm 注&#xff1a;本文涉及的算法的代码实践已上传至GitHub&#xff0c;恳求大佬们指点&#xff01;^ _ ^ 1. 目标检测跟踪与算法背景概述 ​ 目标跟踪任务在许多的计算机视觉系统中都是极为关键的一个组成部分。对于任意给定的一个初始图像的Patch&…

目标跟踪算法KCF原理详解

一直以来没有很想写这个&#xff0c;以为这个东西比较简单&#xff0c;还算是比较容易理解的一个算法&#xff0c;但是在知乎上回答过一个问题之后就有朋友私信我一些关于细节的东西&#xff0c;我一直以为关于细节的东西大家可以自己去理解&#xff0c;大家都是想快速了解这个…

KCF算法原理笔记

KCF算法全称是Kernelized Correlation Filters&#xff0c;是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins, and Jorge Batista提出来的跟踪算法&#xff0c;这个算法不论是在跟踪效果还是跟踪速度上都有十分亮眼的表现。该算法主要使用循环矩阵对样本进行采集&am…

目标跟踪算法——KCF入门详解

一直以来没有很想写这个&#xff0c;以为这个东西比较简单&#xff0c;还算是比较容易理解的一个算法&#xff0c;但是在知乎上回答过一个问题之后就有朋友私信我一些关于细节的东西&#xff0c;我一直以为关于细节的东西大家可以自己去理解&#xff0c;大家都是想快速了解这个…

【KCF算法解析】High-Speed Tracking with Kernelized Correlation Filters笔记

前段时间研究了一下KCF算法&#xff0c;单单看论文有很多看不懂的地方。查阅参考了&#xff0c;很多博客和其他材料才算了解了文章的大题思路&#xff0c;现将个人的理解在此记录&#xff0c;作为笔记。 主要内容 0.1 目标跟踪的背景介绍 0.2 学习该算法需先了解的预备知识 …

前端项目如何做测试?

前端项目也叫web端项目&#xff08;通俗讲就是网页上的功能&#xff09;是我们能够在屏幕上看到并产生交互的体验。 前端项目如何做测试&#xff1f; 要讲清楚这个问题&#xff0c;先需要你对测试流程现有一个全局的了解&#xff0c;先上一张测试流程图&#xff1a; 接下来下…

gt2e支持升级鸿蒙,鸿蒙测试版下月发布,Mate40或率先升级

鸿蒙系统终于要来了&#xff0c;Mate 40或成为率先升级的机型&#xff0c;12月中下旬将推出开发者测试版本&#xff0c;网友评论称终于等到你&#xff0c;国产操作系统终于要来了。 前一阵子余承东说鸿蒙系统将不会在今年推出&#xff0c;当时这个消息说实话让很多人感到失望&a…

gt2e鸿蒙系统,华为Watch GT2e评测:轻松开启年轻人一手掌控的百变运动潮酷生活...

【TechWeb】4月23日,华为nova7发布会上,华为Watch GT系列家族新成员——华为Watch GT 2e手表也正式发布。这款手表主要面向95后Z世代年轻人群体,定位运动潮流内核,潮流的外观造型和丰富的运动功能上吸引了不少年轻人关注的目光,同时也吸引了小编尝鲜的好奇之心。 潮酷外观…