【人脸识别7】haar+CART+Adaboost+Cascade训练过程分析
人脸检测分类器可以总结为:
人脸检测分类器=haar-like (特征)+CART(弱)+ Adaboost(强) + Cascade(级联)
下面将从以下几个问题入手,各个击破:
1.什么是Haar特征?为什么使用feature而不是直接使用pixels?
2.什么是CART分类回归树?CART在本节的训练中有何作用?
3.什么是弱分类器?在本节中,具体是指什么?如何得到弱分类器(CART)?
4.强分类器是什么?如何训练得到(ADaboost)?结构如何?
5.Cascade是什么?有什么作用?
6.整个人脸检测分类器的组成?详述训练过程 haar+CART+adaboost+cascade?
一、带着问题来学习
1.什么是Haar特征?为什么使用feature而不是直接使用pixels?
Haar特征:
为什么使用feature而不是直接使用pixels?
我们的目标检测过程是根据简单特征的值对图像进行分类。使用特征而不是直接使用像素有很多动机。
(1)特征可以用来编码特定领域的知识,而这些知识是很难用有限数量的培训数据来学习的。
(2)对于这个系统使用特征,还有第二个关键的动机:基于特征的系统的运行速度比基于像素的系统要快得多。
在本分类器中,所涉及的haar特征具体参数如下:
typedef struct CvTHaarFeature
{
char desc[CV_HAAR_FEATURE_DESC_MAX];
int tilted;/*haar特征包括一个tilted标志,tilted = 0 是直立型特征; tilted =1 是45度特征
特征是2-3 个带权重的矩形,如果rect[2].weight != 0 则特征是3个矩形,否则是2 个矩形*/
struct
{
CvRect r; //矩形
float weight; //权值
} rect[CV_HAAR_FEATURE_MAX];
} CvTHaarFeature; //haar特征
typedef struct CvFastHaarFeature
{
int tilted;
struct
{
int p0, p1, p2, p3;
float weight;
} rect[CV_HAAR_FEATURE_MAX];
} CvFastHaarFeature;
typedef struct CvIntHaarFeatures
{
CvSize winsize;
int count;
CvTHaarFeature* feature;
CvFastHaarFeature* fastfeature;
} CvIntHaarFeatures;
2、什么是CART分类回归树?CART在本节的训练中有何作用?
本节中,所用的CART(分类回归树)是一种决策树学习算法。分类回归树(classification and regression tree,CART)模型由Breiman等人在1984年提出,是应用广泛的决策树学习方法。CART同样由特征选择、树的生成以及剪枝组成,既可以用于分类也可以用于回归。
CART的算法思想是:CART算法采用的是一种二分递归分割的技术,将当前样本分成两个子样本集,使得生成的非叶子节点都有两个分支。因此CART实际上是一棵二叉树。
特点:当CART是分类树的时候,采用GINI值作为分裂节点的