您的位置:首页 > 其它

【目标跟踪】Long-term Correlation Tracking 阅读笔记

2018-03-07 16:53 309 查看

Long-term Correlation Tracking

论文地址:

https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Ma_Long-Term_Correlation_Tracking_2015_CVPR_paper.pdf

long_term_tracking tracking 阅读笔记

Long-term Correlation Tracking
简介

相关工作和问题背景
相关滤波 Correlation tracking

tracking-by-detection

本文跟踪模块
Correlation tracking

Online Detector

算法流程

简介

论文致力于解决在目标跟踪过程中,由于目标的外观变化,导致跟踪失败的问题。影响目标外观的因素包括目标本身形变、突然的快速移动、严重遮挡和出界等。解决的方法是把跟踪问题分解问平移估计和尺度变化估计。同时,时间上的上下文关系可以提高平移估计的精度,而训练判别相关滤波器(discriminative correlation filter)可以更有效地估计尺度变化。

本文提出的方法基于两个重要的前期工作:

首先,是对于视频而言,相邻的两帧变化很小。即便目标被遮挡了,其周围背景的变化也是很小的。所以,可以对跟踪目标本身和其周围背景同时进行建模,此模型提取的特征对严重遮挡、快速移动和严重形变都有很强的鲁棒性。

其次,是提高检测器的精度。这样可以更好地估计目标的尺度变化,以及当跟踪失败时重新检测。

另外,论文定义了 tracking-by-detection 的两个研究问题:

其一是稳定性-灵活性困境。也就是说,一个十分保守的模型,比如只对第一帧目标建模,这个模型一定十分鲁棒,不易引入背景噪声导致跟踪失败(drifting)。而一个积极更新的模型,就很容易跟丢,因为会引入背景噪声。文章提出的解决办法是对目标和背景分别建模,两个模型有不同的更新策略。

其二是负样本采集的问题。之前负样本采集十分模糊, 并且二分类的label对样本的空间关系的表达不够有效。本文采用Gaussian-weighted label来标注正负样本。

论文总的架构,是将长跟踪(long-term tracking)分解为对运动目标的尺度(scale) 和平移(translation) 的估计,并配合一个re-detection 策略。

相关工作和问题背景

相关滤波 Correlation tracking

相关滤波是一种应用非常广泛的方法,因为滤波操作可以通过频域上的乘法快速实现,所以它的优势在于极高的计算效率。例如 MOSSE(minimum output sum of squared error) 可以达到几百FPS。

但是这种方法的缺点在于,对在线的模型更新问题处理得不够好。很容易跟丢,以及难以应对遮挡和出界的问题。

Figure1 展示了KCF算法的效果,可以看出来对于快速移动的物体,这种方法效果很好。但是当出现遮挡后,就跟丢了。(看绿框框,在230帧处出现了快速移动,跟踪效果很好。但是在350帧处出现了遮挡,到了380处目标再次出现,此时已经更新了模板,所以出现了drifting)



tracking-by-detection

为了解决稳定性-灵活性困境,Kalal 等人提出了 TLD(tracking, learning and detection)方法,提出跟踪和检测是可以互相促进的。跟踪为检测器提供正样本,检测器在跟踪失败时重新初始化跟踪器。

本文提出了一种方法,使用岭回归(ridge regression)模型来学习上下文的相关性,而不是简单地使用二分类模型。通过这种模型,可以有效减少二分类模型普遍出现的采样不明确的问题。

本文跟踪模块

本论文要解决的问题是,在跟踪过程中,跟踪目标出现较大的外观变化,可能导致跟踪失败。我们把跟踪问题分解为对目标的平移估计和尺度估计。其中,平移估计采用上下文相关性,尺度估计使用判别滤波器。此外,增加了一个检测器,用于在跟踪失败时的补充。

Correlation tracking

对于一个典型的相关滤波器而言,大体上流程是这样的:

对于一个M×NM×N大小的图像,其所有的循环矩阵 xm,nxm,n作为训练样本。其label为ym,nym,n 。那么可以得到一个方程:

w=argminw∑m,n|ϕ(xm,n)⋅w−y(m,n)|2+λ|w|2w=argminw∑m,n|ϕ(xm,n)⋅w−y(m,n)|2+λ|w|2

