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贴公式比较烦,原谅我直接截图了 ...
随机推荐
- 【汇总】Wireshark 过滤规则
作者:Bay0net 时间:2019-07-01 14:20:09 更新: 介绍:记录使用过的 wireshark 过滤规则 0x01. 使用介绍 抓包采用 wireshark,提取特征时,要对 se ...
- Debian系统中当安装deb软件时出现:deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 DVD Binary-1 20171209-12:11]/ stretch contrib main
vi /etc/apt/sources.list // 注释掉下面这句话# deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 D ...
- 来自数据源的 String 类型的给定值不能转换为指定目标列的类型 nvarchar
.TrimEnd() 怀疑是否SqlBulkCopy是否存在某种bug,故而在系统中改写代码,用单个sql的插入数据方式,用循环逐条导入.结果是没问题.难道真的是SqlBulkCopy有某种bug?上 ...
- nginx+memcached缓存图片
1.nginx的配置如下: location ^~ /images/ { set $memcached_key "$uri"; #用URI作为key去memcached中 ...
- IP子网的划分
一.划分子网的具体步骤 已知192.168.1.0/24,划分8个子网(一个ip划分8个子网,即网络位不再是24位)1100 0000.1010 1000.0000 0001.0000 00001 . ...
- 分享之测试WebService小工具 STORM(转)
http://www.cnblogs.com/yhuang/archive/2012/04/04/share_storm.html 最近的项目中,一直要使用到WebService,为了测试自己编写的W ...
- centos 7 无网络情况下,解决yum 安装依赖rpm包
方法一:在一台有网络的机器,用yum下载好所需程序,传到另外一台网络的机器上安装 yum install xtrabackup --downloadonly --downloaddir=/rpmpat ...
- [LeetCode] 210. 课程表 II
题目链接:https://leetcode-cn.com/problems/course-schedule-ii/ 题目描述: 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前 ...
- 微信小程序获得微信头像和昵称
微信小程序之登录态的探索 { wx.getSetting({ success: res => { if (res.authSetting && res.authSetting[' ...
- go & log
更多日志库 https://github.com/golang/glog github.com/astaxie/beego/logs ... 这里有一个讨论 Golang的log包哪个好用? 参考 G ...