OPENCV ADABOOST人脸检测训练程序阅读笔记(LBP特征)

OPENCV ADABOOST人脸检测训练程序阅读笔记(LBP特征)
OPENCV ADABOOST人脸检测训练程序阅读笔记(LBP特征)

1、训练程序整体流程

(1)读输入参数并打印相关信息

(2)进入训练程序最外层入口classifier.train

1)读正负样本,将正负样本放入imgLiast中,先读正样本,后读负样本

2)load(dirName)判断之前是否有已训练好的xml文件,若有,不在重新训练该stage的xml文件,没有返回false,初始化参数

3)计算requiredLeafFARate=pow(maxFalseAlarm,numStages)/max_depth,该参数是stage停止条件(利用训练样本集来计算tempLeafFARate,若

tempLeafFARate小于这一参数,则退出stage训练循环);

4)Stage训练循环

5)更新训练样本集,计算tempLeafFARate(负样本被预测为正样本的个数除以读取负样本的次数,第一次没有训练之前,这个比值为1,因为没训练之前,

所有负样本都被预测成了正样本,当第一层训练好以后,负样本采集时会先

用第一层的分类器预测一次,若能分类,则不选用,选用负样本的数目是固

定的,但选用这么多负样本总共要选的次数会随着层数的增多而加大,因为

层数越大,分类器的分类能力也要求越大,说需要的样本就是前面分类器所

不恩呢该识别的,故在采集时也比较困难。)

6)判断stage是否退出训练,若tempLeafFARate

7)强训练器训练入口tempStage->train()

a.建立训练数据data=new CvCascadeBoostTrainData(主要是一些参

数的设置,还有特征值的计算)

b.初始化样本权重update_weights(0);

c.弱分类器训练循环

i)tree->train—》do_train

ai)根节点的初始root=data->subsample_data(_subsample_idx);

(主要是对根节点的一些参数进行初始化,parent0,count1,

split0,value0,class_idx0,maxlr0,left=right=0,等等)

bi)CV_CALL(try_split_node(root)),根据根节点计算整颗数的各

节点的参数配置

aii)calc_node_value(node);计算节点的回归值,类似于分类

投票值sum(w*class_lable),正样本的class_lable取,负样

本的class_lable取-1;计算节点的风险值node_risk,node

risk is the sum of squared errors:sum_i((Y_i-

)^2)

bii)判断节点是否可以分裂(判断依据:样本值和设计的节

点最大深度);再利用node_risk与regression_accuracy,

如果这个节点的所有训练样本的节点估计值的绝对差

小于这个参数,节点不再进行分裂

cii)找出最佳分裂best_split=find_best_split(node);

aiii)定义DTreeBestSplitFinder finder(this,node);

biii)parallel_reduce(cv::BlockedRange(0,data->var_count),

finder);此时调用DTreeBestSplitFinder类的操作符

DTreeBestSplitFinder::operator()(const

BlockedRange&range)

aiv)遍历所有特征vi=vi1;vi

biv)res=tree->find_split_cat_reg()得到特征为split->var_idx=vi的最佳分裂的质量

split->quality(split->quality越大越好)

av)将特征为vi所有样本的特征值返回到

cat_labels

bv)计算每个特征值取值不权值和和响应和,

例如特征值为,则将所有特征值列表中特

征值为的样本权值相加,LBP的特征值

范围是0~255,故有256个category

cv)计算每个category的平均响应值,即将每

个category的响应和除以每个category的

样本权值和

dv)icvSortDblPtr(sum_ptr,mi,0);把256个

值进行升序排序,注意sum_ptr里存的是

sum[i]的地址,这里排序的依据是特征值

还是按照每个特征值的平均响应来排

序???个人感觉是按特征值的平均响

应来排序

fv)将每个特征值的平均响应值乘以该特征

值的总权值得到每个特征值的总响应

gv)遍历subset_i=0;subset_i

subset_i++

avi)计算索引是subset_i在排序前的idx

bvi)获取索引idx对应的样本总权重

cvi)获取索引idx对应的样本总响应

dvi)以subset_i为分裂点,计算分裂质量

(sumL*sumL)/weightL+

(sumR*sumR)/weightR

fvi)若最佳分裂质量小于这个质量,则更

新最佳分裂质量

hv)经过训练得到最佳分裂点和最佳分裂质量,将遍历得到的值更新到split结构体各参数。

Iv)得到该特征对应的split->subset,for(i=0;i

<=best_subset;i++)

avi)计算索引是i在排序前的idx

bvi)split->subset[idx>>5]|=1<<(idx&

31);subset[8],每个数组里存放32位

的整数,整数值由idx决定,idx也就

是特征值大小

civ)若bestSplit->qualityquality,将split拷贝到bestSplit

ciii)初始化一个bestSplit,将finder.bestSplit拷贝到

bestSplit,并返回bestSplit

dii)将bestSplit赋给node->split

eii)计算节点方向quality_scale=calc_node_dir(node);

aiii)获取最佳特征的索引vi

biii)遍历所有样本i=0;i

aiv)计算第i个样本的特征为vi的特征值idx

biv)获取第i个样本的权重w

civ)d=idx>=0?CV_DTREE_CAT_DIR(idx,subset):0

CV_DTREE_CAT_DIR(idx,subset)=(2*((subset[(idx)>>5]&(1<<((idx)&

31)))==0)-1)(d=1或者d=-1)

div)sum+=d*w;sum_abs+=(d&1)*w

fiv)dir[i]=(char)d;

ciii)R=(sum_abs+sum)*0.5;(取向正样本的所有权重和)

diii)L=(sum_abs-sum)*0.5;;(取向负样本的所有权重和)

