【UPDT(ECCV2018)】论文阅读笔记

Unveiling the Power of Deep Tracking 论文地址

Motivation

  • 目前目标跟踪领域的训练数据太少,而且在跟踪的时候我们只知道第一帧的ground-truth,所以其实后面帧都是没见过的物体,所以模型需要处理没见过的物体;
  • 对于deep learning在目标跟跟踪领域只是利用了中低层的数据,由于深度网络是用分辨率来换高层鲁棒的特征。但是高层的特征会失去很多空间信息,浅层的特征易于定位,所以需要找到一个两种特征结合的策略。

Contribution

  • 系统的分析了深和浅的特征在目标跟踪中的影响;
  • 他们发现了深度模型应该负责网络的鲁棒性,而浅的模型负责准确定位;
  • 提出了一个新颖的特征融合策略。

Analyzing Deep Features for Tracking

这个部分文章花了很多篇幅去分析深度特征和浅的特征对跟踪精度的影响,用了两个方法:1)数据增强;2)鲁棒性/精确性平衡
在这里插入图片描述

1)数据增强

由于在训练模型时训练数据太少,所以很多方法都会对数据做一些增强,这篇文章中也用了一些增强策略:Flip Rotation Shift Blur Dropout在实验中,他们发现对于深度特征这种数据增加是有用的,然而数据增强会影响浅的特征(手工特征)。如图2(a)

2)鲁棒性/精确性平衡
  • 鲁棒性:找到目标,对目标变化不敏感
  • 精确性:准确率,准确定位目标

文章指出可以通过用离目标很近的样本作为正样本,这样可以提升模型的准确率,但是这样会使得正样本变少,导致模型鲁棒性不好;若是扩大采样区域,可以使得模型拥有较好的泛化能力,但是模型的分辨能力就会变差。

文章沿用了ECO中使用的高斯分布来提取正样本,将深层特征和浅层特征分开实验发现不同的特征应该用不同的方差,如图2(b)。

基于上诉分析实验,低层和高层的特征应该分开训练,所以就需要一个特征融合策略

在这里插入图片描述

Adaptive Fusion of Model Predictions

为了更好得融合特征,他们提出了一个预测质量评价指标:
ξ t ∗ { y } = min ⁡ t y ( t ∗ ) − y ( t ) Δ ( t − t ∗ ) \xi_{t^*}\{y\} = \min_{t}\frac{y(t^*)-y(t)}{\Delta(t-t^*)} ξt{y}=tminΔ(tt)y(t)y(t)
这个式子越大,就说明找到的目标与其他distractor之间的距离越大,算法的准确性体现为峰值的尖锐程度,鲁棒性体现为目标峰值和干扰区域峰值的高度差距,峰值高度相差越大,证明结果越鲁棒。 (文章有具体的推导证明,感兴趣可以看原文)

有了这个指标之后,最后的评价函数为深层特征置信度与低层特征置信度的结合:
y β ( t ) = β d y d ( t ) + β s y s ( t ) y_\beta(t) = \beta_dy_d(t)+\beta_sy_s(t) yβ(t)=βdyd(t)+βsys(t)
其中 β \beta β是两个置信度的权重参数,最后的损失函数如下:
m i n i m i z e : L t ∗ ( ξ , β ) = − ξ + μ ( β d 2 + β s 2 ) S u b j e c t   t o :   β d + β s = 1 , β d ≥ 0 , β s ≥ 0 y β ( t ∗ ) − ξ Δ ( t ∗ − t ) ≥ y β ( t ) , ∀ t ∈ Ω minimize: L_{t^*}(\xi,\beta) = -\xi+\mu(\beta_d^2+\beta_s^2)\\ Subject \ to:\ \beta_d+\beta_s = 1,\beta_d \ge0,\beta_s\ge0\\ y_{\beta}(t^*)-\xi \Delta(t^*-t)\ge y_{\beta}(t), \forall t \in \Omega minimize:Lt(ξ,β)=ξ+μ(βd2+βs2)Subject to: βd+βs=1,βd0,βs0yβ(t)ξΔ(tt)yβ(t),tΩ
这个找的方式就是先分别在高和低的层找出 Ω \Omega Ω 个局部最优,然后在通过计算损失函数来找到最大的(有点像那篇用强化学习来确定用哪层特征的)

在这里插入图片描述
上图展示了不同的融合方式对跟踪效果的影响,这里的baseline ECO就是用多层特征训练,可以看到若单纯使用多层特征而没有合适的融合方式,效果并不会多好。

