基于相关滤波的目标跟踪算法_粒子滤波目标跟踪算法优缺点

基于相关滤波的目标跟踪算法_粒子滤波目标跟踪算法优缺点相关跟踪的核心就是滤波器filters的求解,从MOSSE到KCF再到SRDCF,滤波器的模型越来越复杂,计算速度越来越慢,使得相关滤波在计算速度上的优势越来越不明显。比如较新的算法CFLB和BACF等采用了空间约束来解决边界效应,SRDCF和STRCF等使用空间正则来解决边界效应,这些解决边界效应的措施都让相关跟踪面临实时性的挑战。ADMM把一个大优化问题分成可分布式同时求解的多个子问题,通过对…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

相关跟踪的核心就是滤波器filters的求解,从MOSSE到KCF再到SRDCF,滤波器的模型越来越复杂,计算速度越来越慢,使得相关滤波在计算速度上的优势越来越不明显。比如较新的算法CFLB和BACF等采用了空间约束来解决边界效应,SRDCF和STRCF等使用空间正则来解决边界效应,这些解决边界效应的措施都让相关跟踪面临实时性的挑战。ADMM把一个大优化问题分成可分布式同时求解的多个子问题,通过对子问题的迭代可以快速得到滤波器的近似解。

baseline ADMM

ADMM求解以下形式的最小化问题:

基于相关滤波的目标跟踪算法_粒子滤波目标跟踪算法优缺点基于相关滤波的目标跟踪算法_粒子滤波目标跟踪算法优缺点\\arg\min_{x,y}f(x)+g(y)\\s.t. Ax+By=c

该式的拉格朗日表达式为:

{\cal L}(x,y,\varsigma )=f(x)+g(y)+\varsigma^T(Ax+By-c)+\frac{\mu }{2}\begin{Vmatrix} Ax+By-c \end{Vmatrix}_{2}^{2}

迭代步骤为:

x^{k+1}:=arg\min_{x}{\cal L}(x^k,y^k,\varsigma^k )

y^{k+1}:=arg\min_{y}{\cal L}(x^{k+1},y^k,\varsigma^k )

\varsigma^{k+1}:=\varsigma^k +\mu (Ax^{k+1}+By^{k+1}-c)

example SRDCF

SRDCF原文用的是高斯-塞德尔(Gauss-Seidel)求解器,高斯-塞德尔(Gauss-Seidel)求解器也是一种迭代方法,缺点就是比ADMM要慢23333333。SRDCF最小化如下公式:

arg\min_{f} \frac{1}{2}||\sum_{d=1}^{D}x_{t}^{d}\ast f^{d}-y||^{2}+\frac{1}{2}\sum_{d=1}^{D}||wf^{d}||^{2}

此处的f为我们需要求的滤波器,也是ADMM迭代的变量之一,通过baseline的公式我们知道ADMM需要迭代两个变量,并且需要约束条件。变量不足可以构造一个辅助变量g,没有约束条件我们设定约束条件g=f,所以:

\\arg\min_{f} \frac{1}{2}||\sum_{d=1}^{D}x_{t}^{d}\ast f^{d}-y||^{2}+\frac{1}{2}\sum_{d=1}^{D}||wg^{d}||^{2} \\s.t.g=f

该式的拉格朗日表达式为:

\\{\cal L}(f,g,\varsigma )=\frac{1}{2}||\sum_{d=1}^{D}x_{t}^{d}\ast f^{d}-y||^{2}+\frac{1}{2}\sum_{d=1}^{D}||wg^{d}||^{2}+\varsigma^T\sum_{d=1}^{D}(f^d-g^d)+\frac{\mu }{2}\sum_{d=1}^{D}\begin{Vmatrix} f^d-g^d \end{Vmatrix}_{2}^{2}

迭代步骤为:

\\f^{k+1}:=\frac{1}{2}||\sum_{d=1}^{D}x_{t}^{d}\ast f^{d}-y||^{2}+\varsigma^T(f-g)+\frac{\mu }{2}\begin{Vmatrix} f-g \end{Vmatrix}_{2}^{2}

g^{k+1}:=\frac{1}{2}||wg||^{2}+\varsigma^T(f-g)+\frac{\mu }{2}\begin{Vmatrix} f-g \end{Vmatrix}_{2}^{2}

\varsigma^{k+1}:=\varsigma^k +\mu (f^{k+1}-g^{k+1})

子问题的求解是不是很简单,哈哈哈哈。