fiii)node->maxlr=MAX(L,R);

giii)返回node->split->quality/(L+R);

fii)split_node_data(node);

aiii)complete_node_dir(node);对每个样本的归类属性再一

次定义,确保每个样本要么分到左边要么分到右边

biii)遍历样本,得到左节点和右节点的样本数nl和nr

ciii)对左节点和右节点初始化

diii)分别计算左节点和右节点的每个特征对应的分类样

本数(这中间的代码不是很懂!!!)

gii)try_split_node(node->left);

Iii)try_split_node(node->right);

ii)cvSeqPush(weak,&tree);将训练好的树添加到弱分类器重

iii)update_weights(tree);更新样本权重

ai)weak_eval[i]=f(x_i)in[-1,1]对应代码为weak_eval->data.db[i]*=-orig_response->data.i[i];i为0~n-1,n

为样本数目

bi)w_i*=exp(-y_i*f(x_i))

iv)trim_weights();调整权重,但在程序中未看出调整,该函数是根据更新后的权重调整subsample_mask的数据,即利用阈值判断

正样本被检测正确的将subsample_mask的数据赋值为1;

v)强制退出循环判断cvCountNonZero(subsample_mask),若subsample_mask中数据全为0,则直接退出弱分类器循环,这种

情况应该不会出现

d.弱分类器训练循环终止条件判断while(!isErrDesired()&&(weak->total

8)如果强分类器重弱分类器的个数大于0,返回ture,否则返回false

9)返回ture时输出和打印相关信息,否则退出stage循环

10)保存stage的xml文件

(3)输出和打印相关信息

人脸识别技术的弊端

三个方面的缺点: 1.识别精度低 2.自然性、不易察觉以及非接触性也致使人脸识别技术在一些特定领域面临环境复杂性。 便于收集的好处也带来了图像清晰度不高,角度不好等问题 3.人脸识别不只是隐私问题信息泄露面临更大安全隐患 人脸识别的一个缺点也在于信息的可靠性及稳定性较弱。 人脸所蕴含的信息量较指纹、虹膜等生物特征相比是比较少的,其变化的复杂性不够。例如,若要两个人的指纹或者虹膜基本相同,大概需要好几十乃至上百个比特(信息量的度量单位)达到完全重合才可以。但如果是人脸的话,十几个比特达到重合就可以了。在全世界,可以找到很多具有相似性的面孔。所以说,人脸的辨别性不是很高,它并没有那么独一无二。 另外,人自身内在的变化以及外在环境的变化都会影响采集时人脸的信息稳定度。相较于之前的人脸识别技术,目前的人脸识别技术有所提高,但是具体应用时还是不能达到完美状态,如今,保守估计,人脸识别技术准确率能达到99%,但没有达到100%。同时,对于双胞胎,由于相似特征太多,人脸识别基本不可能完成。比如在ATM机上使用人脸识别技术,是在使用密码信息的基础上辅助的认证功能。如果脱离了密码输入,完全使用人脸识别技术进行存取款操作,是不太可能的。 例如,2018年7月,美国公民自由联盟(ACLU)对美国国会议员的照片应用了亚马逊算法,该算法确定其中28人是因犯罪而被捕的人。 如果说双胞胎根本不应该用此技术来进行分辨的情况下,如何解决整容带来的无法辨别的问题?在如今整容手段如此先进的情况下? 其一,应用“人脸识别”技术的视频采集机器设备愈来愈普及化,会否对大家的人身自由权与隐私权产生威协,这个问题如何解决?其二,人工智能的市场应用,会否产生新的岐视与不公平,并对人们具有的社会道德纪律产生挑战? 例如:一些商业算法在识别肤色较深的人员和女性方面不如识别肤色较浅的男人准确。

AdaBoost人脸检测原理

