目标跟踪学习系列一:on-line boosting and vision 阅读

来源:互联网 发布:转发软件拿货 编辑:程序博客网 时间:2024/05/21 07:47

文章:on-line boosting and vision 

 Grabner, H. ; Graz University of Technology ; Bischof, H. CVPR, 2006 IEEE Computer Society Conference on  (Volume:1 )


这是cvpr2006年的文章,非常经典的一篇文章。还有源码和数据集下面记录一下我读这篇文章的一些理解。

Boosting的基本思想: 三个臭皮匠抵一个诸葛亮   利用一些容易得到的弱分类器 组合训练形成强分类器。


本文中基本思想就是这样的 关键用到了 :boosting用于特征选取

接下来一步一步的介绍:

1、off-line boosting and on-line boosting

off-line boosting :

首先, 给定一个训练数据集,这个数据集里面含有:L个examples,每一个example有一个m维的特征向量,每一个example还有一个标签1或是-1;用uniform distribution初始化每一个example的权重,即最开始每个example的权重都是1/L


然后,初始化N个弱分类器(which have been generated by repeating training with different subsets of  training data!),再通过以上训练集进行训练。第一次训练时,对第一个弱分类器,通过它的错误率确定它的权重,同时更新训练样本集的权重(增加分类错误的example的权重),然后,用现在的训练样本集训练第二个弱分类器,计算它的权重,并更新训练集的权重。如此迭代,将得到的分类器与它的权重相乘,累加起来便得到一个强分类器。

on-line boosting:

思路基本上一样,但是为了实时性,就必须要有少的训练样本,所以在跟踪当中,一般选择第一帧中得到的正负样本进行样本扩充,然后进行训练,训练的过程基本上同上面一致。


2、off-line boosting for feature selection(and online)

(老实说 看的不是很明白)


核心思想:对于每一个特征,应该有一个响应最好的弱分类器。因此,通过boosting,可以选出最好的特征组。


具体操作:(个人理解)

首先,根据所拥有的正负样本,我们可以得到一个特征池(比如说Harr特征的feature pool;文章中说这个特征池就会是很大,所以要选一个特征池的子集);

然后,从这个特征池中选择少量的训练样本训练出一组弱分类器;

再就是,通过boosting迭代,每一次选出一个响应最好的特征,同时,也根据分类器的错误率计算出相应的权重;

由此,构造出了一个强分类器,也选出了相同数量的响应最好的特征组。


on-line :

on-line boosting  for feature selection 最大的不同就是要先随机初始化一组selectors组合一个强分类器,然后再来更新

首先,随机的产生N个selectors,通过通过EM算法产生M个弱分类器;

然后,对于每一个selector,进行更新:通过带权重的sample,对M个weak分类器进行训练,选出错误率最低的那个weak classifier代替这个selector同时,随机的产生一个weak classifier代替错误率最高的那个分类器;

最后,如此迭代,得到一个不断更新的strong classifier  (以上部分都是在一个特征池中完成的)


有点疑问,这个on-line和off-line的最主要的区别在哪里,是不是off-line有较大的训练样本,而on-line只有从第一帧中得到的?

(后期补充):文章中有句话:each training sample is only provided once to the learner and  is discarded right after learning’

离线学习方法需要一次可以获得全部的训练样本。而当训练样本无法一次性全部获得时,例如数据是一帧一帧到来的,通常我们采用在线学习方法。首先利用第一帧的数据初始化跟踪器,通常当第二帧到达时,再利用第二帧的数据更新分类器。当然,在线更新的框架有很多,方法各不相同。

on-line是不是一直在通过后面得到的信息更新分类器?

是的,但是还有原来保留的信息

若是这样,是不是就是速度慢的原因?也就是漂移的原因? 

是的,但是若是不使用在线的话,分类器的适应能力很差。

是的,在线过程中,我们不断利用后面帧中的样本更新分类器,如果样本标记错误,或者更新方式不佳,则很可能导致漂移问题。

文章中提到的卡尔曼滤波是为了构造一个弱分类器吗?

不是 ,文中提到的“卡尔曼滤波”是为了估计正负样本分布的均值和方差。而求得正负样本的均值和方差后,我们可以进一步估计正负样本的高斯分布。

高斯分布就是为了调节样本的权重吗?

不是,在线学习过程中,高斯分布不是你所说的用于估计样本的权重,而是为了根据文中的公式(12)进一步求得一个图像样本x的弱分类器h(x)的值。
阅读全文
1 0
原创粉丝点击