基于adaboost做人脸识别的一篇论文
PAUL VIOLA 的 Robust Real-Time Face Detection Rapid object detection using a boosted cascade of simple features
其中谈到使用haar like特征,参考这篇论文
Rainer Lienhart and Jochen Maydt 的 An Extended Set of Haar-like Features for Rapid Object Detection
在整个读论文的过程中,通过如下资源,理清了论文中的很多知识点:
1.haar like原型特征与特征矩阵
在使用haar like特征做人脸识别时,介绍了3类的haar 原型特征:
在论文中提到,将feature放到图像上,黑色矩形像素值的和减去白色矩形像素值的和得到一个特征值,该特征值就是haar特征,使用该特征值计算弱分类器的
的阈值。但是需要注意的是此处的feature,并非简单的指上边的几个原型特征,而是通过在检测子窗口(一般为24x24像素)左右、上下平移,伸缩变换这些原型
特征得到的子窗口。一个特征原型在子窗口中伸缩大小不同,或者位置不同,就得到一个不同的feature,如下图:
论文作者在一个检测子窗口中画了两个变换后的原型矩阵,他这样做是为了节省论文版面同时展示0°、45°两种原型特征在子窗口中的摆放,实际上每个子窗
口只放一个原型特征形成一个feature。
一个0°型原型特征可以得到的feature个数:
一个45°型原型特征可以得到的feature个数:
其中:
关于公式怎么来的,可能要细心推导一下,不过中心思想就是,
1、对于某特定大小的特征,在窗口内滑动计算。
也就是1(a)特征大小为2*1,对于24*24的图像。水平可滑动23步,垂直滑动24步,所以共有23*24个特征。
2、对于一个特征,特征本身沿水平、竖直方向分别缩放。
还看特征1(a),特征大小为2*1,则延水平方向可放大为:4*1,6*1,8*1,…,24*1;竖直方向可放大为:2*1,2*2,2*3,…,2*24。
即每个特征有XY种放大方式。(!放大的矩形特征并限制保持2:1的比例!)
这部分我是参考 【OpenCV】计算Haar特征个数 这篇博客弄懂的,其中它写了个程序来计算feature个数。
最终的得到的feature总数(在24x24窗口中)为:
2.图像积分图:
图像积分图的意义在于可以快速得到图像中任意矩形中的像素和,从而可以计算feature的特征值。
计算过程参考Rapid object detection using a boosted cascade of simple features、An Extended Set of Haar-like Features for Rapid Object Detection 论文,
或者 【Paper】利用积分图像法快速计算Haar特征 这篇博客。
3.adaboost训练识别器过程:
在Rapid object detection using a boosted cascade of simple features这篇论文中,给出训练过程如下
其中boosting步骤的第三步,对于每个feature训练一个弱分类器,选择误分率最小的弱分类器。每个弱分类为如下公式所示:
其中x为图像的24x24的子窗口。
但是这篇论文并没有给出弱分类器阈值的计算方法,在 Robust Real-Time Face Detection这篇论文中,作者给出boost步骤后,
补了一段训练弱分类器方法:
4.决策树中连续变量的阈值
决策树算法中,通过计算信息熵和信息增益(或增益比)的决定各个决策节点的构造关系,具体算法参考《机器学习》这本书中关于
决策树的介绍,或者通过 C4.5 决策树 (侧重连续变量的阈值计算),决策树算法总结(侧重信息熵、信息增益)这两篇博客。
在第一篇博客中,对于golf数据集
按照如下步骤计算,其中E.g 中使用info表示信息熵不规范,应该为Entropy公式。
1.信息熵公式
2.信息增益
同时可以参考stackoverflow中关于adaboost阈值的讨论 The best way to calculate the best
threshold with P. Viola, M. Jones Framework
csdn论文资源:
Rapid Object Detection using a Boosted Cascade of Simple Features
Robust Real-Time Face Detection
An Extended Set of Haar-like Features for Rapid Object Detection
参考的博客地址:
人脸检测 中文博客:
http://www.cnblogs.com/ello/archive/2012/04/28/2475419.html
决策树 连续值节点阈值的计算:
http://fangdonghao1029.blog.163.com/blog/static/34364307201281352032174/
决策树 熵、信息增益的计算:
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/23/2605208.html
haar特征数计算:
http://blog.csdn.net/xiaowei_cqu/article/details/8216109
stackoverflow关于adaboost弱分类器阈值的讨论:
http://stackoverflow.com/questions/9777282/the-best-way-to-calculate-the-best-threshold-with-p-viola-m-jones-framework
重要:
opencv doc 物体检测 http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html