VJ算法的问题:
Haar-like特征是一种相对简单的特征,其稳定性较低
弱分类器采用简单的决策树,容易过拟合。对于解决正面的人脸效果好,对于人脸的遮挡,姿态,表情等特殊且复杂的情况,处理效果不理想
基于VJ-cascade的分类器设计,进入下一个分类器后,之前的信息都丢弃了,分类器评价一个样本不会基于样本在之前步骤中的表现,导致分类器的鲁棒性差。
(图1)Haar-like特征定义为上图中白黑矩形区域像素之和的差值。它在灰度分布均匀的区域特征值趋近于0。Haar特征在一定程度上反应了图像灰度的局部变化,这种特征捕捉图像的边缘、变化等信息。
(图2)
(图3)从图3中选择一种,在图像中进行平移+放大(都是分别沿着x和y进行操作),但注意过程中要保持原始的颜色比例,重复过程,直到放大后的特征与检测窗口一样大,便得到了系列相关特征了。
当得到的特征维度远远高于本身的维度时,需要进行特征选择。

adaboost可同时进行特征选择和分类器训练
使用adaboost算法从一组巨大的随机特征池(就是前面提出出来的haar-like特征)中选择一组对人脸检测最有帮助的特征
算法流程:
给定示例图像(x_1,y_1),…(x_n,y_ n),其中y=0,1分别用于负示例和正示例
对于y_ i=0,1,分别初始化权重w_=(1,i)=1/2m · 1/2L,其中m和L分别是负和正的数字。for t=1,... ,T:
权重归一化:每个权重除以所有权重之和,使得w_ t是概率分布。
对于每个特征j,训练分类器h_ j,该分类器仅限于使用单个特征。
相对于w_ t评估误差,
选择误差ε_ i最小的分类器h_t
更新权重:
其中,如果示例x_ i分类正确,则e_t=0,否则e_t=1
最后的强分类器是 : 
级联检测通过增加分类器个数可以在提高强分类器检测率的同时降低误识率
原因:用简单的强分类器在初期快速排除掉大量的非人脸窗口,同时保证高的召回率。
使最终可以通过所有级强分类器的样本数很少。
依据:检测图像中,绝大部分不是人脸而是背景,即人脸是一个稀疏事件。
级联检测的过程类似一个决策树,如下图,只有true才会触发下一级的检测,只要出现false则判断该窗口不包含目标。
对每个子窗口应用一系列分类器。
初始分类器通过很少的处理消除了negative的example。
经过几个阶段的处理后,子窗口的数量已大幅减少。
检测时,需要对图片中进行多区域、多尺度的检测:
多区域:对图片划分多块,对每个块进行检测。
多尺度检测机制一般有两种策略
不改变搜索窗口的大小,不断缩放图片,需要对每个缩放后的图片进行区域特征值的运算,效率不高
不断初始化搜索窗口size为训练时的图片大小,不断扩大搜索窗口,进行搜索,解决了第一种方法的弱势。在区域放大的过程中会出现同一个人脸被多次检测,这需要进行区域的合并。
VJ算法采用了第二种方法。无论哪一种搜索方法,都会为输入图片输出大量的子窗口图像,这些子窗口图像经过筛选式级联分类器会不断地被每一个节点筛选,抛弃或通过。