datasheet
超过470,000+ 应用技术资源下载
pdf

基于FPGA的人脸检测系统设计

  • 1星
  • 日期: 2014-03-05
  • 大小: 960.72KB
  • 所需积分:1分
  • 下载次数:1
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 基于FPGA的人脸检测系统设计

人脸识别技术继指纹识别、虹膜识别以及声音识别等生物识别技术之后,以其独特的方便、经济及准确性而越来越受到世人的瞩目。作为人脸识别系统的重要环节—人脸检测,随着研究的深入和应用的扩大,在视频会议、图像检索、出入口控制以及智能人机交互等领域有着重要的应用前景,发展速度异常迅猛。 FPGA的制造技术不断发展,它的功能、应用和可靠性逐渐增加,在各个行业也显现出自身的优势。FPGA允许用户根据自己的需要来建立自己的模块,为用户的升级和改进留下广阔的空间。并且速度更高,密度也更大,其设计方法的灵活性降低了整个系统的开发成本,FPGA 设计成为电子自动化设计行业不可缺少的方法。 本文从人脸检测算法入手,总结基于FPGA上的嵌入式系统设计方法,使用IBM的Coreconnect挂接自定义模块技术。经过训练分类器、定点化、以及硬件加速等方法后,能够使人脸检测系统在基于Xilinx的Virtex II Pro开发板上平台上,达到实时的检测效果。本文工作和成果可以具体描述如下: 1. 算法分析:对于人脸检测算法,首先确保的是检测率的准确性程度。本文所采用的是基于Paul Viola和Michael J.Jones提出的一种基于Adaboost算法的人脸检测方法。算法中较多的是积分图的特征值计算,这便于进一步的硬件设计。同时对检测算法进行耗时分析确定运行速度的瓶颈。 2. 软硬件功能划分:这一步考虑市场可以提供的资源状况,又要考虑系统成本、开发时间等诸多因素。Xilinx公司提供的Virtex II Pro开发板,在上面有可以供利用的Power PC处理器、可扩展的存储器、I/O接口、总线及数据通道等,通过分析可以对算法进行细致的划分,实现需要加速的模块。 3. 定点化:在Adaboost算法中,需要进行大量的浮点计算。这里采用的方法是直接对数据位进行操作它提取指数和尾数,然后对尾数执行移位操作。 4. 改进检测用的级联分类器的训练,提出可以迅速提高分类能力、特征数量大大减小的一种训练方法。 5. 最后对系统的整体进行了验证。实验表明,在视频输入输出接入的同时,人脸检测能够达到17fps的检测速度,并且获得了很好的检测率以及较低的误检率。

