Face Recognition(一 传统算法)



  • 传统的人脸识别方法是依托于 模式识别,即 特征提取 + 分类器设计!
    • 特征:
      • 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维度的特征向量。
      

NPD特征

  • 检测2个像素之间的差异性,规定 f ( x , y ) = 0 , x , y f(x, y) = 0,x,y f(x,y)=0xy 分别为两个不同像素的像素值
    f ( x , y ) = x − y x + y f(x, y)=\frac{x-y}{x+y} f(x,y)=x+yxy
    在这里插入图片描述

深度二叉树

( 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} 1x+yxyθ<00<θx+yxy1θ1x+yxyθ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这种分类方法本身也比较慢

级联人脸检测和对齐的统一框架

Cascade Detection

f N = ∑ i = 1 N C i ( x ) f^{N}=\sum_{i=1}^{N} \mathcal{C}^{i}(\mathbf{x}) fN=i=1NCi(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=St1+Rt(x,St1),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=argRminiS^i(Sit1+R(xi,Sit1))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} St1
  • 那么最终的分类得分为:
    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=1Tk=1KCkt(x,St1)
    在这里插入图片描述
  • 人脸检测和对齐的说明:负样本窗口逐渐被拒绝,正样本窗口的面部点逐渐对齐!
    在这里插入图片描述

训练过程

在这里插入图片描述
在这里插入图片描述

参考文献


  1. Ren, S., Cao, X., Wei, Y., Sun, J.: Face Alignment at 3000 FPS via Regressing Local Binary Features. In: Computer Vision and Pattern Recognition (2014) ↩︎

  2. P. Dollar, P.W., Perona, P.: Cascaded pose regression. In: CVPR (2010) ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值