DSST(Accurate Scale Estimation for Robust Visual Tracking 代码解读

Accurate Scale Estimation for Robust Visual Tracking

我在前面一篇博客“相关滤波跟踪(MOSSE)”中讲了相关滤波跟踪的原理,但是因为那篇文章没有提供代码,所以就没法深入的研究他,而且纯理论看起来会很枯燥。后来Martin Danelljan 对MOSST做了改进,并增加了多尺度跟踪,改进效果很显著,在今年的VOT上,其测试效果是第一的。其文章名为Accurate Scale Estimation for Robust Visual Tracking,其代码为DSST,因此后面就用DSST代表这种方法。我把文章代码都上传到这里http://yunpan.cn/cHcj9c4q9VLfL 访问密码 af88 或者是这里https://github.com/Lennycyz/DSST,大家可以下载。下面进入正文:

MOSSE(Visual Object Tracking using Adaptive Correlation Filters )在求解滤波器时,其输入项是图像本身(灰度图),也就是图像的灰度特征。对于灰度特征,其特征较为简单,不能很好的描述目标的纹理、边缘等形状信息,因此DSST的作者将灰度特征替换为在跟踪和识别领域较为常用的HOG特征。

DSST作者将跟踪分为两个部分,位置变化(translation)和尺度变化(scale estimation)。在跟踪的实现过程中,作者定义了两个correlation filter,一个滤波器(translation filter)专门用于确定新的目标所处的位置,另一个滤波器(scale filter)专门用于尺度评估。

在translation filter方面,作者的方法与MOSSE的方法是一样的,只不过其获取最佳模板H的准则有了些许变化。根据translation filter可以获取当前帧目标所处的位置,然后在当前目标位置获取不同尺度的候选框,经过scale filter之后,确定新的目标尺度。

程序实现

先来看看作者给出的伪代码:

Algorithm 1 Proposed tracking approach :iteration at step t.
Input :
    Image .
    Precious target position and scale .
    Translation model ,and scale model ,.
Output :
    Estimated target position  and scale .
    Updated translation model ,and scale model ,.

Translation estimation :
    1:Extract a translation sample from at and .
    2:Compute the translation correlation using ,and in (6).
    3:Set to the target position that maximizes .

Scale estimation :
    4:Extract a translation sample from at and .
    5:Compute the translation correlation using ,and in (6).
    6:Set to the target position that maximizes .

Model update :
    7:Extract samples and from at  and .
    8:Update the translation model ,using (5).
    9:Update the scale model ,using (5).

初始化阶段:

一、得到translation filter的输入和输出

% desired translation filter output (gaussian shaped), bandwidth proportional to target size
%prod(X)表示对X中的每个元素求积(product)
%ndgrid将两个向量复制到rs(行rows) 和cs(cols)中 
output_sigma = sqrt(prod(base_target_sz)) * output_sigma_factor;
[rs, cs] = ndgrid((1:sz(1)) - floor(sz(1)/2), (1:sz(2)) - floor(sz(2)/2));
y = exp(-0.5 * (((rs.^2 + cs.^2) / output_sigma^2)));
yf = single(fft2(y)); %将矩正变为单精度浮点型

已知初始目标框的为 (x0,y0,w0,h0) ,作者首先获取不同大小的patchs,获取过程如下:

[rs, cs] = ndgrid((1:sz(1)) - floor(sz(1)/2), (1:sz(2)) - floor(sz(2)/2));

这里的sz(1)= 2h0 ,sz(2)= 2w0 。这里获取的patch大小如下表示:

patchrows{ r|1h0<r<h0}
patchcols{ c|1
  • 23
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
DSST目标追踪代码是一种用于追踪目标物体的算法。DSST代表"Discriminative Scale Space Tracker",它利用了判别尺度空间跟踪方法来实现目标追踪。 DSST目标追踪代码主要由以下几个部分组成: 1. 尺度空间模型生成:首先,代码会使用尺度空间模型生成算法来创建一个尺度空间,该空间包含了多个尺度的目标模板。这些尺度的目标模板用于在目标缩放时进行匹配。 2. 特征提取:接下来,代码会进行特征提取,从目标和背景中提取一组特征向量。这些特征向量通常包括颜色、纹理、梯度等信息,用于描述目标的外观。 3. 判别回归学习:然后,代码会使用机器学习算法,如支持向量机(SVM)或随机森林(Random Forests),通过训练数据对目标和背景的特征向量进行分类。这样可以建立一个判别回归模型,用于预测新的特征向量属于目标还是背景。 4. 目标跟踪:在目标跟踪阶段,代码使用判别尺度空间跟踪方法,通过计算输入帧中特征向量与目标模板的相似性来定位目标的位置。代码会在每一帧中更新目标模板,并利用判别回归模型进行目标识别和跟踪DSST目标追踪代码在许多计算机视觉应用中都有广泛的应用,例如视频监控、自动驾驶、人机交互等领域。它具有良好的鲁棒性和实时性能,可以在复杂的环境中对目标进行准确的跟踪。同时,DSST目标追踪代码还可以进一步优化和改进,以提高其性能和适应性,满足不同的应用需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值