基于PYNQ-Z2人工智能开发平台的人脸追踪检测系统设计

2020-02-14 06:03王海鹏李夫玲余斌阮伟华
科技创新与应用 2020年1期
关键词:人脸识别深度学习

王海鹏 李夫玲 余斌 阮伟华

摘  要:文章提出一种基于赛灵思嵌入式人工智能FPGA开发平台PYNQ-Z2的人脸追踪检测原型系统。通过搭建Linux环境并运行Jupyter Notebook交互式在线编译器,调用IPython内核和PYNQ的硬件库,导入OpenCV库编写并且编译执行Python程序,可实现在线控制PYNQ-Z2来获得视频流输入并对视频数据进行传输和处理,从而实现人脸图像的分析与检测。本设计利用了PYNQ-Z2的可编程系统(PS)和可编程逻辑(PL)的交互式数据传输处理,尽可能的发挥ARM和FPGA的优势,从而实时的进行人脸检测。

关键词:现场可编程门阵列(FPGA);深度学习;人脸识别;Python;OpenCV;PYNQ

中图分类号:TN911.7 文献标识码:A 文章编号:2095-2945(2020)01-0012-03

Abstract: This paper presents a prototype system of face tracking and detection based on PYNQ-Z2, an embedded artificial intelligence FPGA development platform. By building Linux environment and running Jupyter Notebook interactive online compiler, invoking IPython kernel and hardware library of PYNQ, importing OpenCV library, compiling and executing Python program, we can realize on-line control of PYNQ-Z2 to obtain video stream input and transmit and process video data, so as to realize face image analysis and detection. This design makes use of the interactive data transmission processing of PYNQ-Z2's programmable system (PS) and programmable logic (PL), giving full play to the advantages of ARM and FPGA as far as possible, so as to carry out real-time face detection.

Keywords: field programmable gate array (FPGA); deep learning; face recognition; Python; OpenCV; PYNQ

1 概述

计算机视觉[1]已经成为科学研究的重点,在生活中得到了广泛的应用。与此同时个人信息安全在当前社会形成严重的漏洞,迫切需要增强其安全性。而人脸识别是现代化高科技的识别技术[2],利用人类面部信息的唯一性这一高度安全性特征,不仅能够满足基本的安全需求,而且可实现方便、快捷的人机交互。其工作原理是利用高清摄像头对人脸定位并采集人脸信息,然后将采集的视频流传入计算机中进行预处理,锁定人脸的位置后对面部的特征值进行采样,最后提取每个人脸中的身份特征,并与预先存储的人脸信息进行对比,认证通过后再显示设备上输出结果并通过身份认证。

典型的人脸识别步骤是:图像采集、图像预处理、人脸检测、定位和对齐、人脸识别。如图1所示。采用基于CMOS图像传感器的工业摄像头,通過使用基于电荷耦合器件(CCD)方法的CMOS工艺图像采集芯片,模拟视频信号转换成数字信号后传送到计算机中存储或者直接处理。CMOS传感器就将所有的外加电路直接集成到芯片的内部,其他的辅助电路也非常简单,体积更小,功耗更低。

经过摄像头采集后的视频图像,因为拍摄环境的影响,会产生许多噪声,使获取的视频图像极易受到干扰和低分辨率等问题,从而导致特征不明显。若不对其进行处理,将大大影响后续的检测识别精度。经过预处理,可以从摄像头采集的原始数据中清除模糊的干扰信息,并提取精准信息,之后将预处理后数据提供给算法分析,以保证算法运行结果的清晰度和正确性,为人脸检测做好准备。图像预处理可采用图像转正、图像增强、滤波、人脸锐化、灰度化、二值化、归一化等方法[3]。

人脸检测算法主要使用模板匹配技术,其主要原理是用一张人脸的模型图片和采集到的图像进行对比匹配,如果出现人脸,就会将人脸标出。选用人脸和非人脸作为对比的模板进行训练,在正面检测的研究中有重大突破,可以判断并检测出人脸的大致位置,具有很高的精度,但是因为人脸分类器设计起来特别复杂,采样方式是基于密集滑动窗口,所以人脸检测的速度很慢。经过前四项的图像处理后,最后将采集到的人脸信息特征点提取出来,主要包括全局提取和局部特征提取[4]。面部的信息提取之后需要进行匹配,一般完整的人脸识别系统会提前录入每个人的人脸信息,或者建立数据库并通过网络在各地的识别终端同时进行对比。