子问题f的求解:

转换到傅里叶域:

\hat{f}=\frac{1}{2}||\hat{x}_{t} \hat{f}-\hat{y}||^{2}+\hat \varsigma^T(\hat{f}-\hat{g})+\frac{\mu }{2}\begin{Vmatrix} \hat{f}-\hat{g} \end{Vmatrix}_{2}^{2}

其中,\hat {x}_{t},\hat{f}\hat{g}都是D维的。对\hat{f}求导得:

(\hat{x}_t\hat{f}-y)\hat{x}_t^{T}+\hat \varsigma^T\hat{f}+\mu(\hat{f}-\hat{g})=0

\hat{f}=\frac{y\hat{x}_t^{T}-\hat \varsigma^T+\mu \hat{g}}{\hat{x}_t\hat{x}_t^{T}+\mu I}

子问题g的求解:

g没有涉及卷积不用转换到傅里叶域,直接对g求导:

w^Twg-\varsigma+\mu(g-f)=0

g=\frac{\varsigma+\mu f}{w^Tw+\mu}

至此,SRDCF的ADMM迭代算法全部解完。

2019.04.15更新,下面给出SRDCFwithADMM的代码(注:本工程借鉴了ICCV2017目标跟踪算法BACF的相关代码)

1、代码下载地址:

SRDCFwithADMM_ADMM代码-机器学习代码类资源-CSDN下载

2、打开Demo更改数据集路径运行

基于相关滤波的目标跟踪算法_粒子滤波目标跟踪算法优缺点

3、运行结果:

基于相关滤波的目标跟踪算法_粒子滤波目标跟踪算法优缺点

4、run_SRDCFwithADMM.m中给出了OTB数据集的接口,可在OTB数据集中测试结果。 

2019.05.17更新,终于把一个deadline赶完了,以前的SRDCF的ADMM迭代是简化版的,便于大家理解,现在给出详细推导过程(这个推导过程是参考文章BACF来的:求别又diss我抄袭了233333,做个博客而已,搞科研对抄袭这个词真心很敏感。。。)

承接上文:

arg\min_{f} \frac{1}{2}||\sum_{d=1}^{D}x_{t}^{d}\ast f^{d}-y||^{2}+\frac{1}{2}\sum_{d=1}^{D}||wf^{d}||^{2}

构造辅助变量\hat g= \hat f=\sqrt L Ff,这个\wedge表示傅里叶变换,\sqrt L Fa是离散傅里叶变换的2D表达式,L是图像的大小。

那么拉格朗日表达式就变为:

\\{\cal L}(f,\hat g,\hat \varsigma ) = \frac{1}{2}||\hat x\hat g - \hat y|{|^2} + \frac{1}{2}||wf|{|^2} + {\hat \varsigma ^T}(\hat g - \sqrt L Ff) + \frac{\mu }{2}||\hat g - \sqrt L Ff|{|^2}

这里为了简化省略了D个通道的表达。

子问题g的求解:

转换到傅里叶域:

\hat g = \frac{1}{2}||{\hat x_t}\hat g - \hat y|{|^2} + {\hat \varsigma ^T}(\hat g - \sqrt L Ff) + \frac{\mu }{2}||\hat g - \sqrt L Ff|{|^2}

其中,\hat {x}_{t},f\hat{g}都是D维的。对\hat{g}求导得:

\hat{g}=\frac{y\hat{x}_t-L\hat \varsigma+\mu L\hat{f}}{\hat{x}_t\hat{x}_t^{T}+L\mu I}

因为分母上是D维的,使用Sherman-Morrison formula加速运算得:

\hat g = \frac{1}{\mu }\left( {L\hat y\hat x_t - \hat \varsigma + \mu \hat f} \right) - \frac{​{\hat x}}{​{\mu b}}\left( {L\hat y{​{\hat S}_x} - {​{\hat S}_\varsigma } + \mu {​{\hat S}_f}} \right)

这里的变量定义为{​{\hat S}_x} = \hat x_t^T{​{\hat x}_t},{​{\hat S}_\varsigma } = \hat x_t^T\hat \varsigma ,{​{\hat S}_f} = \hat x_t^T\hat f,b = {​{\hat S}_x} + L\mu

子问题f的求解:

f = \frac{1}{2}||wf|{|^2}+ {\hat \varsigma ^T}(\hat g - \sqrt L Ff) + \frac{\mu }{2}||\hat g - \sqrt L Ff|{|^2}

