




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 生 毕 业 设 计(论文)(2012届)信息工程学院 题 目:基于Adaboost的人脸检测研究 学 号:200805070323 姓 名: 专业班级: 指导教师:职称: 2012 年 5 月 27日本科生毕业设计(论文)诚信承诺书 我谨在此承诺:本人所写的毕业设计(论文)基于Adaboost的人脸检测研究均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了引用注释,如出现抄袭及侵犯他人知识产权的情况,后果由本人承担。 承诺人(签名): 2012 年 5 月 25日基于Adaboost的人脸检测研究 摘要:本文使用Adaboost算法,以Visual C+集成开发环境做平台并利用OpenCV图像处理软件实现了人脸检测功能。论文介绍了几种常见的人脸检测识别方法以及国内外人脸检测技术研究的发展现状,详细阐述了Adaboost人脸检测算法的原理及训练流程,利用OpenCV图像处理软件与Adaboost人脸检测算法的结合模块,选取扩展的Haar特征,实现了人脸检测功能并给出了检测结果。该方法具有较高的准确度和实时性,在自动人脸识别、智能人机交互、图像与视频检索和监控等方面有着重要的应用价值。 关键字:Adaboost算法; OpenCV; 人脸检测Face detection research based on Adaboost Abstract: This article is using Adaboost algorithm, OpenCV image processing software and Visual C + + integrated development environment as a platform, achieving a face detection function. This paper introduces several common face detection methods and development status of domestic and international face detection technology, elaborating on the Adaboost face detection algorithm principle and training processes,using OpenCV image processing software combined with Adaboost face detection algorithm modules, selecting the extended haar features,achieving face detection and giving results of the test. This method is accuracy and real-time, having important applications in automatic face recognition, intelligent man-machine interaction, image and video retrieval and monitoringkeyword: Adaboost algorithm, OpenCV, Face detection目 录摘要:IAbstract:II1、绪论 1 1.1 人脸检测研究的提出及背景1 1.2 国内外人脸检测的研究现状1 1.3 本文研究的目的与意义2 1.4 本文研究的主要内容与组织结构21.4.1 主要内容21.4.2 组织结构32、人脸检测方法与分析4 2.1 基于特征的人脸检测方法4 2.1.1 轮廓规则法4 2.1.2 器官分布法5 2.1.3 颜色纹理法5 2.1.4 对称性规则4 2.1.5 运动规则法5 2.2 模板匹配方法5 2.2.1 镶嵌图法4 2.2.2 预定模板匹配法5 2.2.3 变形模板法5 2.3 基于统计的方法5 2.3.1 人工神经网络法4 2.3.2 特征空间法5 2.3.3 支持向量机法5 2.3.4 概率模型法4 2.3.5 基于积分图像特征法5 2.4 结束语53、Adaboost 算法在人脸检测中的应用5 3.1 Adaboost算法简介6 3.2 Adaboost的原理6 3.2.1 基本原理73.2.2 具体步骤74、OpenCV图像处理软件的介绍8 4.1 OpenCV简介8 4.1.1 OpenCV的基本概念及应用领域12 4.1.2 OpenCV的优势及项目历史12 4.2 OpenCV在Visual C+ 6.0下的安装与配置144.2.1 OpenCV的安装154.2.2 配置Windows环境变量154.2.3 配置Visual C+ 6.0155、人脸检测功能的实现19 5.1 Harr特征的提取19 5.2 积分图20 5.3 Adaboost人脸检测方法22 5.4 利用OpenCV实现Adaboost算法的人脸检测225.4.1 OpenCV中Haar分类器的数据结构235.4.2 OpenCV人脸检测模块及相关函数235.4.3 OpenCV的人脸检测23 5.5 实验结果与分析24 5.6 关键功能实现代码246、结论26参考文献27致谢281 绪论 1.1 问题的提出及研究背景 人脸检测(face detection)最初来源于人脸识别(face recognition)。人脸识别的研究可以追溯到二十世纪六十年代,由于早期的人脸识别研究主要针对背景简单的、静态的人的面部图像,通常这些人脸的方位都很轻松可以捕捉到,所以人脸检测没有得到应有的关注与研究。进入二十一世纪以来,电子商务应用得到大力蓬勃的的发展,最具有代表性的识别验证生物身份的手段?人脸检测,在这种应用背景要求下得到了广大研究人员的关注,成为人脸信息识别、处理中的一种非常重要的手段。近几年来,各领域对生物验证的迫切要求,以及计算机视觉的快速发展,人脸检测逐渐开始作为一项单独的项目进行研究开发,引起了国内外广大的学者、技术科学人员的高度重视。 人脸检测方法和人脸识别技术是两个不同的概念,后者包括前者,人脸检测是人脸识别其中的一个分支。两者的侧重点和解决的手段都不相同。从本质上说,人脸检测是一个2类的分类问题。它的基本思路是先用统计或知识的方法对人脸建模,然后将所有可能需要检测的区域与己经建立好模型的进行相似程度的匹配,从检测结果中得到是人脸特征的区域。与人脸检测相对的是人脸识别,它是n类的分类问题n不是人脸的个数,而是代表图像数据库中人的个数)。人脸识别最终的目的是从大量数据库中搜索出检测到的对应的人脸,看是否在人脸数据库中,具体是那个人。 现在,人脸检测的应用背景已经远远超出了人脸识别系统的范畴,在基于内容的检索、数字视频处理、视频监测等方面有着重要的应用价值1。 1.2 国内外人脸检测的研究现状 直到二十世纪末,人们才把对人脸图像的研究从人脸识别领域转移到人脸检测的领域上来。到目前为止,国内外对人脸检测问题的研究有很多,外国比较著名的有MIT,CMU等;在国内,清华大学、北京工业大学、中科院计算所和自动化所等都有研究者从事人脸检测相关的研究2。而且,标准组织MPEG7已经成立了人脸识别草案小组,人脸检测算法也是其中一项征集的内容。随着人脸检测研究的深入,国际上发表的有关论文数量也大幅度增长,如IEEE的FG、ICIPCVPR等重要国际会议上每年都有大量关于人脸检测的论文,占有关人脸研究论文的1/3之多。由此可以看到世界对人脸检测技术的重视3。 早期人脸检测方法往往针对简单无变化背景下的正面人脸检测,所以使这些方法在很大程度上显得很有局限性。 直到二十世纪九十年代,随着实际的人脸识别和视频编码系统开始成为现实,这种情况才有所改变。在过去的十多年里,研究者提出了多种检测方法,特别是那些利用运动、肤色、示例学习、统计模型、形状分析和一般信息的方法统计和神经网络方法的使用也使在复杂背景和多分辨率中的人脸检测成为可能。 近期人脸检测的研究主要集中在基于数据驱动的学习方法,如统计模型方法,彩色信息,神经网络学习方法,支持向量机、多模态信息融合新分类方法的应用4等。 目前,国内外对人脸检测的研究很多,每年都有大批的研究论文出现,但是由于人脸的复杂多样,而生物科学上对人类视觉理解的研究还不够透彻,至今仍然没有彻底的解决这个问题。 1.3 本文研究的目的与意义 人脸检测的目的是确定图像中是否有人脸,如果有人脸,则返回人脸在图像中的位置和范围。人脸检测是人脸识别的基础,我们只有检测出图像中人脸的位置和大小,才能对其进行近一步的识别。 随着人机交互和人工智能技术不断的发展,各个领域对实时迅速自动验证身份的要求愈来愈强烈。尤其是视频会议、人机交互、门禁控制、家庭娱乐以及信息安全等场合。人脸作为最关键的生物象征,成为了验证身份最权威的参考依据。当今社会有很多生物识别技术,比如视网膜识别,虹膜识别,步态识别,声音识别,人脸识别,指纹识别等等,而人脸识别更形象,更迅速,更直接有效,其中人脸检测是人脸识别的先决条件,所以必须加以重视,需要投入更多的人力,财力加以研究开发。 1.4 本文研究的主要内容与组织结构 1.4.1 主要内容 本论文研究的是基于AdaBoost算法,在windows平台下,利用Intel开发的OpenCV图像处理软件结合VC中的MFC实现的人脸检测方法,第一步利先训练出大考量的简单的分类器,接着根据一定规则,选取有用的分类器,叠加起来组成一个能力更强的强分类器,最后通过把几个强分类器组成一个终极分类器,完成对图像的搜索和检测。此研究过程中采用OpenCV库编写程序实现人脸检测的算法。 本文作者创新点是用VC 结合MFC和OpenCV对图像进行处理,用于检测人脸。详细介绍了Adaboost人脸检测算法的原理及训练流程.利用OpenCV图像处理软件与Adaboost人脸检测算法的结合模块,选取扩展的Haar特征,实现了人脸检测并给出了检测结果,并对结果进行了分析。 1.4.2 组织结构 本论文的内容一共分为六个章节,具体内容安排如下: 第一章是绪论部分,首先介绍了选题背景,然后分析了人脸检测国内外研究的的现状。接着总结了本文研究人脸检测的目的、意义、主要内容和本文的组织结构。 第二章是介绍人脸检测的方法。 第三章是介绍Adaboost算法在人脸检测中的应用。 第四章是OpenCV图像处理软件的介绍,包括OpenCV的基本概念、应用领域、优势及项目历史和OpenCV在VC6.0下的安装与配置。 第五章是人脸检测系统的实现,展示了功能实现后的具体式样(附图片)以及对研究结果的分析。 第六章是结论。 最后是参考文献,包括相关参考文献列表及对老师和同学的衷心感谢等相关内容。 2 人脸检测方法与分析 本文对人脸检测的方法进行了整理和归纳,大致分为三类:基于特征的方法,模板匹配方法和基于统计的方法,并对这些方法做了简单的分析。 图 2-1 人脸检测方法分类图 2.1 基于特征的人脸检测方法 这里所说的基于特征的人脸检测方法是指人眼可以看见的特征,这些特征都是显而易见的,比如说头发、皮肤颜色、脸型、轮廓、眼睛、鼻子、嘴巴、耳朵等器官特征等。利用这些最具代表性的结构特征对人脸进行检测。 2.1.1 轮廓规则法 人的面部轮廓好像一颗鹅蛋,也可看成几何图形中的椭圆,所以检测算法可以通过寻找一个椭圆形来进行人脸检测。Govindaraju等人根据脸部轮廓特征,抽象的把人脸简单分为三个部分:第一部分,头顶及额头,算第一层轮廓线,以鼻子为分界线,将左脸和又脸分别分为第二层和第三层轮廓线。我们随便给出的任何一幅图像,第一步对图片进行预处理,首先是边缘检测,细化后,提取得到面部曲线的特征,接着用提取的曲线特征与封装好的函数进行匹配,检测人脸。 2.1.2 器官分布法 每个人都是独立的个体,即使是双胞胎,细细观察也总存在不同之处。而且人的五官分布结构遵循了一定的几何规则。这种方法采用的规则有两种:第一种是“从上到下”, 在这种规则中Yang等人提出的Mosaic方法是最为简单和有效的,它给出了基于人脸区域灰度分布的规则,根据这些规则,按照低分辨率到高分辨率对这些图片进行一一筛选,如果样本在一定程度上满足了这些规则,则可以判断为人脸。第二种方法则是“从下到上”,第一步直接对几个器官可能分布的位置进行检测,接着分别组合组合这些检测到的位置点,再根据已有的器官几何分布规则逐个对其进行挑选,剔除非人脸,筛选出有可能是人脸的样本。 2.1.3 颜色纹理法 人脸面部皮肤颜色信息跟大部分背景颜色在很大程度上有所不同,可以根据这个差别将人联合非人脸进行区别。基于肤色模型算法有很多优点:比如算法相对比较简单、计算量小、易于实现、检测时间短等。由于只要考虑色度,所以不需要考虑人的面部表情、姿态等,只要根据肤色因素,不需要把其他方面考虑在内,很大程度上简化了检测过程。此方法比较有名的代表人物有Dai和Saber,前者利用了SGLD(空间灰度共生矩阵)纹理图信息作为特征5,可以对低分辨率的图像进行人脸检测。而Saber则是综合形状、颜色等因素,对人脸进行检测,显然后者考虑的因素更全面。 2.1.4 对称性规则 人的脸部结构具有一定的几何特点即轴对称性,以鼻子为分界线,两只眼睛、耳朵、左右脸颊等器官也是对称的。所以很多研究者利用人脸的这个特点,成功检测出了人脸。这里比较著名的有卢春雨和Zabrodsky等人,卢春雨在各个不同方向上对人脸考察对称性,我们称之为定义方向上的对称变换,这种方法既可以找到最强的对称点,又可以描述出对称性强的物体的有关形状信息,这种方法对人脸器官定位更为有效和准确。Zabrodsky提出的方法叫做连续对称性法,在一个圆形区域内的对图片进行对称性的检测,根据检测结果判断是否为人脸。 2.1.5 运动规则法 我们可以利用相对运动法来检测人脸。如果加载的图像是动态的序列,人脸相对于背景是运动的,我们可以根据这种方法来对人脸进行检测,比如我们可以根据眨眼或嘴唇等动作来将背景和人脸的区分开来。Marques基于动态图像序列,分别使用分割投影和连接算子方将人脸和背景分割开来,并取得了令人满意的检测结果。上述的这些方法都是利用到已经存在的的人脸特征信息,然后根据规则找到每一个分布特征之间的相互的联系,最后进行人脸特征的的提取。 2.2 模板匹配人脸检测方法 这种方法需要大量的人脸特征作为数据库,首先在计算机中存储大量的人脸模板,包括正面人脸和五官等比如眼睛、鼻子、嘴唇、耳朵等。然后输入待测图像,根据算法将待测图与标准模板进行的相似程匹配,达到一定相似度以上及判断为人脸,否则为非人脸,这种方法需要的数据量比较大,需要大量存储人脸和非人脸模型,对数据库要求比较高。 2.2.1 镶嵌图法 此方法是将待测图像分割成方格图,每个方格大小要一样,每一个方格的灰度值为格中各个像素的平均值。每个格子的值应该满足的一定的约束规则。以Yang为代表的一些研究者把五官区分割成小方格块,然后利用一组规则进行人脸检验,接着使用边缘特征进行再次验证。卢春雨等人改善了镶嵌图法,在检测中自动调整各方格块的大小,使用一组基于各方格块的灰度和梯度,对人脸特征进行统计,判断待测图像是否为人脸,实验结果相当令人满意。 2.2.2 预定模板匹配法 这种方法是用已有的知识知识确定出人脸轮廓模板和每一个器官特征的子模板,第一步通过计算分析待测图像,选定区域和人脸轮廓模板,用相关值匹配方法来来对人脸候进行候选区域检测,第二步用已有的五官特征子模板来对前面检测出来的候选人脸区域进行检测,检测待测图像是否包含人脸。这种方法比较著名的有“双眼一人脸”法,将人的眼睛从模板中裁剪出来,过滤波形时首先先使用双眼模板规则,然后再采用人脸匹配模板,这样使匹配速度大大的提高,而且检测性能也非常高。另一种思路是先得到人脸轮廓,接着与人脸库进行相关值匹配,找到合适的人脸模板。 2.2.3 变形模板法 这种方法是结合模板和函数来对人脸进行检测的,利用一个非线性方法,找到最优的,函数方法最简单的参数作为模板,这个人模板就被当做是人脸特征。著名的Yullie则根据此方法,使用弹性模板的方法对人脸进行检测。使用这种方法,可以随意的调整参数,当找到一个关于此函数的最小值的情况下,根据人脸位置和调整模板参数,使模板中的人脸与待测图像中的人脸最大程度的匹配,从而实现人脸特征的检测。 2.3 基于统计的人脸检测方法 所谓统计,就是从大量的人脸特征中寻找一些特定的规律,不是单单从单一的器官出发,而是着眼于整个人脸特征。然后利用这些规律使用到检测人脸中。此方法的核心是训练一个训练集,然后建立一个分类器,训练集是从大量的非人脸与人脸图像得到的,然后根据这些样本建立一个正确率较高的分类器。这种方法的好处是不需要人为的对人脸分析,也不需要对图片进行处理,检测时只需要用扫描仪对图片进行扫描,然后分类器判断是否存在人脸。 2.3.1 人工神经网络法 CMU的Rowley对于这种方法具有很大的贡献,这种方法是把统计得到的人脸特征通过一定形式隐藏在函数和网络框架之中,最终得到一个网络结构。这种方法的优势在于可以描述复杂的、难以显示的特征。 2.3.2 特征空间法 以Turk为代表的研究人员提出使用DFFS距离度量概念,然后将人脸空间的距离与待测图像进行比较,通过把人脸区域变换到某一个特征的空间,采用主分量分析的方法。根据特定空间的特定规律来划分人脸和非人脸。 2.3.3 支持向量机法 SVM(Support Vector Machine)是一种新的检测人脸的方法,这种方法首先是由Osuna提出的6。它是依据与统计学发展而来的,提到这种方法前,必须先介绍下人工神经网络法,人工神经网络法是一种基于经验风险最小化的方法,不过它很难解决一些技术性的问题,比如极小局部点问题、过度学习和模型选择问题、维数灾难和非线性问题,而SVM方法可以很好地解决这些问题首先是搜索大量的人脸样本,然后用和“自举”的方法得到一些的“非人脸”特征,训练出样本。 2.3.4 概率模型法 Schneiderman等人首先提出了一种基于后验概率估计的检测方法。这种方法的思想是计算机计算待测图片区域(region),然后得到属于人脸特征object的后验概率P(object/region,根据概率对所有可能是人脸的的图像窗口进行判断。另外一种概率模型是应用隐马尔可夫模型Hidden Markov Models, HMM。这种方法方法主要用来检测脸部和肩部的图像。 2.3.5 基于积分图像特征法 基于积分图像特征法是由Viola等人所提出的这种方法结合了Adaboost学习算法、积分图和分类器还有训练方法等。这种方法一般用于照片的预处理。 2.4 结束语 由于人脸自身的多变性与环境的复杂度,至今仍然没有一种统一权威的的人脸检测方法,研究者只能通过结合多种混合的检测方法来提高检测的正确率,而提高检测率的同时带来的反作用则是检测速度的放慢,所以要研究出一项正确率高,检测速度快的实时人脸检测方案成为现在亟待解决的问题。3 Adaboost算法在人脸检测中的应用 3.1 Adaboost算法简介 Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器弱分类器,第二步是结合这些弱分类器来,利用这些弱分类器建立一个强分类器。通过变换数据,对每一次训练出的训练集中的样本进行分类,根据正确率,得到权重。然后将得到的权重发送给下一级分类器,集合每一次正确检测样本的分类器建立一个最终的强分类器。使用Adaboost算法的优点是可以把重点放在有用的数据上,而不用着眼于那些影响检测结果的数据上。使用Adaboost分类器可以排除一些不必要的训练数据特征,并将关键放在关键的训练数据上面。 Michael Jones和Paul Viola在2001年提出了Adaboost人脸检测算法7,此算法的核心思路是分类器的训练和选择。刚开始每一个样本的权值是相等的,用h1进行第一次分类,错误的,增加样本的权值,正确的样本,减小其权值。然后得到新的样本U2。然后进行第二次分类,训练得到h2弱分类器。按照这种方法,循环T次,得到了T个弱分类器,把这些分类器的权值叠加起来,建立一个强的分类器。AdaBoost算法训练过程就是要找到最佳的Harr特征,然后训练出分类器,对人脸进行检测。 本论文将训练过程分成以下几个步骤:第一步:首先输入样本集,利用给定的矩形特征,计算出样本特征,并得到矩形特征集;第二步:输入上一步得到的特征集,采用弱学习算法,得到一个阀值,把弱分类器与特征逐一对应起来,得到一些弱分类器集;第三步:输入第二步的弱分类器集,利用正确率和错误率,根据AdaBoost 算法选择最佳的弱分类器建立最终的强分类器;第四步:输入上一步的强分类器,把这些强分类器组合成级联分类器;第五步:输入不是人脸的照片,把强分类器作为临时的级联分类器,筛选并补充非人脸样本,得到新的样本。下图为系统训练框架图:图3-1 训练系统框架图 训练的样本必须是人脸特写,但是人脸姿态千变万化,这就要求我们在样本的选择过程中尽可能地做到广泛。非人脸样本的选择有很多种。 样本训练步骤分为三步:第一步Haar特征的提取;第二步把Haar特征与弱分类器相互对应起来;第三步挑选出最优的弱分类器。 1 Haar特征的提取 图3-2 常用的四种Haar特征8 常用的Haar特征有4种,如图3-2所示。除了这四种常见的特征,我们也可以设计出更多的特征。训练样本的像素(2424),以上四种特征所达到的个数为160000个以上。这么多的数据,就要求我们更加庞大的计算任务,所以AdaBoost算法训练过程非常的费时间,这也正是我们以后研究需要改进的问题。 2弱分类器的生成 在AdaBoost算法中,我们训练出的弱分类器可以是任何类型的,可以是基于决策树,基于隐马尔科夫模型,也可以是基于神经网络,比如说弱分类器是基于线性神的网络结构模型,那么就要求AdaBoost算法每次都要建立多层感知器节点。每一个弱分类器都对应Harr特征,并且都是根据它所对应的Haar特征的参数来定义的。根据前面所说的Haar特征的区域信息,然后统计训练样本就能够得到相应特征的参数。 3利用AdaBoost算法选取优化的弱分类器 我们所说的AdaBoost算法,就是在训练过程中筛选出最佳的弱分类器,并且要给出计算权值的过程,如下图所示:图3-3 AdaBoost算法训练示意图 主要解决的问题:目前,人们对AdaBoost算法的研究和应用领域,主要在分类器的研究问题上,人们对Adaboost算法的研究带来了很多实际效果,解决了很多问题:比如分类问题、多类型单一标签和多标签多类问题等等。 分析过程:Adaboost算法就是采用循环多次的训练,不断强化分类器对数据分析的能力,简单地说就是不断强化简单分类器,最终建立一个强大的分类器的过程,其步骤在下面给出: 第一步:对多个样本进行训练。建立第一个简单分类器,第二步是对第一步检错的样本进行训练建立第二个简单分类器 ,第三步是将前两步检测错误的样本训练得到下一个分类器,最后是训练出强分类器。 Adaboosting算法有两大问题需要解决: 一是怎样挑选训练集以及训练集的大小;二是怎样组合弱分类器,使它们建立成一个强的分类器。 通过对上面两个问题的研究,我们改善了Adaboost算法: 第一步对训练样本进行加权,筛选出较复杂的训练样本,这样问题就比较有针对性;第二步根据权值对分类器进行分类,权重大的分类器效果比较好,反之亦然。 根据在线分配算法Schapire和Freund提出了Adaboost算法,对Adaboost算法做了深入的研究,比如检错率和最优迭代次数问题9。这种方法与Boosting算法是不一样的,Boosting算法必须要知道弱分类器的误差即正确率和错误率,而Adaboost算法不需要,Adaboost算法是根据计算每个样本的权重最终建立强分类器的。刚开始每一个样本的权值是相等的,用h1进行第一次分类,错误的,增加样本的权值,正确的样本,减小其权值。然后得到新的样本U2。然后进行第二次分类,训练得到h2弱分类器。按照这种方法,循环T次,得到了T个弱分类器,把这些分类器的权值叠加起来,建立一个强的分类器。Adaboost算法训练过程就是要找到最佳的harr特征,然后训练出分类器,对人脸进行检测。 Adaboost算法的详细过程如下: 1. 给定训练样本集S,其中X和Y分别对应于人脸样本和非人脸样本;T为训练的最大循环次数; 2. 初始化样本权重为1/n ,即为训练样本的初始概率分布; 3. 第一次迭代: 1) 训练样本的概率分布相当下,训练弱分类器; 2) 计算弱分类器的错误率; 3) 选取合适阈值,使得误差最小; 4) 更新样本权重值; 4.经T次循环后,得到T个弱分类器,按更新的权重叠加,最后建立强分类器。 根据Boosting算法Adaboost算法做了很大的调整,Adaboost算法可以对弱学习获得的简单分类器的错误进行一定的调整。一共循环了T次,每一次都要重新计算权值,根据权值重新划分样本,接着根据这个样本分布对这个分布下的样本使用弱学习算法得到建立一个一个弱分类器,每次迭代,对权重更新一次,采用的方法是:效果好的弱分类器减小其权值,效果差的弱分类器提高其权值。最后根据这些弱分类器的权值,求平均得到最终强分类器。 3.2 Adaboost算法的原理 3.2.1 Adaboost算法基本原理 Adaboost是一种迭代算法,上一章已经有所描述。这种方法的关键思路是是针对同一个训练集训练不同的分类器弱分类器,再把这些分类器组合起来,建立一个强分类器。 通过对每一个样本集权值的改变得到新的训练集。起先每一个样本具有相同的权值,训练得到第一个弱分类器。加大检测错误样本的权重,减小分类正确样本的权值,这样就得到了一个在新的样本,然后多次循环,在循环T次后,得到T个弱分类器,最后根据一定规则把这T个弱分类器的权重叠加起来,得到最终的强分类器。 3.2.2 Adaboost算法的具体步骤 设输入的n个训练样本为:(x1,y1),(x2,y2),L,(xn,yn),其中xi是输入的训练样本,yi属于0,1,分别表示正样本和负样本,其中正样本数为L,负样本数m,nl+m,具体步骤如下10: 对每个样本的权重wi初始化,i属于D(i); 对每个t1,L,T (T为弱分类器的个数); 把权重归一化为一个概率分布(1) 对每个特征,训练一个弱分类器hj计算对应所有特征弱分类器的加权错误率(2) 选取最佳的弱分类器ht 最小错误率: 按照这个最佳弱分类器,调整权重(3),其中,表示被正确地分类;,表示被错误地分类 最后的强分类器为:(4), (5) 随着算法的发展,目前Adaboost算法被广泛的应用在人脸检测、目标识别等领域,尤其在对人脸识别、汽车识别和驾驶员眨眼识别等方面的研究产生重大的意义。4 Opencv图像处理软件的介绍 4.1 OpenCV简介 4.1.1 OpenCV的基本概念及应用领域 (1) 基本概念 OpenCV的全称是:Open Source Computer Vision Library。1999年,Intel建立了OpenCV现在由Willow Garage提供支持11。OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,适用于很多操作系统,比如Linux、Windows和Mac OS。它很高效,包含了很多C函数和少量 C+ 类,而且提供了很多接口,如Python、Ruby、MATLAB等语言,包含了图像处理和智能计算机视觉方面的很多通用算法。 (2) 应用领域:OpenCV的应用领域很广泛。如:人机互动、物体识别、图象分割、人脸识别、动作识别、运动跟踪和机器人等领域。 4.1.2 OpenCV的优势及项目历史 (1) OpenCV的优势 虽然计算机视觉不断发展,但到现在仍然没有标准API,而现在的关于计算机视觉软件有很大的缺陷:第一是软件代码运行慢,不稳定,而且与别的库不能兼容;第二以Halcon, Matlab Simulink为例,消耗很高的商业成本;第三对硬件有较高的依赖性。建立标准的API便可以简化并解决这些问题。 OpenCV图像处理软件一直为成为这样的标准API而不断努力12。OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。下图为OpenCV与现在其他主流视觉函数库的性能比较。图4-1 为OpenCV与现在其他主流视觉函数库的性能比较图 (2) OpenCV的项目历史 1999年1月,CVL项目启动。主要研究目标是人机界面问题,可以被UI调用的实时计算机视觉库,为Intel处理器做了特定优化。 2000年6月,发布了首个开源版本的OpenCV alpha 3。 2000年12月,发布了适用于linux平台的OpenCV beta 1。在此期间,各种研究仍在继续。 2006年,发布了适用于Mac OS系统的OpenCV 1.0。 2009年9月,OpenCV 1.2(beta 2.0)发布。 2009年10月1日,Version 2.0发布。 2010年12月6日,OpenCV 2.2发布。 2011年8月,OpenCV 2.3发布。 2012年4月2日,发布OpenCV 2.4. OpenCV软件具有涵盖了500 多个C函数的跨平台的中、高层API,而且能够调用某些外部库,但它并不依赖于它们。OpenCV 是完全免费的,它使用类BSDlisence,为Intel Integrated Performance PrimitivesIPP提供了透明接口。此软件的优点是如果有为特定处理器优化的IPP 库,OpenCV可以在运行时自动加载这些库。软件关于视觉处理算法的提供广泛而且丰富,而且部分可以用C语言编写,具有开源性的特征,如果处理得当,可以不用添加新的外部支持,可以独立的对代码进行编译链接并执行,在算法的移植方面,OpenCV也起到很大的作用。可以将代码移植到单片机系统和DSP系统中。 4.2 Opencv在vc6.0下的安装与配置 4.2.1 OpenCV的安装 假如要将OpenCV安装到C:Program FilesOpenCV。在安装时选择“将OpenCVbin加入系统变量”(AddOpenCVbin to the systerm PATH)。(下面附图为OpenCV 1.0安装界面):图4-2 安装目录界面图4-3 添加路径界面 4.2.2 配置Windows环境变量 检查C:Program FilesOpenCVbin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当前Windows用户后重新登陆(或重启)才能生效。下图为启动环境变量界面:图4-4 系统属性启动界面图4-5 添加环境变量界面 4.2.3 配置Visual C+ 6.0(1)系统功能设全局设置13 打开Visual C+ 6.0,选择菜单Tools-Options-Directories:先设置lib路径,选择Library files,在下方填入路径:C:Program FilesOpenCVlib,然后选择include files,在下方填入路径: C:Program FilesOpenCVcxcoreinclude C:Program FilesOpenCVcvauxinclude C:Program FilesOpenCVmlinclude C:Program FilesOpenCVotherlibshighgui C:Program FilesOpenCVcvinclude C:Program FilesOpenCVotherlibscvcaminclude图4-6 添加路径界面然后选择source files14,在下面填入路径信息: C:Program FilesOpenCVcvsrc C:Program FilesOpenCVotherlibshighgui C:Program FilesOpenCVcvauxsrc C:Program FilesOpenCVcxcoresrc C:Program FilesOpenCVotherlibscvcamsrcwindows最后点击“ok”,完成设置。 (2) 项目设置15每次创建一个OpenCV的VC Project,都要给它指定相应的lib。菜单:Project-Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib,也可以只添加需要的lib。5 人脸检测功能的实现 5.1 Harr特征的提取 下图为Rainer Lienhart等人给出了扩展的Haar特征图:图5-1 Harr特征图 我们把Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征16,组合成特征模板。特征模板里包黑色跟白色两种类型的矩形,而且我们规定该模板的特征值等于白色矩形像素和值减去黑色矩形像素和值。我们在确定了特征形式以后,Harr- like特征的数量就取决于训练样本图像矩阵的大小,特征模板在子窗口内任意放置,一种形态称为一种特征,找出所有子窗口的特征是进行弱分类训练的关键和基础。 5.2 积分图 积分图方法是一种快速计算RectSum的方法17。我们对一幅图像的每个象素灰度定义为i x, y ,则该幅图像的积分图中的每个像素值为ii,对于一幅图像在任意点的积分图值,分别对行值和列值的进行累加,通过一次循环得到: s x , y s x , y - 1 + i x , y (6) i i x , y i i x - 1 , y + s x , y (7)其中,s x , y 为点 x , y 所在位置的列积分值,但不包含 x , y 点的值.迭代初始时s x , y - 1 0(8),i i x , y 0(9)。图5-2a中点 x , y 的积分图值为灰色矩形区域的象素灰度值求和.利用积分图可以方便地对图像中任意一个矩形内的灰度值求和,如图5-2b所示:图5-2 点x, y积分图像值和象素灰度值的求和图18 5.3 Adaboost人脸检测算法 Adaboost人脸检测方法过程用到了积分图和级联检测器.此方法的核心:首先训练出大量的简单分类器,这种分类器的分类比较差,然后根据一定规则一叠加boost,最后建立一个强分类器最后这个分类器的分类能力最强.然后再把这些得到的强分类器组合成级联分类器,对图像进行检测. Adaboost算法描述如下:假设有n个训练样本从 x1, y1 到 xn, yn 的训练集,其中yi 0, 1, i 1, 2, , n1和0分别代表真和假.训练集中一共有L个人脸样本和M个非人脸样本,把待测图片分成K个特征,用fj ? 表示,这里1jK。xi代表第i个训练样本, f1 xi , f2 xi , , fj xi , , fk xi为此样本的K个特征的特征值,对每一个输入的特征的特征值fj有一个简单二值分类器。第j个特征的弱分类器由一个指示不等式方向的偏置pj只有1两种情况、一个阈值j和一个特征值fj构成。第j个特征为真,则得到这个样本为真,用hj 1表示,如果是假样本则hj 0。训练就是分析真假样本的过程,筛选出分类检错率最小的T个弱分类器,然后将它们叠加成最后的强分类器。下面是分类器训练过程: (1)初始化训练样本的误差权值,设wt, i为第t次循环中第i个样本的误差权重: 对于yi 1的样本wt, i 1 / 2L ;对于yi 0的样本wt,i 1/2M;for t1, ,T。 (2)对权值进行归一化处理,使得wt, i为wt, iwt, i/ ni 1wt,i;根据每个特征j,训练得到对应的弱分类器,然后得到阈值j和偏置pj,最终使得特征j的误差函数jni 1wt, i| hj xi - yi|经过本次循环达到最小值;从上一步确定的所有弱分类器中找出一个具有最小误差函数的弱分类器ht,其误差函数为t,并把该弱分类器ht加入到强分类器中;更新每个样本所对应的权重,确定的方法为:若第i个样本xi被正确分类,则ei 0;反之ei 1,tt/ 1-t 。 (3) 循环T次后,能够得到由T个弱分类器叠加建立的最终强分类器(4)这里t log 1/t 19。 虽然级数越来越多,但是计算的数据却在减少,系统运行的速度也在提升,其中的原因是:因为将强分类器叠加在一起建立成一个级联分类器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 写景作文秋天的上学路600字7篇
- 农业种植合作社与农户合作协议
- 信息化系统上线与维护指南模板
- 杜甫的诗风与诗史价值:初中九年级语文古诗教学
- 2025年学历类自考房地产法-生产与作业管理参考题库含答案解析(5卷)
- 《包身工》教学设计 2023-2024学年统编版高中语文选择性必修中册
- 2025年学历类自考房地产法-古代汉语参考题库含答案解析(5卷)
- 2025年外科学胰腺癌手术治疗方案考试卷答案及解析
- 四年级数学下册找规律教学方案
- 2025年学历类自考市场营销(三)-生产与作业管理参考题库含答案解析(5卷)
- DBJ08-232-98 道路交通管理设施施工及验收规程
- 起重作业安全知识考核试题(含答案)
- 2024年SHEIN全球化布局与招商政策报告
- 肿瘤化疗静脉护理
- 2024-2025银行信贷员培训计划
- 保密培训课件 银行
- 就业创业政策解读课件
- 2.2 养成亲社会行为 课件+内嵌视频 统编版八年级道德与法治上册
- 2025至2030年中国特种设备检验检测行业市场发展调研及竞争格局预测报告
- 物流公司行业管理制度
- 江苏省苏州市2025届高三上学期开学调研测试语文试题及参考答案
评论
0/150
提交评论