本文使用赛灵思(Xilinx)的嵌入式人工智能FPGA开发平台PYNQ-Z2实现了便携式的人脸追踪检测的原型系统设计,并进行硬件加速。

2 设计与实现

2.1 系统整体结构

本文设计人脸追踪检测系统主要是由图像采集模块、主控PYNQ模块、结果输出模块等几部分构成,整体系统框图如图2所示。图像采集使用工业高清摄像头连接至PYNQ-Z2的USB HOST接口作为视频的输入入口;主控是嵌入式人工智能FPGA开发PYNQ-Z2,进行底层逻辑设计和处理数据,主要核心芯片采用Xilinx ZYNQ XC7Z020,其内部异构双核ARM Cortex-A9 CPU和FPGA,可编程系统PS(ARM)和可编程逻辑PL(FPGA)之间通过片上高速AXI总线进行数据交互,有效克服ARM和FPGA间数据传输的低速、延时、外界干扰等问题,可充分结合连接两者的特性,联合开发。其工作流程为工业摄像头对人脸信息进行采集,通过接口传到PYNQ的ARM部分,ARM负责调度整个系统,并且控制人脸信息的输入,然后传给FPGA部分进行图像的处理,最后将处理好的视频通过HDMI传递到显示模块上,呈现出系统的识别结果。

2.2 PYNQ-Z2嵌入式人工智能开发平台

PYNQ-Z2是第一款支持Python语言的FPGA硬件平台。PYNQ平台[5]提供了base.bit文件,开发者可以在不设计底层逻辑电路的情况下直接在Jupyter Notebook来完成项目设计。PYNQ的开发模式是Python+ZYNQ的形式,不仅可以进行传统的Xilinx的FPGA编程,而且支持Python语言进行线上编程。通过Vivado HLS集成环境使用C、C++编程并封装成IP核导入底层的逻辑电路。其最大的特点是CPU和FPGA可以协同工作[6]来提高效率,实现加速效果。在处理神经网络时,ARM内核可以与部署功能强大且灵活的卷积专用处理器协同使用。专用卷积处理器嵌入卷积引擎和可编程软核,释放ARM处理器的大部分监督职责,并允许加速器由软件以超细度控制。这种方法为协同异构计算:加速器处理CNN的大部分工作量,ARM核心可以无缝地执行难以加速的部分计算。在ARM Cortex-A9 CPU上运行的软件包括:载有Jupyter Notebooks设计环境的网络服务器、IPython内核和程序包IPython内核和程序包、Linux、FPGA的基本硬件库和API。PYNQ的架构是将PS(处理系统)和PL(可编程逻辑)集合起来,其间使用片内AXI总线连接,PL部分用来实现高速逻辑、算术和数据流子系统PS部分支持软件程序和操作系统。这样,系统设计的整个功能可以恰当地在硬件和软件之间做出划分,划分方法是一般逻辑算法在ARM端运行,大量计算卸载到FPGA端运行,ARM+FPGA高速互联、协同运行,如图3所示。

2.3 系统实现及流程

首先通过开源工具Win32diskimager将PYNQ-Z2的映像文件烧录在SD卡中(SD卡至少8GB)。然后如图4所示,将PYNQ-Z2开发平台中Boot跳线设置为SD卡位置;设置电源跳线选择供电方式;将装有镜像文件的SD卡插入卡槽;插入USB线供电;连接电脑和PYNQ-Z2的以太网端口;开启开关,启动板卡。在设置完这些步骤以后,红色LED亮起表示板卡已上电,黄色LED亮起证明PYNQ-Z2正常运行。一分钟后两个蓝色LED和四个黄色LED同时闪烁,蓝色LED开启后就会熄灭二黄色LED常亮,表示Linux系统成功启动可以使用。

