基于adaboost算法的人脸检测
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AdaBoost算法学习 第一步:弱分类器的选取
一个弱分类器h(x, f , p,θ )由一个特征f,阈值 θ 和指示不等 号方向的p 组成:
1 h( x, f , p,θ ) = 0 pf ( x) < pθ 其他
训练一个弱分类器(特征f)就是在当前权重分布的情况 下,确定f 的最优阈值以及不等号的方向,使得这个弱分 类器(特征f)对所有训练样本的分类误差最低。具体方 法如下:
于是,通过把这个排序的表扫描从头到尾扫描一遍 就可以为弱分类器选择使分类误差最小的阈值 (最优阈值),也就是选取了一个最佳弱分类器。 同时,选择最小权重错误率的过程中也决定了弱 分类器的不等式方向。
具体弱分类器学习演示表如下:
X X(1) X(2) X(3) X(4) X(5) X(6) Y 0 1 0 1 1 1 F 1 3 4 6 9 10 w 0.2 0.1 0.2 0.3 0.1 0.1 T(f) 0.6 0.6 0.6 0.6 0.6 0.6 T(nf) 0.4 0.4 0.4 0.4 0.4 0.4 S(f) 0 0.1 0.1 0.4 0.5 0.6 S(nf) 0.2 0.2 0.4 0.4 0.4 0.4 A 0.2 0.3 0.1 0.4 0.5 0.6 B 0.8 0.7 0.9 0.6 0.5 0.4 e 0.2 0.3 0.1 0.4 0.5 0.4
其中 e i = 0 表示 错误分类。
1− ei t
εt βt = 1− εt
i
e xi被正确分类,
= 1 表示 x 被 i
5.最后的强分类器为:
1 C ( x) = 0 1 T ∑ α t ht ( x) ≥ 2 ∑ α t t =1 t =1 其他
T
其中: α t = log
1
βt
矩形特征,也叫Haar-Like特征。在AdaBoost 算法中使用矩形特征作为特征模板。用一个5 元组表示一个矩形特征(x,y,w,h,angle),其中 (x,y)为矩形的左上角位置,(w,h)为矩形的宽 和高,angle表示矩形的旋转角度。计算一个 矩形特征对应的特征值有几种方法,例如, 黑色部分与白色部分像素和的差、黑色部分 与整个矩形面积的权重差等等。
*
强 分 类 器 训 练 程 序 流 程 图
Adaboost算法的具体描述如下:
(x 输入:一组训练集: 1 , y1 ),..., ( xn , yn ),其中 xi 为样本描述, yi 为样本标识, yi ∈(0,1) ;其中0,1分别表示正例子和 反例。在人脸检测中,可以定义0为非人脸,1为人 脸。 1 初始化:初始化训练样本的权重,D(i),其中 D (i ) = 2m 1 或者 D ( i ) = 2 l (人脸样本和非人脸样本初始化为不 同的值,m为非人脸样本总数,l为人脸样本总数)。 对 t =1,2,...,T ,循环执行下面的步骤:
我们主要考虑以下四种举行特征(只含0 angle特征,不包含45 angle类型的矩形特征):
(A)
(B)
(C)
(D)
将haar特征这种反映图像中灰度分布特点的特性 引入人脸检测问题当中,问题就转换成如何找到 较好的haar特征对人脸图像灰度分布的特点进行 描述。下图中的3个特征就能很好的描述图像中人 脸的眼部的灰度的分布特点。
第二步:由弱分类器确定强分类器 经过 T 次迭代后,得到T 个最佳弱分类 h1 (x),...,hT (x) 器 ,可以按照下面的方式组合成一个强 分类器: T 1 T
1 C ( x) = 0 1 α t = log
∑
t =1
α t ht ( x ) ≥
其他
∑ 2
t =1
αt
其中 。 那么,这个强分类器对待一幅待检测图像时,相当 于让所有弱分类器投票,再对投票结果按照弱分类 器的错误率加权求和,将投票加权求和的结果与平 均投票结果比较得出最终的结果。
s ( x , y ) = s ( x , y − 1) + i ( x , y )
其中,s( x, y) =
i( x' , y) ,是对这一行及其以前行 ∑
x' < x
的像素值求和,并且有:
s ( x, −1) = 0, ii (−1, y ) = 0
具体程序如下:
求 积 分 图 程 序
AdaBoost算法 训练部分
ii ( x, y ) =
∑
x' < x , y ' < y
i( x' , y ' )
其中ii(x,y)为积分图,i(x,y)为原始图像。
原图像
积分图图像
原图像部分像素值
对应积分图图像部分像素值
当采用下面两式,只需对原图像扫描一次即可计算出积分 图:
ii ( x , y ) = ii ( x − 1, y ) + s ( x , y )
x L U ∈ {1, 2, ..., m − s , m − s + 1} y L U ∈ {1, 2, ..., n − t , n − t + 1}
其次,根据左上角位置限定右下角位置范围为:
xRD ∈{xLU +s−1 xLU +2⋅s−1 xLU +(p−1 ⋅s−1 xLU + p⋅s−1 , ,..., ) , } yRD ∈{yLU +t −1 yLU +2⋅t −1 yLU +(q−1)⋅t −1 yLU +q⋅t −1 , ,..., , }
其中:
m − x LU + 1 p = s n − y LU + 1 q = t
ห้องสมุดไป่ตู้
则(m,n)图像窗口内满足(s,t)条件的矩形特征的数目:
Σ(( m,t,n ) = s )
m − s +1 n −t +1 xLU =1 yLU =1
∑ ∑
pq
m − xLU + 1 n − yLU + 1 = ∑ ∑ s t xLU =1 yLU =1
max
max
预设强分类器包含的弱分类器个数为 T ,然后根 据 T *个训练一个强分类器,统计其检出率 d 和误判 f ,当满足 f ≤ f max且 d ≥ d min 时, * 可认为满足 率 T 条件,不必再训练弱分类器。若不满足上述条件, * 则对 T 进行调整。 具体依据如下: (1)强分类器的检出率(误判率)随着阈值的减 小而增大,随着阈值的增加而减小。极端的情况, 如果将阈值设置为0,那么强分类器会将所有的样 本分类为人脸,这时检出率和误判率最大,为 100%。 (2)增加弱分类器的数目可以减小误判率。 根据以上两条,得如下强分类器训练程序流程图:
算 法 流 程 图
关于AdaBoost算法形象理解
Adaboost 算法是一种用来分类的方法,它的 基本原理是把一些比较弱的分类方法合在一起, 组合出新的很强的分类方法。 例如在图中
需要用一些线段把红色的球和深蓝色的球分开, 然而如仅果仅用一条线的话,是分不开的。
使用AdaBoost算法来进行划分的话,先画出一条 错误率最小的线段如图a,但左下角的深蓝色的球 被错划分到红色区域,因此加重被错误划分的球 的权重,再下一次划分的时候,将更加考虑那些 权重大的球,如图c,最终得到一个准确的划分, 如下图所示。
其中: 其中:
A = S ( f ) + (T (nf ) − S (nf ))
A = 1− B
B = S (nf ) + (T ( f ) − S ( f )) e = min( A, B)
通过演示表我们可以得到这个矩形特征的学习结果, 这个弱分类器阈值为4,不等号方向为p=-1,这个弱分 类器的权重错误率为0.1。
对于每个特征 f,计算所有训练样本的特征值, 并将其排序。通过扫描一遍排好序的特征值,可 以为这个特征确定一个最优的阈值,从而训练成 一个弱分类器。具体来说,对排好序的表中的每 个元素,计算下面四个值: 1)全部人脸样本的权重的和 T +; 2) 全部非人脸样本的权重的和 T −; S +; 3) 在此元素之前的人脸样本的权重的和 S −; 4) 在此元素之前的非人脸样本的权重的和
t
f , p ,θ
∑ q h( x , f , p,θ ) − y = ∑ q h( x , f , p ,θ ) − y
i i i i i i i t t t
i
h ( x ) = h ( x , f , p ,θ
t t t
t
)
4.按照这个最佳弱分类器,调整权重:
wt +1,i = wt ,i β
级联分类器
单独一个AdaBoost分类器即使很强,在误检率和 检测时间上根本满足不了真正的实时人脸检测系 统的需要。采用级联检测策略能很好地解决这个 问题。Adaboost算法引入了一种瀑布型的分类器--级联分类器。 在级联分类器中,每一个待检测窗口只有通过了 当前层的强分类器(AdaBoost分类器)才能进入 下一层。这样大量的待检测窗口只需要最初几层 简单的判断就可以被迅速淘汰,使得平均检测成 本大大降低。多层级联结构中,每一层的强分类 器都是由AdaBoost算法训练来的。
基于AdaBoost算法的 人脸检测简介
人脸检测
人脸检测(face detection)是指对于任意一幅给定 的图像,采用一定的策略对其进行搜索以确定其 中是否含有人脸,如果是则返回人脸的位置、大 小和姿态。 典型的方法有模板法、基于示例学习、基于器官 特征的方法、神经网络、彩色信息+形状分析、 AdaBoost的方法等等。
公式(1)
所以m × n子窗口中所有四种特征模板的特征总 数量,就是满足四个(s,t)条件的矩形特征的数 量的总和,即:
∑
( m,n) (1, 2)
+ ∑(2,1) + ∑(1,3) + ∑(3,1)
(m,n) (m,n)
(m,n)
代入公式(1)即可求得条件矩形的特征数量总和。
积分图:利用矩形特征来计算选取人脸的特 征有一种非常快速的算法,这种算法使用了 一种间接的图像表示方法,称之为积分图。 在一张积分图上,点i(x,y)的积分值ii(x,y)是原 图像上该点的上方和左方所有点的亮度值的 和。即:
1.归一化权重:
qt ,i =
wt ,i
∑
n j =1
wt , j
2.对每个特征f,训练一个弱分器 h( x, f , p,θ ) ;计算 所有特征的弱分类器的加权错误率
ε
f
=
∑ q
i
i
h ( x i , f , p ,θ ) −
y
i
3.选取最佳弱分类器 ht ( x ) ,按最小错误率。
ε = min
这样,当选取当前任意元素的特征值作为阈值时, 所得到的弱分类器就在当前元素处把样本分开— —也就是说这个阈值对应的弱分类器将当前元素 前的所有元素分类为人脸(或非人脸),而把当 前元素后(含)的所有元素分类为非人脸(或人 脸)。 可以认为这个阈值所带来的分类误差为:
ε = min( S + + (T − − S − ), S − + (T + − S + ))
满足(s,t)条件的矩形的数量计算
对于 m×n 子窗口,我们只需要确定了矩形左上 顶点和右下顶点,即可以确定一个矩形;如果这 个矩形必须满足下面两个条件(称为(s,t)条 件): (1)x方向边长能被自然数s整除。 (2)y方向边长能被自然数t整除。 满足(s,t)条件的矩形称为条件矩形。
首先,确定左上角位置,则左上角可以选择的位置 范围为:
m − s +1 n −t +1
m − xLU + 1 n−t +1 n − yLU + 1 = ∑ ∑ s t yLU =1 xLU =1
m − s +1
m m − 1 s + 1 n n − 1 t + 1 = + + ... + + 1 ∗ + + ... + + 1 t s t t s s
βt
强分类器中包含弱分类器数T的确定
首先了解两个概念: (1)强分类器的训练检出率=被正确检出的人 脸数与人脸样本总数的比例 (2)强分类器的训练误判率=被误判为人脸的 非人脸样本数与非人脸样本总数的比例 设强分类器训练误判率目标值为 f ,训练 检出率的目标值为 dmin 。AdaBoost算法将根 据 f 和 dmin来确定强分类器包含的弱分类器数 目T。