人脸检测方法
- 基于规则/知识方法
归纳描述人脸特征的规则,如灰度分布、比例关系、纹理信息等.
- 基于模板的方法
固定模板法、可变形模板法
- 基于不变特征的方法
如彩色信息,基于肤色
- 基于表观分类器学习的方法
将人脸检测视为区分非人脸样本和人脸样本的PR问题.
基于肤色特征的检测
RGB、normalized RGB、HSV、YIQ、YES、CIE XYZ、CIE LUV等.
高斯肤色模型
- 一元正态分布肤色模型,以F颜色特征为例
F N(μ,σ)μ=1N∑i=1NFi,σ2=1N−1∑i=1N(Fi−μ)2 F~N(\mu,\sigma)\\ \mu = \frac{1}{N}\sum_{i=1}^NF_i,\sigma^2 = \frac{1}{N-1}\sum_{i=1}^N(F_i-\mu)^2 F N(μ,σ)μ=N1i=1∑NFi,σ2=N−11i=1∑N(Fi−μ)2
- 二元正态分布肤色模型
N(μ,∑),where μ=(rˉ,gˉ)rˉ=1N∑i=1Nri,gˉ=1N∑i=1Ngi∑=[σrrσrgσgrσgg] N(\mu,\sum),where\ \ \mu=(\bar{r},\bar{g})\\ \bar{r} = \frac{1}{N}\sum_{i=1}^Nr_i,\bar{g} = \frac{1}{N}\sum_{i=1}^Ng_i\\ \sum = \bigg[\begin{matrix} \sigma_{rr}&\sigma_{rg}\\ \sigma_{gr}&\sigma_{gg} \end{matrix}\bigg] N(μ,∑),where μ=(rˉ,gˉ)rˉ=N1i=1∑Nri,gˉ=N1i=1∑Ngi∑=[σrrσgrσrgσgg]
- 多人脸训练肤色模型
训练肤色模型
- 手工标注部分人脸图象
- 统计方法得到μ,∑\mu,\sumμ,∑
- 设置合适的阈值截断
测试阶段
肤色模型的缺点
- 肤色模型难以适应各种环境光照变化
- 背景和前景的光照变化,肤色通常不稳定.
- 单纯的肤色信息对于人脸检测通常是不充分的.
- 如何适应在不同光照下的人脸跟踪
- 如果环境光照有变化,原有的肤色模型可能不再适用,如何建立一个自适应的肤色模型.
基于AdaBoost的快速人脸检测
- 采用简单的Haar-like矩形特征作为弱特征,可快速计算.
- 基于AdaBoost的分类器设计.
- 采用了Cascade(分级分类器)技术提高检测速度.
Haar-like矩形特征
所有白色矩形中像素的亮度值的和,减去所有灰色矩形中点的亮度值的和,得到的差即为Haar-like特征.
Haar-like特征的表示
可以用一个五元组来表示
r(2,2,4,2,A)表示下面的特征
快速计算任意矩阵内所有像素的亮度之和
利用动态规划的思想求任意一点左上角的所有像素亮度积分值ii(x,y)ii(x,y)ii(x,y).
矩形D内像素亮度积分值:
=ii(4)−(ii(2)+ii(3))+ii(1)ii(4)-(ii(2)+ii(3))+ii(1)ii(4)−(ii(2)+ii(3))+ii(1)
AdaBoost
采用AdaBoost算法对Haar-like矩形特征进行分类,为了求得在图像中所有尺寸及角度的人脸,我们需要采取所有可能的矩阵大小甚至旋转对整个图像遍历多次.
基于AdaBoost的快速人脸检测
基于分级分类器的加速策略
- 大量候选窗口可以利用非常少的特征就可以排除是人脸的可能性。
- 只有极少数需要大量特征.
分级分类器的构建
- 采用由粗至细的思想(coarse to fine)
- 将少量区分性好的特征构成简单分类器置于前面若干层. 放过检测绝大数人脸的同时,排除大量非脸.
- 后面曾包含更多次重要的特征对非脸进行进一步排除.
- 训练方法关键思路
每层训练的非脸样本使用前面层分类器误判为人脸的那些样本.