连接好各模块后,更改电脑的静态IP地址,使用网络浏览器登录http://192.168.2.99,新建Python文件进行顶层设计。若摄像头的初始化显示屏时偶尔出现色差或者屏幕分割的情况,可以考虑重新启动PYNQ-Z2来解决。

OpenCV是开源跨平台的计算机视觉库,其实现了许多图像处理和计算机视觉的算法,应用领域有机器视觉、无人驾驶、运动跟踪和人脸识别。OpenCV中自带基于深度学习开发的Haar级联分类器,可用于人脸面部特征的检测和追踪,同时需要用OpenCV的函数来初始化摄像头的输入,再调用OpenCV函数CascadeClassifier()对视频中的面部信息进行分类,需要实时识别,就需要在人脸检测的程序中加入无限循环,系统关键代码如图5所示。

3 实验结果

搭建好原型系统之后,运行调试程序,调试现场如图6所示。摄像头会采集人脸信息,传输到PYNQ-Z2开发平台中处理,调用OpenCV视觉库进行人脸追踪识别,经过HDMI传输到显示屏中,从图中可以看到输出的视频结果会用虚线方框和实线方框分别标记出整个人脸的位置和其他器官的位置。当人脸移动时,方框也会随着人脸移动。

4 结论

本论文中设计的人脸追踪检测系统,可以对采集的图像中分类中人脸信息和其他信息,并将人脸信息框出锁定。调用OpenCV计算机视觉库后出现延时较高,视频输出不流畅的现象,在下步中可以针对PYNQ-Z2的逻辑电路进一步的设计,在Vivado HLS中使用C语言编写加速IP核,对视频数据在PYNQ-Z2中传输的过程进行加速,提高图像的传输速度。同时,也可以对算法处理过后的视频图像单位时间内的显示的帧数进行加速,来提升图像的输出流畅性。

另外,也可以使用PYNQ-Z2对神经网络[7]进行研究,根据官方提供的资料PYNQ-Z2的内部结构可以充分的实现二值化处理以及对BNN[8]进行硬件加速。

参考文献:

[1]施巍松,张星洲,王一帆,等.边缘计算:现状与展望[J].计算機研究与发展,2019,56(1):69-89.

[2]Ferreira V C, Nery A S, Fran?觭a F M G. A smart disk for in-situ face recognition[C]. 2018 IEEE International Parallel and Distributed Processing Symposium Workshops, 2018: 1241-1249.

[3]戴镇原.基于PYNQ的人脸识别设计与实现[D].河南:郑州大学,2018.

[4]Stornaiuolo L, Santambrogio M, Sciuto D. On how to efficiently implement Deep Learning algorithms on PYNQ platform[C]. 2018 IEEE Computer Society Annual Symposium on VLSI, 2018:587-590.

[5]Kstner F, Jan?茁en B, Kautz F, et al. Hardware/Software Codesign for Convolutional Neural Networks Exploiting Dynamic Partial Reconfiguration on PYNQ[C]. 2018 IEEE International Parallel and Distributed Processing Symposium Workshops, 2018:154-161.

[6]Meloni P, Capotondi A, Deriu G, et al. NEURA ghe: Exploiting CPU-FPGA Synergies for Efficient and Flexible CNN Inference Acceleration on Zynq SoCs[J]. ACM Transactions on Reconfigurable Technology and Systems (TRETS),2018,11(3):18.

[7]Carvino A, Coppola T. Heterogeneous implementation of an artificial neural network[D]. New York: State University Of New York,2018.

[8]Blott M, Preu?茁er T B, Fraser N J, et al. FINN-R: An End-to-End Deep-Learning Framework for Fast Exploration of Quantized Neural Networks[J]. ACM Transactions on Reconfigurable Technology and Systems, 2018,11(3):16.

猜你喜欢
人脸识别深度学习
人脸识别的“国标”来了
中科视拓开放商业版本人脸识别算法
荣耀畅玩7C:人脸识别
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
深度学习算法应用于岩石图像处理的可行性研究
基于深度卷积网络的人脸年龄分析算法与实现
“人脸识别”人工智能测谎仪研发成功