上海交通大学 硕士学位论文 基于FPGA的人脸检测系统设计 姓名:徐淑峰 申请学位级别:硕士 专业:软件工程(集成电路设计) 指导教师:付宇卓 20080101 上海交通大学工程硕士学位论文 摘要 基于 FPGA 的人脸检测系统设计 摘要 人脸识别技术继指纹识别、虹膜识别以及声音识别等生物识别技术 之后,以其独特的方便、经济及准确性而越来越受到世人的瞩目。作 为人脸识别系统的重要环节—人脸检测,随着研究的深入和应用的扩 大,在视频会议、图像检索、出入口控制以及智能人机交互等领域有 着重要的应用前景,发展速度异常迅猛。 FPGA的制造技术不断发展,它的功能、应用和可靠性逐渐增加, 在各个行业也显现出自身的优势。FPGA允许用户根据自己的需要来 建立自己的模块,为用户的升级和改进留下广阔的空间。并且速度更 高,密度也更大,其设计方法的灵活性降低了整个系统的开发成本, FPGA 设计成为电子自动化设计行业不可缺少的方法。 本文从人脸检测算法入手,总结基于 FPGA 上的嵌入式系统设计方 法,使用 IBM 的 Coreconnect 挂接自定义模块技术。经过训练分类器、 定点化、以及硬件加速等方法后,能够使人脸检测系统在基于 Xilinx 的 Virtex II Pro 开发板上平台上,达到实时的检测效果。本文工作和 成果可以具体描述如下: 1. 算法分析:对于人脸检测算法,首先确保的是检测率的准确性 程度。本文所采用的是基于 Paul Viola 和 Michael J.Jones 提出的 一种基于 Adaboost 算法的人脸检测方法。算法中较多的是积分 图的特征值计算,这便于进一步的硬件设计。同时对检测算法 进行耗时分析确定运行速度的瓶颈。 2. 软硬件功能划分:这一步考虑市场可以提供的资源状况,又要 考虑系统成本、开发时间等诸多因素。Xilinx 公司提供的 Virtex II Pro 开发板,在上面有可以供利用的 Power PC 处理器、可扩 第 IV 页 上海交通大学工程硕士学位论文 摘要 展的存储器、I/O 接口、总线及数据通道等,通过分析可以对算 法进行细致的划分,实现需要加速的模块。 3. 定点化:在 Adaboost 算法中,需要进行大量的浮点计算。这里 采用的方法是直接对数据位进行操作它提取指数和尾数,然后 对尾数执行移位操作。 4. 改进检测用的级联分类器的训练,提出可以迅速提高分类能力、 特征数量大大减小的一种训练方法。 5. 最后对系统的整体进行了验证。实验表明,在视频输入输出接 入的同时,人脸检测能够达到 17fps 的检测速度,并且获得了很 好的检测率以及较低的误检率。 关键词:人脸检测,FPGA,级联分类器,Adaboost 第V页 上海交通大学工程硕士学位论文 ABSTRACT FACE DETECTION SYSTEM DESIGN BASED ON FPGA ABSTRACT After fingerprint identification, voice identification, face recognition has been focused more and more due to its security, stabilization and facileness. As a necessary first-step in face recognition systems-face detection, with the deeper research and expanding implementation, it has great application value in video meetings, image detection systems, surveillance systems, intelligent human-computer interfaces and so on, and develops quickly. FPGA (Field Programmable Gate Array) has represented its flexible characters since its appearance. Now the functions of FPGA have been improved deeply and it is being used in more and more fields. Customers can make more changes in FPGA according to their needs. They can design their own modules and they can upgrade the control system by themselves. The flexibility of FPGA reduces the cost of the whole design and FPGA design is becoming an indispensably method in Electronic Design Automatic. This paper designs from the algorithm of face detection, method of system design based on FPGA and the technique of IBM Coreconnect. After training the cascade, Floated-point to fixed point conversion(FFC), hardware acceleration, the face detection get the real time on Virtex II Pro of Xilinx. Below I list the key points of this thesis: 1. Analysis of algorithm: for the preciseness of detection rate, this paper adapts a method of face detection based on Adaboost presented by Paul Viola and Michael J.Jones. Complex computations of integral image and features value are fit for the hardware design. Meanwhile, I need to make sure the bottle-neck of speed in the algorithm. 2. HW/SW partition: this step considers the resource status, cost, time to market and so on. The V2P(Xilinx Virtex-II Pro) has PowerPC, 第 VI 页 上海交通大学工程硕士学位论文 ABSTRACT extended-Memory, I/O, Bus, etc. And then analysis the algorithm and partition the module for accelerating. 3. FFC: As Adaboost algorithm contains large number of floating-point computations, we used FFC in the paper as follows. Under certain accuracy, extract exponent and mantissa of floating-point data, and then shift the mantissa, thus converting a floating-point data to an n-bit integer. 4. Optimized cascade training: prevent a new training method to make some improvements to enhance partition ability and decrease the number of feature. 5. Finally, verify the whole system. Experimental results show it can detect faces at a 17fps speed. It obtains the high hit rate and the low false detection rate. KEY WORDS:Face detection,FPGA,Cascade,Adaboost 第 VII 页 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究 工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个 人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果 由本人承担。 学位论文作者签名:徐淑峰 日期:2008 年 1 月 18 日 第I页 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保 留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权上海交通大学可以将本学位论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位 论文。 保密□,在 年解密后适用本授权书。 本学位论文属于 不保密√。 (请在以上方框内打“√”) 学位论文作者签名:徐淑峰 日期:2008 年 1 月 18 日 指导教师签名:付宇卓 日期:2008 年 1 月 18 日 第 II 页 上海交通大学工程硕士学位论文 第一章 绪论 第一章 绪论 1.1 人脸检测技术背景及其发展现状 1.1.1 人脸检测背景 迄今为止,机器视觉的发展已经历了一个漫长的过程;进入21世纪以来,智 能识别领域更是取得了更大的进步。经过研究者们的不懈努力,特别是人机交互 技术的研究,和计算机动画设计、远程视频系统、自动身份验证和视觉监视监控 系统等应用领域的需求,计算机人脸及器官的检测、定位和识别技术受到了广泛 的重视。 这方面的工作以人脸的检测和识别为典型代表,还包括头部运动的跟 踪,体势和运动信息的提取,手势手语的识别,嘴唇运动的辨识以及人脸表情的 识别等等。人们试图通过这些工作,把握人类不同情况下的行为举止,探索友好 的人机交互方式,并满足更有个性化的服务和人际交流的需要。 人脸识别技术继指纹识别、虹膜识别以及声音识别等生物识别技术之后,以 其独特的方便、经济及准确性而越来越受到世人的瞩目,一九九六年后该技术在 世界范围内被广泛采用,应用领域日趋广泛,特别是在2001年美国发生911恐怖 事件之后,作为全新的身份识别方法,以指纹识别、虹膜识别为代表的生物识别 技术引起各国高度重视,而实用的人脸识别系统如FaceIt等也已在机场安检系统 投入应用。另外,人脸识别在许多图像压缩编码和传输应用中也是关键的步骤。 人脸识别是人类视觉的一种典型功能,而这里探究的计算机人脸识别则是利 用计算机通过对人脸图像的分析、特征的提取,进而实现(自动)辨识人脸,并 进行自动身份验证的技术。早期的人脸识别算法都是在假设已经得到了一个正面 人脸或者假设人脸很容易获得的前提下进行的,但是随着人脸分析应用范围的不 断扩大和开发实际系统需求的不断提高,这种假设下的研究不再能满足需求。人 脸检测开始作为独立的研究内容发展起来了。 人脸检测是人脸识别的第一步, 指在输入图像中确定所有存在的人脸的位 置、大小、姿势的过程。它分为静态检测和动态检测。静态检测是从静态图片或 者视频序列中找出人脸,如果存在人脸,则输出人脸的数目、每个人脸的位置及其 大小[1,5]。动态人脸跟踪则是在已检测到的人脸信息基础上,在后续的视频图像 中继续捕获人脸的位置及其大小等性质,以达到跟踪识别的目的。 第1页 上海交通大学工程硕士学位论文 第一章 绪论 1.1.2 人脸检测历史及现状 对人脸检测的研究最早可以追溯到20世纪70年代,人脸检测早期的研究主要 致力于模板匹配、子空间方法、变形模板匹配等[7,8],早期人脸检测综述见参 考文献[5, 8],那些方法往往针对简单无变化背景下的正面人脸检测。所以这些 方法在很大程度上显得很呆板,基于这些方法构建的检测系统,任何图像条件的 改变即便不需要完全重新设计,整个系统也要对系统的参数进行精细的调整。在 过去的十多年中,研究人员从几个方面出发提出了多种分割方法,特别是那些利 用运动、肤色、和一般信息的方法统计和神经网络方法的使用,也使在复杂背景 和多分辨率的人脸检测成为可能。另外,在能够精确定位的跟踪面部特征的特征 提取方法的设计(比如弹性模板和活动轮廓等方面)也取得了很大的进展。 目前,国外对人脸检测问题的研究机构很多,比较著名的有美国麻省理工学 院媒体实验室及人工智能实验室、南加州大学、CMU卡内基-梅隆机器人研究及交 互系统实验室等;随着人脸检测研究的深入,国际上发表的有关论文数量也大幅 度增长,如IEEE的FG(IEEE International Conference on Automatic Face and Gesture Recognition)、ICIP(International Conference on Image Processing)、CVPR(Conference on Computer Vision and Pattern Recognition) 等重要国际会议上每年都有大量关于人脸检测的论文,占有关人脸研究论文的近 1/3之多。有关人脸检测的内容在人脸识别研究的综述中有所涉及,但仅仅侧重 于人脸识别系统的输入环节,较为详尽的人脸检测与跟踪综述为,着重于介绍各 种方法所使用的特征和模型。国内的清华大学、上海交通大学、北京工业大学、 中科院计算所和自动化所等都有人员从事人脸检测相关的研究[30]。虽然国内众 多课题组在人脸检测与跟踪、特征定位识别与确认等方面展开了研究,并进行了 许多很有意义的尝试,积累了宝贵的经验,但是国内在核心技术、关键问题处理、 标准人脸数据库创建、评测体系的建立等方面则还需要进一步的努力。因而国家 MPEG7 标准组织已经建立了人脸识别草案小组,人脸检测算法也是一项征集的内 容[31]。 20世纪90年代中后期以来,基于学术界的部分研究成果,出现了若干商业人 脸识别系统开发和提供商,但这些商业公司后期对核心算法进行了大量的改进和 工程化研究,或者整合了多种技术方法,但由于商业安全的问题,他们后期都不 再发表学术论文,因此对其算法的细节也就不得而知。根据FRVT2002 的测试, 最优秀的商业人脸识别系统包括: (1)Identix 公司研发的FaceIt 系统。该系统最初所用的算法是局部特征 分析方法,后期采用的技术方法未知。 (2)Eyematic 公司研发的人脸识别系统,据说其基本算法是基于Gabor 特 第2页 上海交通大学工程硕士学位论文 第一章 绪论 征的人脸识别方法。 (3)Cognitec 公司开发的FaceVACS 系统。其算法采用了多阶高斯导数滤波 特征,并对这些特征进行判别分析用于最终的匹配识别。其他商业人脸识别系统 提供商还包括:Viisage 公司、LAU、eTrue、BioID、VisionSphere 等,但根据 FRVT2002 的测试结果,它们都不如上述三个系统,因此本文不再一一列举。最 近,NIST(National Institute of Standards and Technology)发布了FRVT2006 的测试结果,在其报告中主要谈到了以下几个方面: 1.FRVT2006是第一次将静态人脸识别、虹膜识别与3D人脸识别放在一起进行 测试; 2.与FRVT2002相比,静态人脸识别与3D人脸识别算法的错误率下降了一个数 量级; 3.FRVT2006是第一次将机器识别效果与人的识别能力进行比较,结果发现, 在不同的光照环境下,给定一个低的虚警率,七个自动人脸识别算法的性能相当 于或优于人的识别能力,若不指定虚警率,则七个算法中的三个算法的性能相当 于或优于人的识别能力; 报告中总结了四个方面的进步: (1) 实现了将人脸识别的错误率下降一个数量级的目标; (2) 建立了3D人脸识别的benchmark; (3) 不同光照环境下的人脸比对取得了进步; (4) 人脸识别算法优于人的识别能力。 总体而言,经过多年的发展尤其是近几十年来的研究,人脸检测技术取得了 长足的进步,对国际权威评测的结果及其对国内自有技术的评测结果进行研究可 以发现:目前的人脸检测系统在摄像环境良好、用户比较配合的情况下已经能够 达到令人满意的效果。但是在摄像环境不可控、环境条件变化剧烈、用户不配合 的情况下使用,目前的检测方法识别性能下降非常快,很多情况下识别系统正确 识别率陡降至75%以下,验证系统等错误率攀升到10%以上,这样的性能显然是应 用系统用户无法接受的,基于上述分析可以看出,现有的人脸检测系统还远未成 熟,在解决光照,姿态,表情因素对人脸检测的影响等方面,还需要进一步努力。 1.2 基于 FPGA 的嵌入式设计概述 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适 用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序 等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。是目前最热 第3页 上海交通大学工程硕士学位论文 第一章 绪论 门的概念和应用最广泛的技术之一。 随着微电子设计及工艺技术的发展,可编程逻辑期间规模越来越大,功能越 来越强大。FPGA 具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特 点。兼容了 PLD 和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。 与门阵列等其它 ASIC 相比,它又具有设计开发周期短、设计制造成本低、开发 工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广 泛应用于产品的原型设计和产品生产(一般在 10,000 件以下)之中。几乎所有应 用门阵列、PLD 和中小规模通用数字集成电路的场合均可应用 FPGA。 大部分 FPGA 的编程单元是基于静态存储器(SRAM)结构,从理论上讲,具 有无限次重复编程的能力。它主要由三个基本部分组成:可编程逻辑功能块、可 编程输入/输出块和可编程互连资源。可编程逻辑功能块是实现用户功能的基本 单元,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片;可编程 输入/输出块完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四 周;可编程内部互连资源包括各种长度的连线线段和一些可编程连接开关,它们 将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的电路。用户可以 通过编程决定每个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。 不同厂家或不同型号的 FPGA,在可编程逻辑块的内部结构、规模、内部互连的 结构等方面经常存在较大的差异。 除了上述构成 FPGA 基本结构的三种资源以外,随着工艺的进步和应用系统 需求的发展,一般在 FPGA 中还可能包含以下可选资源: (1) 存储器资源(块 RAM、分布式 RAM); (2) 数字时钟管理单元(分频/倍频、数字延迟、时钟锁定); (3) 算数运算单元(高速硬件乘法器、乘加器); (4) 多电平标准兼容的 I/O 接口; (5) 高速串行 I/O 接口; (6) 特殊功能模块(以太网 MAC 等硬 IP 核); (7) 微处理器(PowerPC405 等硬处理器 IP 核)。 目前,已经有若干种 FPGA 期间支持嵌入式处理器软核,即一个芯片中实现 用户自定义的系统,它通常包括片内存储器和微处理器。国内外已经有大量的应 用系统设计成功的将 51 单片机、ARM 和 Power PC 等处理器内核嵌入各种可编程 逻辑器件中。FPGA 中最著名的可配置处理器软核有 Xilinx 公司的 Microblaze 和 Altera 公司的 Nios II,硬核就是 Xilinx 公司的 Power PC 处理器。 基于 FPGA 的可配置嵌入式处理器具有传统嵌入式处理器所不具有的优势。 现今已有的嵌入式处理器种类繁多,每种都具备一组不同的外设、存储器、接口 和性能特性,用户很难做出一个合理的选择:要么为了配置实际应用所需要的外 第4页 上海交通大学工程硕士学位论文 第一章 绪论 设和接口要求等而选择在某些性能上多余的处理器,要么为了保持成本的需求而 达不到原先预计的理想方案。随着 FPGA 可配置处理器的推出,用户可以轻松的 在 FPGA 内配置一套用于恰当外设、存储器接口、性能特性和成本合理的系统。 基于 FPGA 的嵌入式系统还有一下优点: 1、可在 FPGA 器件中添加多个处理器来提升系统整体性能; 2、用户可自定义硬件加速模块来处理复杂的运算,作为嵌入式处理器的协 处理器并发的处理复杂数据来提高速度; 3、可以通过处理器、减少电路板成本等方法来降低系统的成本; 4、系统开发周期短、产品性能高、软硬件升级方便来获得更高的市场竞争 力。 基于 FPGA 的嵌入式系统开发是一个软硬件协同设计的过程,大体上按照一 下步骤进行: 1. 系统需求分析,包含功能需求、硬件需求等; 2. 根据分析结果,选择片外外设和片内 IP 模块,对选择的模块进行初步性 能估计,以保证满足系统需求; 3. 设定 IP 和系统参数; 4. 硬件加速模块设计,确定系统互连策略; 5. 结合嵌入式处理器进行软件优化开发。 1.3 本文的研究内容 由于整个人脸检测系统规模较大, 所以划分为很多部分。本文所做的 主要工作包括以下几方面: (1) 通过查阅资料,分析人脸检测技术的背景、国内外研究现状以及其商业 应用情况;找到合适的人脸检测算法,并能够在PC平台上实现。为以后的移植到 FPGA平台上做铺垫。 (2) FPGA硬件选型采用Xilinx公司的Vertex芯片。该单元由视频采集模块、 异步FIFO模块、视频解码模块、I2C 配置接口模块、图像帧存控制模块、图像低 级处理模块、通信接口模块和FPGA配置电路组成。 (3)由于嵌入式系统对于内存要求比较高,而且要求负载小、处理能力弱等局 限性特点,而原来扩展型的检测分类器比较庞大,不利于嵌入式系统的实现。所 以选择最基本的特征及扩展特征,重新训练级联分类器,以便得到一个比较小, 而检测率较高、误检率减小的分类器。 (4) 系统设计中,必然面对如何最好的软硬件划分问题。软硬件功能分配时, 既要考虑市场可以提供的资源状况,又要考虑系统成本、开发时间等诸多因素。 第5页 上海交通大学工程硕士学位论文 第一章 绪论 因此,软硬件功能划分是一个复杂而艰苦的过程,确定了人脸检测系统的软硬件 协同设计架构是整个任务流程非常重要的环节。 (5) 认真分析整个人脸检测过程,采用了改进型的检测策略:人脸检测时, 待检测图像不做金字塔式处理,大小不变;而是逐层放大检测窗口,再对检测窗 口内的图像进行模式匹配。 (6) 通过对算法耗时性分析,确定可行性的优化方案。 (7) 根据人脸检测算法的流程,确定软硬件协同设计方案的架构,实现所需 要硬件加速的模块,最后挂接视频输入输出模块,完成人脸检测系统的搭建。 本文的后续章节安排如下: 第二章对人脸检测技术的历史及当今的人脸检测方法做了概述。而后介绍了 Adaboost学习算法的由来,并且讨论了Adaboost学习算法适用于人脸检测的优 点,最后说明了Adaboost人脸检测算法的原理。 第三章根据对比以前的级联分类器的训练,提出了新的训练方法。主要表现 在选取样本库的建立、特征选取的原则以及剔除、最后根据训练的过程做了一些 优化等。其中详细介绍了弱分类器、强分类器以及级联分类器的设计方法。 第四章介绍了人脸检测的实现流程,从最开始的图像预处理,图像逐步式检 测方法的确定,到最后人脸检测的合并方法。 第五章说明了人脸检测系统的开发环境,这里重点介绍了Xilinx的 Virtex-II Pro开发板。然后介绍了开发工具ISE、EDK,以及相应的处理器Power PC和IBM的CoreConnect总线介绍。 第六章通过软硬件协同设计原理,然后对算法进行分析,确定人脸检测系统 的软硬件协同设计框架。之后进行算法的移植及软件优化、通过算法的速度瓶颈 分析以方便其后的硬件加速。然后通过熟悉IBM的Coreconnect总线以及高速总线 PLB的挂接方式IPIF,然后通过挂接通过速度瓶颈分析后要加速的模块,譬如长 整型乘法,图像缩减以及除法模块。 第七章由人脸检测系统的评价标准入手,检验了级联分类器训练的效果以及 分析各种指标,最后对整体的软硬件系统设计进行了测试,是否达到实时的效果。 第八章对全文进行了总结,并提出不足以及以后的研究。 第6页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 第二章 人脸检测技术及 Adaboost 算法 2.1 人脸模式特点的分析 由于人脸是具有复杂特征的三维模式,是一种有弹性的局部可变形的非刚性 目标,与刚性目标的检测和识别相比,非刚性目标的处理更加复杂和困难。通过 对人脸模式的分析,发现人脸具有如下特点: 1). 人脸具有结构的恒常性: 人类脸部具有相同的生理结构,眼睛、鼻子、 嘴等脸部器官的排列和相对位置不因个体差异和外界因素而改变。 2). 人脸外观具有很强的可变性: 个体外貌差异、表情变化、光照的影响、 位姿变化的影响、眼镜和化妆等脸部附属物的影响。 3). 人脸视图具有丰富而细致的模式变化: 人脸视图的模式变化一方面来 源于人脸外观的可变性,另一方面还来源于不同的图象采集、处理过程所产生的 变化,包括图象分辨率的变化、几何变换(如旋转、缩放、平移、镜像等)以及通 过中间载体(如印刷的纸张)引入的纹理。 4). 人脸模式包含的特征具有复杂性和多样性: 人脸图象所包含的模式特 征十分丰富,如肤色颜色特征、椭圆轮廓特征、对称等结构特征、直方图特征等 口。 由人脸的这些特征可以看见,人脸检测的实现是一项具有挑战意义的课题。 2.2 人脸检测方法分类 人脸检测实际上是一个两类的人脸鉴别问题,即在一幅图像中只有“人脸” 和“非人脸”之分。其基本思想是基于知识或统计的方法对人脸建模,然后比较 所有可能的待检测区域与已建立模型的匹配度,从而得到可能存在的人脸区域。 人脸检测方法主要有一下几类。 2.2.1 基于模板匹配的方法 所谓基于模板(Template-based)的方法,是指从构造人脸或某个面部器官的 模板(模型)出发,通过各种模板搜索与匹配算法,结合对模板参数的调整,达到 检测和定位人脸的目的。模板匹配方法通常是基于特征的方法的进一步确认。早 期的基于模板匹配的方法是这样做的:首先建立一个标准的人脸模板,由包含局 部人脸特征的子模板构成,然后对一幅输入图像进行全局搜索,对应不同尺度大 第7页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 小的图像窗口,计算与标准人脸模板中不同部分的相关系数,通过预先设置的阈 值来判断该图像窗口中是否包含人脸。这种简单模板匹配的方法易于实现,但是 也存在着缺点:图像噪声对检测结果影响很大,因此需要对输入图像作适当的预 处理,而且模板的大小是人为设定的,因此不能动态检测眼睛等器官的位置。 Yullie 等人[3]提出了基于弹性模板的方法.弹性模板是由一个根据被测物 体形状而设定的参数化的可调模板和与之相应的能量函数所构成,能量函数要根 据图像的灰度信息、被测物体轮廓等先验知识来设计.弹性模板的参数向能量减 小的方向调整,当能量达到最小时,这组参数对应的模板形状最符合特征形状. 由于弹性模板可调,所以能够检测不同大小、具有不同偏转角度的物体。Miao 等[12]人提出了一种重心模板的方法。重心模板是由六种人脸器官边缘的重心组 成:两条眉毛的边缘、两只眼睛的边缘、鼻子和嘴的边缘。在图像中提取可能对 应于眉毛、眼睛、嘴等器官的水平方向的马赛克边缘(Mosaic Edge),计算各段 边缘的“重心(Gravity Center)”后,使用“重心”模板检测出候选人脸。 2.2.2 基于器官特征的方法 基于器官特征的方法[14]也分为两种,一种是自顶向下的方法,即根据一个 人脸模型〔一般是正面人脸模型)先在一个比较大的范围内寻找人脸候选区,由 粗到精地在一个最佳范围内定位人脸候选区,然后检测各种人脸器官特征。另一 种是自底向上的方法,这种方法首先提取人脸器官图像特征,然后根据人脸中各 器官的几何关系来确认人脸的存在。比如利用大量的特征,包括几何、空间、灰 度等各种度量,对人脸进行粗定位。再将人脸的几何关系由一个树型结构表示, 并计算出概率属性,作为判断是否为人脸的条件。 2.2.3 示例学习 示例学习的基本思想是从某一概念的已经给出的所有正例和反例的集合中, 归纳产生出接受所有正例,同时排斥所有反例的该概念的一般规则。将人脸检测 视为从模式样本中区分非人脸样本和人脸样本的模式识别问题,通过对人脸样本 集和非人脸样本集进行学习以得到分类算法。为了获得较高的精度,学习过程需 要大量的样本。另外,样本数据本身是高维矢量。因此,研究通用而有效的学习 算法的关键是精确的可区分度和数据维数的降低。 在概率上,几乎所有的统计模式识别方法都应用到了人脸检测这个问题上。 这里有两个方面, 一个是在特征提取方法上,使用了统计的方法,譬如主成分 分析。主成分分析(PCA,Principal Component Analysis)是最小方差准则下最 优的描述方法,它将输入数据的维数从图像空间的象素数减少为特征空间的维 第8页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 数。其中,特征脸方法得到了广泛应用,就是用一组特征向量的加权线J性组合 来代表人脸。主成分分析考虑的是样本模式的整体非几何的特征表示,而局部特 征分析(LFA,Local Feature Analysis)则从局部的几何特征出发进行数据空间 的降维。将它用于人脸检测,分析和实验证明LFA是一种有效的目标检测方法。 另一个是在判别分类的算法上使用了统计的方法,如支持向量机。支持向量机 (SVM,Support Vector Machines)是一种二次规划(Quadratic Programming)方 法,它在处理大批量的人脸正、反例时,只选取那些位于分界面附近的数据来完 成学习过程。 示例学习的另一条途径是将多个表示人脸模式的线性空间进行组合。比如在 采用了Kohonen[3]自组织映射网络对人脸样本和非人脸样本聚类中,对每一类样 本进行Fisher线性判别,得到每一类的判别平面,从而构成图像子空间,并运用 高斯模型描述每个子空间,估计出类条件概率密度函数;这样,对于测试图像, 计算其属于各个子空间的概率,分类决策为概率最大的类是它所属的类,从而判 断测试图像是否为人脸。这些方法一般用于正面人脸检测。 2.2.4 神经网络 从本质上讲,神经网络也是一种基于样本的学习方法。将神经网络用于人脸 检测,取得了很大的进展。MIT 的学者首先对人脸样本集和非人脸样本集聚类, 以测试样本与人脸样本集和非人脸样本集的子类之间的距离作为识别特征向量, 利用多层感知器(MLP)网络作为分类器。CMU的研究人员直接以图像作为神经网络 的输入,设计了一个具有独特结构的适用于人脸特征的神经网络分类器,并且通 过前馈神经网络对检测结果优化。他们工作的共同之处是都采用了自调整 (bootstrap) 的学习原理,对分类器一边训练,一边测试,并把在测试过程中的 错误分类结果作为反例样本加入学习过程,从而减少了样本集的规模,并逐步的 提高了神经网络的分类性能。 2.2.5 基于隐马尔可夫模型的方法 马尔可夫模型的概念是一个离散时域有限状态自动机,隐马尔可夫模型HM 是指这一马尔可夫模型的内部状态外界不可见,外界只能看到各个时刻的输出 值。HMM的打分、解码和训练相应的算法是前向算法、Viterbi算法和前向后向算 法。对于人脸模式来说,我们可以把它分成前额、眼睛、鼻子、嘴巴和下巴这样 一个序列。那么人脸模式就可以通过对这些区域的有序的识别来检测。这正好是 隐马尔可夫模型容易做到的。Samaria等人提出了使用明M模型进行人脸检测的算 法。他们使用人脸区域的结构信息作为隐马尔可夫模型的状态迁移的条件。 第9页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 2.2.6 基于 AdaBoost 的方法 Boosting是一种分类器融合算法。Adaboost 学习算法原本是用来提高某种 简单分类算法的性能的,例如,可以用来提高简单的感知器的性能。它通过对一 些弱分类器的组合来形成一个强分类器。在Adaboost算法中,简单的分类算法被 称为弱学习算法。Adaboost算法通过一个迭代的训练过程来得到一个强的分类 器。在第一次训练出一个弱分类器后,训练样本的权重得到调整,从而使没有被 第一次训练出的弱分类器正确分类的样本的权重增加。如此迭代下去,最终得到 的分类器是对每次训练得到的弱分类器的一个线性组合。Viola 和Jones提出了 一种基于AdaBoost和快速特征提取的正面实时人脸检测算法。他们的算法在个人 计算机上达到了15帧/秒的速度。在MIT和CMU的测试集上有很好的表现。MSR 通 过利用3个视角的这样的检测器,实现了一个多视角的人脸检测算法。 2.2.7 基于彩色信息的方法 人脸的肤色在颜色空间中的分布相对比较集中,利用这个特点可以检测人 脸。这种万法的最大优点是对姿态变化不敏感用彩色信息检测人脸的关键是合理 选择色度坐标。常用的方案是将彩色的R、G、B分量归一化。目前人们研究更多 的是如何提取彩色的色度信息,即将RGB彩色空间转化为其它彩色空间,以突出 色度信息。 H.Martin 设计了肤色模型表征人脸颜色,利用一个感光模型对输入图像修 正和补偿,并建立人脸颜色分类器,其输出作为神经网络的输入进行检测。Tony 等采用高斯混合模型(GMM,Gaussian Mixture Model)表示人脸肤色R、G、B各分 量的统计分布,通过阈值比较判断象素是否为人脸象素。YINGDA工等利用彩色信 息,并结合人脸的纹理特征,设计了SGLD 共发矩阵方法进行检测。Haiyuan Wu 通过在XYZ彩色空间中,对人脸肤色和头发颜色的分布建立基于模糊逻辑理论的 描述模型,通过计算隶属度来确定人脸肤色区域。 2.2.8 频域中的特征提取 频域分析是图像处理的一种有效工具。在人脸检测领域,通过将图像变换到 频域上,可以根据频率特性,或者提取人脸的特征区域(点),或者获取整个人脸 的频域描述特征量来作为分类决策器的输入。M.Zobel等人在JPEG图像的DCT系数 中提取出额头、眼睛、鼻子、嘴唇、下巴等特征区域,通过人脸结构模型检测人 脸。 Nastar 等研究了人脸面容变化及其频谱变化的关系,他们发现人像的表情 第 10 页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 变化和少许遮掩值影响局部光强度流,如果用频率来表达,只会影响高频部分, 称为高频现象。因此,用小波变换的方法滤掉高频信息,采用低频图像的频谱来 表达图像将会取得更好的效果。Constantine[49] P.Papageorgiou、Mlchael Oren、Tomas Poggio等使用人脸图像的Haar小波系数作为特征矢量,搜集了大量 正反例样本,通过SVM 机制实现人脸检测。Christophe Garcia和Georgios Tziritias对人脸图像小波变换系数做了统计分析,刻画人脸图像纹理的特征, 然后通过基于概率分布的Bhattacharrya距离进行分类得到人脸和非人脸的判别 规则。另外, T .Kondo和H.Yan在图像的Haar小波变换的保持低频分量的子带图 像LL 上直接进行人脸检测的研究,他们着重考虑了非均匀光照下的图像,采用 梯度矢量来处理偏光的情况。 2.2.9 多模态信息融合 人脸检测要考虑的因素很多,研究者们从不同的角度出发根据不同的信息来 设计检测方法。实际上,人的大脑对人脸的判别过程,借助了多种信息, 比如 肤色、人脸结构、纹理等;因此可以认为这是一个多模态信息融合的过程。研究 者的实践也表明,各种方法在单通道上的可靠性是有限的,但是如果采用多种方 法来证实人脸的存在,那么会得到更高的检测效率。 S.J.Mckenna等介绍了一个动态序列图像中的人脸识别系统,其中根据运动 信息、肤色信息和面部结构模型实现了人脸检测算法。S.H.Kim等人同样结合人 脸的对称性和一致性、运动信息、肤色信息,对视频流中的人脸进行检测[32]。 2.2.10 形状分析 从几何的观点和统计的角度来分析人脸的形状特征,主要是人脸的大小、对 称性、形状参数等信息。不同于基于特征的方法,这种方法作为细检测的途径, 通常和基于彩色信息的方法结合一起使用。 2.2.11 小结 以上综述了人脸检测问题的一些经典算法,如果是仅仅一种进行人脸检测, 尽管有很多优点,但检测也会有很多缺点。譬如,基于彩色信息的方法如出现彩 色光照改变了图像中的脸部颜色、图像大小、改变旋转人脸中双眼不在鼻子的正 上方等这些人脸特征发生变化时,原有的肤色模板知识就不再适用;模式匹配虽 然在成像条件不变的情况下效果很好,但是计算量大,对环境变化的适应性很差。 所以现在人脸检测实际应用中往往要么要求条件单一的高检测率,要么要求计算 第 11 页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 量大但综合性检测效果好的人脸检测,所以选择了基于分类融合的Adaboost算 法。 2.3 Adaboost 算法 AdaBoost是一种具有自适应性的Boosting 算法,它通过建立多学习机组合 使得弱学习机的性能得到提升,由于其独有的对学习机性能的自适应和对过学习 现象的免疫性,近年来起了广泛的关注。详细探讨利用AdaBoost 方法进行人脸 的检测,找出图像中人脸的大概位置,以缩小后面特征检测过程中的搜索范围。 2.3.1 Boosting Boosting 方法源于PAC(Probably Approximately Correct,概率近似正确) 学习模型的理论分析。Kearns 和Valiant [19]提出了强可学习和弱可学习的概 念。在PAC 学习模型中,若存在一个多项式学习算法来识别一组概念,并且识别 正确率很高,那么这组概念是强可学习的;而如果学习算法识别一组概念的正确 率仅比随机猜测略好,那么这组概念是弱可学习的;Kearns 和Valiant 提出了 弱学习算法与强学习算法的等价性问题,即是否可以将弱学习算法提升成强学习 算法。如果两者等价,那么在学习概念时,我们只需要找到一个比随机猜想略好 的方法就可以将它提升为强学习算法。 1990 年,Schapir [20]发表了第一个boosting 方法.Freund [21]随后对其 做了改进提出了更鲁棒的方法BBM(boost-by-majority)方法。Boosting 方法 在训练中先后产生一系列学习机,各个学习机所使用的训练集都是从总训练集提 出来的一个子集,各个样本是否出现在该子集中取决于此前产生过的学习机的表 现,已有学习机判断出错的样本将以较大的概率出现在新的训练子集中。这使得 其后产生的学习机更加专注于处理对已有学习机来说较为困难的样本区分问题。 Boosting 方法可以增强给定算法的泛化能力,但是还存在两个缺点:该方 法需要知道弱学习机学习正确率的下限,而这在实际问题中是很难做到的;其次, 这一方法可能导致后来的学习机过分集中于少数特别困难的样本,导致表现不稳 定。 2.3.2 AdaBoost 方法概述 AdaBoost(Adaptive Boost)算法是目前最流行的Boosting算法,它的提出源 于Boosting算法应用到实际问题中时存在的问题。Schapire提出Boosting算法 后,Freund提出了一种对其进行改进的力法,通过这种方法可以产生一系列神经 第 12 页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 网络,各神经网络的训练集决定于在其之前产生的网络的表现,被己有网络错判 的训练样本将以较大的概率出现在新网络的训练集中。这样,新网络将能够更好 地处理对已有网络来说很困难的样本。虽然Boosting方法能够增强神经网络集成 的泛化能力,但是同时也可能使集成过分偏向于某几个特别困难的样本。因此, 该方法不太稳定,有时能起到很好的作用,有时却没有效果。另一方面, Schapire[20]和Freund[21]的算法在解决实际问题时有一个缺陷,即它们都要求 弱学习算法学习正确率的下限,这在实际问题中很难做到。于是,Schapire和 Freund[22]于1995年提出了与Boosting算法效率接近但却很容易应用到实际问 题中的AdaBoost算法。 作为一种Boosting算法,Adaboost算法也包括提升算法和基本算法两部分, 基本算法或弱学习算法实际上是去选择合适的判别函数,或者说去找弱分类器, 提升算法是一个迭代的过程,每一次迭代都要选择一个分类错误率最小的弱分类 器,同时调整所有训练样本的权值,增加被分类错误样本的权值,使以后选择的 弱分类器更加重视这些训练样本,以提高最终分类器的泛化能力。 Adaboost算法 1、输入:N个训练样本 ((x1, y1 ), (x2, y2 )K(xN , yN )), xi ∈ X , yi ∈ Y = {1. −1} 2、初始化样本权重:对于 yi = −1的样本, wi1 = 1 2u ,对于 yi = 1的样本, wi1 = 1 2v , 其中,u和v分别为负样本和正样本的个数。 wit 为第t 次循环中第i 个 样本的误差权重。 3、For t=1…T (T为迭代次数) ∑ wit ← wit 规范化权重分布: w N t i=1 i 对于每个特征 j,用权重分布 wit 训练弱分类器 h j hj 计算 ∑ ε j = wit 的误分类损失 yi ≠h j (xi ) 选择误差最小弱分h类j 器 更新样本权值: wt+1,i ← w β 1−ei t,i t (若 hj 对第 i个样本判断正确,则 ei = 0, 反之,则 ei = 1, βt = εt 1−εt ) 第 13 页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 4、经过T次迭代,选出T个弱分类器,形成最终的强分类器 H (x) ,在人脸检 测过程中 ∑ ∑ If T H (x) = αt ht (x) t =1 ≥ 1 2 T α t ;(α t t =1 = 1 1 ln( − ε t 2 εt )) H(x) = 1 Else H(x) = αt 0 (其中 = log 1 βt ) 在上面的算法中假设每一个分类器都是实际有用的,即 εt < 0.5,也就是说, 在每一次分类的结果中,正确分类的样本个数始终大于错误分类的样本个数。因 为εt < βt 0.5,而 = εt 1−εt ,可以看出, βt <1,当在本次迭代中找出的的弱分类 器 hj 将本样本 xi 分类错误时,该样本在下一次迭代中的权值 wt+1,i ← w β 1−ei t,i t 不变; 如果 hj 将样本 xi 分类正确,则该样本在下一次迭代中的权值 wt+1,i 将减小,这等 于减小了己分类正确样本的重要性,使下一个分类器更加重视在前面的迭代中分 类错误的样本,满足了提升的思想。Viola 和 Jones[2]首先将AdaBoost算法应 用于人脸检测中,他们用简单的矩形特征作为人脸特征,这些特征也称为 Haar-like特征,每一个Haar-like特征相当于一个弱分类器,这些弱分类器经由 AdaBoost算法提升成为一个强的分类器,在AdaBoost算法的每一次迭代过程中所 进行的弱分类器的选择,实际上是进行的特征的选择。他们所建立的人脸检测系 统被认为是第一个实时的正面人脸检测系统。 2.4 基于 Adaboost 的人脸检测 Paul Viola 和Michael J.Jones[2]使用了一种用Adaboost 方法训练得到的 基于多特征的分层人脸特征检测系统。与此前提出的人脸检测算法相比,他们的 系统具有极高的运行速度,在没有引入其他辅助信息(如相邻帧之间的差异等) 的情况下,检测准确率和错误接受率都能达到现有算法中最好的水平,因此,该 算法在人脸分析领域引起了广泛的关注,这一算法的特点是:1. 对图像做分类 第 14 页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 的时候,不是直接使用图像的灰度值,而是使用一些简单的图像特征(Haar-like 特征)作为分类的依据。2.在对新图像的表示方法上,采用积分图像,利用它可 以快速计算Haar-like特征值。3. 该方法提出了使用Adaboost 来选择少数重要 特征组成弱分类器(Weak Classifier)叠加成为强分类器。4. 为了进一步提高 系统的速度,还提出了一个瀑布式的程序框架,对每一层使用Adaboost 训练直 至得到最小的错误拒绝率,将强分类器串联成级联分类器用于检测人脸。 2.4.1 人脸特征表示(Haar-like 特征) 在给定有限的数据情况下,基于特征的检测能够编码特定区域的状态,而且 基于特征的系统比基于象素的系统要快得多。矩形特征对一些简单的图形结构, 比如边缘、线段,比较敏感,但是其只能描述特定走向(水平、垂直、对角)的 结构,因此比较粗略。如脸部一些特征能够由矩形特征简单地描绘,例如,通常, 眼睛要比脸颊颜色更深;鼻梁两侧要比鼻梁颜色要深;嘴巴要比周围颜色更深。 鉴于以上原因,Viola提出的Haar型特征使用矩形特征作为分类的依据,因类似 与Haar小波而得名。最初特征库包含有三种类型5中形式的特征,如图1所示: 名称 特征显示 边缘特征 线性特征 特定方向特 征 图 1 基本矩形特征 Fig.1 Basic rectangle features 如图中所示:矩形模板显示有白色和黑色两种矩形(定义左上角的为白色, 然后依次交错),并将特征模板的特征值定义为白色矩形像素和减去黑色矩形像 素和。 第 15 页 上海交通大学工程硕士学位论文 第二章 人脸检测技术及 Adaboost 算法 2.4.2 特征值计算(积分图) 每个特征由2~3个矩形组成,每个特征可表示为: N ∑ feature j = ωi × rectsum(ri ) i =1 (2-1) 式中:其中, featurej 为第 j 个特征值,ωi 为矩形 ri 的权, rectsum(ri ) 为矩 形 ri 所围图像的灰度积分, N 是组成 feature 的矩形个数。在式(2-1)中,矩形 ri 的灰度积分 rectsum(ri ) 可以通过快速积分图的方法进行计算,积分图计算的基 本原理为:每个点的积分图的值等于以图像原点与该点为对角线端点的矩形内各 像素值之和。 图 2 积分图计算 Fig.2 Computation of integral image 使用积分图,任何矩形特征区域的和只需使用4个参考点就可进行计算。在 图2中,矩形区域ABCD中的象素灰度值的和可以通过A,B,C,D四个参考点的积分图 的值来计算,即 Sum = ii(C) + ii( A) − ii(B) − ii(D) ,其中 ii 为各点在积分图中所对 应的值, Sum 表示ABCD区域的像素灰度之和。 由此可见,矩形特征的特征值计算,只与此特征端点的积分图有关,而与图 像坐标值无关。因此,不管.此矩形特征的尺度如何特征值的计算所耗费的时间 都是常量(time constant),而且都只是简单的加减运算。正因如此,积分图 的引入,大大地提高了检测的速度。 第 16 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 第三章 级联分类器训练及优化 一个人脸检测系统的核心在于有一个好的算法,而一个好的人脸检测算法的核心 又在于有一个好的级联分类器,能够迅速的分辨人脸与非人脸。但是原来基于PC平台 的人脸检测算法所需要的级联分类器非常庞大,并且训练所需要的人脸和非人脸样本 库数量多,训练的周期长,庞大的级联分类器以及运行时所受的负载空间都造成了嵌 入式系统性能的损失。因此本章主要针对以上问题从样本库选取,训练特征选取及分 类器生成方面做了优化。最终得到了一个基数少、虽然检测率和误检率比PC平台略低 的级联分类器,却满足了嵌入式人脸检测系统的需求的系统。 3.1 训练流程图 Adaboost 算法进行强分类器训练的过程如下。 特征集合 第一次迭代 第二次迭代 第T次迭代 弱分类器h(1) 弱分类器h(2) 图 3 强分类器训练过程 Fig.3 Training steps of strong classifiers 弱分类器h(T) 如图3所示,Adaboost算法模块的输入为训练样本的特征,共经过T次迭代,得到 T个分类能力较强的弱分类器。在每次迭代中,根据弱分类器的判断结果与样本的权 重分布,选择一个错误率最小的弱分类器作为本次迭代产生的弱分类器h(n),之后更 新每个训练样本的权值,更新的策略为增大h(n)所错分的样本的权值,这样,在下一 次的迭代中,这些被错分的样本将予以更大的重视,在经过T次迭代后,共产生T个弱 分类器,组合后便是分类能力较强的强分类器。 第 17 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 训练开始 训练样本库 图像预处理 (积分图计算) 选择综合错误率最低 的特征构成弱分类器 利用Adaboost算法 训练强分类器 所有强分类 器级联 最终级联 分类器 图 4 分类器训练过程 Fig.4 The steps of training cascade 3.2 样本库的建立 AdaBoost 算法效果如何的重点在于前期训练时候的弱分类器的选取,而弱分类 器的选取在一定程度上依赖于样本集的选取。因而训练样本集显得十分重要。本文使 用的是一套MIT 的人脸训练样本库,共有样本7,087 个,其中人脸样本2,706 个,非 人脸样本4,381 个。其中人脸图像的示例参见图 5,非人脸图像的示例参见下图6。 这个样本库中的人脸样本都是20×20 像素、正面正向人脸,有同一个人的多种光照 条件下的样本。非人脸样本尺寸和人脸样本相同,是从图像中随机自动截取的。这个 样本库的将侧面人脸、非正向人脸、有遮挡的人脸都归入了非人脸样本。因此,依此 样本库训练的强分类器只对正面正向、15度以内倾斜人脸敏感。 第 18 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 图 5 训练用人脸图像 Fig.5 The images of face for training 图 6 训练用非人脸图像 Fig.6The images of non-face for training 3.3 特征的选取 从上一章中可以看到,矩形特征是具有一定的判别力,从而可以构成一个弱分类 器。上述简单的模板特征可以在子窗口内以“任意”尺寸“任意”放置,每一种形态 称为一个特征。找出字窗口的所有特征,是进行弱分类器训练的基础。 但是,仅仅是在20*20的窗口中就包含有78,460个矩形特征,由于其数量极其多, 训练的时间和空间开销特别大。在每轮循环中,都要计算所有样本对所有特征的特征 第 19 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 值,则需要运算:78,460*7,087 = 556,046,020次。 在CPU3.0G,内存为512Mb的机器上实测得到,上述运算共花时4分钟。按这样的 速度,训练一个15级包含1000个弱分类器的级联分类器需要至少4天的时间,如果加 上每轮运算中选择最佳阈值所要进行的排序、遍历等运算。时间的开销是巨大的。因 为一个特征对一幅图像的特征值是固定的,那么可以只运行一次上述运算,将得到的 特征值结果都保存在硬盘上,这样可以减少每次计算的时间开销,需要的磁盘空间为 (采用4 字节的unsigned long 存储): 556,046,020*4 = 2,224,184,080 Bytes=2.07Gbytes (3-1) 空间开销是巨大的。但是,对于一般的PC 机,硬盘的峰值读取速度为66Mb/s, 则读取上述内容的时间开销仍有32 秒。 为了提高训练速度,得从其他方面考虑。分析知道,除了算法效率外,影响运算 次数的因素只有训练集数量和特征数量,而训练集数量不可能减少,这样会直接影响 最后得到的强分类器效果;因此必须得减少特征数量才能减少训练时间。对于特征数 量的减少,主要有两个途径。第一是在特征生成阶段人为剔出。例如,完全不必考虑 宽度为一个像素的矩形特征,因为显然用这样的特征计算特征值随机性太大,不可能 寻找到合适的阈值。第二步,就是对于扩展的特征,譬如那些45°倾斜的特征,都没 有用到,所以对其进行删除。这样总的特征数量大大减小,运算速度得到成倍的提升。 3.4 训练方法 有第一节可以知道,级联分类器的每一级都是用AdaBoost方法训练得到的。训练 之前必须先确定整个级联分类器要达到的最高误检率 Fmax 、最低检测率 Dmin 、每个 强分类器的最高误检率 fmax 、最低检测率 d min 。在确定目标的前提下,整个级联分类 器至少需要由( n = log fmax Fmax )个强分类器组成。整个训练过程就是一个利用AdaBoost 方法构造强分类器的过程。 整个训练过程可以描述为: 1.确定系统目标误检率 Fmax ,各强分类器的最高误检率 f max 、最低检测率 d min , 推断系统至少需要( n = log fmax Fmax )个强分类器组成; 2.根据训练系统提供的人脸样本和非人脸样本库; 假设人脸样本p个,非人脸样 第 20 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 本需要q个; 3.获取初始人脸样本集与非人脸样本集; 4.for t=1:n 1) 训练一个强分类器 H t (x) ; 2) 组合前t个强分类器 H1 , H 2 ,…. H t ,对人脸样本集进行验证,淘汰被错误 判断的人脸样本(漏判),并修改人脸样本的数量p的值; 3) 组合前t个强分类器 H1 , H 2 ,…. H t ,对当前非人脸样本集进行验证,淘汰 被正确判断的非人脸样本,并重新获取非人脸样本,以补充非人脸样本集。 使其数量重新达到q个。在重新获取非人脸样本过程中,也是组合前t个强分 类器对候选非人脸样本进行验证,只有被误判的候选非人脸样本才能被加入 到非人脸样本集中; 4) 保存训练结果。 在上面流程中,所谓验证就是利用前t个强分类器组成的临时级联分类器对样本 进行检测。在训练过程中,要不断更新非人脸样本集。因为在验证时有一部分非人脸 样本会逐渐被筛选掉,并不会通过所有层,被筛选掉的非人脸样本对于下一层的训练 已经没有价值了;即用这一层之前的已经训练好的强分类器对非人脸样本进行检测, 然后删除掉被正确检测的非人脸样本,留下被误检为人脸的非人脸样本再用这些图像 作为下一层强分类器的非人脸训练样本。这种方法使得训练更具有针对性和代表性, 不过在最后几层的训练中非人脸样本的收集变得很慢训练过程也变得非常困难。这是 由于通过前面那些层的强分类器的排除后面的非人脸样本越来越和人脸样本相似。所 以非人脸样本集是需要更新的。在验证时 ,也会有很小一部分人脸样本被误判为非 人脸,这种情况叫做误判。这些被误判的人脸样本会逐渐被错误地筛选掉,并不会通 过所有层,它们对下一层的训练也没有价值了,可以从人脸样本集中淘汰掉。与非人 脸样本集不同的是,不必补充新的人脸样本到人脸样本集中,因为最小检测率 dmin 。 通常定得很高,被漏判的人脸样本个数非常少,淘汰很小一部分影响不大。通过训练 得到的级联分类器的所有参数存放在文本文件中,可在检测人脸前调入内存。 第 21 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 3.4.1 强分类器训练过程 因为前面讲过Adaboost算法,而强分类器的生成就是利用Adaboost算法。流程如 下: 1. 确定该强分类器的最高误检率 fmax 、最低检测率 d min ; 2. 获取并保存训练样本: P:表示人脸样本集合.叫做P集; N:表示非人脸样本集合,叫做N集; 3. 样本可以表示为: ((x1, y1 ), (x2, y2 )K(xm , ym )), xi ∈ P或N, yi ∈ Y = {1. −1}, m = P+N; 4. 计算每个样本窗口内的所有矩形特征值。 5. 对每个人脸样本赋一个权值 wi 假设人脸样本(P集)个数为p,那么开始时所 有人脸样本的权值 wi = 1/p,1 ≤ i ≤ p;假设非人脸样本(N集)个数为q,那么 开始时所有非人脸样本的权值 wi =1/q. p+1 ≤ i ≤ m。因为m=p+q. 6. 设f为当前强分类器的误检率,初值为1: t=1 ,t 表示当前已得到的弱分 类器的个数。 7. while( fmax < f) 1) 挑选一个矩形特征构成一个弱分类器 H i (x) ,使得该分类器的分类错误 相对其他弱分类器来说是最小的一个。分类错误表示 m ∑ ε t = wt [ht (xi ) − yi ]2 为: i =1 ; t ∑ 2) PW (i) 对于每个人脸样本 xi ,计算 = hk k =1 (xi ) ;对于每个非人脸样本 xj , t ∑ NW ( j) = hk (x j ) 计算 k =1 ; 3) 对PW数组按从小到大排序:人脸样本个数为P.最低检测率为 dmin ,那么 第 22 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 当前强分类器的ϕt 值 PW [ p * (1 − dmin )], 即保证有p* d min 个人脸样本能 通过该阈值; 4) FalseDF=0 for j to q: (非人脸样本个数为q) if ϕt ≤ NW[j], then FalseDF=FalseDF+ 1 end f= FalseDF/q (当前强分类器的误检率) 5) 更 新 每 个 样 本 的 权 值 。 每 个 样 本 xi , ht (xi ) = αi , 那 么 新 权 值 wi = wi * e−αi yi , yi ∈{+1,−1} ; m ∑ wi = 1 6) 对样本权值进行归一化,满足 i=1 ; 7) t=t+1. 8. 得到一个强分类器,最高误检率 fmax 、最低检测率 d min ,阈值为ϕt 。 下面说明一下其中的关键内容: 第一,前面定义的强分类器的阈值ϕt , 实际就是PW里的一个元素值。当PW[i] 大于这个值的时候,强分类器就认为这个样本是人脸;否则,是非人脸。因此强分类 器的最小检测率 dmin 是肯定可以达到的,而且强分类器的阈值越低,检测率就越高; 阈值越高,检测率就越低;并且检测率和误检率是相互制约的。通过实验和众多理论 证实,误检率是随着检测率的提高而提高,而检测率是随着误检率的降低而降低。 第二,在强分类器的训练过程中,利用前t 个弱分类器构成的强分类器。强分类 器对每个非人脸样本进行检测时如果NW[j]大于阈值ϕt ,就认为这是一次误检。当遍历 整个非人脸样本集以后,就得到了被误检的非人脸样本的个数FalseDF。 它除以非人 脸样本的总个数q 就是这个强分类器最终的误检率f 。 第三,Freund 和Schapire[22]也已经证明了强分类器的误检率会随着训练轮次 的增加也就是随着弱分类器的不断增加会快速下降;所以强分类器的误检率f 也肯定 可以下降到最大误检率 fmax 以下。 第 23 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 3.4.2 弱分类器训练及选取 一个弱分类器h(x, f, p, q) 由一个特征f,阈值q 和指示不等号方向的p 组成: h(x) = 1, pf (x) < pθ   0, otherwise (3-2) 对于本算法中的矩形特征来说,弱分类器的特征值f(x)就是矩形特征的特征值。 由于在训练的时候,选择的训练样本集的尺寸等于检测子窗口的尺寸,检测子窗口的 尺寸决定了矩形特征的数量,所以训练样本集中的每个样本的特征相同且数量相同, 而且一个特征对一个样本有一个固定的特征值。对于理想的像素值随机分布的图像来 说,同一个矩形特征对不同图像的特征值的平均值应该趋于一个定值:k。 这个情况,也应该发生在非人脸样本上,但是由于非人脸样本不一定是像素随机 的图像,因此上述判断会有一个较大的偏差。对每一个特征,计算其对所有的一类样 本(人脸或者非人脸)的特征值的平均值,最后得到所有特征对所有一类样本的平均值 分布。一个弱学习器(一个特征)的要求仅仅是:它能够以稍低于50%的错误率来区分人 脸和非人脸图像,因此上面提到只能在某个概率范围内准确地进行区分已经完全足 够。按照这个要求,可以把所有错误率低于50%的矩形特征都找到(适当地选择阈值, 对于固定的训练集,几乎所有的矩形特征都可以满足上述要求)。每轮训练,将选取 当轮中的最佳弱分类器〔在算法中,迭代T次即是选择T个最佳弱分类器),最后将每 轮得到的最佳弱分类器按照一定方法提升(Boosting)为强分类器。 训练一个弱分类器(特征f) 就是在当前权重分布的情况下,确定f的最优阈值, 使得这个弱分类器(特征f)对所有训练样本的分类误差最低。选取一个最佳弱分类器 就是选择那个对所有训练样本的分类误差在所有弱分类器中最低的那个弱分类器〔特 征)。对于每个特征f,计算所有训练样本的特征值,并将其排序。通过扫描一遍排好 序的特征值,可以为这个特征确定一个最优的阈值,从而训练成一个弱分类器。具体 来说,对排好序的表中的每个元素,计算下面四个值: 1) 全部人脸样本的权重的和T + ; 2) 全部非人脸样本的权重的和T − ; 3)在此元素之前的人脸样本的权重的和 S + ; 第 24 页 上海交通大学工程硕士学位论文 第三章 级联分类器训练及优化 4)在此元素之前的非人脸样本的权重的和 S − ; 这样,当选取当前元素的特征值 FK j 和它前面的一个特征值 FK j−1 之间的数作为阈 值时,所得到的弱分类器就在当前元素处把样本分开一一也就是说这个阈值对应的弱 分类器将当前元素前的所有元素分类为人脸(或非人脸),而把当前元素后(含)的所有 元素分类为非人脸(或人脸)。可以认为这个阈值所带来的分类误差为: e = min(S + + (T − − S − ), S − + (T + − S + )) (3-2) 通过把这个排序的表扫描从头到尾扫描一遍就可以为弱分类器选择使分类误差 最小的阈值(最优阈值),也就是选取了一个最佳弱分类器。 3.5 分类器前后比较 通过上面的训练分类器的流程,从样本库的选择到训练结束。中间有很多值得一 提的事情,譬如,原来的训练过程需要大量的样本库。而现在只是找到正脸、无大角 度倾斜的脸作为正样本。从时间上来看也是如此,基于原来的训练时间需要耐心等待 接近两周,而现在可以几天的时间就能得到一个检测效果良好、适合嵌入式系统应用 的分类器。以下为各种数据的对比: 表 1 分类器训练前后比较 对于嵌入式平台来说,一个占用空间小而又能达到一个好的检测效果的级联分类 器是最需要的。通过数据可以发现,不管是从训练方法上,还是从训练时间、以及生 成简练分类器大小上,对于嵌入式平台的需求来说,新生成的级联分类器是合适的。 下面一章就从使用新的分类器进行检测,并且具体的实验结果数据在第七章有详细的 描述。 第 25 页 上海交通大学工程硕士学位论文 第四章 人脸检测过程 第四章 人脸检测过程 检测部分的主要工作:首先加载级联分类器,然后加载当前的图像;加载图 像后,重新生成一幅灰度图像,即把原来YUV格式的每点象素值用8位灰度值表示。 然后对图像进行积分图计算;接着对图像进行分步式检测,由一定规格的子图像 按一定策略对整幅图像分类,然后逐渐扩大子图像直到不比当前帧图像小;子图 像检测的整个过程,就是由简单到复杂的检测过程,首先选择人脸特征比较明显 的分类特性,去掉大部分没有人脸的子图像,然后通过每一级分类器筛选,最终 判断是否整幅图像含有人脸。 检测启动 加载级联分类器 结束? 否 加载视频流当前 一帧图像 积分图计算 图像划分分类子 图像 检测结果合并 否 人脸存在? 是 显示人脸信息 各分类检 测结束? 否 第一级强分类 器遍历子图像 子图像再次分类 优化 否 剩余图像 存在? 是 其他强分类器遍历剩 余子图像 检测结果并临时 保存 图 7 人脸检测流程图 Fig.7 Flow chart of face detection 第 26 页 上海交通大学工程硕士学位论文 第四章 人脸检测过程 4.1 预处理 通过上一章所述的方法训练出来的多层级联分类器来检测人脸,但是检测输 入一般是按照视频口接入的,所以在检测之前需要做预处理工作。 1. 读取待检测图像,如果是彩色图像,然后转换为灰度图像。 2. 把训练得到的级联分类器的所有参数读入内存。 3. 设定检测窗口的初始大小为20*20,和训练样本大小一样。 4. 检测窗口放大比例为1.2。 4.2 图像检测方法 在Viola提出多尺度方法[28]前,通常检测采用一种称为图像金字塔式的多 尺度检测方法,即按比例逐层缩小待检测图像形成一个图像金字塔,然后在图像 金字塔中穷举待检测子窗口把各个待检测子窗口作为分类器的输入,最后得到检 测结果。这种方法的特点主要是检测子窗口的大小固定而被检测图像则被不断的 缩小,这也导致了一个问题就是如果待检测图像比较大的话图像的缩小变换将会 占用大量时间,从而降低检测速度。 为了防止发生这种问题,本文采用的是Viola所使用的多尺度方法。即把待 检测图像的大小保持不变,逐层等比放大检测窗口,然后再用各层窗口穷举整张 待检测图像。因为这种方法不需要缩小图像所以相当于提高了检测速度,实际上 所谓的放大检测窗口只是修改检测窗口的长和宽(初始值为20*20 放大时乘以一 个放大系数) 。检测时根据检测窗口的位置大小截取子图像。 本文所采用的检测窗口实际上就是haar 矩形特征,所以放大检测窗口实际 上也就是对特征进行放大而对于haar 矩形特征而言,对于任意大小的矩形特征 特征值的计算代价是一样的,所以这也是采用矩形特征作为弱分类器的一个缘 故。这里放大系数越大检测窗口的放大次数就越少,被检测图像中被检测到的子 窗口数就越少,系统的检测率就会降低,但检测速度将提高;反之亦然。 Viola[28]的实验已经表明窗口放大系数为1.25 或1.2 时带来的漏检较少, 同时可以获得不错的检测速度。此外由于矩形特征对于位移并不是很敏感,所以 没有必要对每个像素位置都进行检测,当前检测窗口的位移步长加上当前检测窗 口的像素位置就是下一次检测的位置。假设一个20*20的标准检测窗口扫描的基 本位移步长为a, 当前检测窗口相对于20*20标准检测窗口的放大系数是b, 则 形式化的各种规模的检测窗口的位移步长就是a×b 。这里步长越大,检测速度 就越高,但检测率就越低;反之亦然。本文所使用的多尺度放大系数是1.2, 基 本位移步长是1或者2,当检测到人脸时,步长为2,没有检测到步长时,步长为2, 第 27 页 上海交通大学工程硕士学位论文 第四章 人脸检测过程 关于检测窗口的放大需要注意的是虽然检测窗口放大了,但是各个弱分类器的阈 值仍然保持不变。这个问题可以如下来证明。 如果检测窗口放大 1.2倍,其实可以相当于将样本图像和矩形特征也放大 1.2倍,然后重新训练样本得到新的级联分类器,最后使用这个新生成的级联分 类器对放大后的检测窗口进行检测。为了证明不用重新训练,只要证明想象中的 新级联分类器里的各弱分类器的阈值和原来一样即可。即只要弱分类器的阈值不 变,那么强分类器的阈值也不变。弱分类器的阈值其实是某个被选中的矩形特征 在某一样本图像上的特征值,简言之, 弱分类器的阈值就是一个特征值。如果 样本图像和矩形特征都放大1.2倍, 这时的矩形特征值 feature1' = w1 1.2 *1.2 * area * rectsum(r1' ) + w2 1.2 *1.2 * area * rectsum(r2' ) (4-1) 其中 w1 、 w2 是初始权值,是根据矩形特征的原型的权值比确定的,在训练 和检测过程中不变;area为原样本图像的面积,样本放大1.2倍其面积放大 1.2*1.2倍; r1' 、 r2' 是放大后的矩形特征内的两个矩形,分别对应于原矩形特 征内的两个矩形 r1 、r2 , r1' 、 r2' 的面积分别是 r1 、r2 的1.2*1.2倍;recsum( r1' ) 是 r1' 内所有象素灰度值之和,recsum( r2' )是 r2' 内所有象素灰度值之和。由于 r1' 、 r2' 和 r1 、 r2 在样本图像上的相对位置是相同的, 对应样本图像的区域也是相同 的, recsum( r1' )=1.2*1.2*recsum( r1 ) (4-2) recsum( r2' )=1.2*1.2*recsum( r2 ) 因此故 (4-3) feature1' = w1 area * rectsum(r1 ) + w2 area * rectsum(r2 ) = feature1 (4-4) 通过等比例计算,矩形特征值不变,弱分类器的阈值也不变,仍然是原来的 级联分类器,不必放大样本和矩形特征来重新训练生成新的级联分类器了。 所以矩形特征值不变弱分类器的阈值也不变也就不需要通过放大样本图像 和矩形特征来重新训练新的多层级联分类器。所以前面所述的把权值除以样本图 像的面积Area也就是为了实现在放大检测窗口的同时保持分类器的阈值不变的 目的。 第 28 页 上海交通大学工程硕士学位论文 第四章 人脸检测过程 4.3 检测流程 多层级联分类器最前面的几层强分类器虽然相对比较简单,通常一层强分类 器仅仅由几个弱分类器组成,但是它们却可以在检测的早期阶段达到接近99%的 检测率。所以在使用多层级联分类器检测人脸图像时,一般都分为两个检测阶段。 在第一个阶段通常先用最前面两层强分类器快速筛选掉那些显然不是人脸的子 窗口,从而大大减少需要后续处理的子窗口数量;在第二个阶段,才用后续层的 强分类器去检测那些疑似的人脸窗口,更新多层级联分类器中所有弱分类器对应 的矩形特征的参数。 下面为级联分类器的子图像检测过程: 1. 设级联分类器的层数为 n,首先先使用第一级强分类器进行检测;然后 通过其他强分类器依次检测。 2. 设 i 级强分类器的弱分类器个数为 i(m); 3. i 级强分类器检测流程: 1) for t=1:m; 2) 利用积分图快速计算第 t 级的弱分类器特征值 h(t),然后权值相 乘加得出 sum(i); 3) 最后比较 sum(i)和第 i 级强分类器的阈值,大于则是通过,否则, 退出。 4. 通过所有强分类器,就是人脸;否则,不是人脸。 有检测过程可知,矩形特征值可以用积分图快速计算;整个检测过程中真正 需要计算的几乎就是特征值的计算了。虽然训练过程比较复杂而且费时,但得到 的级联分类器却是简单而有效的。 不必逐层缩小待检测图像,当图像较大时, 这一优点将更为突出:取而代之的方法是待检测图像不变,放大检测窗口,只需 要改变窗口的尺寸而不是图像。这一做法的依据是放大检测窗口,原级联分类器 可以继续使用,分类器的阈值不受影响。所以会取得比较快的检测速度。 4.4 合并后处理 在检测结果中常常会出现重叠现象,即在一个人脸的周围检测出了多个位置 和大小都差别不大的矩形框。因此必须通过一个合并过程把这些矩形进行合并, 以便获得最终结果。合并的时候通常要遵从 2 个原则[44], 1、 被合并的矩形 框必须要有足够大的重叠面积;2、 被合并的矩形框大小应该比较相近。在进行 归并处理的时候,上面这种重叠包含关系比较容易判断和处理,但实验中发现两 个挨得很近的人脸也可能出现交错关系,应选择好的归并法避免将这种情况误 第 29 页 上海交通大学工程硕士学位论文 第四章 人脸检测过程 判。我们用下面这个算法来说明: 1. 对所有的检测到的人脸窗口进行分类划分,从最开始的窗口开始分类, 初始值为 1; 2. 对于每一个窗口,进行邻居相似度辨认。如果是邻居,则归为一类; 3. 对与所有的窗口分类结束后,根据分类数,确定每一类的邻居数量。去 掉邻居数量小于 3 的类; 4. 对于邻居数量不小于 3 的类,进行邻居数量计算。计算每一类的算术平 均值(窗口大小及位置); 5. 对上面的结果窗口进行邻居相似度辨认,得出最终可能人脸位置。 其中对于结果窗口的的邻居相似度辨认算法,步骤如下: 设有两个窗口 window1 和 window2,每一个窗口都有 x,y 和 size。 即长度、宽度、和边长(因为为正方形)。 相似可合并准则如下: window1->x <= window2->x + 0.25*window2->size; window1->x >= window2->x - 0.25*window2->size; window1->y <= window2->y + 0.25*window2->size; window1->y >= window2->y - 0.25*window2->size; window1->size <= 1.25*window2->size; widnow1->size*1.25 >= window2->size. 第 30 页 上海交通大学工程硕士学位论文 0.25*size size window 0.25*size size 第四章 人脸检测过程 图 8:邻居可合并区域表示 Fig.8 Show of merge fields of neighbors 上面图示可清晰表明,如果两个窗口重叠在阴影区域内,则两个窗口是邻居 相似,可合并。 最后就是把合并得到的人脸窗口依次传送到输出的视频口,并在显示器上显 示人脸的大小和位置。 第 31 页 上海交通大学工程硕士学位论文 第五章 系统开发环境 第五章 系统开发环境 因为本文主要是人脸检测的软硬件协同设计,其中软件和硬件都是基于 Xilinx 公司的 Virtex-II PRO 开发板的 FPGA 平台。本章主要介绍 Xilinx 的 Virtex-II PRO 开发板以及开发工具 ISE、EDK,以及系统用到的 Power PC 处理器及挂接 硬件加速模块的总线(CoreConnect 总线)。 5.1 Xilinx 的 Virtex-II PRO 开发板介绍 FPGA ( Field Programmable Gate Array)是目前应用最广泛的新一代可编程逻 辑器件,自 1985 年由美国 Xilinx 公司推出第一款产品以来,FPGA 发展迅速, 发展到目前数百万门至上千万门的单片 FPGA 芯片,工作频率可达 500MHz,并 且 FPGA 器件实现的各功能块在硬件层面上并行工作,从而可以实现指令级, 比特级、流水线级以及任务级的并行执行,从而大大加快了计算速度和数据吞吐 率,由 FPGA 实现的数字处理系统速度可以达到现有通用处理器的数百甚至上千 倍。另外,基于 SRAM 工艺的 FPGA 芯片在系统运行期间可以动态重构,也大 大增加了系统的灵活性。 Virtex-II Pro 系列 FPGA 是 Xilinx 公司 2002-2003 年在 Vritex-II 系列产品之 后推出的新型高端 FPGA,它采用 0.13um 工艺生产,内核电压为 isv,支持多种 接口标准,井集成了嵌入式 PowerpC.处理器和 6.25 Gbps Rocked 串行收发器, 内 部 时 钟 频 率 可 达 420MHz.Virtex-II Pro 系 列 产 品 的 内 部 结 构 图 如 图 3.112+1.CLB (Configurable Logic Block 可配置逻辑模块)完成大部分的逻辑功 能:IOB(Input/OutputBl ock 输入输出模块)用于提供封装管脚与内部逻辑之间的接 口;BlockRAM(块 RAM)用于实现 FPGA 内部随机存取;DCM(DigitalCl ockM anager 数字时钟管理器)用来提供灵活、高效的时钟管理。Vritex-IIPro 系列主要 器件的技术参数如表 3.11 为所示。 第 32 页 上海交通大学工程硕士学位论文 第五章 系统开发环境 图 9 Virtex II Pro 内部结构 Fig. 9 Virtex-II Pro Generic Architecture Overview 表 2 Vritex-IIPro 系列主要器件的技术参数 该系列产品与 Xilinx 公司以前推出的 FPGA 产品相比较,内部结构作了较大改进, 主要包括[39]: 1. 内部 CLB 模块含有 4 个 Slice,提高了产品的逻辑容量和资源利用率; 2. 内嵌专用乘法电路,提高了产品进行数字信号处理的能力和速度; 3. 内嵌多达 10M 的 BlockRAM 和对大容量片内存储的需求; 4. 先进的数字时钟管理器(DCM,解决方案:1.7M 的 Distribute RAM,适应当 第 33 页 上海交通大学工程硕士学位论文 第五章 系统开发环境 前设计 DigitalC lockM anager)提供灵活的时钟; 5. 支持高达 1,704 个用户 I/0,支持 22 个单端标准和 Im10 个差分标准; 6. 采用了数控阻抗匹配(DCI, Digitally Controlled pedance)技术,从而 减小因阻抗匹 配问题造成的系统不稳定; 7. 更加丰富的布线资源保证逻辑资源的更大利用率; 8. 嵌入最新安全性技术,支持配置数据三重加密,有利于知识产权的保护; 9. 提供了从 RocketlO- 622M bps 到 3.125G bps 的千兆位级收发器(MGT); 10. 内嵌多达 4 个 PowerPC 405 处理器; 11. 内置多达 556 个 18*18 专用硬件乘法器。 Virtex-II P r o 系 列 FPGA 更加丰富的资源,更大容量的内嵌存储器,更 先进的时钟管理使其拥有更加优越的性能,内嵌多达 556 个 18*18 专用硬件乘法 器使其更加适用于数字信号处理。 5.2 开发工具简介 5.2.1 ISE 介绍 ISE 的英文全称是 The Integrated Software Environment,即集成软件环 境。ISE 是利用 Xilinx FPGA 进行逻辑设计的基础,集成了约束输入、时序分析、 逻辑布局布线、器件编程等多种设计单元。 它是一个集成环境,可以完成整个 FPGA/CPLD 开发过程。ISE 集成了输入, 仿真、综合、布局布线、配置下载等完整的 FPGA/CPLD 设计工具, 根据设计流 程合理应用这些工具,设计工作简单方便。 1. ISE 界面风格简洁流畅、易学易用。ISE 的界面秉承了可视化编程技术,界 面根据设计流程而组织,整个设计过程只需按照界面组织结构依次点击相应 的按钮或选择相应的选项即可。 2. ISE 有丰富的本地帮助和在线帮助信息,通过这些帮助,设计过程中可能遇 到的问题一般都能得到很好的解决. 3. 强大的辅助设计功能。ISE 秉承了 Xilinx 设计软件的强大辅助功能,在编写 代码时可以使用编写向导生成文件头和模块框架,也可使用语言模块 (Language Templates)帮助编写代码。在图形输入时可以使用 ECS 的辅助项 帮助设计原理图。另外,ISE 的 Core Generator 和 LogiBLOX 工具可以方便 的生成 IP Core (IP 核)与高效模块为用户所用设计者的工作量,提高了设 计效率与质量。 第 34 页 上海交通大学工程硕士学位论文 第五章 系统开发环境 5.2.2 EDK Xilinx EDK 的全称是 Embedded Development Kit,即嵌入式开发套件。它 包含利用 Xilinx FPGA 器件进行完整的嵌入式系统设计所需的一整套工具和 IP。 结合 Xilinx 逻辑设计工具 ISE,EDK 提供的流程化设计工具可以大大简化嵌入式 系统设计中的软硬件协同问题。 目前 EDK 的版本已经达到了 9.x,从稳定性和通用性的方面考虑,本章所介 绍的内容均以 EDK 的上一个最高版本 8.2i 为例,配套的 ISE 版本也为 8.2i。 EDK8.2i 包含以下重要的设计组件,覆盖嵌入式设计流程的所有方面: Xlinx Platform Studio (XPS):XPS 图形界面是进行嵌入式系统中硬件设 计的开发环境; Software Development Kit (SDK):软件开发套件 SDK 是适用于 XPS 的集成 嵌入式软件开发环境,用于 C/C++嵌入式应用软件的开发和验证。 其它组件:如 Xilinx 嵌入式处理器所需的硬件 IP、软件开发所需的驱动和 库文件、针对 PowerPC 和 Xilinx 软核 MicroBlaze 的 C/C++编译器和调试器等。 5.3 Power PC 处理器 Virtex-II 等系列平台 FPGA 中植入 IBM PowerPC 405 内核,它是一个 32 位的 RISC 的 CPU ,它的 DMIPS 性能是竞争软处理器内核的五倍多。在 Virtex-II Pro FPGA 中实现的 32 位 PowerPC 内核,在时钟频率为 450 MHz 时的性能超过 680 DMIPS。 完美地实现了 IBM 先进的 90 纳米铜 CMOS 技术。405 内核充分发挥 了 POWER 架构的高可扩展性和灵活性,并专为嵌入式应用进行了优化。 可授权的嵌入式内核集成了标量的 5 级管线,拥有各自独立的指令缓存和数 据缓存,一个 JTAG 端口,跟踪式 FIFO,多个计时器和一个内存管理单元(MMU), 性能可达 1.52 DMIPS/MHz PowerPC 405 内核的突出性能、低功耗规格以及设计特性使其成为新兴的消 费电子、存储和有线/无线通讯应用的理想解决方案。 第 35 页 上海交通大学工程硕士学位论文 第五章 系统开发环境 图 10 PowerPC 405 结构框图 Fig.10 Power PC 405 architecture overview 第 36 页 上海交通大学工程硕士学位论文 表 3 PowerPC 内核参数 第五章 系统开发环境 PowerPC 405 内核参数 工艺 130 nm 90 nm 完全综合 晶圆代工厂 IBM、特许 IBM、特许、三星 所有 频率(最差条件) 366 MHz 400 MHz 250-300 MHz (取决于进程) 性能(估计) 555 DMIPS 608 DMIPS 380-456 DMIPS 典型耗电量 (估计) 0.5 mW/MHz @ 1.5 V 0.19 mW/MHz @ 0.25-0.6 mW/MHz 0.3 mW/MHz @ 0.9 1.1V (由进程而定) V 电源 1.5 V 1.1 V 由进程而定 温度范围 -40oC to +105o C -40o C to +105o C -40o C to +105o C 核心尺寸,CPU + L1 3.8mm2 2.0mm2 由进程而定 硬件和软件的内核选项 PowerPC 405 内核可以硬(固定布线)或软宏形式交付。硬核可由 IBM 优异 的处理器技术或由 IBM 合作伙伴晶圆代工厂的代工优化版方式提供。完全综合的 软核则可在多个代工厂制造。 凭借 CoreConnectTM 总线架构, 405 内核可与外设和专用宏内核集成到一 起,用来开发定制化系统芯片。外设选件包括内存控制器、DMA 控制器、PCI 接 口桥以及中断控制器。 IBM 广泛的合作伙伴网络可提供全面的 PowerPC 家族支持工具,其中包括: 外围 IP、操作系统、编译器、调试器、模拟和仿真器以及设计服务。PowerPC 405 内核设计通用,可应用行业标准的 EDA 工具进行设计。 PowerPC 405 CPU 具有以下特性: 1) 兼容 PowerPC 用户指令集架构 2) 标量 5 级管线, 第 37 页 上海交通大学工程硕士学位论文 第五章 系统开发环境 3) 32 个 32 位通用寄存器 4) 硬件乘除 5) 16 位 x 16 位 MAC 6) 分支预测 (1) 高速缓存控制器 (2) 带有奇偶校验的独立 16KB I-cache, D-cache 高速缓存单元 (3) 先入,数据前送 (4) 非阻塞操作 (5) 可编程的程序装载和存储。 7) 内存管理单元 (1) 可变页面大小 (1 KB - 16 MB) (2) 64 入口全关联的统一转换检测缓冲器(TLB) 8) 输入/输出接口 (1) 支持 64/128 位 CoreConnect 处理器本地总线(PLB)接口支持 (2) 支持 n:1 和 n:2 CPU 到 PLB 频率比 (3) APU 接口 (4) 片上内存(OCM) (5) JTAG 9) 计时器 (1) 64 位时基 (2) 可编程的时间间隔计时器 (3) 固定间隔计时器 (4) 看门狗计时器 10) 调试支持 (1) 4 条指令地址,2 条数据地址,和 2 条数据值断点 (2) 实时非侵入式跟踪 (3) 独有回溯能力 第 38 页 上海交通大学工程硕士学位论文 ISOCM BRAM Power PC 405 DSOCM BRAM 第五章 系统开发环境 Arbiter Processor Local Bus(PLB ) Bus Bridge On-chip Peripheral Bus(OPB) Arbiter Hi-Speed Mem Peripheral Controller User Logic User Logic UART On-chip Peripheral 图 11 基于 PowerPC 的嵌入式设计结构 Fig.11 Embedded system architecture based on Power PC 如图所示:PowerPC 405 是此嵌入式系统的核心,它通过 PLB 总线实现和程 序存储器、高速外围和数据存储器的快速通道等的访问,并通过 PLB-OPB 桥实现 了片上的 OPB 总线,然后通过 OPB 总线进行各种外设的扩展,OPB 外设包括 UART 串口, GPIO 作以太网控制器输出的中断请求。 OCM 控制器在 FPGA 中的块 RAM 和嵌入式 PowerPC 405 处理器核心执行单元 间提供一个专用的接口。PowerPC(TM) 核心上的 OCM 信号旨在提供对固定大小的 指令和数据存储器空间的超快速访问。OCM 接口具有与缓存同样的访问时间。由 于缓存为来自其它存储器资源的缓冲代码而保留,因此 OCM 减小了缓存的更新频 率。双口块 RAM 可做为 OCM 在处理器核心和 FPGA 结构间实现一个高效率的共享 式高速缓存存储器接口。 Virtex-II Pro(TM) 器件提供了高达 16 个千兆位并串和串并收发器,可以 支持不同的高速串行标准,如 Gigabit Ethernet、 Fiber Channel、 Infiniband、 Serial ATA、 RapidIO、 3GIO、 Aurora、 和 XAUI。其通道绑定功能可以结合 多个通道提供高于 3.125Gbps 的数据传输速率。Rocket I/O(TM)收发器支持物理 媒体附加子层(串行化器、并串转换器、时钟和数据恢复、发送/接收缓冲器) 和物理编码子层(8B/10B 编码器/解码器和弹性缓冲器)。 PLB 是处理器本机总线,它为指令和数据一侧提供独立的 32 位地址和 64 位 数据总线。PLB 总线架构支持多主从设备,每一个 PLB 主控机通过独立的地址总 线、读数据总线和写数据总线与 PLB 连接,有一个中央判决机构来授权对 PLB 的访问以允许主控机通过竞争来获得总线的所有权。OPB 是片上外设总线,提供 分离的 32 位地址总线和 32 位数据总线,一般用来访问低速和低性能的系统资源。 第 39 页 上海交通大学工程硕士学位论文 第五章 系统开发环境 它是一种完全同步总线,但不直接连接到处理器内核,处理器内核通过“PLB to OPB”桥和 OPB 总线来访问 OPB 接口外设。下一节详细叙述。 5.4 CoreConnect 总线简介 CoreConnect 是由 IBM 开发的片上总线通信链, 它使多个芯片核相互连接 成为一个完整的新芯片成为可能。CoreConnect 技术使整合变得更为容易,而且 在标准产品平台设计中, 处理器、系统以及外围的核可以重复使用, 以达到更 高的整体系统性能。CoreConnect 总线架构包括处理器本机总线(PLB),片上外 围总线(OPB) ,1 个总线桥, 2 个判优器, 以及 1 个设备控制寄存器(DCR) 总线,CoreConnect 总线架构如图 6 所示。Xilinx 将为所有嵌入式处理器用户提 供 IBM CoreConnect 许可,因为它是所有 Xilinx 嵌入式处理器设计的基础。 MicroBlaze 处理器使用了与 IBM PowerPC 相 同 的 总 线 , 用 作 外 设 。 虽 然 MicroBlaze 软处理器完全独立于 PowerPC ,但它让设计者可以选择芯片上的运 行方式,包括一个嵌入式 PowerPC,并共享它的外设。 1.片上外设总线(OPB) 图 12 CoreConnect 总线架构 Fig.12 CoreConnect bus architecture 内核通过片上外设总线(OPB)来访问低速和低性能的系统资源。OPB 是一种 完全同步总线, 它的功能处于一个单独的总线层级。它不是直接连接到处理器 内核的。OPB 接口提供分离的 32 位地址总线和 32 位数据总线。处理器内核可 以借助“PLB to OPB”桥,通过 OPB 访问从外设。作为 OPB 总线控制器的外设 可以借助“OPB to PLB ”桥,通过 PLB 访问存储器。 第 40 页 上海交通大学工程硕士学位论文 第五章 系统开发环境 2.处理器本机总线(PLB) PLB 接口为指令和数据一侧提供独立的 32 位地址和 64 位数据总线。PLB 支持具有 PLB 总线接口的主机和从通过 PLB 信号连接来进行读写数据的传输。 总线架构支持多主从设备。每一个 PLB 主机通过独立的地址总线、读数据总线 和写数据总线与 PLB 连接。PLB 从机通过共享但分离的地址总线、读数据总线 和写数据总线与 PLB 连接,对于每一个数据总线都有一个复杂的传输控制和状 态信号。为了允许主机通过竞争来获得总线的所有权, 有一个中央判决机构来 授权对 PLB 的访问。 3.设备控制寄存器总线(DCR) 设备控制寄存器总线(DCR ) 是为在 CPU 通用寄存器(GPRs)和 DCR 的从逻 辑设备控制寄存器(DCRs)之间传输数据而设计的。 第 41 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 第六章 人脸检测系统软硬件协同设计 6.1 软硬件设计协同设计原理 对于嵌人式系统来说,整个系统设计可以分为软硬件划分和系统模块设计 2 个阶段。软硬件功能划分就是要确定哪些系统功能由硬件模块来实现,哪些系统 功能由软件模块来实现。硬件一般能够提供更好的性能,而软件更容易开发和修 改,成本相对较低。由于硬件模块的可配置性,可编程性以及某些软件功能的硬 件化、固件化,某些功能既能用软件实现,又能用硬件实现,软硬件的界限已经 不十分明显。此外在进行软硬件功能分配时,既要考虑市场可以提供的资源状况, 又要考虑系统成本、开发时间等诸多因素。因此,软硬件功能划分是一个复杂而 艰苦的过程,是整个任务流程最重要的环节。 系统模块设计是根据系统描述算和软硬件任务划分的结果,分别选择系统的 软硬件模块以及其接口的具体实现方法,并将其集成,最终确定系统的体系结构。 具体地说,这一过程就是要确定系统将采用哪些硬件模块(如全定制芯片、MCU, DSP,FPGA、存储器、I/O 接口部件等)、软件模块(嵌入式操作系统、驱动程序、 功能模块等)和软硬件模块之间的通讯方法(如总线、共享存储器、数据通道等) 以及这些模块的具体实现方法。 总而言之,由于硬件处理的速度很快,但对复杂处理的实现较为困难,所以 对于实时性强且操作较简单的工作则应该由硬件去实现,如对数据的接收发送、 拆包打包等;而软件的处理速度较慢,但却容易实现复杂的算法,所以对于非实 时性的或者复杂的工作应该由软件完成。 在嵌入式系统的设计中,减小硬件面积比减小软件面积更有意义,这是因为 硬件面积的增大意味着系统所占体积的增大。此外,在现有条件下,硬件电路的 设计比软件设计的难度要大得多。从价格上来看,减少单位硬件面积比减少单位 软件面积要便宜的多。所以,我们认为在硬/软件划分中使用首先考虑在FPGA平 台上可以充分利用的资源,然后面向软件将所有的任务都划分到处理器运行,然 后选择将一些任务向硬件上移动,达到速度和成本的最优化,直到满足设计要求 为止。 因而对于人脸检测系统这样的设计中,实时性要求是非常普遍的;同时要求 成本的合理、性能的可靠及产品的快速上市。所以需要做一下权衡,这就要求在 进行系统设计时,需要进行软硬件功能划分,以提高研发的速度。 第 42 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 6.2 人脸检测系统的软硬件设计框架 根据以上的软硬件协同设计分析,通过对算法的分析以及 Virtex-II PRO 开发板的硬件资源的考虑。制定了了人脸检测系统的软硬件设计框架,如图 所示: 片内 RAM Power PC 处理器 I-Cache Bram D-Cache Bram PLB 总线 视频采集 硬件加速 模块 外部 SRAM 人脸显示 图 13 人脸检测软硬件协同设计框图 Fig.13 Face detection co-design architecture overview 6.3 算法的移植与软件优化 人脸检测算法在 PC 机上已经实现,下一步工作就是移植到 FPGA 平台上, 工作环境是 EDK 开发软件。因为嵌入式平台和 PC 平台编译器的不同,所以要 对算法进行优化和处理。下面详细介绍这个过程中的工作。 1. 去掉 windows 函数及动态链接库 由于 PC 机上的人脸检测程序含有大量的 windows 函数及一些动态链接库。 这些都无法在 EDK 平台下编译通过,所以要去掉这些函数,并且建立程序的独 立体。 2. 大数端和小数端的变化 Windows 使用的是 x86 平台,是小数端;而 Virtex II PRO 平台是 Power PC 处理器,Power PC 支持大数端的数据格式;如果不改变小数端到大数端格式, 第 43 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 那么在 Power PC 处理指令,取数据时会发生错误。所以,在程序中额外编写了 大数端和小数端的转换函数,在算法内部和级联分类器都会用到。 3. 数据类型的改变 Windows VS2005 平台下支持的主要是 int,float,double,__int64;而 Power PC 平台支持的是最基本的嵌入式平台数据类型:short,int,float,long long, double。移植的过程中需要对长整型的数据格式进行转换。 4. 浮点转定点 在人脸检测计算中,常常要涉及到将浮点数转换为整数,以便在计算中提高 速度。在本文检测算法中,需要进行大量的矩阵特征值计算。如果采用浮点计算, 虽然精度高,但速度势必会低很多。相反,定点数据处理速度快,功耗低。 对于嵌入式系统开发者来说,浮点转定点是一个重要的内容。甚至很多嵌入 式开发板就不提供浮点运算的支持。定点数表示的精度较低,但表示的数值范围 较大;而浮点数恰恰相反。定点数的运算在计算机中实现起来比较简单,效率较 高;而浮点数的运算在计算机中实现起来比较复杂,效率相对较低。 而在 Xilinx 公司基于视频信号复杂处理系列的 FPGA 开发板中,为了提高运算的速度,提供 了大量的乘法器。同时提供了 Power PC 这样的处理器,对于处理器来说,定点 运算速度快,功耗低。为了能达到设计所需要的速度和满足设计的精度,所以浮 点转定点是必要的一项工作。通常,浮点转定点有一下几种方法: 1) DSP 中使用 Q 格式的浮点数,比如 Q13 格式,其实就是将浮点数放大 很多倍(2 的幂次),最终在解释运算结果时把这个放大的倍数考虑进来。 2) 将浮点数输入 Matlab,里面有两个函数 rat 和 rats,可以将浮点数表 示成最近似的有理数,表示的精度可以通过参数来控制,这样所有的浮 点数都变为有理数,再通过有理化就全变成整数了。一个确定的字长表 达的数的范围和精度是相互矛盾的,此消彼涨。 3) 嵌入式硬件平台上,出现复杂的数学公式很是头疼,因为硬件相关的软 件平台提供的功能很有限,有的就没有很多“常见”的开方等数学公式。 如果该类运算在项目中很少出现,而且其取值的个数也不多,那么就可 以考虑对各种情况加以分析,把各种可能的结果制作成一个静态的表格 (可以理解成数组),再加以简单的条件判断语句就可以解决该类问题。 这就是查表运算,可以提高速度。 对于本次设计,通过提取上面的一些优点。是直接对数据位进行操作它提取 指数和尾数,然后对尾数执行移位操作。它有几个特点: 1) 依赖于硬件平台。例如根据小尾和大尾顺序的不同,要相应地修改函数。 2) 对于 float 和 double 要使用不同的实现,因为二者的数据位不同。 3) 对于 float,只能保留 24 位有效值,尽管 int 有 32 位。 第 44 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 转换关系可以描述为:float 型浮点数 y 转换为 n(n<=24)位精度整数 x。 如何确定 n 的大小,这里采用统计分析法,对于理论上无法确定范围的变量,一 般采用统计分析的方法来确定其动态范围。所谓统计分析,就是用足够多的输入 信号样值来确定程序中变量的动态范围,这里输入信号一方面要有一定的数量, 只有这样,统计出来的结果才能具有典型性。当然,统计分析毕竟不可能涉及所 有可能发生的情况,因此,对统计得出的结果在程序设计时可采取一些保护措施, 如适当牺牲一些精度。对于 float,只能保留 24 位有效值,尽管 int 有 32 位。 但是对于本次的人脸检测算法,因为只用到 float 类型的转定点。而且数据的精 度可以完全控制在 24 位内,所以这种转换方式取得很好的效果。 同时,浮点转定点还包括 除法转换为乘法或移位计算。不管硬件平台如果 变换,除法运算所需要的时钟周期都远远多于乘法运算和加减移位运算,尤其是 在嵌入式应用中,“效率”显得尤为重要。以笔者的经验,其实,项目中的很大 一部分除法运算是可以转换成乘法和移位运算,效率还是有很大提升空间的。对 于一些除法运算,为了保证精度,如果分子的扩大范围不够大的话,可以考虑缩 小分母,也可以达到预期效果。 5. 除法运算的消除 一个除法操作须花费 60~120 个周期进行处理,而一个乘法操作最多需要 4 个周期。在除法可以被乘法代替而不丧失准确性的计算中,这样做是非常有好处 的。 6. 堆栈的优化 这里的优化主要体现在节约寄存器资源。任何一种芯片的寄存器资源都是有 限的,算法过程中往往会用到较多的寄存器,所以仍须节俭。方法如下:其一, 在可能的情况下尽量少用寄存器,比如可对一个寄存器多次使用。其二,根据具 体情况选择最优的变量类型,在局部变量中,使用 int 类型效率最高;而对于全 局变量,使用 short 类型,则可减小内堆栈的使用量。 6.4 算法的速度瓶颈分析 使用 linux 系统提供的 Gprof 这个 profile 程序,可以得到程序运行信息。Profile 程序可以用来检测程序不用部分(主要是各个函数)的使用时间和条用次数。因 此可以使用这个程序来鉴别程序中那个函数是整个程序的瓶颈,从而可以通过优 化这个函数来提高程序的性能。Linux 下的 profile 程序提供两种信息:1、程序 中每个函数的 CPU 使用时间。2、每个函数的调用次数。并提供简单调用关系图。 通过 profile 提供的信息,可以看到人脸检测程序的耗时函数,为下一步硬件加 速做好准备。 第 45 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 6.5 硬件加速模块设计 6.5.1 加速模块接口 基于PowerPC的PLB总线的加速策略,加速模块会使用PLB高速总线协议来 与PowerPC做数据交互,因此就必须要依照IBM CoreConnect的协议做设计,所 以对设计者而言则又必须要额外的去学习另外的架构协议。所以Xilinx公司提供 了一个服务接口为Intellectual Property Interface, IPIF(简称IPIF),此服务接口提供 使用者一些常使用的服务创建IPIF,选择需要的属性,如是否包括FIFO、DMA等, 系统会自动创建HDL文档模板,用户只需要添加用户程序部分。同Coreconnect总 线连接部分不用用户操心。设计者只需要去了解所提供服务的原理就可以很轻易 的设计自己的硬件加速模块。 在本次设计中主要用到了IPIF提供的几项基本的服务: 1. S/W Reset and Module Information Register (RST/MIR):硬件加速模块将会拥有只可以写入的地 址线,此地址线由IPIF来产生控制,会产生一个复位信号使得硬件加速模块自己 作重置的动作。此复位讯号可以是软件所发出也可以是硬件发出。 2. Burst and Cacheline Transaction Support:允许Master传送大量的数据或者是 Cacheline方式来传送数据,此种服务只被用在PLB硬件加速模块上面。 3. User Logic Interrupt Support:提供了一个硬件加速模块中断服务的服务,当硬 件加速模块要传送资料时,IPIF会产生一个中断信号来通知系统。 4. User Logic S/W Register Support:利用软件逻辑上的缓存器来储存资料,在经 过选择地址线的方式将数据做运算。 5. User Logic master Support:支持硬件加速模块当作是Master。 6. User Logic Address Range Support:支持多个地址线选择的方法,当外围设备 太多时候,内存又拥有很多个区块(bank)时候,可以用多地址线选择方式来选择。 第 46 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 图 14 IPIF 接口 Fig.14 IPIF interface overview 在基本的自定义模块上,添加相应的控制寄存器,通过向不同的寄存器内写入 相应的控制字。最后通过 IBM CoreConnect 技术,在自定义模块外面添加总线接 口,作为自定义 IP,将其挂载到系统总线上,便可以方便的对其进行读写操作,实现 自定义 模块与 Power PC 的通信。挂接的过程首先需要自定义一个带有初始值 的 Register 与 PLB 总线通过 IPIF/IPIC 挂接,并通过 Power PC 进行访问,可以 分别进行写入与读出测试,在保证数据正确无误的前提下,把自定义模块按照同 样的方法进行挂接。然后在 EDK 中,通过 Create/ Import IP 工具把自定义模块添 加到系统中,并为其分配地址,建立端口连接,之后就可以使用该 IP 了。 6.5.2 长整型乘法模块 在实际的算法中,经常要碰到长整型的乘法。同样在人脸检测中也是,因为 Virtex-II Pro 本省含有自己的 IP-18 位乘法模块,所以在碰到长整型乘法时, 要采用新的方法。假如 A 为 24 位,B 为 10 位,则在实际的运行过程中,要把 A 分解为{6 位,18 位},这样分别乘以 B,最后 A 的前六位乘法的结果要左移 18 位再与后 18 位乘法的结果相加。 第 47 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 这个 MULTIPLY 模块是利用 Xilinx 公司的中 core,直接由 core generator 生成的。IP 核是指:将一些在数字电路中常用的但比较复杂的功能块,如 FIR 滤 波器、SDRAM 控制器、PCI 接口等设计成可修改参数的模块,让其他的用户可以 直接调用这些模块,以避免重复劳动。随着 CPLD/FPGA 的规模越来越大,设计越 来越复杂,使用 IP 核是一个发展趋势。许多公司推荐使用现成的或经过测试的 IP 核,用来增强已有的 HDL 的设计方法[39]。当进行复杂系统设计的时候,这 些 IP 核将大大地减少设计风险及缩短开发周期。这些功能块具有很高的执行效 率,使得综合结果面积小,频率更高,所需编译时间更短。 目前 CORE Generator 可生成的 IP 核大致可分为 10 大功能模块,而存储 器模块是其中的一个重要部分。同时 Xilinx 公司会在每次其 FPGA 设计平台 ISE 升级的时候,给出 IP core 的升级。此外,用户还可以通过上 Xilinx 公司的网 站上了解更多的 IP core 信息。 6.5.3 图像比例缩减模块 本部分就是加速模块关键设计模块之一 Resize 图像模块。它通过把原始图 像按照一定比例缩小,得到一定大小的图像以方便后面的检测。该模块包含根据 resize 次数的来决定大小图像并调用映射关系的 resize_top 模块,图像缩减比 例的生成对应地址关系的 resize_map 模块,映射关系临时的存储空间 RAM_256_8 模块。下面是整体 resize.v 模块结构图(主要端口): src_ram_data src_ram_addr resize_begin resize_times Resize 模块 resize_top dst_ram_addr dst_ram_data screen_width screen_height last_pixel _addr row_max_addr resize_done map_enable addr_rd addr_map map_addr resize_map RAM_256_8 map_data 图 15 Resize 模块 Fig.15 Resize module 在整个 resize 模块中,最重要的就是双线性插值算法,双线性插值能够避 第 48 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 免采用最近领域插值方式时可能存在的图像模糊、块状失真等问题。图像之间坐 标映射有两种方式:如果是从原图像的坐标映射到目标图像,称为前向映射,反 之则称为后向映射。显然,双线性插值采用的是后向映射方式。首先,根据几何 关系,假设从 B 图像中的坐标(x,y)得到 A 图像中的坐标(x/4,y/4),但是,映射 得到的这个坐标(x/4,y/4)并没有刚好位于 A 图像中的整数坐标上,而是映射到 了四个像素坐标(a,b)、(a+1,b)、(a,b+1)、(a+1,b+1)所围成的矩形之间,其中, a、b 是 A 图像的整数坐标。现在的问题就是如何根据 A(a,b)、A(a+1,b)、A(a,b+1)、 A(a+1,b+1)这四个点上的灰度级求出 A(x/4,y/4)处的灰度级。双线性插值技术 采用的方法是:假设 A 图像的灰度级变化在纵向方向上是线性变化的,这样根据 直线方程或者几何比例关系就能够求得(a,y/4)和(a+1,y/4)坐标处的灰度级 A(a,y/4) 和 A(a+1,y/4) 。 然 后 , 再 假 设 在 ((a,y/4),A(a,y/4)) 和 (a+1,y/4),A(a+1,y/4))这两点所确定的直线上,灰度级仍然是线性变化的。求 出直线方程,于是就可以求得(x/4,y/4)处的灰度级 A(x/4,y/4)。这就是双线性 插值的基本思路。其中用到的两个基本假设是:首先灰度级在纵向方向上是线性 变化的,然后假定灰度级在横向方向上也是线性变化的。 另一个方面,在图像变换过程中,为了方便硬件实现。图像变化比例为(4/3) 的倍数,这样计算可以更加的方便。 6.5.4 除法模块 除法运算是最困难的运算,常见的演算法有移位相减法,位元递回法, SRT 法等,我们采用移位相减法实现除法电路,此演算电路比较容易实现。例如,被除 数是 0FFFFFFFFH,除数是 0004H 时。首先,把进位位和余数单元清零。再将进 位位、余数单元和被除数单元按顺序首尾相连,逐位进行向左循环移位(如图示), 共移位 32 次。每移位一次,余数单元都 C (H L) (HH HL LH LL) 进位位 余数单元 被除数单元 和除数作一次减法运算,若够减,余数单元内容更新为两者之差,并且将被 除数最末一位置为 1;若不够减,则余数单元内容保持不变,且将被除数最末一 位置为 0。判断是否够减的方法是:在作减法之前,先保存进位位,再看作完减 法后的进位位。仅在作减法之前进位位为 0,并且作减法之后进位位为 1 时判为 不够减,其余情况均视为够减。这样,等到全部运算结束时,商数为四个字节, 存放在被除数单元中;余数为两个字节,存放在余数单元中。这个算法自然、流 畅,运算结果商数为四个字节,余数为两个字节,尤其是在求除以某数的 N 次方 第 49 页 上海交通大学工程硕士学位论文 第六章 人脸检测系统软硬件协同设计 时,省去了繁琐的数据转存语句。该算法还可以依实际需要扩充为位数更高的多 字节除数算法。 第 50 页 上海交通大学工程硕士学位论文 第七章 实验与结论 第七章 实验与结论 7.1 人脸检测结果的评价标准 人脸检测结果的评价标准主要有检测率(hit rate)、 误检率(false alarm rate)、检测速度(detecting speed)、 鲁棒性(robustness) 等。 1 检测率 指的是被正确检测到的人脸数与原图像中包含的人脸数的比值。检测率越 高,说明检测系统对人脸的接受能力越强;反之,检测率越低,接受能力越弱。 2 误检率(误报率) 被误检为人脸的非人脸子窗口数与原图像中被检测的所有非人脸子窗口数 的比值。假设原图像中被检测的所有非人脸子窗口数为 N1,被误检为人脸的非 人脸子窗口数 N2,那么误检率 N2/ N1。再假设原图像中被检测的所有子窗口数 为 N,原图像中包含的所有人脸数为 N3, 则 N= N1+ N3, 那么误检率也等于 N2/ (N-N3) 当 N>> N3 时误检率近似等于 N2/ N。 由于检测率无法反映系统对非 人脸的排除能力,有可能出现这种情况:所有人脸都被检测到,同时很多非人脸 区域也被误认为是人脸;因此,有必要引入误检率来衡量系统对非人脸样本的排 除能力;误检率越低,说明检测系统对非人脸的排除能力越强。 3 检测速度 由于大部分应用领域需要实时的检测人脸,所以,在检测率和误检率达到满 意的前提下,检测速度越快越好。 4 鲁棒性 指的是在各种条件下检测系统的适应能力。比如,基于肤色模型的方法无法 检测灰度图像;大部分检测系统无法检测任意角度旋转的人脸。一般都要把旋转 角度限制在一定范围之内;有些检测方法受复杂背景的干扰,只有在背景简单时 效果好。 这四个标准有些是相互制约的,比如检测率和误检率就经常需要权衡。实践 表明误检率随着检测率的提高而提高,检测率随着误检率的降低而降低。模板匹 配方法的检测速度虽然很快,但其距离函数在不同环境下产生的效果差异很大。 如背景简单时检测效果好,背景复杂时检测效果很差,这就是其鲁棒性不好的表 现。肤色模型也有鲁棒性不好的缺点,因为肤色容易受到复杂背景、光线等条件 的影响,而且对灰度图像无法检测。 第 51 页 上海交通大学工程硕士学位论文 第七章 实验与结论 7.2 级联分类器的指标测试 对于新生成的分类器,检测是在 PC 平台上进行的。同时,相对于以前的分 类器做了检测效果的测试比较。有上面检测标准可知,首先确定两种定义,检测 率(DR)和误检率(FR)。下面是他们的定义: DR = n ×100% N FR = m ×100% m+n 其中 N 为测试集中未检测前的人脸总数,n 为检测后能够识别的正确人脸数, m 为检测后别识别的非人脸数目,即错误检测样本数。本文的测试集主要包含三 个部分,AT&T 测试库、实验室同学库、网上搜索图片库。以下均为新级联分类 器测试情况。 1)利用 AT&T 的人脸测试库中的 1521 张测试图片,其中包含一部分倾斜度小 于 15°的人脸,类似于大头照。 2)实验室的同学可以分为正面人脸、小角度倾斜、低头、戴眼睛、遮挡情况。 图片数量为 30 幅,包含人脸数为 64。另外,在开发板上接上视频输入,如果人 脸始终保持正面人脸、倾斜低于 15°、背景不是很复杂,采集图像为 352*288、 窗口步长增大为 1.2 和检测结果合并个数设定为 3 的情况下,检测速度达到 67ms 的速度,视频测试时间为 1 分钟,检测效果很好。 3)网络上总共搜索了跟实验室的人脸收集情况都有,但是网络上的图片的背景 是多样性的。图片数量为 50 幅,包含人脸数为 185。 表 4 实验表格 实验效果如图所示: 第 52 页 上海交通大学工程硕士学位论文 第七章 实验与结论 图 16 PC 平台检测效果图 Fig.16 Detecting affects Based on PC 第 53 页 上海交通大学工程硕士学位论文 第七章 实验与结论 7.3 系统的整体测试 检验整体优化策略是在开发板上接上视频输入,人脸保持正面、倾斜低于 15°、背景不是很复杂,采集图像为 176*144、窗口步长增大为 1.2 和检测结果 合并个数设定为 3 的情况下,视频测试时间为 30 秒,检测效果和实验室图库效 果一样。 处理速度(s) 2.5 2.1 2 1.5 1 0.92 0.5 0.13 0.11 0.083 0.058 0 原始算优法化检测矩阵定点化操作堆栈优化等 缩减 图像 +除法 乘加 处理速度(s) 图 17 基于 Power PC 的嵌入式平台加速及优化前后的对照 Fig.17 Performance of different optimization methods based on PowerPC 检测效果如图所示: 图 18 Virtex-II Pro 检测效果图 Fig.18 Virtex-II Pro detecting experiments show 第 54 页 上海交通大学工程硕士学位论文 第七章 实验与结论 7.4 实验结论 通过对各种图像的检测,本文得出下面的分析: 1)检测速度:本文的通过分析人脸检测算法,并且经过训练分类器、定点 化、以及硬件加速后,能够使人脸检测系统在基于 Xilinx 的 Virtex II Pro 开发板上平台上,基本达到了 17fps 实时的检测效果。 2)检测定位:可以从上面的检测定位可以看到,人脸的位置比较小,侧重 点主要集中在眼镜、眉毛、鼻子、嘴唇的器官上,没有耳朵等信息特征 表现。这是由于我们的人脸训练库主要是围绕上面几个主要特征上,所 以检测定位是小区域定位。 3)检测率和虚警率:通过实验可以看到,总体来说检测率是比较高的,对 于正面的人脸、小角度倾斜、光照比较均匀的情况下,对于平常的嵌入 式应用已经足够。检测过程中漏检的人脸往往是头像过小、戴着眼镜、 只出现半个人脸和偏转角度过大等情况。还有一部分就是光照不对阵问 题。那些被检测为人脸的非人脸图像往往是因为背景复杂,而且这个子 图像的特征是由于和人脸相似造成的。 第 55 页 上海交通大学工程硕士学位论文 第八章 总结与展望 第八章 总结与展望 人脸检测作为人脸信息处理中的一项关键技术,近年来成为模式识别与计算 机视觉等领域中一项受到普遍重视、研究十分活跃的课题。Viola 和 Jones 提出 的 Adaboost 人脸检测方法,在 PC 平台上检测速度取得了很大的进展,同时有较 好的识别效果。但是随着数码相机、手机和摄像机等便携式设备上越来越广泛的 使用人脸检测技术,而基于 Adaboost 算法的人脸检测计算复杂度比较高、训练 的分类器过于庞大和检测过程中访存次数多。这样为了将来能够在移动设备上人 脸检测得到更快的检测,本文通过在 FPGA 平台上实现人脸检测,为下一步的产 品研究铺垫了基础。 本文工作重点主要在以下几个方面: 1)根据人脸检测算法的介绍以及 Adaboost 算法的引入,认真分析了整个人 脸检测过程; 2)由于嵌入式系统对于内存要求比较高,而且由于负载小、处理能力弱等 局限性特点,而原来扩展型的检测分类器比较庞大,不利于嵌入式系统的实现。 所以选择最基本的特征及扩展特征,重新训练了级联分类器,得到一个比较小, 而检测率较高、误检率不高的分类器。 3)采用了改进型的检测策略:人脸检测时,待检测图像不做金字塔式处理, 大小不变;而是逐层放大检测窗口,再对检测窗口内的图像进行模式匹配。采用 这一改进型方法,可以避免直接对图像进行缩放变换,计算量大大减小,并提高 了检测速度。 4)当今 FPGA 技术迅速发展,基于 FPGA 的嵌入式系统已经有很大的市场。 本文通过对计算能力、资源大小、硬件可行性设计分析等方面考虑,选择了 Xilinx 的 Virtex-II Pro 开发板。并最终在上面实现了人脸检测的实时性的系统。 5)由于软硬件协同设计能够带来项目的缩短周期,所以在软硬件设计方案 上进行了仔细的研究,并确定了人脸检测系统的软硬件协同设计架构,并分时实 现。最终协同设计成功。 6)通过对算法耗时性分析,并根据 FPGA 资源特征,并行性架构是最有利 于实现,而且速度可以得到数倍的提高特点。对部分函数进行硬件加速,通过实 验,取得了实时性的 17fps 的检测效果。 同样,该人脸检测系统有许多不足,主要是系统的鲁棒性不够理想,对于不 同肤色检测有很大的不同,这是由于检测用的级联分类器在训练时主要采用了黄 色和白色人的样本。同时由于没有采用倾斜 45°角的样本训练,对于旋转的人 脸适应性太差,只能检测低于倾斜 15°角度内人脸。另一个方面,由于采用摄 第 56 页 上海交通大学工程硕士学位论文 第八章 总结与展望 像头输入,检测窗口不是很大,所以在人脸检测的时候,如果窗口人数大于 5 个人时,检测率必然会下降,而且检测到的人数主要集中在中间区域。另外,如 果用纯硬件实现人脸检测,则速度会有很大的提高,但是由于级联分类器的设定, 所以,每次都要重新加载固定检测窗口大小的级联分类器。这可在以后的研究中 加以研究和补充。其次以后要研究大角度旋转的图像,并且添加新的特征来提高 检测的性能,保证检测率和检测速度的提高。 第 57 页 上海交通大学工程硕士学位论文 参考文献 参考文献 [1] Chellappa R, Wilson C. L. and Sirohey S. Human and machine recognition of faces: A survey. Proc. IEEE, 1995, 83(5):705-740. [2] Viola and M. Jones. Rapid Object Detection using a Boosted Cascade of Simple Features,In Conference on Computer Vision And Pattern Recognition, 2001,VOL 1: 511–518 [3] Yang MH,Kriegman D, Ahuja N. Detecting faces in images: A survey. IEEE Trans Pattern Analysis and Machine intelligence,2002,24(1):34-58 [4] Viola P, Jones M. Robust real time object detection. International Journal of Computer Vision, 2004,57(2):137-154. [5] Jeanne, F-X.Jegaden, R.Kleihors, et al. “Real-Time Face Detection on a “Dual-Sensor” Smart Camera Using Smooth-edges Technique”. 2006, DSC-06:120-125 [6] Y. Freund and R. E. Schapire. Experiments with a New Boosting Algorithm.Proceedings of the 13" International Conference, Morgan Kauman, San Francisco, 1996:148-156 [7] A. Pentland, B. Moghaddam, and T. Starner, View-Based and Modular Eigenspaces for Face Recognition, Proc. Conf. Computer Vision and Pattern Recognition, 1994:84-91. [8] A. L. Yuille, Deformable Templates form Face Recognition, J. Cognitive Neuroscience, 1991,3(1):58-70. [9] A. Samal, P. A. Iyengar, Automatic Recognition and Analysis of Human Faces and Facial expression: A Survey, Pattern Recognition, 1992, 25(1):65-77. [10] Govindaraju V, Srihari S. N, Sher D. B. A computational model for face location. In: Proc. IEEE Conf. on Computer Vision, Osaka, Japan, 1990, 718-721 [11] G. Yang, T. S. Huang. Human Face Detection in Complex Background. [J]. Pattern Recognition,1994, 27(1):53-63. [12] J. Miao, B. Yin, K. Wang, etc. A Hierarchical Multiscale and Multiangle System for Human Face Detection in a Complex Background Using Gravity-Center Template. [J]. Pattern Recognition, 1999,32(7):1237-1248. [13] A.L.Yuille,P.W.Hallinan,etal,"Feature extraction from face using deformable templates, Int.Journal of Computer vision,1992,8(2):99-111. [14] 黄华、樊鑫,基于识别的凸集投影人脸图象重建,计算机研究与发展,2005 Vol.42 No.l0 [15] F. Crow. Summed-area tables for texture mapping. Proceedings of SIGGGRAPH, 1984, VOL.18(3):207-212. [16] R.E·Schapire,Y.Freod,P.Bartlet,andW.S.lee.Boosting the margin:a new exPlanion for the effectiveness of voting methods.Ann,1998.Stat.26(5):1651-1686. 第 58 页 上海交通大学工程硕士学位论文 参考文献 [17] R.E·Schapire,Y.Freod,P.Bartlet,andW.S.lee.Boosting the margin:a new exPlanion for the effectiveness of voting methods.In Proceedings of the Fourteenth Intenational Conference on Machine Learning,1997. [18] Garcia C, Zikos G, Tziritas G, Face detection in color images using wavelet packet analysis, In:Proc. Multimedia Computing and Systems, Centro Affair, Florence, Italy, 1999, (1):703-708. [19] Kearns M, Valiant L. G. Learning Boolean Formulae or Factoring. Technical Report TR-1488,Cambridge, MA: Havard University Aiken Computation Laboratorv, 1988. [20] Schapire R. E. The Strength of Weak Learnability. Machine Learning, 1990, 5(2):197-227. [21] Freund Y. Boosting a Weak Algorithm by Majority. Information and Computation, 1995, 121(2):256-285. [22] Freund Y, Schapire R E. A Decision-Theoretic Generalization of On-Line Learning and An Application to Boosting. Journal of Computer and System Sciences, 1997,55 (I):119-139 [23] E. Osuna, R. Freund, R. Girosi, Training support vector machines: An application to face detection,in IEEE Proc. of Int. Conf. on Computer Vision and Pattern Recognition, 6, 1997. [24] Platt J. C. Fast Training of SVMs Using Sequential Minimal Optimization. In: Scholkopf B,Burges C J C, Smola A J eds, Advances in Kernel Methods-Support Vector Learning, Cambridge, MA:MIT Press, 1998:185-208. [25] H. Schneiderman, T. Kanade, Probabilistic modeling of local appearance and spatial relationships for object recognition. In: Proc. IEEE Conf. on Computer Vision and Pattern Recognition,Santa Barbara, California, 1998:45-51. [26] H. A. Rowley, B. Shumeet, T. Kanade. Neural Network-Based Face Detection. IEEE Transactionson Pattern Analysis and Machine Intelligence, 1998, VOL.20, NO.1, pp.23-28. [27] Quinlan J.R, Bagging, boosting and C4.5.ln proceedings of the Thirteenth National Conference on artificial intelligence, 1996:725-730. [28] Haris Drucker and Corinna Coltes, Boosting decision trees. In Advances in Neural information Processing systems 8,1996:479-485. [29] Masayuki Nakamura, Hiroki Nomiya, Kuniaki Uehara, Improvement of boosting algorithm by modifying the weighting rule. Annals of Mathematics and Artificial Intelligence, 2004, 41:95–109. [30].梁路宏,艾海舟等,人脸检侧研究综述,计算机学报,第 25 卷第 5 期 2002:449-458 [31].http://vilab.hit.edu.cn/reports/yangbo.files/frame.htm "Introduction to MPEG-7" ,杨波. [32].卢春雨,张长水,闻方,阎平凡,基于区域特征的快速人脸检测法,清华大学学报(自 然科学版),1999,39(1):101-105 [33] Rainer Lienhart, Luhong Liang, Alexander Kuranov, An Extended Set of Haar-like Features for Rapid Object Detection. Technical report, Intel Research,2002, VOL.1:900-903.. 第 59 页 上海交通大学工程硕士学位论文 参考文献 [34] David Cristinacce, Tim Cootes. A Comparison of Two Real-time Face Detection Systems. Fourth IEEE International Workshop on Performance Evaluation of Tracking and Surveillance (PETS-ICVS), 2003. [35] B. Froba, C. Kubleck. Real-time Face Detection Using Edge-orientation Matching.Audio and Video-based Biometric Person Authentication(A VBPA 'O1), 2001:78-83. [36] Xilinx, Virtex-II Pro Datasheet 2003. [37] Xilinx, Virtex-4 Datasheet 2004. [38] Xilinx, Virtex-5 Datasheet 2005. [39] Xilinx website www.xilinx.com [40] 可编程逻辑可编程逻辑器件中文网站,www.fpga.com.cn [41] Opitz D. W. Shavlik J. W. Generating Accurate and Diverse Members of A Neural Network Ensemble. In: Touretzky D, Mozer M, Hasselmo M eds. Advances in Neural Information Processing Systems (VOL.8), Cambridge, MA: MIT Press, 1996:535-541. [42] Hampshire J. Waibel A. A Novel Objective Function for Improved Phoneme Recognition Using Time-Delay Neural Networks. IEEE Transactions on Neural Networks, 1990, 1(2):216-228. [43] Schapire R. E. A Brief Introduction of Boosting. In: Proceedings of the 16th International Joint Conference on Artificial Intelligence, 1999. [44] 郑峰. 基于 Adaboost 学习算法的人脸检测方法研究[硕士论文].上海:上海交通大学, 2005. [45] 刘畅. 基于 AdaBoost 的人脸检测改进算法[硕士论文].广东:中山大学,2006. [46] Zhang Dong, Li S.Z., Daniel Gatica-Perez,Real Time Face Detection Using Boosting in Hierarchical feature spaces. Proceedings of the 17th international Conference on Pattern Recognition(lCPR’04). [47] Shen Lan sun, Wang Kongqiao, Xing Xin. Automatic Human Face Detection and Tracking in a Complex Background [S]. ISO/IEC JTC1/SC29/WG11 MPEG99/M4422, Seoul, Korea, 1999-03. [48] Mohan, C. Papageorgiou, T. Poggio. Example-based object detection in images by components.IEEE Transactions on Pattern Analysis and Machine Intelligence, 2001,23(4):349-361. [49] Constantine P. Papageorgiou, Michael Oren, Tomas Poggio. A General Framework for Object Detection. Proceedings of International Conference on Computer Vision. January 1998. [50]. D. Roth, M. H. Yang, N. Ahuja A SNOW-based Face Detector. Neural Information Processing Systems(NIPS), 1999, NO.12. 第 60 页 上海交通大学工程硕士学位论文 致谢 致谢 在撰写毕业设计之际,我一直想感谢身边的很多人,论文是在老师、同学和朋友 的帮助和鼓励下完成的。现在内心充满对他们深深的感激之情。 首先,衷心感谢我的导师赵峰。感谢赵老师使我走进智能识别的门户里-人脸识 别。几年来对我的学习、工作、生活上给予的无微不至的关心和照顾。本文从选 题、研究、撰写、审阅直至修改完成,每一个过程都得到了赵老师的悉心指导。 赵老师的严谨、凡事必躬身而为的态度和高尚的品格使我受益匪浅。 感谢付宇卓教授及谢凯年副教授老师长期对我的无私帮助和支持。 感谢在我成长道路上所有曾经教育和关心我的朋友们! 感谢我的项目组孙炜、张忠、杨泽宏同学,和他们之间的讨论、交流让我学到了 很多知识。 我还要感谢我的父母家人,是他们给我多年的培育和教育、提供了学习和生活上 的支持。 最后,衷心感谢参加评审答辩的各位老师! 第 61 页 上海交通大学工程硕士学位论文 作者攻读硕士学位期间发表的主要论文 作者攻读硕士学位期间发表的主要论文 [1] 徐淑峰,孙炜,赵峰. Adaboost 人脸检测算法在嵌入式平台上的优化与实现. 信息技术(已 录用) 第 62 页 基于FPGA的人脸检测系统设计 作者: 学位授予单位: 徐淑峰 上海交通大学 相似文献(7条) 1.学位论文 林伟松 基于FPGA的嵌入式人脸检测系统研究与实现 2008 随着社会经济的发展,机动车辆与日俱增,交通事故的发生量也有不断增加的趋势。据有关研究表明,造成汽车碰撞事故的原因20-30%产生于疲劳驾驶。驾驶疲劳影响到驾驶员的 警觉和安全驾驶能力。因此,如何有效避免和预防驾驶员疲劳驾驶,对降低交通事故及人员伤亡率,有着十分重要的意义。 现代驾驶员疲劳检测系统的发展趋势是非接触式的疲劳检测,其中以基于图像处理与模式识别方法的计算机视觉技术为主;而人脸检测与定位是实现该类系统的一个重要前提条 件和关键技术。 鉴于人脸检测技术的重要性,本文以基于FPGA的嵌入式技术与人脸检测理论为基础,提出了一种有效可行的系统实现方案。论文在对人脸检测算法进行较为深入的研究基础上,结 合Nios Ⅱ嵌入式处理器和FPGA的特点,设计了一个基于FPGA的嵌入式人脸检测系统。论文主要包括以下几个方面: (1)介绍人脸检测的背景知识和SOPC的相关技术,在此基础上对Viola人脸检测算法进行了较为深入的研究,提出了影响该算法检测性能的有关因素,为系统的后续设计与优化提供 线索。 (2)在算法研究的基础上,拟定了基于FPGA的嵌入式人脸检测系统设计方案;同时,给出了系统的总体结构和工作流程,并对系统进行模块划分。 (3)根据系统模块的划分,设计了系统相应的外围电路,包括图象传感器电路和图象存储板等,并使用Verilog HDL硬件语言实现了图象的采集存储功能;同时结合SOPC和嵌入式系 统的开发技术,搭建了一个基于Nios Ⅱ嵌入式处理器的SOPC应用系统,实现了人脸检测系统的硬件平台。 (4)移植Viola人脸检测算法到所设计的硬件平台上,并对系统分别从软硬件两方面进行优化,最终实现了5帧/s的人脸检测速度和平均87%的检测精度。 实验结果表明,本文所提出的系统方案有效可行,基于FPGA的嵌入式人脸检测系统在速度、精度和可扩展性等方面具有独特的优势,具有良好的发展空间。 2.期刊论文 孙莹涛.李玉山 人脸检测系统的SoPC设计 -电子设计应用2006,""(11) 本文采用Nios Ⅱ软核处理器在FPGA上设计了一种人脸检测系统,对该系统的功能、结构和实现作了较详细的阐述.设计结果表明,该系统体积小,数据处理速度快,保证了很好的实 时性. 3.学位论文 王佶梁 Adaboost算法的VLSI设计研究和FPGA实现 2008 随着计算机科学在人机交互领域的极大发展,作为人脸信息处理中的一项关键技术,人脸检测现在已经成为模式识别,计算机视觉和人机交互领域不可缺少的一部分。但是,人 脸检测算法存在计算量大、速度慢等缺点。软件实现方式无法达到实时处理要求,而现有的硬件实现需要占用大量硬件资源。 本文针对现有人脸检测硬件实现的缺点,通过对Adaboost算法和现有硬件结构的分析,提出了双流水线硬件检测架构:扫描窗口流水线、特征向量流水线。并在Vertex-II Pro FPGA平台验证成功,达到实时检测的标准。具体工作和创新点包括如下几点: 介绍了人脸检测的原理以及人脸检测经典算法。其中,详细介绍了Adaboost算法。 对现有的结构进行详细分析。指出现有各架构的缺点,即资源占用多,检测速度慢。针对这两个问题,本文提出了一个适合嵌入式应用的扫描窗口、特征向量双流水线检测硬件 架构,详细说明了该架构的工作原理,并在该架构基础上,通过加入预测加载技术,进一步提高检测速度。随后,采用存储器访问效率,架构内部存储单元大小,检测时间长短,运 算单元数量四个标准,详细比较了新架构和现有架构的差别,显示出新架构的优势。 基于提出的架构,给出了Adaboost人脸检测系统的VLSI实现方案。本文中,采用自顶向下的设计方法将人脸检测系统分成若干个子模块,然后对每个子模块进行详细的设计和说 明,给出了每个子模块的硬件架构、状态转换以及verilog实现后的仿真波形。 采用Xilinx公司的VII Pro FPGA开发板完成人脸检测系统的硬件验证。FPGA验证结果表明对于QCIF分辨率的视频图像,人脸检测系统能够达到50fps的检测速度,满足实时检测 的要求。 4.学位论文 计志超 面向SOPC的IP核设计与复用技术研究 2008 随着集成电路设计技术的迅速发展和半导体工艺水平的提高,在单个芯片上集成一个系统已成为可能,集成电路设计也因此进入了片上系统(SOC)时代。基于FPGA平台的SOPC设计 方法是建立一个以IP(Intellectual Property)为基础的全新设计流程,它具有设计效率高,成本低廉,可以加快新产品投放市场等优点,从而获得更好的市场竞争力。 本文以Altera公司的Stratix II EP2S60 DSP Development Board为硬件平台,在分析国内外IP核设计标准及其设计方法的基础上,针对项目中遇到的人脸检测IP核设计目标,进行 了人脸检测系统的构建及其面向SOPC平台的人脸检测IP核设计研究。本文主要研究工作如下: (1)研究IP核技术起源与发展,目前国内外IP核设计的现状与潮流,提出了适合人脸检测IP核设计的方法。 (2)分析了当前的人脸检测算法,在研究了人脸检测Viola算法的基础上,提出了以SOPC的方式构建人脸检测系统。针对人脸检测算法复杂、分类器计算重复性高的特点,对IP核进 行了模块划分。 (3)构建了人脸检测系统,详细分析了SRAM控制模块及其图像预处理模块的实现。论述了人脸检测分类器模块中的浮点开平方算法的硬件设计。 (4)详细讨论了人脸检测模块中的分类器模块的IP核设计,实现了此模块的Avalon总线接口设计,并集成到SOPC系统,验证了分类器及其接口模块设计的正确性。 最后,将设计的分类器模块集成到SOPC系统中进行验证,实现了人脸检测系统分类器IP核的设计,达到了预期的实现目标。并针对系统设计中存在的问题提出了改进方法。 5.学位论文 叶之金 基于FPGA的SOC应用研究 2009 随着半导体工艺技术的迅猛发展,可编程逻辑器件的集成度越来越高,FPGA中的逻辑资源也日益丰富,已达到百万门量级,这使得使用FPGA实现片上系统成为可能。基于FPGA的 片上系统设计方案具有开发周期短、设计成本低、软硬件在系统可编程、系统设计灵活、可裁减、可扩充、可升级等优点,正在成为电子系统设计的研究热点。另一方面随着嵌入式 Linux系统以及数字图像处理技术的深入发展,使得数字图像处理技术在具有嵌入式Linux操作系统的开发平台上得到了发展和实现。在FPGA上开发SOC系统,并实现基于嵌入式 Linux的图像处理系统具有实际的应用价值。 本文利用Xilinx公司的FPGA实现了基于PowerPC405硬核处理器的SOC设计,并在此基础上开发了基于嵌入式Linux的人脸检测系统。 本文的主要工作包括: (1)介绍了在FPGA上的SOC的设计方法,并在此基础上构建了基于FPGA的以PowerPC处理器为核心和以IP核为外围设备的SOC系统。 (2)分析了Linux的移植过程,并在SOC系统上实现了嵌入式Linux系统的移植。移植中的主要工作包括编译环境的建立、板上支持包的开发、系统内核的裁减、根文件系统建立及 bootloader的实现。 (3)在整个SOC系统的软硬件实现的基础上,在SOC系统上实现了人脸检测功能。针对嵌入式系统,实现了软件的优化,提高了人脸检测的速度。 6.期刊论文 李明阳.柏鹏.LI Ming Yang.BAI Peng 嵌入式人脸检测系统设计 -电子技术应用2010,36(4) 介绍了以计算机视觉为背景,基于FPGA实现嵌入式人脸检测系统的设计.系统设计过程包括配置MicroBlaze软核处理器、裁剪μClinux内核和应用程序设计3部分.以MicroBlaze软 核为处理核心,通过片内添加外设接口和IP在Viaex-Ⅱ Pro开发板上搭建硬件平台.以μClinux内核为软件平台,通过优化OpenCV提供的源代码设计人脸检测应用程序. 7.期刊论文 张忠.赵峰.孙炜 基于Adaboost算法的人脸检测系统实现 -信息技术2008,32(7) 在嵌入式平台上用软件实现、软硬件协同、全硬件实现三种实现方法,全面考察了Adaboost算法在嵌入式平台的性能.在Xilinx XUPV2P开发板上,软件实现的检测速度是 0.5fps,软硬件协同是1fps,而全硬件实现获得了80fps的检测速度,完全达到实时需求. 本文链接:http://d.g.wanfangdata.com.cn/Thesis_D060212.aspx 授权使用:北京理工大学(北京理工大学),授权号:73882426-b75e-4a7e-8093-9e2e001762ae 下载时间:2010年11月14日
更多简介内容

评论

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人电子
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })