目标跟踪相关滤波笔记


(注:编辑器会根据文章标题自动生成目录)
目标跟踪常用的两类算法:
1、 生成模型方法:卡尔曼滤波、粒子滤波、mean-shift等 (找到与模型最相似的区域)
2、 判别模型方法:Struck和TLD、相关滤波算法、基于深度学习等 (训练用到背景信息)

相关滤波综述: (知网有到近两年的)
(文章由响应链接获取paper and code)
链接: 2018目标跟踪算法综述.
链接: 目标跟踪算法研究综述.
链接: 目标跟踪检测算法(三)——相关滤波与深度学习应用.

链接: 总结:相关滤波器(Correlation Filters).
链接: 相关滤波跟踪(MOSSE、KCF、DSST、ICF).

一、 MOSSE:

参考链接: 相关滤波跟踪·MOSSE算法的梳理.
理解公式的时域和频域的对应关系
由于我们在频域处理图像是使用DFT,频域相乘对应在时域是进行循环卷积,而循环卷积的操作是对两个尺寸相同的图像进行翻转、循环移位、对应相乘再相加等操作,所以时域卷积对应的相关滤波模板h的尺寸应该是和图像f相同,而不是小于图像f。
1、csk也是借用mosse的思想,采用svm的线性分类,对应mosse的相关操作;而循环移位也与mosse时域的循环卷积相似;
2、公式推导中应该是一帧图像fi得到同样大小的响应gi;
3、最小化代价函数,由于考虑到了外观变化等情况,并不单能从前一帧图像去考虑相关滤波器,而需要同时考虑前面的多个图像,相加最小。(减小过拟合)
链接: 目标跟踪检测算法(三)——相关滤波与深度学习应用.

从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个N点序列的N点循环卷积的结果仍为N点序列,而它们的线性卷积的结果的长度为2N-1;循环卷积对序列的移位采取循环移位,而线性卷积对序列采取线性移位。正是这些不同,导致了线性卷积和循环卷积有不同的结果和性质。

注意学习mosse的推导技巧,最小化代价函数是矩阵模的形式,且是先计算矩阵间的点乘相加,这是元素间的对应运算,因此我们最小化代价函数先从矩阵的对应元素Hwv入手,最后求得的Hwv也只是位置wv上的元素之间的运算,进而可推至整个矩阵H的求解公式。
在这里插入图片描述

  • 由于相关操作计算量太大,利用相关操作与卷积操作的关系 及 时域卷积=频域相乘 先经频域再转回时域并寻找响应最大的位置,以此确定当前帧的目标;利用确定的目标来更新滤波模板H
    频域:当前帧F、滤波模板H、响应G G=HF*
    公式:上一帧更新所得滤波模板H乘以当前帧F,得到响应G;
  • 计算g=ifft2(G)并求max(g) 求得目标的位置。% mesh(gi);【good debug】查看响应
    由H=G/F*来推导滤波器H,这里高斯G即为理想输出,即希望目标中心附近响应为高斯形状,并在目标有峰值
    在这里插入图片描述
    在这里插入图片描述
    1、为防止过拟合,由第一帧求出的初始滤波器H是由第一帧目标及其随机仿射产生的多个样本来确定的;
    滤波器模板H的size目标框的size相同;因此相关操作对应的范围只在预测目标框内进行,这里应该是利用了物体的平滑连续性,理想化操作,即当前帧的目标位置只在上一帧目标中心附近寻找。
    2、注意框选的rect以及数据的ground_true对应值的含义
    3、代码中用到了高斯是假设:滤波模板与当前帧相关操作得到一目标为中心的高斯响应,是一种理想情况;【以此来求对应的滤波器应该是怎样的】
    4、算法总最小化误差平方输出中,误差即为每帧所求响应与理想响应之间的差值

由代码可知的一些细节

  1. 公式G = F.* H*的size为目标框的大小,检测时(第二帧开始)也只是以上一帧目标中心的目标框内进行。
  2. 为去除过拟合,第一帧得到的初始滤波器H是由第一帧样本旋转映射的多个样本得到的;从第二帧开始更新H没有再对样本进行旋转映射。
  3. 注意这里用的是灰度特征(即像素值),KCF利用HOG特征表示是否会不同?
  4. question:为什么这里的G一直都是用最开始的那个?由于我们希望在每帧目标中心的响应是以该点为中心的高斯形状,而fi已经是新的目标框内容,其对应的响应G的高斯峰值仍然应在目标框的中心
  5. 注意时域高斯则频域也为高斯,但在频域,其峰值在零频率处。 (可用mesh函数查看时域高斯g和其对应频域高斯G)
  6. 代码中DFT计算时G、F都是去目标框的大小来计算,那么对应的时域如滤波器的尺寸及值是怎样的呢?imshow(abs(ifft2(Hi)),[]); 【也没能看出究竟】
    7、% mesh(gi);【good debug】查看响应

二、 CSK相关滤波算法

求最优化问题,一般的计算流程:
1、写出其代价函数(注意这是一个标量)
2、代价函数向量化写法
3、最小化代价函数–》矩阵的求导

预备知识:
1、核函数技巧”和“松弛因子”两大绝招解决样本非线性不可分问题.
2、核函数和核矩阵简介.
3、链接: 算法梳理1.
4、链接: 算法梳理2.
5、链接: 算法梳理3(注意训练、检测阶段核 矩阵K的理解).
6、链接: 论文中,利用k的对称性消除共轭的步骤没有提及.
7、链接: 对很多疑惑的解决.

1、明确为当前帧为训练图像x,下一帧为测试图像
2、映射函数φ(x)将特征空间映射到更高维的空间,便于线性分类!转换后的数据能像可线性分类的数据一样进行分类 f(xi) = wT * xi
【CSK使用的是灰度特征,KCF使用的是hog多通道特征】
3、由公式可知,关键是求出岭回归解α与核相关矩阵k,有了α,并利用和相关矩阵k就能求出所有样本的响应
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

理解:由于目标跟踪为了实时,需减少计算量,一般当前帧的目标只在上一帧确定的目标中心附近进行搜索。因此每帧用于更新模型的样本也只是该范围内的图像部分img(i),而不是整幅图像Img(i),每个img(i)对应的特征即为x(i)

三、KCF相关滤波算法

参考链接: KCF论文阅读笔记.
HOG特征提取1: HOG特征(简洁版).
HOG特征提取2: ML笔记:HOG特征提取原理详解+代码!.
HOG特征提取3: HOG特征简单梳理.
HOG特征提取4: 目标检测的图像特征提取之(一)HOG特征.
在这里插入图片描述
1、FHXF 是矩阵X的2D DFT变换。即傅里叶变换可以把循环矩阵对角化。(参考链接:循环矩阵傅里叶对角化)
在这里插入图片描述
在这里插入图片描述
工作流程①中:
floor(window_sz / cell_size) 得出window内有多少个cell_size;我们的样本的特征空间也应由此得出
【yf是我们进行预测以后得到的最理想的输出,是我们人为给的,我们认为我们训练出的模型在目标处误差为零则得到的形状就是yf的高斯形状】

下载: 相关滤波一些经典论文及代码.
参考博客: 相关滤波一些总结.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值