二叉决策树介绍
二叉决策树由LeoBreiman和他的同事提出.他们称之为”分类和回归树(CART)”.OpenCV实现的就是”分类回归树”.简单地说,二叉决策树的每个结点表示对对象做判断的一个特征属性,将对象提供的属性值与该结点提供的属性值做对比,例如,判断一辆车是否是小汽车我们选择第一个结点为车子的轮子个数这个属性,如果有4个轮子表示有可能是的小汽车,如果没有则不可能是。这个结点的左右分支分别代表对比后的两种输出,左分支表示有可能是小汽车,右分支不可能。由于要判断是否是小汽车光通过有4相轮子,当然无法确定是小汽车,所以紧接着左分支有第二个结点通过是否有发动机来判断,是否是小汽车,如此下去直到所有的结点组合起来能判断是小汽车为止,也就是到达了叶子结点。所有二叉决策树的叶子结点存放得都是类别结果,在这个例子里就是“是小汽车”和“不是小汽车”。
在adaboost弱分类器中,弱分类器的二叉树结构大致如下,我们假设用三个haar特征:F1,F2,F3来判断输入图像是否人脸,其决策树的结构大致如下:
可以看出,在分类的时,每个非叶子节点都表示一次基于属性的判断,每个路径代表对属性判断的输出,每个叶子节点代表一种类别:是人脸或不是人脸,并作为最终判断的结果。
一个人脸弱分类器就是一个基本和上图类似的决策树,
用训练好的阈值来比较输入图片的特征值与当前特征值差距,当输入图片的特征值大于该阈值时才判定其为人脸,否则判为非人脸。最基本的弱分类器只包含一个Haar-like特征,也就是它的决策树只有一层,被称为树桩(stump)。
训练成的弱分类器的介绍
下面这个是我训练的分类器中的一个弱分类器,他的结构如下:::
1 /*这个弱分类器有1个特征,也就是有1个非叶子结点*/
2 /*需要2个rect来计算特征*/
4 1 12 9 0 -1 /*第一个rect对应Haar特征中白矩形框,左上角左标x==4与y==1,宽==