其中ϕϕ表示到核空间的映射, λλ是正则化参数。(通过正则化项使矩阵满秩。)

使用快速傅里叶变换,把卷积操作变为elementwise的乘积操作。

求得使目标方程最小化的ww为:

w=∑m,na(m,n)ϕ(xm,n)w=∑m,na(m,n)ϕ(xm,n)

其中aa由下面公式得到:

A=F(a)=F(y)F(ϕ(x)⋅ϕ(x))+λA=F(a)=F(y)F(ϕ(x)⋅ϕ(x))+λ

FF 表示离散傅里叶变换。

接下来进行预测:

对于一张大小为M×NM×N新的图片zz, 计算响应图如下:

y^=F−1(A⊙F(ϕ(z)⋅ϕ(x^)))y^=F−1(A⊙F(ϕ(z)⋅ϕ(x^)))

其中, x^x^ 表示学习到的特征模型, ⊙⊙表示Hadamard product(其实就是element-wise product)。据此,预测这张图片上目标的位置,就通过找y^y^上的最大值找到。

而本文使用的方法有一点点不同

首先,本文提出的方法是在同一张图像上学习两个filter。其中一个RcRc同时考虑目标的特征和背景的特征,另一个RtRt只考虑目标的特征。为了训练RcRc,我们补充了一个空间权重。同时,为了减轻边界效应,对目标和上下文的响应加入余弦窗。

对于RcRc,我们希望它能够及时更新,保证当目标遮挡、形变时能继续估算它的位移。所以,它需要一个较大的步长αα。亦即:

x^t=(1−α)x^t−1+αxtA^t=(1−α)A^t−1+αAtx^t=(1−α)x^t−1+αxtA^t=(1−α)A^t−1+αAt

其中t 为当前帧的index。

判别模型RtRt在比较可靠的帧上习得。所谓比较可靠的帧,就是y^y^最大值比较高的帧。(也就是说,和之前的模板匹配程度更高的帧)我们定义一个阈值TaTa, 只有当y^y^的最大值大于TaTa时才更新模板。(当目标发生遮挡时,不会更改filter)

在预测位置附近构造一个金字塔。令目标的大小为P×QP×Q,金字塔层数为NN,则S={an|n=⌊−N−12⌋,⌊−N−32⌋,...,⌊N+12⌋}S={an|n=⌊−N−12⌋,⌊−N−32⌋,...,⌊N+12⌋}

对于s∈Ss∈S, 选取预测位置中心的sP×sQsP×sQ区域, resize到P×QP×Q 大小。然后提取HOG特征。

然后取响应最大值:

s^=argmaxs{max(y^1),max(y^2),...,max(y^s)}s^=argmaxs{max(y^1),max(y^2),...,max(y^s)}

则当max(y^s^)>Tamax(y^s^)>Ta时更新RtRt

Online Detector

当跟踪失败,我们需要使用一个检测器重新初始化跟踪器。那么,就需要知道什么时候跟踪就失败了。我们这里设置了第二个阈值TbTb,如果max(y^s^)<Tbmax(y^s^)<Tb时重新检测。

算法流程

输入

初始化目标检测框

输出

预测的目标状态(state):Xt=(x^t,y^t,s^t)Xt=(x^t,y^t,s^t)

两个回归模型Rc,RtRc,Rt, 一个检测器DrfDrf

repeat:

根据(xt−1,yt−1)(xt−1,yt−1) 在第t帧上选取检索范围(seraching window) 并提取特征

//平移估计

使用RCRC计算响应YtYt,并估计当前帧位置(xt,yt)(xt,yt)

//尺度估计

在(xt,yt)(xt,yt)附近构造图像金字塔,计算相关响应ysys.

使用RtRt估计最佳尺度s^s^

//此时,得到了第t帧的状态(xt,yt,st)(xt,yt,st)

//重新检测

如果max(y^s^)<Tbmax(y^s^)<Tb:

{

调用检测器重新检测

如果检测得分大于阈值,则更新轨迹

}

//更新模型

更新RcRc

如果max(y^s^)>Tamax(y^s^)>Ta:

{

更新RtRt

}

更新检测器

如果视频序列结束,停止循环

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