动态百分比特征裁剪AdaBoost人脸检测算法

文档序号:9350323阅读:377来源:国知局
动态百分比特征裁剪AdaBoost人脸检测算法
【技术领域】
[0001] 本发明涉及一种动态百分比特征裁剪AdaBoost人脸检测算法,属于模式识别技 术领域。
【背景技术】
[0002] 生物特征识别技术是通过每个个体所独有的生理特征和行为特征来实现身份证 实或个体鉴别的目的。人脸作为生物特征的一种,具有易于获取,接口友好等特点,相较于 现在常用的方式,如口令、信用卡、身份卡等,具有不可复制、携带方便、鉴别性强等优势。因 此在视频监控、智能家居和刑事侦查等领域具有广阔的前景。随着嵌入式设备运算能力越 来越强,智能算法越来越多地应用于嵌入式开发领域,实现不同的功能。其中人脸检测作为 人脸识别的基础,成为了人工智能领域的研究热点。
[0003] AdaBoost算法其核心是通过迭代的方法从大量的Haar特征中提取出分类效果最 好的特征作为弱分类器,而最终生成的强分类器是由大量的弱分类器组成。AdaBoost实 用而简单,而基于AdaBoost算法的人脸检测算法对于单一人脸图像的检测不仅具有极高 的检测精度,而且具备很快的检测速度,因此基于该算法的人脸识别技术得到了广泛的应 用。
[0004] 当训练样本,样本特征,弱分类器个数较多的时候,采用AdaBoost算法训练的分 类器会消耗大量的训练时间。特征个数决定了算法的迭代次数,每次迭代获取相应特征在 训练样本集中的错误率,最后通过比较错误率取得最佳弱分类器。每训练完一个最佳弱分 类器,训练样本的权重会相应的发生变化,因此如果需要更多的弱分类器,则需要重复相应 次数的上述步骤。由此可见,当训练样本,样本特征个数和弱分类器个数增加时,训练时间 会以三次方的数量级增加。

【发明内容】

