KCF跟踪算法
参考:https://www.cnblogs.com/YiXiaoZhou/p/5925019.html
参考:https://blog.csdn.net/shenxiaolu1984/article/details/50884830
循环矩阵:
KCF里的所有矩阵都是由目标样本循环位移得到,向量的循环可以由排列矩阵得到,如:

为给定向量,通过转换矩阵如:

实现移动:

(实现移动的方向为:水平方向的移动)
或者通过如下实现不同方向的移动:

通过xQ来实现移动;
(实现移动的方向为:列方向的移动)
通过将向量
通过不断和排列矩阵相乘得到n个循环位移向量,并将这n个向量一次排序合并到矩阵,则生成了x的循环矩阵,表示为:C(x);

上图为:一维的转换移动

上图为:二维图像的转换移动
如下对在一维情况下进行讨论:
一维脊回归(其实和岭回归一样):
设训练样本集
,那么线性回归函数:
,w是列向量表示权重系数,通过最小二乘法求解:

上式也可以写成矩阵形式:

其中
的每一行xn表示一个向量,y是列向量,每个元素对应一个样本标签,求解得:

由于后面在傅立叶域内进行计算,涉及到复数矩阵,所以统一写成如下:

其中XH表示复共轭转置矩阵(共轭的作用在于将a+bi的数转变成a-bi,实数的共轭就是本身,所以这里实数的共轭转置矩阵也等价于实数的转置矩阵)
傅立叶矩阵对角化:
所有的循环矩阵都可以在傅氏空间中使用离散傅立叶矩阵进行对角化:

其中x对应于组成X的向量(也可以理解为第一行矩阵)的傅立叶变化后的值:
,也就是傅立叶变换过程;
F是离散傅立叶变换矩阵(DFT matrix),可以用常量表示:

其中w的表示形式如下(K为方阵F的尺寸,上式用n来表示):

把w想象成一个角度为2π/K的向量,这个矩阵的每一行是这个向量在不断旋转(???);之所以称为DTF matrix,是因为一个信号的DFT(傅立叶)变换可以通过该矩阵乘积获得:

那么反过来,反傅立叶变换也可以通过类似手段获取:

傅立叶矩阵包含许多性质:
1、对称矩阵
2、满足
,也即酉矩阵;这里可以通过将FH展开成wH验证(F代表常数);
将原公式
两边乘以逆矩阵得到:
;利用酉矩阵性质,可以获得:

也即矩阵X通过相似变换F变成对角矩阵
,从而对循环矩阵X进行对角化;
另外,
是矩阵X的2维 DFT变换,即傅立叶变换可以将循环矩阵对角化;
傅氏矩阵对角化的脊回归:
将
代入脊回归公式得到:

(上式中傅立叶变换后的值右上角带个星号为共轭函数表示)
由于
;所以对如上等式两边同时进行傅立叶变换,得到结果如下:

从而得到等式:

核空间的脊回归:
通过找到一个非线性映射函数Φ(x)列向量,使映射后的样本在新空间中线性可分;那么再新空间中就可以使用脊回归来寻找一个分类器
,这时得到的权重系数w为:

令
,由于循环矩阵的非线性转换结果固定,那么如上式子可以转化为求解a的最小:
,这里从求解w转换成求解a,也就是w的对偶问题;
备份一下基础知识:

Y = A * X --> DY/DX = A'
Y = X * A --> DY/DX = A
Y = A' * X * B --> DY/DX = A * B'
Y = A' * X' * B --> DY/DX = B * A'
令右式为J(a),那么:

由于
类似于核空间变量的协方差矩阵,矩阵和矩阵转置相乘,那么结果一定可逆;
对于核方法,一般不一定知道非线性映射函数Φ(x)的具体形式,只是刻画在核空间的核矩阵
,那么令K表示核空间的核矩阵,由核函数得:
;

论文的创新点在于通过循环矩阵对角化简化计算,所以这里如果希望计算a时可以将矩阵求逆运算变为元素运算,就希望将K对角化;故希望找到一个核函数使对应的核矩阵式循环矩阵;
定理1:若核矩阵K满足:
;其中M是排列矩阵,那么
为循环矩阵;
证明:设
,于是有:

