基于软核NiosⅡ的实时人脸检测系统
摘要 基于FPGA内嵌的NiosⅡ处理器,设计了一个实时人脸检测系统。介绍了基于Haar特征的AdaBoost人脸检测算法,描述了依据AdaBoost算法的人脸检测软件实现过程,最后在以Altera公司CycloneⅡ系列EP2C70为核心芯片的DE-2开发平台上,对检测系统进行了整体设计。测试结果表明,系统有较高的检测率,可以满足实时人脸检测的要求。
关键词 人脸检测;FPGA;AdaBoost算法;分类器
人脸检测是指在图像中判断是否有人脸存在,并且将检测到的人脸部分在图像中标识出来的过程。作为人脸信息处理中的一项关键技术,人脸检测在自动人脸识别、视频会议、智能人机交互等领域得到广泛应用。目前人脸检测系统多采用PC或DSP作为处理平台。在PC上,人脸检测系统实现虽已经达到基本要求,但由于携带不便,无法满足实时检测,且成本较高。采用通用的DSP方式,外围电路较复杂,设计难度大,调试也需要较长的时间,且系统的可扩展性和移植性差。文中利用SOPC技术设计了基于NiosⅡ处理器的人脸检测系统,不仅达到了实时性要求,而且在PC上开发的程序,可方便地移植到Nios II处理器上。
1 Nios II处理器
Nios II处理器是Altera公司为其FPGA产品配套开发的软核CPU。在逻辑功能上,它是一款通用的RISC结构的CPU;在实现方式上,它在FPGA上通过编程实现。由于Nios II有一个开放式的ALU,通过用户自定义指令集,可以方便地完成对系统的操作;同时采用哈佛结构的总线模式,大幅地提高了系统的处理速度;另外,Nios II系统中的外设具有可配置性,这在较大程度上简化了硬件开发的难度,缩短了产品开发周期。
2 算法概述
文中采用Viola P提出的基于Haar特征的AdaBoost人脸检测算法,该算法主要分为以下3部分:
(1)使用Haar-like特征表示人脸,将“积分图”的概念用于Haar矩形特征的快速计算。
(2)使用AdaBoost算法训练得到大量弱分类器,按照权值补偿的方式级联得到强分类器。
(3)将训练得到的强分类器串联组成层叠分类器,这种结构能及时摒弃非人脸图像子模块,减少了计算的数据量,有效提高系统的检测速度。
训练得到一个好的分类器,将大幅提高系统性能。文中通过对大量的人脸及非人脸图像进行训练,经过多次迭代,获得一系列弱分类器。在迭代过程当中,选择错误率最小的弱分类器作为本次迭代产生的弱分类器hn(x),之后更新样本权值,使得那些在上次检测过程中被误判的样本在此次检测时能得到足够的重视,然后再次迭代,获得新的弱分类器,以此类推,经过k次迭代,得到k个弱分类器,而所有弱分类器组合后便得到分类能力较强的强分类器。
系统中,每级强分类器都有相应的阈值,通过调整每级强分类器的阈值,使得几乎所有含人脸的图像都可以顺利通过分类器,而绝大多数的非人脸图像被拒绝。分类器位置越靠前,只需少量的特征即可滤除大量的非人脸图像,而位置靠后,分类器的结构相对较复杂,需要较多的特征才能排除那些具有一定人脸特征的非人脸图像。最终,通过每级强分类器的检测,人脸图像将被保留,而非人脸图像则在检测过程当中被某级强分类器所淘汰。
概括说来,该检测算法的主要流程为:首先对检测图像进行积分图运算,然后用一定大小的子窗口遍历整幅待检测图像,并将子窗口截取到的图像输入到分类器中判断是否包含人脸,若该子图像通过全部强分类器,则判定当前子图像包含人脸特征,记录该子图像的位置和大小,否则抛弃当前子图像,进入下一帧的检测,当该子窗口遍历整幅图像后,放大子窗口尺寸,重新遍历待检测图像,直到子窗口大小超过图像大小,检测结束,流程如图3所示。
3 人脸检测系统的硬件设计框架
按照人脸检测系统的功能要求,可以将整个系统分为几个模块:视频采集模块、视频缓存模块、视频输出模块、人脸检测算法实现模块、IO接口模块(LCD显示模块和按键模块);同时为项目开发的延续,在不影响系统功能的基础上再添加通讯接口模块,这样既可以实现数据的远距离传输,又能与个人PC协同处理。
系统的工作流程:通过CCD摄像机(25帧/s)采集视频,之后利用ADV7121将CCD送来的NTSC、PAL模拟视频信号转换成符合CCIR 656标准的YCrCb4:2:2视频数据;然后在FPGA中通过视频采集模块、视频缓存模块、视频输出模块、人脸检测算法实现模块实现人脸检测;最后在LCD上显示最终检测结果。通过FPGA内部的I2C总线控制器模块,实现对ADV7121视频解码芯片的配置。视频输出模块,通过控制信号提娶制式检测、灰度有效数据提取等单元,完成视频数据流中灰度图像数据的提龋人脸检测算法
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)