AdaBoost人脸检测原理 对人脸检测的研究最初可以追溯到 20 世纪 70 年代,早期的研究主要致力于模板匹配、子空间方法,变形模板匹配等。近期人脸检测的研究主要集中在基于数据驱动的学习方法,如统计模型方法,神经网络学习方法,统计知识理论和支持向量机方法,基于马尔可夫随机域的方法,以及基于肤色的人脸检测。目前在实际中应用的人脸检测方法多为基于 Adaboost 学习算法的方法。 Viola人脸检测方法是一种基于积分图、级联检测器和AdaBoost 算法的方法,方法框架可以分为以下三大部分: 第一部分,使用Harr-like特征表示人脸,使用“积分图”实现特征数值的快速计算; 第二部分,使用Adaboost算法挑选出一些最能代表人脸的矩形特征( 弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器; 第三部分,将训练得到的若干强分类器串联组成一个级联结构的层叠分类器,级联结构能有效地提高分类器的检测速度。 Adaboost 算法是一种用来分类的方法,它的基本原理就是“三个臭皮匠,顶个诸葛亮”。它把一些比较弱的分类方法合在一起,组合出新的很强的分类方法。例如下图中, 需要用一些线段把红色的球与深蓝色的球分开,然而如果仅仅画一条线的话,是分不开的。 a b c d 使用Adaboost算法来进行划分的话,先画出一条错误率最小的线段如图 1 ,但是左下脚的深蓝色球被错误划分到红色区域,因此加重被错误球的权重,再下一次划分时,将更加考虑那些权重大的球,如 c 所示,最终得到了一个准确的划分,如下图所示。

人脸检测的目的就是从图片中找出所有包含人脸的子窗口,将人脸的子窗口与非人脸的子窗口分开。大致步骤如下: (1)在一个 20*20 的图片提取一些简单的特征(称为Harr特征),如下图所示。 它的计算方法就是将白色区域内的像素和减去黑色区域,因此在人脸与非人脸图片的相同位置上,值的大小是不一样的,这些特征可以用来区分人脸和分人脸。 (2)目前的方法是使用数千张切割好的人脸图片,和上万张背景图片作为训练样本。训练图片一般归一化到 20*20 的大小。在这样大小的图片中,可供使用的haar特征数在1万个左右,然后通过机器学习算法-adaboost算法挑选数千个有效的haar特征来组成人脸检测器。 (3)学习算法训练出一个人脸检测器后,便可以在各个场合使用了。使用时,将图像按比例依次缩放,然后在缩放后的图片的 20*20 的子窗口依次判别是人脸还是非人脸。

基于opencv的人脸识别程序-代码详解

#include "cv.h" #include "highgui.h" #include #ifdef _EiC #define WIN32 #endif static CvMemStorage* storage = 0; static CvHaarClassifierCascade* cascade = 0; void detect_and_draw( IplImage* image ); const char* cascade_name = "haarcascade_frontalface_alt.xml";//人脸检测分类器 int main( int argc, char** argv ) { CvCapture* capture = 0; IplImage *frame, *frame_copy = 0; int optlen = strlen("--cascade="); const char* input_name; if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 ) { cascade_name = argv[1] + optlen; input_name = argc > 2 ? argv[2] : 0; } else { cascade_name = "E:\毕业设计\智能机器人动态人脸识别系统\陈建州程序.xml";//分类器路径 input_name = argc > 1 ? argv[1] : 0; } cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); if( !cascade )//如果没有找到分类器,输出以下 { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); fprintf( stderr, "Usage: facedetect --cascade=\"\" [filename|camera_index]\n" ); return -1;

【CN109961021A】一种深度图像中人脸检测方法【专利】

(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910164890.2 (22)申请日 2019.03.05 (71)申请人 北京超维度计算科技有限公司 地址 100142 北京市海淀区西四环北路160 号9层一区907 (72)发明人 马宁 徐杰 张颢 向志宏  杨延辉  (74)专利代理机构 北京亿腾知识产权代理事务 所(普通合伙) 11309 代理人 陈霁 (51)Int.Cl. G06K 9/00(2006.01) (54)发明名称一种深度图像中人脸检测方法(57)摘要本发明涉及一种深度图像中人脸检测方法,包括以下步骤:找出深度图像中所有有效深度值的局部最小值点;计算局部最小值点的曲率,去除曲率超出范围的点;如果此时还有剩余的局部最小值点,则在纵向剖线上用深度阈值切割出人脸廓线,去除纵向人脸廓线长度不符合真实人脸尺寸的局部极小值点;如果还有剩余的局部最小值点,则计算鼻子的深度值和纵向剖线上鼻子廓线占人脸廓线长度的比值,排除鼻子的深度值或比值超出一定范围的局部最小值点;如果还有剩余的局部最小值点,则通过深度阈值切割出可能存在的人脸,并排除切割区域尺寸小于实际人脸尺寸的局部最小值点;如果此时还有剩余的局部最小值点,则认为图像中有人脸,否则认为图像 中没有人脸。权利要求书2页 说明书3页 附图1页CN 109961021 A 2019.07.02 C N 109961021 A

权 利 要 求 书1/2页CN 109961021 A 1.一种深度图像中人脸检测方法,其特征在于,包括以下步骤: 找出深度图像中所有有效深度值的局部最小值点; 计算局部最小值点的曲率,去除曲率超出范围的点; 如果此时没有剩余的局部最小值点,则可以判断这一张深度图像中没有人脸;如果还有剩余的局部最小值点,则在纵向剖线上用深度阈值切割出可能的人脸廓线,去除纵向人脸廓线长度不符合真实人脸尺寸的局部极小值点; 如果此时没有剩余的局部最小值点,则可以判断这一张深度图像中没有人脸;如果还有剩余的局部最小值点,则计算鼻子的深度值和纵向剖线上鼻子廓线占人脸廓线长度的比值,排除鼻子的深度值或比值超出一定范围的局部最小值点; 如果此时没有剩余的局部最小值点,则可以判断这一张深度图像中没有人脸;如果还有剩余的局部最小值点,则通过深度阈值切割出可能存在的人脸区域,并排除切割区域尺寸小于实际人脸尺寸的局部最小值点; 如果此时还有剩余的局部最小值点,则认为图像中有人脸,输出图像中所有的人脸区域位置,否则认为图像中没有人脸。 2.根据权利要求1所述的方法,其特征在于,所述找出深度图像中所有有效深度值的局部最小值点步骤,包括: 对深度相机输出的深度图像,找出深度图像中所有在局部窗口中有效深度值最小的像素点的位置,如果邻接的多个像素都为局部最小值点,则只取这几个邻接像素的中心位置为局部最小值位置。 3.根据权利要求1所述的方法,其特征在于,所述计算局部最小值点的曲率,去除曲率超出范围的点步骤,包括: 对得到的每个局部极小值点,在一定邻域范围内计算有效深度值梯度幅度的平均值,此梯度幅度平均值反映了物体表面的曲率,通过人鼻尖表面曲率的范围,可以排除一些不是鼻尖的局部最小值点。 4.根据权利要求1所述的方法,其特征在于,所述在纵向剖线上用深度阈值切割出可能的人脸廓线,去除纵向人脸廓线长度不符合真实人脸尺寸的局部极小值点步骤,包括:对于剩余的每个局部最小值点,找出深度图像中该位置的纵向廓线,由局部最小值点的深度和位置信息可以估计出该距离下真实人脸在纵向廓线上的最大范围,该范围作为人脸可能存在的范围,在该范围内,用该局部最小值点的深度值加上一个深度差值,作为深度切割的阈值,用该阈值切割出可能存在的人脸纵向廓线,并计算可能的人脸廓线的长度,由局部最小值点的深度可以估计出该距离下真实人脸廓线的长度,通过对比可以去除一些纵向剖线不符合真实人脸尺寸的局部最小值点。 5.根据权利要求1所述的方法,其特征在于,所述计算纵向剖线上鼻子廓线占人脸廓线长度的比值,排除比值超出一定范围的局部最小值点步骤,包括: 根据符合真实人脸尺寸的每个局部极小值点,计算其在人脸廓线上的梯度,如果梯度值不大于0,则继续计算其在人脸廓线上的上一个像素点的梯度;当梯度值大于0时,此时的像素点位置即为鼻子廓线的上边缘位置; 所述像素点位置的深度值与对应的局部最小值点位置的深度差值即为鼻子的高度;所述像素点位置与对应的局部最小值点位置的差值即为鼻子廓线的长度; 2

人脸肤色检测技术word版本

术技测检色肤脸人精品文档 一种基于肤色的复杂背景人脸检测方法 1>.人脸肤色模板提取 复杂背景的彩色图像中,总存在类肤色区域,裸露的非人脸肤色区域以及类肤色区域和肤色区域或者多个肤色区域紧密连接在一起. 单纯使用肤色分割定位,人脸不能排除这些因素的影响,因此,肤色分割通常只是对人脸图像进行粗定位。要确定肤色区域是否为人脸,则需对区域上的其他特征进行验证。在人脸肤色分割图中,眼睛、嘴等特征因其为非肤色区域而被漏掉,而在肤色范围内的其他区域可能与人脸区域相连,这不利于人脸特征验证。特征验证需要一个准确的人脸区域(只包括必要的人脸特征而没有背景等其他干扰)。 2>.肤色块分类 肤色分割可能在人脸区域形成独立块,区域边缘分割也可能将完整面部分割诚若干个小块,因此需要进行肤色块的合并,重新组合属于同一人脸的独立块。同一人连区域中像素点古色在变换Ycbcr空间中对应的矢量值相近,在空间位置上应小于一定距离。根据以上原理提出如下算法:(1)按照块面积从大到小排列各块(忽略面积小于一定阈值的小块)。 (2)寻找每个块的重心(X,Y);

(3)计算各块间距离的(重心连线减去在各块内部部分的长度)。 (4)从大块开始,将距离小于一定阈值的归位一类。 (5)在没一类中,计算各块重心连线在各块边缘附近的Ycbcr值。 (6)去除面积小于一定阈值的类。 对所有块分类完成后,按各类中肤色块所占区域的大小,建立包含类中所有块的最小矩形,将类中所有块复制到矩形内,后续操作则在该矩形内进行。 收集于网络,如有侵权请联系管理员删除. 精品文档 基于肤色模型的人脸检测研究 2.1>建立肤色样本 建立肤色模型需要大量包含不同肤色、不同大小人脸的RGB图像。本文从互联网、人脸库和日常的生活照中选用了100副肤色不相同的人脸图像,然后从中裁剪出人脸皮肤区域的一小部分作为肤色的样本。接着将其从RGB色彩空间转换为Ycrcb色彩空间。 经过色彩空间转换之后,人脸图像不可避免地会出现噪声。本文采用滑动窗口为3X3的二维中值滤波来去除噪声,并在速度和效果上都取得了很好的结果。2.2>建立肤色模型 消除噪声后,先用二维高斯分布来描述这种cbcr的色度分布,然后对肤色样本进行训练,以此得到一个分布中心,再根据所观察的香色离该中心的远近来得到一个肤色的相似度。最后利用均值和方差的计算得到高斯分布模型,这就是实验中的肤色模型。 2.3>光照预处理 由于受外界光照坏境的影响,尤其是光源颜色,采集来的彩色图像经常会发生彩色偏移。本文使用彩色均衡方法来消除这种彩色偏移。该方法首先通过图像的R G B三个分量中各自的平均值确定出图像的平均灰度值,然后调整每个像素的R G B值,使得调整后图像的R G B三个分量中各自的平均值都趋于平均灰度值。实验结果表明,消除彩色偏移能有效提高算法的检测率和准确率。 2.4>类肤色检测 收集于网络,如有侵权请联系管理员删除. 精品文档 本文算法最为关键的一步是人体皮肤区域的检测。检测方法是计算图像像素与肤色模型的相似度,这个值描述了像素与肤色的相似程度。通过计算图像中每个像素与肤色模型的相似度,生成一副类肤色灰度图像。 基于肤色的人脸检测与识别方法的研究 肤色检测技术

[作业]OPENCV人脸识别

摘要 人脸检测主要是基于计算机识别的一项数字化技术,用以准确获取人的脸部大小和位置信息,在进行人脸检测时,突出主要的脸部特征,淡化次要的环境、衣着等因素。对于某些情况下,人脸检测也可以计算出人脸,如眼睛,鼻子和嘴等精确的微妙特征。由于在安全检测系统,医学,档案管理,视频会议和人机交互等领域人脸检测系统都有光明的应用前景,因此人脸检测逐渐成为了两个跨学科领域研究的热门话题:人工智能和当前模式识别。本文基于OpenCV视觉库具体的设计并开发了对数字图像中的人脸检测的程序,所采用的人脸检测的原理主要是分类器训练模式(Adaboost算法)提取Haar特征的方法。它在整个软件极其重要的作用,图像中人脸的准确定位和识别都受图像处理好坏的直接影响。本次所设计的软件在图像处理部分所采用的方法是基于Adaboost算法进行Haar特征的提取,在此之上加以通过积分图方法来获取完整的级联分类器结构,进行人脸检测时,OpenCV级联分类器通过Adaboost人脸检测算法进行训练,此后采用不同情况下的实验样本完成精确定位以及检测试验。经过代码的设计和调试,在最后的测试中针对数字图像进行的人脸检测和定位达到了较好的效果,提高了定位和识别的正确率。 关键词:人脸检测,AdaBoost,分类器,OpenCV

Abstract Face detection is mainly based on computer recognition of a digital technology,face size and location information to accurately obtain the person,during face detection, highlight the main facial features,dilute the secondary environment,clothing,and other factors.For some cases,face detection can also calculate a person's face,such as eyes, nose and mouth,and other subtle features accurate.Because in the field of human security detection systems,medical records management,video conferencing,and human-computer interaction face detection system has bright prospects,and therefore face detection is becoming a two interdisciplinary research fields hot topic:artificial intelligence and The current pattern recognition.This article is based.penCV vision library designed and developed specifically for digital image face detection process,the principles used face detection methods are mainly classifier training mode(Adaboost algorithm)to extract Haar features.It is in the vital role of the software,the image of the human face accurately locate and identify all that is good or bad a direct impact on the image processing.This software is designed image processing method used in part based Haar Adaboost algorithm to extract features,on top of this to be to get the full cascade classifier structure by integrating the diagram method for face detection,OpenCV cascade classifier is trained by Adaboost face detection algorithm,then the use of the experimental sample under different circumstances for accurate positioning and testing.Through design and debugging code,face detection and location in the final test for digital images to achieve better results and improve the accuracy of positioning and recognition. Keywords:face detection;AdaBoost;classifier;openCV

opencv adaboost人脸检测训练程序阅读笔记(LBP特征)

1、训练程序整体流程 (1)读输入参数并打印相关信息 (2)进入训练程序最外层入口classifier.train 1)读正负样本,将正负样本放入imgLiast中,先读正样本,后读负样本 2)load( dirName )判断之前是否有已训练好的xml文件,若有,不在重新训练该stage的xml文件,没有返回false,初始化参数 3)计算requiredLeafFARate = pow(maxFalseAlarm,numStages)/max_depth,该参数是stage停止条件(利用训练样本集来计算tempLeafFARate,若 tempLeafFARate小于这一参数,则退出stage训练循环); 4)Stage训练循环 5)更新训练样本集,计算tempLeafFARate(负样本被预测为正样本的个数除以读取负样本的次数,第一次没有训练之前,这个比值为1,因为没训练之前, 所有负样本都被预测成了正样本,当第一层训练好以后,负样本采集时会先 用第一层的分类器预测一次,若能分类,则不选用,选用负样本的数目是固 定的,但选用这么多负样本总共要选的次数会随着层数的增多而加大,因为 层数越大,分类器的分类能力也要求越大,说需要的样本就是前面分类器所 不恩呢该识别的,故在采集时也比较困难。) 6)判断stage是否退出训练,若tempLeafFARatetrain() a.建立训练数据data = new CvCascadeBoostTrainData(主要是一些参 数的设置,还有特征值的计算) b.初始化样本权重update_weights( 0 ); c.弱分类器训练循环 i)tree->train—》do_train ai) 根节点的初始root = data->subsample_data( _subsample_idx ); (主要是对根节点的一些参数进行初始化,parent 0,count 1, split 0,value 0,class_idx 0,maxlr 0,left = right = 0,等等) bi) CV_CALL( try_split_node(root)),根据根节点计算整颗数的各 节点的参数配置 aii) calc_node_value( node );计算节点的回归值,类似于分类 投票值sum(w*class_lable),正样本的class_lable取,负样 本的class_lable取-1;计算节点的风险值node_risk,node risk is the sum of squared errors: sum_i((Y_i - )^2) bii) 判断节点是否可以分裂(判断依据:样本值和设计的节点最 大深度);再利用node_risk与regression_accuracy,如 果这个节点的所有训练样本的节点估计值的绝对差小 于这个参数,节点不再进行分裂 cii) 找出最佳分裂best_split = find_best_split(node); aiii) 定义DTreeBestSplitFinder finder( this, node ); biii) parallel_reduce(cv::BlockedRange(0, data->var_count), finder); 此时调用DTreeBestSplitFinder类的操作符 DTreeBestSplitFinder::operator()(constBlockedRange

基于肤色特征的人脸检测技术研究

doi:10.3969/j.issn.1671-1122.2012.07.018 基于肤色特征的人脸检测技术研究 商喜喜1,2,修春波1,2 (1. 天津工业大学电气工程与自动化学院,天津 300387; 2. 天津工业大学电工电能新技术天津市重点实验室,天津 300387) 摘 要:文章提出一种多人脸图像中人脸检测与定位方法,将图像从RGB色彩空间转换到YCrCb 色彩空间中,根据肤色点在CrCb空间中的分布情况进行肤色点检测,并滤除肤色检测后的孤立噪声, 利用势函数方法获得人脸候选区域。然后,根据人脸的结构特征对候选区域进行人脸区域的判别和定位, 最终实现图像中多人脸的检测功能,并通过仿真实验证明了该方法的有效性。 关键词:人脸检测;肤色;势函数;色彩空间 中图分类号:TP393.08 文献标识码:A 文章编号:1671-1122(2012)07-0064-02 Face Detection based on Skin Color SHANG Xi-xi1,2, XIU Chun-bo1,2 ( 1. School of Electrical Engineering and Automation, Tianjin Polytechnic University, Tianjin 300387, China; 2. Key Laboratory of Advanced Electrical Engineering and Energy Technology, Tianjin Polytechnic University, Tianjin 300387, China ) Abstract: A face detection and location method is proposed to ? nd multiple faces in a image. The image is change from RGB color space to YCrCb color space. The skin pixels can be detected according to their distribution in YCrCb color space. And isolated noise point can be ? ltered. The possible face areas can be determined by the potential function method. The face areas can be determined according to the face structural characteristic from the possible face areas. Thus, multiple faces detection can be realized. Simulation results prove it’s valid. Key words: face detection; skin color; potential function; color space 0 引言 人脸检测是模式识别与机器视觉领域的重要研究内容之一[1-3],是实现人脸自动识别的第一步,在人脸识别、视频会议、智能监控系统以及人机交互和医疗诊断等领域具有重要的应用价值[4-7]。目前,人脸检测的常用方法有基于特征的方法、基于统计的方法、基于知识的方法以及基于模板匹配的人脸检测方法等[8-11]。基于知识的检测方法通常具有较快的检测速度,但不适用于多姿态的人脸检测。基于模板的人脸检测方法稳定性较高,检测结果具有良好的鲁棒性,但计算量较大,检测速度不高。基于特征的方法是在检测区中需找人脸特征,以此来确定人脸的位置,这种方法可处理较大尺度和视角变化的人脸检测问题。但由于光照和噪声的影响,很难存在相对稳定的特征,从而影响了该类方法的应用效果。基于统计的方法通常具有较大的计算量,而且在样本采集以及训练过程中都存在着一定的困难,因此限制了这类方法的使用范围。 本文结合势函数模式识别方法以及肤色检测方法,提出一种新的人脸检测方法,能够较快、较准确地完成多图像的人脸检测功能。 1 肤色检测 首先在给定图像中进行肤色检测。RGB色彩空间是最常见的颜色空间。在RGB空间中,色度信息和亮度信息是混合在一起的,不适合于肤色模型。为了增强肤色分割对光照条件变化的鲁棒性,采用亮度信息和色彩信息相分离的YCrCb色彩空间,利用色度和饱和度信息进行判别。RGB空间到YCrCb色彩空间的转换矩阵为: (1) 收稿时间:2012-05-13 基金项目:天津市自然科学基金资助项目[10JCYBJC07500] 作者简介:商喜喜(1978-),男,河北,硕士研究生,主要研究方向:人脸识别;修春波(1978-),男,黑龙江,副教授,博士,主要研究方向:目标识别与跟踪设计。

基于OpenCV的视频人脸识别系统的设计与实现

摘要 基于生物特征识别的身份认证方法和系统研究一直以来都是计算机图形学和模式识别领域研究的热点,其中,由于人脸的稳定性和可见性,针对人脸识别的算法研究和系统应用最为广泛,本文针对校园内实验室和宿舍安全管理需求,设计和实现了一套针对监控视频的基于OpenCV的人脸识别原型系统,开发语言选用C++,全文内容包括: (1)构建了基于OpenCV的视频人脸识别的技术框架。针对实验室和宿舍安全管理需要,构建了基于OpenCV的视频人脸识别的技术框架,能够完成基于视频的实时人脸识别和身份认定; (2)设计了基于OpenCV的视频人脸快速检测算法。人脸检测是人脸识别的前提,本文采用基于OpenCV的快速人脸检测算法实现视频图像中人脸的快速定位和提取; (3)设计了基于AdaBoost算法的视频人脸识别方法。应用AdaBoost算法实现了针对视频流的快速人脸定位和身份识别,能够实现实时身份认定。 系统基于.NET平台设计,使用C++语言进行实现,完成了基于视频的实时人脸身份认定。 关键词:人脸检测; OpenCV;人脸识别; C++; 1

Abstract Based on the research of identity authentication method and system of biometric recognition has been a hot research field of computer graphics, pattern recognition and the stability and visibility, the face, the algorithm research and system applications of face recognition is the most widely, according to the laboratory and dormitory safety management needs of the campus, designed and implemented. A face recognition system based on OpenCV in surveillance video, development language is C++, the main content of this thesis includes: (1)Constructed the technical framework for video based face recognition based on OpenCV. According to the laboratory and the dormitory safety management needs, establishes a framework for video based face recognition based on OpenCV, which can complete real-time face recognition and identity based on video identification; (2)Design of a fast face detection algorithm in video based on OpenCV. Face detection is the precondition of face recognition, this paper uses OpenCV fast face detection algorithm to locate face in video image and extraction based on;The design use application of OpenCV to provide strong support, based https://www.360docs.net/doc/4211995222.html, platform design. (3)Design of video based face recognition method based on AdaBoost algorithm. Application of AdaBoost algorithm for fast face location and recognition of video stream, which can realize real-time identification. System based https://www.360docs.net/doc/4211995222.html, platform design, implementation is carried out using C++ language, completed the real-time face identity recognition based on video Key word:Face detection;OpenCV;Face recognition;C++;

皮肤检测技术

皮肤检测技术 第一节皮肤检测技术相关理论 一、肤色检测技术 肤色检测技术是指在图像中选取对应于人体皮肤像素区域的过程。广泛应用于人脸检测与识别、人脸追踪、面部表情识别、手势识别、互联网色情图像过滤以及基于内容的图像检索等。除此之外,肤色检测技术也可以应用于包括视频监控与检索、皮肤疾病诊断、化妆品效果分析等日常生活领域。由此可见肤色检测技术在理论研究和实际应用中都具有极为重要的研究价值和意义。 皮肤检测技术在以下领域扮演着非常重要的角色: (1)人脸检测 该问题最初作为自动人脸识别系统的定位环节被提出,近年来由于其在安全访问控制、视觉监测、基于内容的检索和新一代人机交互界面等领域的应用价值,开始作为一个独立的课题受到研究者的普遍重视。随着电子商务等应用的发展,人脸识别因为其非接触性的特点而成为最有潜力的生物身份验证手段,这种应用背景要求自动人脸识别系统能够对一般环境图像具有一定的适应能力,由此所面临的一系列问题使得人脸检测开始作为一个独立的课题受到研究者的重视。今天,人脸检测的应用背景己经远远超出了人脸识别系统的范畴,在基于内容的检索、数字视频处理、视觉检测等方面都有着重要的应用价值。 (2)人脸追踪 随着多媒体通信技术的不断发展,各种基于通信新技术的视频产品已经走进了人们的日常生活,不但给人们带来了来极大的方便,还增添了不少乐趣。其中人脸追踪技术就被广泛应用于个人通信、交互娱乐、视讯监控、人机交互等领域。例如将人脸识别与追踪技术应用于数码相机中,可以准确快速地定位相机取景器中的人脸,从而实现对人脸的快速对焦,拍出清晰的人像。该技术通过对摄像头捕获到的人脸图像进行持续的跟踪与验证,不断进行人脸区域的准确性校正,从而实现对人脸的精确定位与比对。这一技术的成功也是基于对皮肤检测的应用。 (3)面部表情识别 面部表情识别系统就是对人脸的表情信息进行特征提取和分析,按照人的认识和思维方式加以归类和理解,利用人类所具有的情感信息方面的先验知识使计

基于AdaBoost算法的人脸检测——赵楠 北京大学

北京大学 本科生毕业论文 基于AdaBoost 算法的人脸检测Face Detection Based on AdaBoost 姓名:赵楠 学号:00105029 院系:物理学院物理学系 指导老师:查红彬教授 导师单位:视觉与听觉信息处理国家重点实验室 信息科学技术学院智能科学系

北京大学本科生毕业论文 二○○五年六月 摘要 Abstract 人脸检测是人脸分析的首要环节,其处理的问题是确认图像(或影像)中是否存在人脸,如果存在则对人脸进行定位。人脸检测的应用领域相当广泛,是实现机器智能化的重要步骤之一。 AdaBoost 算法是1995 年提出的一种快速人脸检测算法,是人脸检测领域里程碑式的进步,这种算法根据弱学习的反馈,适应性地调整假设的错误率,使在效率不降低的情况下,检测正确率得到了很大的提高。 本论文第一章和第二章简述了人脸检测的一般情况,第三章对一些人脸检测的经典方法进行了说明。 第四章讲述了AdaBoost 算法的发展历史。从PCA 学习模型到弱学习和强学习相互关系的论证,再到Boosting 算法的最终提出,阐述了Ada ptive Boost ing 算法的发展脉络。 第五章对影响AdaBoost 人脸检测训练算法速度的至关重要的两方面:矩形特征和积分图的概念和理论进行了仔细的阐明。 第六章给出了AdaBoost 的算法,并深入探讨了其中的一些关键问题——弱学习器的构造、选取等问题。

最后一章,用编写的实现了AdaBoost 算法的FáDèt程序,给出了相应的人脸检测实验结果,并和Viola 等人的结果做了比较。 关键词Keywords AdaBoost 方法、人脸检测、Boosting 方法、PCA 学习模型、弱学习

人脸检测和识别技术的文献综述

人脸识别技术综述 摘要:在阅读关于人脸检测识别技术方面文献后,本文主要讨论了人脸识别技术的基本介绍、研究历史,人脸检测和人脸识别的主要研究方法,人脸识别技术的应用前景,并且总结了人脸识别技术的优越性和当下研究存在的困难。 关键词:人脸识别;人脸检测;几何特征方法;模板匹配方法;神经网络方法;统计方法;模板匹配;基于外观方法; 随着社会的发展,信息化程度的不断提高,人们对身份鉴别的准确性和实用性提出了更高的要求,传统的身份识别方式已经不能满足这些要求。人脸识别技术(FRT)是当今模式识别和人工智能领域的一个重要研究方向.虽然人脸识别的研究已有很长的历史,各种人脸识别的技术也很多,但由于人脸属于复杂模式而且容易受表情、肤色和衣着的影响,目前还没有一种人脸识别技术是公认快速有效的[1]基于生物特征的身份认证技术是一项新兴的安全技术,也是本世纪最有发展潜力的技术之一[2]。 1. 人脸识别技术基本介绍 人脸识别技术是基于人的脸部特征,一个完整的人脸识别过程一般包括人脸检测和人脸识别两大部分,人脸检测是指计算机在包含有人脸的图像中检测出人脸,并给出人脸所在区域的位置和大小等信息的过程[3],人脸识别就是将待识别的人脸与已知人脸进行比较,得

出相似程度的相关信息。 计算机人脸识别技术也就是利用计算机分析人脸图象, 进而从中出有效的识别信息, 用来“辨认”身份的一门技术.人脸自动识别系统包括三个主要技术环节[4]。首先是图像预处理,由于实际成像系统多少存在不完善的地方以及外界光照条件等因素的影响,在一定程度上增加了图像的噪声,使图像变得模糊、对比度低、区域灰度不平衡等。为了提高图像的质量,保证提取特征的有有效性,进而提高识别系统的识别率,在提取特征之前,有必要对图像进行预处理操作;人脸的检测和定位,即从输入图像中找出人脸及人脸所在的位置,并将人脸从背景中分割出来,对库中所有的人脸图像大小和各器官的位置归一化;最后是对归一化的人脸图像应用人脸识别技术进行特征提取与识别。 2. 人脸识别技术的研究历史 国内关于人脸自动识别的研究始于二十世纪80年代,由于人脸识别系统和视频解码的大量运用,人脸检测的研究才得到了新的发展利用运动、颜色和综合信息等更具有鲁棒性的方法被提出来变形模板,弹性曲线等在特征提取方面的许多进展使得人脸特征的定位变得更为准确。 人脸识别的研究大致可分为四个阶段。第一个阶段以Bertillon,Allen和Parke为代表,主要研究人脸识别所需要的面部特征;第二个阶段是人机交互识别阶段;第三个阶段是真正的机器自动识别阶段;第四个阶段是鲁棒的人脸识别技术的研究阶段。目前,国外多所

Adaboost人脸检测算法原理

Adaboost人脸检测算法原理在众多的检测方法中,Viola等提出的Adaboost人脸检测方法,从根本上解决了检测的速度问题,同时有较好的识别效果。它利用一个只有200个关键特征的集合,就能达到95%以上的检测率,检测一幅380×280像素的图像需要时间不到0.7s,这样的性能使它成为人脸检测最好的方法。 Viola人脸检测方法是一种基于积分图、AdaBoost算法和级联检测器的方法,方法框架可以分为以下三大部分: (1)使用特征值表示人脸,使用积分图实现特征数值的快速计算; (2)使用Adaboost算法挑选出一些最能代表人脸的矩形特征(弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器; (3)将训练得到的若干强分类器串联组成一个级联结构的层叠分类器,级联结构能有效地提高分类器的检测速度。 1特征值和积分图 在一个20×20(或其他大小)的图片提取一些简单的特征,并计算其特征值(如图1),方法是将白色区域内的像素和减去黑色区域。对于一些优势矩形特征来说,在人脸与非人脸图片的相同位置上,特征值的大小是不一样的,这些特征可以用来区分人脸和非人脸。 图1 一些矩形特征 图2是大部分矩形特征对人脸与非人脸样本的特征值分布曲线。大部分特征对人脸和非人脸样本的特征值为0的点几乎处于相同位置(46.5%,51.5%),且都在所有特征的中间范围。 这说明该矩形特征对于人脸和非人脸几乎没有分辨能力。

图(a)人脸图像特征值分布 图(b)非人脸图像特征值分布 图2 大部分矩形特征对人脸和非人脸图像的特征值分布曲线图3是少数矩形特征对人脸与非人脸样本的特征值分布曲线。对于非人脸样本的分布,特征值为0的点处于所有特征的中间范围(59.4%),这说明该特征也“看不到”非人脸的特点。 但是对于人脸样本,该特征表现了很一致的倾向性,93.4%的特征在0点的一侧,与非人脸样本的相差34%。 这说明该特征能够分辨人脸和非人脸。

《基于 OpenCV的人脸识别系统》

西安电子科技大学 人工智能学院暑期夏令营科研实践《基于OpenCV的人脸识别系统》 实践报告 姓名:XXX 学校:XXXX 院系班级:XXXXXXXXX 联系方式:XXXX

目录 1 项目背景 (1) 2 项目目标 (1) 3 项目方案 (2) 3.1 人脸采集 (2) 3.2 人脸训练 (3) 3.3 人脸识别 (4) 4 项目调试 (6) 4.1 采集调试 (6) 4.2 训练调试 (6) 4.3 识别调试 (7) 5实践总结 (8)

如何创造一个安全的、数字现代化的、智能化的宿舍门禁系统有着十分重要的意义。然而,在日常管理中我们经常会碰到这样的问题:外来人员混入宿舍带来的安全隐患、夏天未带校园卡而在公寓楼前苦等、宿舍出入口必须有人盯守、晚归被困公寓楼外等等。 在当今计算机普及与急剧增长的状况下,应该实施一些高效率的系统,不仅省钱,省事,而且便捷,针对以上情况,十分有必要建立一个全面、高效、人性化、智能的高校宿舍出入管理系统。 因此,做一个人脸识别系统就非常地有必要! 2 项目目标 本项目拟完成人脸采集、人脸训练和人脸检测与识别的功能。 人脸采集程序主要完成以下功能: 1. 建立新的文件夹:用户根据提示输入自己姓名的简称,程序会在工程目录下建立该用户的文件夹,用以存放拍摄的照片; 2. 打开摄像头和写入图像:调用笔记本摄像头,当P键按下时,显示当前帧的图像,经处理后,保存图像;当q键按下时,立即退出采集程序 3. 人脸检测与裁剪:在当前帧识别出人脸后将其裁剪至ORL人脸数据 库大小即92x112。 人脸训练程序主要完成以下功能: 1. CSV文件读取:CSV文件对应的图像数据和对应的标签; 2. 样本训练:包括ORL人脸数据库的样本和自己的样本。 人脸训练样本取自ORL人脸数据库,共40个人,每人10张照片。照片在不同时间、不同表情(睁眼闭眼、笑或者不笑)、不同人脸细节(戴眼镜或者不戴眼镜)下采集,所有的图像都在一个黑暗均匀的背景下采集的,正面竖直人脸(有些有轻微旋转)。此外,增加自己的样本,并以相同尺寸拍摄20张左右图像。 人脸识别与检测程序主要完成以下功能: 1. 人脸检测:识别出当前帧是否有人脸; 2. 人脸预测:根据训练结果判断当前帧中人脸是否属于样本集; 3. 姓名显示:若属于样本集则显示姓名缩写,否则,显示“0”。

相关文档
最新文档