0

Tracking————结构SVM

 2 years ago
source link: http://ghx0x0.github.io/2015/06/14/Tracking-Struct-SVM/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Tracking的两大类别

通俗的来说,在tracking领域目前主要分为生成模型和判别模型两个分支,生成模型主要是如何描述目标,也可以理解为如何提取目标的特征来表达目标模型,如稀疏表达,增量PCA,sift特征等都是生成模型,这类分支在生成目标模型后对目标的跟踪是基于匹配思想的,和目标模型匹配度越高的则认为是当前帧的目标。
而判别模型则是传统的分类器思想,判断当前目标是(1)或不是(0)目标。目前很多先进的方法是把这两个分支的方法融合到一块。

结构SVM

和正常的SVM算法不同,结构SVM只有输入向量X,正常的SVM是输入X对应一个输出向量Y。在结构SVM中,每个输入向量(图像的特征:灰度等)对应一个状态量state:{x,y,angel,scale..},但是这个状态量不作为输出特征。
在训练过程中,样本不在有正负样本的区别,所有的样本都是地位相同的,但是会有一个ground_truth。每个样本和这个ground_truth做相似性度量,得到相似度,越相似的样本评分越高,他们的排名就越靠前。在结构SVM中的优化目标和约束条件如下:

其中的Ф是核函数,Δ是这两个样本的相似性函数。因此结构SVM的最终优化是使得每个样本的排名都跟他们和ground_truth的相似度相吻合(只要排名顺序一致即可,相似性度量结果无关紧要)。
在测试阶段,给入一个向量X,结构SVM判断这些向量的排名rank,排名第一的向量认为是和当前样本X最相似的,因此把他的state:{x,y,angel,scale..}可以看做是当前样本的state。所以结构SVM能够直接获取特征X对应的state,而不再是传统的分类模型中的0,1,0,1….。

训练阶段正负样本的选取

在结构SVM中,没有正负样本之称,上一帧检测到的结果ground_truth,在其周围高斯采样样本,判断他们的相似性,得到rank,加入结构SVM中增量训练。

当前帧的结果怎么选取

根据上一帧检测到的结果ground_truth,在其周围高斯采样样本(这个采样和上一步训练阶段的采样可以相同也可以不同),对每个样本投入结构SVM中判断哪个样本能使SVM中训练阶段排名最高(上一帧的ground_truth)仍旧排名最高,那么这个样本就是这一帧的ground_truth。这一阶段采样越密,精度越高,但是耗时也就越长。

Tips:

文章[1]中的增量PCA的引入是为了消除特征之间的关联,把原始特征映射到子空间,之后又映射回原始空间来消除特征耦合,之后送入结构SVM中进行训练。
事实上,利用文章[1]提出的虚拟态state的框架,增量PCA可以替换成任意一个生成模型的算法。

【1】Online State-Based Structured SVM Combined With Incremental PCA for Robust Visual Tracking


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK