文章目录
- 传统的人脸识别方法是依托于 模式识别,即 特征提取 + 分类器设计!
- 特征:
- HOG
- DPM, SIFT, PCA-SIFT, SURF
- LBP
- tLBP, dLBP, mLBP, Multi-block LBP, VLBP, RGB-LBP.
- Haar-like
- CNN
- 基于像素点比较
- Pico, NPD
- 分类法
- 基于Cascade级联分类器的人脸检测,例如Viola Jones,NPD(Normalized Pixel Difference)等;
- 基于DPM(deformable part models)的人脸检测,即将人脸分割成好几个部件进行检测的算法,例如DPM。
- 其他
- 特征:
2001 Viola & Jones Face Detection
- 《Rapid Object Detection using a Boosted Cascade of Simple Features》
- Haar-like + Adaboost
2010/2014 DPM
- Object Detection with Discriminatively Trained Part Based Models. 2010
- HOG + latent SVM(将多个输入同时训练达到最优)
- DPM模型
- Face detection by structural models. 2014
- HOG + structural SVM(输出 y y y被允许取值为和输入 x x x类似的多维结构)
2014 NPD
- 该方法将VJ方法的Haar-like特征修改为NPD,将Adaboost修改为二叉树分类器
- Normalized Pixel Difference 李子青组2015年TPAMI
- A Fast and Accurate Unconstrained Face Detector
- 优势
- 可以基于cpu的多线程OpenMP,pthread做并行化处理,当然也可以基于GPU的CUDA做并行处理。本来原始程序的运行速度就很不错,在并行化处理后可以达到非常快的实时速度。
- 该方法是一种unsonstrained的人脸检测方法,非常适合现实生活的检测环境。
- NPD特征通过查找表(look up table)获得,避免了每次的重新运算,加速了程序预处理速度
- 不足
- 由于论文作者训练的模型的窗口大小是20*20,作者提出的NPD特征会伴随着训练的窗口的大小变化做相应的2次方增长,简单的说就是说NPD特征的维数是不恒定的,具体和训练的窗口大小相关。
假设一个窗口中有P个点,那么其中任意两个点都会产生一个特征值,就是 C(P, 2) = P * (P - 1 ) / 2 那么20 * 20的窗口将产生20 * 20 * (20 * 20 - 1) / 2 = 79800维度的特征向量。
- 由于论文作者训练的模型的窗口大小是20*20,作者提出的NPD特征会伴随着训练的窗口的大小变化做相应的2次方增长,简单的说就是说NPD特征的维数是不恒定的,具体和训练的窗口大小相关。
NPD特征
- 检测2个像素之间的差异性,规定
f
(
x
,
y
)
=
0
,
x
,
y
f(x, y) = 0,x,y
f(x,y)=0,x,y 分别为两个不同像素的像素值
f ( x , y ) = x − y x + y f(x, y)=\frac{x-y}{x+y} f(x,y)=x+yx−y
深度二叉树
( a x 2 + b x + c ) < t \left(a x^{2}+b x+c\right)<t (ax2+bx+c)<t
-
如上式所示,其中 x x x为NPD特征, a , b , c a,b,c a,b,c为常量, t t t为阈值
− 1 ≤ x − y x + y ≤ θ < 0 0 < θ ≤ x − y x + y ≤ 1 θ 1 ≤ x − y x + y ≤ θ 2 \begin{array}{c} -1 \leq \frac{x-y}{x+y} \leq \theta<0 \\ 0<\theta \leq \frac{x-y}{x+y} \leq 1 \\ \theta_{1} \leq \frac{x-y}{x+y} \leq \theta_{2} \end{array} −1≤x+yx−y≤θ<00<θ≤x+yx−y≤1θ1≤x+yx−y≤θ2 -
如上图所示:
- 对于第一个公式,表明像素 x x x比像素 y y y颜色要明显的深,就好比左图的 f 1 f1 f1
- 对于第二个公式,表明像素 x x x比像素 y y y的颜色要明显的亮,就像左图 f 2 f2 f2所示
- 对于第三个公式,表明像素 x x x和像素 y y y的明暗不确定,好比左图的 f 3 f3 f3和 f 4 f4 f4,对于 f 3 f3 f3, x x x的像素基本就是肤色,同样的 y y y的颜色是背景,而这个也是不确定的。
效果
2014 JDA
- Joint Cascade Face Detection and Alignment
验证人脸对齐的有效性
- 使用低阈值的VJ人脸检测方法作为基准,其人脸检测结果的 False Positive Rate 较高
- 文章训练一个基于SVM的 后检测器 Post Classifer,通过分析加上后文不同的策略之后,通过这个后分类过程对于人脸和背景的区分度分析,从而验证出人脸对齐在人脸检测中的有效性!
- 以下为在VJ方法和Post分类过程之间加上的不同策略:
- 只有VJ方法
- 将检测的区域划分cell (6*6) ,并在每个单元中提取 SIFT 描述符作为后分类器的特征输入
- 选取27个固定的人脸点,分别提取SIFT特征
- 使用对齐算法 1 对齐 27 个面部点,并提取以每个点为中心的 SIFT 描述符
- 画出Post Classifier过程中正负样本得分分布(横坐标应该是每个框的序号,纵坐标应该就是得分),可以通过两个分布的重合率得出对正负样本之间的区分度
- 分析上图可知,① Post Classifier 可以提高对于正负样本的区分度 ② 人脸对齐更能提高正负样本
- 不过这种验证的方法比较慢,自然不能用作最终方案
- 低阈值VJ方法得到的候选框太多(是为了确保recall高)
- SIFT+SVM这种分类方法本身也比较慢
级联人脸检测和对齐的统一框架
- Boosting的思想,PS:四大boost,Logit Boost > Gentle AdaBoost > Real AdaBoost > Discrete AdaBoost
Cascade Detection
f N = ∑ i = 1 N C i ( x ) f^{N}=\sum_{i=1}^{N} \mathcal{C}^{i}(\mathbf{x}) fN=i=1∑NCi(x)
- 对于每个分类器,按先后顺序依靠各自的阈值对patch进行过滤,一旦过滤掉这个patch就会out掉!
Cascade Alignment
- 使用了10年发表的 Pose Regression Framework 对齐算法 2 CPR
- Face Shape: S S S,是一个 2 L 2L 2L 维度的向量空间(横坐坐标)
- 特征点数目: L L L ,特征使用了Shape-indexed特征,也可使用诸如HOG或SIFT等人工设计的特征
- 阶段数目:
T
T
T
S t = S t − 1 + R t ( x , S t − 1 ) , t = 1 , … , T \mathbf{S}^{t}=\mathbf{S}^{t-1}+\mathcal{R}^{t}\left(\mathbf{x}, \mathbf{S}^{t-1}\right), t=1, \ldots, T St=St−1+Rt(x,St−1),t=1,…,T -
R
R
R 为回归函数
R t = arg min R ∑ i ∥ S ^ i − ( S i t − 1 + R ( x i , S i t − 1 ) ) ∥ 2 \mathcal{R}^{t}=\arg \min _{\mathcal{R}} \sum_{i}\left\|\hat{\mathbf{S}}_{i}-\left(\mathbf{S}_{i}^{t-1}+\mathcal{R}\left(\mathbf{x}_{i}, \mathbf{S}_{i}^{t-1}\right)\right)\right\|^{2} Rt=argRmini∑∥∥∥S^i−(Sit−1+R(xi,Sit−1))∥∥∥2 - CPR回归函数采用的是Random Fern Regressor,也可以是随机森林或者线性回归
- 可以看出CPR中主要的操作是向量相加,不仅有效而且计算复杂度较低
Unify 整合
- 将Detection和Alignment级联在一起
- 弱分类器个数 N > > T N >> T N>>T
- 给每个stage里面放 N / T N/T N/T 个弱分类器,并且依赖于上一个stage回归得到的人脸形状 S t − 1 S^{t-1} St−1
- 那么最终的分类得分为:
f = ∑ t = 1 T ∑ k = 1 K C k t ( x , S t − 1 ) f=\sum_{t=1}^{T} \sum_{k=1}^{K} \mathcal{C}_{k}^{t}\left(\mathbf{x}, \mathbf{S}^{t-1}\right) f=t=1∑Tk=1∑KCkt(x,St−1)
- 人脸检测和对齐的说明:负样本窗口逐渐被拒绝,正样本窗口的面部点逐渐对齐!
训练过程