文章: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)的值。)