若是单纯结合多层特征,效果不好,要有合适的融合策略才能得到事半功倍的效果。

Experiment

文章做了很多对比实验,具体看原文
在这里插入图片描述
在这里插入图片描述

总结

文章主要的贡献就是提出深层和浅层的特征需要分开训练,而且如何融合特征也是很重要的一点,可以说又为现在偏向于multi-level的深度学习方法指出了一条路。不过我有疑问的地方就是,检测问题也是用的很深的网络,为什么在跟踪上就不管用了,检测不是也需要定位嘛?

参考博文:https://gkwang.net/updt/

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
自适应变异粒子群算法(Adaptive Mutation Particle Swarm Optimization,AMPSO)是一种改进的粒子群算法,它能够自适应地调整变异概率,从而增强算法的全局搜索能力和收敛速度。下面是MATLAB代码实现: ```matlab function [gbest,gbestval]=AMPSO(fhd,nop,dim,max_iter,xmin,xmax) % fhd: function handle of the objective function % nop: number of particles % dim: dimension of the problem % max_iter: maximum number of iterations % xmin, xmax: lower and upper bounds of the search space % gbest: global best position % gbestval: global best value % initialization w=0.729; % inertia weight c1=1.49445; % acceleration coefficients c2=1.49445; vmax=(xmax-xmin)/2; % maximum velocity vmin=-vmax; % minimum velocity pm=0.1; % initial mutation probability pm_max=0.5; % maximum mutation probability pm_min=0.01; % minimum mutation probability pm_inc=0.01; % mutation probability increment pm_dec=0.005; % mutation probability decrement pm_updt=50; % mutation probability update interval pm_cnt=0; % mutation probability update counter gbest=ones(1,dim)*Inf; % initialize global best position gbestval=Inf; % initialize global best value pbest=zeros(nop,dim); % initialize personal best positions pbestval=Inf*ones(nop,1); % initialize personal best values x=xmin+rand(nop,dim).*(xmax-xmin); % initialize positions v=vmin+rand(nop,dim).*(vmax-vmin); % initialize velocities mut=zeros(nop,dim); % initialize mutations for i=1:nop fval=fhd(x(i,:)); if fval<pbestval(i) pbest(i,:)=x(i,:); pbestval(i)=fval; end if fval<gbestval gbest=x(i,:); gbestval=fval; end end for iter=1:max_iter % update velocities r1=rand(nop,dim); r2=rand(nop,dim); v=w.*v+c1.*r1.*(pbest-x)+c2.*r2.*(ones(nop,1)*gbest-x); % check velocity limits v=min(max(v,vmin),vmax); % update positions x=x+v; % check position limits x=min(max(x,xmin),xmax); % evaluate objective function for i=1:nop fval=fhd(x(i,:)); if fval<pbestval(i) pbest(i,:)=x(i,:); pbestval(i)=fval; if fval<gbestval gbest=x(i,:); gbestval=fval; end end end % update mutation probability pm_cnt=pm_cnt+1; if pm_cnt==pm_updt if gbestval==Inf pm=pm/2; else pm=pm+pm_inc*(pm_max-pm)/(pm_max*gbestval+eps); pm=max(pm,pm_min); pm=min(pm,pm_max); pm_cnt=0; end end % generate mutations for i=1:nop if rand<pm mut(i,:)=randn(1,dim).*(xmax-xmin)/10; else mut(i,:)=zeros(1,dim); end end % update positions with mutations x=x+mut; % check position limits x=min(max(x,xmin),xmax); end end ``` 代码中,首先定义了一些算法参数,包括惯性权重w、加速系数c1和c2、最大和最小速度vmax和vmin、初始变异概率pm、变异概率的最大值和最小值pm_max和pm_min、变异概率的增量和减量pm_inc和pm_dec、变异概率更新的间隔pm_updt等。然后进行初始化,包括粒子位置x、速度v、个体最优位置pbest、个体最优值pbestval、全局最优位置gbest和全局最优值gbestval。接着进行迭代,每次迭代包括以下步骤: 1. 更新粒子速度v; 2. 检查速度限制; 3. 更新粒子位置x; 4. 检查位置限制; 5. 计算粒子适应度,更新个体最优位置和全局最优位置; 6. 更新变异概率pm; 7. 生成变异向量; 8. 更新粒子位置x。 最后输出全局最优位置gbest和全局最优值gbestval。 需要注意的是,这段代码是一种基本的实现,具体应用时需要根据具体问题进行适当修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值