[0005] 本发明的目的在于克服现有技术中的不足,提供一种动态百分比特征裁剪 AdaBoost人脸检测算法,解决现有技术中采用AdaBoost算法训练的分类器会消耗大量的 训练时间的技术问题。
[0006] 为解决上述技术问题,本发明所采用的技术方案是:动态百分比特征裁剪 AdaBoost人脸检测算法,在每次迭代开始的时候,首先确定所需裁剪特征个数的百分比f, 然后选用分类性能好的特征参与下一轮训练;当训练得到的本次迭代的最佳弱分类器错误 率大于随机抽取值,通过减小本次迭代的裁剪系数,扩大参与训练的特征个数;如果当采用 全部特征进行训练时,错误率仍然超过〇. 5,则停止迭代;
[0007] 具体算法包括如下步骤:
[0008] 步骤一:设输入的训练样本总数为N,其中负样本为m个,正样本为n个,训练样本 集为S= ((Xyy1),... (xn,yn)},其中Xi表示第i个样本,y;= {1,0},分别用于标识正负样 本;
[0009] 步骤二:初始化样本权重:
[0011] 步骤三:假设每一轮舍去的样本百分比为f,那么每一轮参与训练的样本个数为 NX(1-f),迭代次数t= 1,2,…,T;
[0012] 步骤四:获取最优弱分类器,求得弱分类器匕在强分类器中的加权系数at,方法 如下:
[0016] 其中,A(X)为特征值,P]表示不等号方向,0 ,为弱分类器阈值;
[0017] 步骤403 :选择最小错误率对应的弱分类器ht(x),其中最小错误率定义为:
[0019] 步骤404 :如果et= 0或者在第一轮训练时就出现e0. 5,则令T=t-1,跳 到步骤六;如果et彡〇. 5且不是第一轮,则令T=t-1,判断f是否大于2/3,若大于则令f= 2Xf-l,否则令f=f/2跳转到步骤五;
[0024] 步骤五:对每个特征的分类误差从大到小进行排序,假如t= 1,则根据裁剪的百 分比f,裁剪掉参与训练的特征中分类误差的前nXf个特征,如果t>l,除了裁剪掉参与训 练的特征中分类误差的前nXf?个特征外,还需要将上一轮中未参与训练的特征加入到下 一轮的训练当中;
[0025] 步骤六:输出强分类器:
[0026]
[0027] 与现有技术相比,本发明所达到的有益效果是:适用于参与训练的特征个数过多 时,通过选取上一轮中错误率较低的特征参与下一轮的训练,来达到节省训练时间的目的。
【附图说明】
[0028] 图1是本发明方法的流程图。
[0029] 图2是获取最优弱分类器的流程图。
【具体实施方式】
[0030] 下面结合附图对本发明作进一步描述。
[0031] 附图中各函数所表示的含义如下:
[0032] 函数cvGetTickCount():返回从操作系统启动到当前所经过的毫秒数,通过计算 两个返回量的差值便可以统计训练所耗费的时间。
[0033] 函数Single_Classifier(inti):用于产生一个强分类器,传入的参数表示构成 此强分类器的弱分类器个数。
[0034] 函数Generate_AllFeatures(intcount):用于生成所有Haar-like的特征, count表示使用特征类型的数量。本发明选用了 5种常用特征模板,因此count值为5。
[0035] 函数Input_Samples():从指定目录中读入正负样本。
[0036] 函数SelectJVeakClassifier():用于获取最优弱分类器。
[0037] 函数Output_WeakClassifier():用于输出生成的分类器。
[0038] 函数Cal_HaarValue(j,k):用于计算第k个样本的第j个特征。
[0039] 函数qsortO:根据特征值的大小对样本进行排序。
[0040] 如图1所示,动态百分比样本裁剪AdaBoost人脸检测算法,在每次迭代开始的时 候,首先确定所需裁剪样本个数的百分比f,每一轮按照f?裁剪掉权重较小的样本,用剩余 样本进行训练;
[0041] 当训练得到的本次迭代的最佳弱分类器错误率大于随机值产生的错误率,通过减 小裁剪的常量f,扩大样本集数量,对于本次迭代重新进行训练;
[0042] 如果当采用全部样本进行训练时,错误率仍然超过0. 5,则停止迭代;
[0043] 具体算法包括如下步骤:
[0044] 步骤一:设输入的训练样本总数为N,其中负样本为m个,正样本为n个,训练样本 集为S= ((Xyy1),... (xn,yn)},其中Xi表示第i个样本,y;= {1,0},分别用于标识正负样 本;
[0045] 步骤二:初始化样本权重:
[0047] 步骤三:假设每一轮舍去的样本百分比为f,那么每一轮参与训练的样本个数为 NX(1-f),迭代次数t= 1,2,…,T;
[0048] 步骤四:获取最优弱分类器,求得弱分类器匕在强分类器中的加权系数at,如图 2所示,方法如下:
[0052] 其中,fjx)为特征值,P]表示不等号方向,0 ,为弱分类器阈值;
[0053] 步骤403:选择最小错误率对应的弱分类器ht(x),其中最小错误率定义为:
[0055]步骤404:如果et= 0或者在第一轮训练时就出现e0. 5,则令T=t-1,跳 到步骤六;如果et彡0.5且不是第一轮,则令T=t_l,判断f是否大于2/3,若大于则令 f= 2Xf-l,否则令f=f/2跳转到步骤五;
[0060] 步骤五:对每个特征的分类误差从大到小进行排序,假如t= 1,则根据裁剪的百 分比f,裁剪掉参与训练的特征中分类误差的前nXf个特征,如果t>l,除了裁剪掉参与训 练的特征中分类误差的前nXf?个特征外,还需要将上一轮中未参与训练的特征加入到下 一轮的训练当中;
[0061] 步骤六:输出强分类器:
[0062]
[0063] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形 也应视为本发明的保护范围。
【主权项】
1.动态百分比特征裁剪AdaBoost人脸检测算法,其特征在于,在每次迭代开始的时 候,首先确定所需裁剪特征个数的百分比f,之后根据弱分类器错误率的大小,选用分类性 能好的特征参与下一轮训练;当训练得到的本次迭代的最佳弱分类器错误率大于随机抽取 值,通过减小本次迭代的裁剪系数,扩大参与训练的特征个数;如果当采用全部特征进行训 练时,错误率仍然超过〇. 5,则停止迭代; 具体算法包括如下步骤: 步骤一:设输入的训练样本总数为N,其中负样本为m个,正样本为η个,训练样本集为 S = IXx1, Y1),... (xn,yn)},其中Xi表示第i个样本,y i= {1,〇},分别用于标识正负样本; 步骤二:初始化样本权重:步骤三:假设每一轮舍去的样本百分比为f,那么每一轮参与训练的样本个数为 NX (Ι-f),迭代次数 t = 1,2,…,T ; 步骤四:获取最优弱分类器,求得弱分类器匕在强分类器中的加权系数a t,方法如 下: 步骤401 :归一化样本的权重值:步骤4〇2:针对每个特征」,训练一个简单弱分类器11,〇^1,?,,0]):其中,AU)为特征值,表示不等号方向,Θ ,为弱分类器阈值; 步骤403 :选择最小错误率对应的弱分类器ht(x),其中最小错误率定义为:步骤404 :如果ε t= 0或者在第一轮训练时就出现ε 0. 5,则令T = t-Ι,跳到步 骤六;如果ε 0. 5且不是第一轮,则令T = t-1,判断f是否大于2/3,若大于则令f = 2Xf-l,否则令f = f/2跳转到步骤五; 步骤405 :更新样本权重当样本Xi被错误分类时e ; = 0,反之步骤406 :求得弱分类器ht在强分类器中的加权系数:步骤五:对每个特征的分类误差从大到小进行排序:假如t = 1,则根据裁剪的百分比 f,裁剪掉参与训练的特征中分类误差大的前nXf个特征,如果t>l,除了裁剪掉参与训练 的特征中分类误差大的前nXf个特征外,还需要将上一轮中未参与训练的特征加入到下 一轮的训练当中; 步骤六:输出强分类器:
【专利摘要】本发明公开了一种动态百分比特征裁剪AdaBoost人脸检测算法,具体为:在每次迭代开始的时候,首先确定所需裁剪特征个数的百分比f,然后选用分类性能较好的特征参与下一轮训练;当训练得到的本次迭代的最佳弱分类器错误率大于随机抽取值,通过减小本次迭代的裁剪系数,扩大参与训练的特征个数;如果当采用全部特征进行训练时,错误率仍然超过0.5,则停止迭代。本发明适用于参与训练的特征个数过多时,通过选取上一轮中错误率较低的特征参与下一轮的训练,来达到节省训练时间的目的。
【IPC分类】G06K9/00, G06K9/62
【公开号】CN105069396
【申请号】CN201510391351
【发明人】李东新, 左卜
【申请人】河海大学
【公开日】2015年11月18日
【申请日】2015年7月6日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1