f没有涉及卷积不用转换到傅里叶域,直接对f求导:

f=\frac{\varsigma+\mu g}{w^Tw+\mu}

至此,SRDCF的ADMM迭代算法全部解完。

代码简要解析:

%子问题g的求解
g_f = (((1/(T*mu)) * bsxfun(@times, yf, model_xf)) - ((1/mu) * l_f)  + h_f) - ...
            bsxfun(@rdivide,(((1/(T*mu)) * bsxfun(@times, model_xf, (S_xx .* yf))) ...
            - ((1/mu) * bsxfun(@times, model_xf, S_lx)) + (bsxfun(@times, model_xf, S_hx))), B);
        
%子问题f的求解
H_h=ifft2((mu*g_f) + l_f);
h = argmin_h(ww,mu,H_h);

Jetbrains全家桶1年46,售后保障稳定

其中argmin_h.m定义为:

function h = argmin_h(w1,mu, X)
     lhd= 1 ./  ((w1.^2)+ mu); % left hand
     
     h=zeros(size(X));

     % compute T for each channel
     for i = 1:size(X,3)
         h(:,:,i) = lhd.* (X(:,:,i));
     end
end

[References]

[1] 博客参考:用ADMM求解大型机器学习问题 – BreezeDeus – 博客园
[2] S. Boyd. Alternating Direction Method of Multipliers (Slides).
[3] S. Boyd et al. Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 2010.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226740.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lx文件用什么打开_lservrc文件怎么生成

    lx文件用什么打开_lservrc文件怎么生成介绍两款播放器:第一款:PotPlayer,这款软件快进看学习视频特特别方便。软件的下载地址:链接:http://potplayer.daum.net/?lang=zh_CN第二款:屏幕录像专家

    2022年8月4日
    6
  • AIC和BIC准则详解

    AIC和BIC准则详解很多参数估计问题均采用似然函数作为目标函数,当训练数据足够多时,可以不断提高模型精度,但是以提高模型复杂度为代价,同时带来一个机器学习中非常普遍的问题——过拟合。所以,模型选择问题在模型复杂度与模型对数据集描述能力(即似然函数)之间寻求最佳平衡。人们提出许多信息准则,通过加入模型复杂度的惩罚项来避免过拟合问题,此处我们介绍一下常用的两个模型选择方法:1.赤池信息准则(AkaikeInformationCriterion,AIC)AIC是衡量统计模型拟合优良性的一种标准,由日本统计学家赤池弘次在

    2022年5月23日
    80
  • java jquery 文件下载_jquery下载教程_jquery下载文件到指定的目录

    java jquery 文件下载_jquery下载教程_jquery下载文件到指定的目录在使用jquery这种工具的时候,文档的说明是非常全面的,而且各种各样的应用也十分详细,同时其中还包含了很多比较成熟的插件,能够方便用户自由自在的选择。在应用这种模式编程的时候,能构造用户的html页面保持代码和内容分离的状态。jquery下载在功能设置方面也是比较齐全的,将核心的代码规按照相应的功能进行分割,对于那些不需要的代码就不需要进行加载,有效的避免了延迟加载,配备的有上万节点,可以轻轻松…

    2022年6月6日
    35
  • python 获取时间戳_python将日期转换成时间戳

    python 获取时间戳_python将日期转换成时间戳1、获取秒级、毫秒级和微秒级时间戳importtimeimportdatetimet=time.time()#当前时间print(t)#原始时间数据print(int(t))#秒级时间戳print(int(round(t*1000)))#毫秒级时间戳print(int(round(t*1000000)))#微秒级时间戳结果:1634191096.03610181634191096163419109603616341910960361

    2025年8月30日
    7
  • JavaScript正则表达式的练习

    JavaScript正则表达式的练习JavaScript正则表达式的练习

    2025年11月26日
    3
  • python求余数符号_python取余运算符是什么?

    python求余数符号_python取余运算符是什么?python 取余运算符是什么 python 取余运算符是 即表示取模 返回除法的余数 假设变量 a 10 b 20 那么 b a 输出结果 0Python 语言支持以下类型的运算符 1 算术运算符 2 比较 关系 运算符 3 赋值运算符 4 逻辑运算符 5 位运算符 6 成员运算符 7 身份运算符 8 运算符优先级 python 取整与取余规则 1 运算取整时保留整数的下界 即偏向于较

    2025年9月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号