这里将Kij理解为将第一行的 j-i 个元素放到K的第i行第j列上;
那么
就得到了循环矩阵,所以K是循环矩阵;这里的 j-i 可以理解为除n的余数,这里是循环的;且由于K是循环矩阵,所以有如下表达式:

快速检测:
由训练样本和标签训练检测器,其中训练集是由目标区域和位移得到的若干样本组成,对应标签是距离越近正样本可能性越大,从而计算得到a;
待分类样本集,即待检测样本集,是由预测区域和其位移得到的样本集合
,这里z是预测区域,zj是位移样本集;
通过选择
最大的样本作为检测出的新目标区域;由zj判断目标移动的位置;
定义K z是测试样本和训练样本间在核空间的核矩阵:

由于这里的Kz满足如下等式:
,
所以有Kz为循环矩阵;
从而得到各测试样本的响应:

如上的f(z)是列向量;Kxz是矩阵(Kz)T的第一行,即Kz的第一列;
Kzx和Kxx都是对称向量,而对称向量的共轭转置是实数;
核矩阵的快速计算:
现在存在的矩阵算法就是核矩阵的第一行的计算:
(K的第一行),
(Kz的第一列)
内积和多项式核:
这种函数的核矩阵可以表示为:
,从而有:

因此对于多项式核
有:

径向基核函数:
比如高斯核,这类函数是
的函数:

所以:

对于高斯核则有:

从1维到2维的转换:
假设
是目标图像,M=C(X)是X生成的循环矩阵块;即
表示
的第(i,j)块,是X右移j,下移i得到的样本块;现有一个函数
,自变量
,从而在和空间下有如下脊回归公式:

注意:由
移动生成的样本共有mn个,所以
,这里
,
是对应样本的标签,Y是对应样本标签的矩阵形式
对于得到的核函数都是块循环矩阵,块循环矩阵可以用2D傅立叶变换矩阵对角化:

上式中的F2表示2D傅立叶变换矩阵,K‘表示生成块循环矩阵K的生成矩阵,
表示对K'进行2D傅立叶变换的结果;因此有:

上式的1m表示全1的m维列向量;

这里的aM和yM分别对应a,y的矩阵形式
对应预测结果:

其中KXZ表示块循环矩阵
的生成矩阵;
多通道问题:
Hog特征是将图像划分成较小的局部块,称为cell,在cell里提取梯度信息,绘制梯度方向直方图,为了减少光照影响,将几个cell的方向直方图串在一起进行block归一化,最终将所有的cell直方图串联起来就是图像的特征;
论文的Hog特征提取将sample区域划分为若干个区域,然后将每个区域提取特征,github上给定的代码是在每个区域提取32维特征,即3 x nOrients+5,其中nOrients = 9是梯度方向划分的bin个数,每个方向提取3个特征,其中2个是对方向bin敏感的,1个是不敏感的;另外4个特征是关于表现纹理的特征,最后一个特征为0;提取31个特征(不考虑0)后,将每个cell的特征并起来,那么图像得到的结果就是立方体;假设cell的划分结果为m x n,那么fhog提取的结果就是m x n x 31,称这31个方向为通道;可以通过cell的位移获取样本,这样每一通道对应位置的位移;所有的样本的第 i 通道都是生成图像的第 i 通道位移获得;
前面提到2维图像的样本cell数为M,每个cell特征维度为L,第 i 个样本的第 j 个通道向量表示为
,样本的总特征可以表示为:
;

从而K矩阵的第一行有:

这里涉及到:
这里是核的点乘的结果,所以可以推得径向基核的结果:

KCF跟踪算法的更多相关文章
- KCF跟踪算法 入门详解
一.算法介绍 KCF全称为Kernel Correlation Filter 核相关滤波算法.是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins ...
- 视觉目标跟踪算法——SRDCF算法解读
首先看下MD大神2015年ICCV论文:Martin Danelljan, Gustav Häger, Fahad Khan, Michael Felsberg. "Learning Spa ...
- TLD目标跟踪算法
1. 简介 TLD目标跟踪算法是Tracking-Learning-Detection算法的简称.这个视频跟踪算法框架由英国萨里大学的一个捷克籍博士生Zdenek Kalal提出.TLD将传统的视频跟 ...
- matlab工具箱之人眼检测+meanshift跟踪算法--人眼跟踪
Viola-Jones 人眼检测算法+meanshift跟踪算法 这次的代码是对视频中的人眼部分进行检测加跟踪,检测用的是matlab自带的人眼检测工具箱 下面是matlab官网介绍这个算法的一些东西 ...
- 比微软kinect更强的视频跟踪算法--TLD跟踪算法介绍
转自:http://blog.csdn.net/carson2005/article/details/7647500 TLD(Tracking-Learning-Detection)是英国萨里大学的一 ...
- TLD视觉跟踪算法(转)
源:TLD视觉跟踪算法 TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总 ...
- Video Target Tracking Based on Online Learning—TLD单目标跟踪算法详解
视频目标跟踪问题分析 视频跟踪技术的主要目的是从复杂多变的的背景环境中准确提取相关的目标特征,准确地识别出跟踪目标,并且对目标的位置和姿态等信息精确地定位,为后续目标物体行为分析提供足 ...
- TLD(Tracking-Learning-Detection)一种目标跟踪算法
原文:http://blog.csdn.net/mysniper11/article/details/8726649 视频介绍网址:http://www.cvchina.info/2011/04/05 ...
- 基于MeanShift的目标跟踪算法及实现
这次将介绍基于MeanShift的目标跟踪算法,首先谈谈简介,然后给出算法实现流程,最后实现了一个单目标跟踪的MeanShift算法[matlab/c两个版本] csdn贴公式比较烦,原谅我直接截图了 ...
随机推荐
- RabbitMQ安装及其中遇到的问题解决方案
参考官方文档:https://www.rabbitmq.com/install-debian.html#apt 第一步: # import PackageCloud signing key wget ...
- 读取yaml中的内容
def read_yml(path): """ 读取yml文件中的数据 :param path: 文件yaml 的路径 :return: 返回读取yaml文件内的结果 & ...
- Linux几个命令的升级替代品
grep => ack, agack和ag是两个文本搜索工具,比自带的grep要好用得多.在指定目录下搜索文本时,它们不需要像grep那样指定各种命令行选项,输出结果也会包含文件名和行号,并且会 ...
- 封装一个windows转发端口的脚本
使用方法: 1.打开文本编辑工具如(Notepad++) 2.新建文件 3.注意:修改文本的编码字符集为:gb2312 4.将下面代码 复制入文件 5.保存文件名为:transmit.bat 6.双击 ...
- ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: YES)
# Bug描述 今天周末,在家里学点新技术,虽然公司分配的任务没有完成(滑稽滑稽) 我先创建了一个mysql数据库,用root用户创建一个新用户,毕竟项目中使用root是非常危险的,尤其是我这样的实 ...
- Mac021--编辑软件
一.思维导图MindNode 知乎Mac常用的思维导图:https://zhuanlan.zhihu.com/p/37768277 MindNode下载地址:https://macblcom.ctfi ...
- Java第三周课程总结&实验报告一
第三周课程总结 1.关于面向对象的一些具体内容,明白了类与对象以及Java的封装性和构造方法以及对对象匿名的相关知识. 2.this关键字,它是表示类的成员属性(变量),使用this构造方法时必须放在 ...
- [转帖]kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
kafka入门:简介.使用场景.设计原理.主要配置及集群搭建 http://www.aboutyun.com/thread-9341-1-1.html 还没看完 感觉挺好的. 问题导读: 1.zook ...
- arm初识
一.CPU从指令集角度分类 1.1. CISC (X86) 1.1. 1. CISC CPU 指complex instruction set computer复杂指令集CPU 1.1.2. CIS ...
- centos6配置本地yum源
在无法访问外网时,yum安装软件会失败,这时候可以配置yum源为本地的镜像iso来解决这个问题 1. 使用Xftp上传iso镜像文件到服务器 2. 使用如下命令新建挂载点并挂载 sudo mkdir ...