viola & jones-robust real-time face detection 大意

时间:2014-04-28 03:12:04   收藏:0   阅读:579

本论文主要有三个关键的贡献:

  1. 使用积分图快速地计算haar特征
  2. 使用adaboost算法从特征池中现在关键的特征
  3. 构建分类器级联实现快速的人脸检测

haar特征:

本论文使用三种简单的矩形特征:

  1. 由上下(或者左右)邻接的大小相同的两个矩形组成(如下图a),特征值为白的矩形的像素和减去黑的矩形的像素和
  2. 由上下(或者左右)邻接的大小相同的三个矩形组成(如下图b),特征值为白的矩形的像素和减去黑的矩形的像素和
  3. 由四个矩形组成(如下图c),特征值为白的矩形的像素和减去黑的矩形的像素和

如下图所示:

bubuko.com,布布扣

积分图像:

积分图像的定义如下:

ii(x,y) = ∑i(x‘,y‘),其中x‘<=x,y‘<=y

即递归式:

s(x,y) = s(x,y-1)+i(x,y)

ii(x,y) = ii(x-1,y)+s(x,y)

s(x,-1) = 0

ii(-1,y) = 0

其中s(x,y)为第x行的累计和,i(x,y)为原始图像的像素值。

积分图像可以通过遍历一次原始图像计算好。

任何的矩形可以通过4次访问积分图像计算好。

 

分类函数:

本论文使用简单阈值型分类函数(也叫弱分类器),定义如下:

h(x,f,p,θ) = 1 if pf(x) < pθ

                  0 otherwise

其中,x为24*24的被检测图像的子窗口,f(x)为该窗口求出的haar特征值,p为正负号,θ为阈值。

因为使用单个的特征组成的分类器不能够使产生较低的错误率,所以可以使用多个特征(多个弱分类器)组成一个较强的强分类器。

下面使用adaboost算法选择分类错误较小的弱分类器组成一个强分类器的步骤:

    1. 归一化样本权重
    2. 选择当前权重下分类错误权重最小的弱分类器,分类错误权重定义如下:

      εt=minf,p,θ=∑wi|h(xi,f,p,θ)-yi|

    3. 得到一个弱分类器:ht(x) = h(x,ft,ptt)使得εt最小
    4. 更新样本权重:

      wt+1,i = wt,iβt1-ei,其中βt = εt/(1-εt),弱分类器分类正确是ei为0,否则为1。

C(x) = 1  ∑atht(x)>=1/2∑at

     0  otherwise

其中,at = log1/βt

对于训练过程中选取当前样本权重下分类错误权重最低的分类器的算法如下:

强分类器级联:

级联的结构如下:

bubuko.com,布布扣

被检测的图像的所有的子窗口经过级联结构中每个强分类器,如果该强分类器判定为0,则该子窗口立即抛弃。直到到达最后的子窗口才会判定为人脸。这样的结构可以实现快速的人脸检测。

训练级联的检测器的主要的思想是使非人脸尽快得在级联结构的前面几级的强分类器中开始的被抛弃,因此训练好的级联检测器后一级强分类器一般比前一级跟复杂。

训练级联的算法如下:

i=i+1

ni=0;Fi=Fi-1

while Fi > f*Fi-1

ni=ni+1

利用adaboost算法,使用样本P和N训练一个由ni个弱分类器组成的强分类器

计算当前级联的分类器在验证集上的虚警率Fi和检出率Di

降低第i个强分类器(即上面使用P和N样本训练的强分类器)的阈值直到级联检测器的检出率达到d*Di-1

其它需要的注意的事项:

计算矩形特征值时需要归一化特征子窗口的像素值,减少光照等带来的影响。

归一化方法:x=(x-m)/σ,其中x为像素值,m为子窗口的均值,σ为标准差

标准差σ计算方法:σ2 = m2 - 1/N∑x2,其中N为子窗口的像素数目。

使用积分图可以快速的计算均值,而使用像素值平方的积分图像可以快速的计算1/N∑x2

所以训练是需要计算2个积分图像。

    由于最终的检测器对飘移和缩放的微笑变化不敏感,所以多个检测结果可能出现在每个人脸图像周围。实际上,应该对于这样的情况只需要返回一个检测结果就行。因此需要合并重复的检测区域。处理的过程:没重叠的直接放到结果中,重复的只需求一个平均的区域,然后放到结果中。

viola & jones-robust real-time face detection 大意,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!