论文部分内容阅读
人脸识别作为一种身份辨别技术,通常需要在非接触情况下确认人的身份,比如来员访问、门禁等很多应用场景。这些年来,研究人员大多都是针对用户主动提供数据的情况进行相关研究,这种情况下的人脸数据通常是光照均衡、姿态正常、表情正常、无遮挡且距离适中的,但在被动获取人脸数据的情况下,这些条件不会全都具备,而这些不具备的条件会使得人脸识别性能急速下降,让人脸识别在被动情况下的实际应用受到阻碍。在这些被动的识别应用场景中,遮挡是最为典型的情景,如通缉犯为了隐藏身份而主动遮挡、嘴巴受伤的人会主动遮挡嘴巴、得了红眼病会主动遮挡眼睛等情况。而本文关注的正是遮挡情况下的人脸识别应用,并研究出一套准确率高、实时性需求满足且脱机性能好的有遮挡人脸识别系统。本文从人脸识别的一般过程入手,详细分析了面部存在部分遮挡情况下人脸识别问题的疑难点,然后综合考虑人脸识别一般过程和分析出的疑难点,确定了本文的系统算法。这些算法如果仅用通用处理器来实现难以达到预期的性能指标,而如果仅用FPGA则算法硬件实现的设计周期长甚至不能实现,因此本文的系统以Xilinx公司于2010年发布的一款将FPGA和双核Cortex-A9处理器集成在一块芯片上的ZYNQ平台作为系统平台,使用软硬件协同的方法,完成了基于ZYNQ的有遮挡人脸识别系统的搭建。本文的主要工作有五个部分。第一部分,讨论了人脸识别的一般过程,确定了图像采集、人脸检测、特征提取、人脸识别这一工作流程,并对其中的典型方法进行了陈述。第二部分,分析面部存在部分遮挡情况下人脸识别跟一般人脸识别的区别及其难点,然后设计了有遮挡人脸识别系统算法。使用改进的心理学公式实现彩色图到灰度图的转换,使用直方图均衡和双边滤波对灰度图达到降低光照和噪声影响的处理,使用鼻子、嘴巴、眼睛和全脸特征进行并行的Ababoost人脸检测,从而达到更高的遮挡人脸的检测率,从检测到的人脸中提取对光照、遮挡鲁棒的2DGabor特征,使用PCA算法对提取出的Gabor特征进行降维,使用SRC算法对降维后的Gabor特征进行稀疏重构,然后计算原始Gabor特征与稀疏重构分量的残差从而实现人脸分类。第三部分,介绍了软硬件协同设计思想,并按照其思想的设计流程,开展整体方案的设计。首先分析了基于ZYNQ的有遮挡人脸识别系统的系统算法,然后综合考虑算法的数据类型、可并行化、复杂度等因素对系统的软硬件功能进行了划分,将图像预处理算法放在PL部分进行实现,将其它算法放到PS上进行实现,最后确定了系统使用AXI总线进行PL和PS通信、使用片外DDR3进行缓存的系统通信方式。第四部分,对系统的硬件部分进行设计。使用verilog设计图像采集模块并封装成IP核,使用Vivado HLS对图像预处理算法进行实现,然后打包封装成IP核,使用Vivado 2015.4建立工程,调用图像采集IP核、图像预处理IP核、AXI Interconnect IP核、VDMA IP核、HDMI驱动IP核等搭建硬件平台,实现对图像预处理算法的加速、图像采集以及HDMI显示驱动。第五部分,对系统的软件部分进行设计并进行系统测试。在PC机上使用Qt设计人机交互界面并完成基于OpenCV的人脸检测算法、特征提取与降维算法、人脸识别算法的软件实现,在ZYNQ上搭建嵌入式软件环境,进行系统的软硬件联合调试,使用动态视频图像测试方法验证系统的正确性、便捷性和脱机性,使用400张静态图片进行静态图片测试,从而验证系统的工作性能,测试结果表明系统能够正确进行人脸的遮挡识别,遮挡条件下系统的总体识别准确率为72.5%,非遮挡条件下系统识别准确率为90%,并且就测试结果进行了分析。