APP下载

基于PYNQ的人脸识别系统

2021-04-22

探索科学(学术版) 2021年2期
关键词:开发人员人脸识别卷积

宁波工程学院电子与信息工程学院 浙江 宁波 315211

0 引言

人脸识别技术对于我国国防、通信、生物医疗等领域有着重要的意义。在识别图像过程中,输入的图像千奇百怪,各种图形的特征也各不相同。例如人脸上的肤色、五官和表情数不胜数。同时人脸识别系统系统的设计具有很大的挑战性。

常用的人脸识别系统多采用CPU为核心,存在处理速度不够快等问题。而FPGA是并行处理数据,并有浮点数处理单元,高效的开发速率,与GPU相比具有较低的功耗,与ASIC相比具有较低的开发成本。在同样的功耗下,PYNQ平台能够在速率上超过纯ARM平台和PC平台[1]。目前广泛使用的硬件加速平台有GPU、ASIC、FPGA三种。FPGA可重构、集成度高、功耗低,可以适应计算量大但计算机构简单的神经网络模型[2]。本文提出了一种基于PYNQ-Z1设计思路,为人脸识别提供了一套易于实现的、低成本、可扩展的解决方案。

1 系统总体设计

本系统总体设计框图如图1所示。系统包含输入模块、FPGA模块和输出模块,将图像保存在一定路径中,再加载到程序中,对图像进行预处理,然后主控模块PYNQ会对图像进行识别,先是对图像进行预处理,然后是对图像进行定位和对齐,在图像中对应所需的元素用黄色的框框住,最后实现人脸识别。

2 系统硬件部分设计

2.1 FPGA模块 本系统采用的硬件是选自赛灵思公司研发的FPGA模块。PYNQ-Z1是支持python进行开发,不同于赛灵思公司的另一块FPGA模块BYNQ,使用python进行模块化开发可以大大加快系统的开发速度。由于python存在三方接口,python可以直接调用opencv库进行对图像的处理。PYNQ-Z1本身也自带很多资源,作为赛灵思公司的进阶版,它带有较多的逻辑处理单元。PYNQ-Z1是异构系统,有着两块cortex-A9的CPU和FPGA,即为两端。PS(处理系统)和PL(可编程逻辑)可相互配合使用,两者用AXI总线相连,有高速的处理速度。在处理神经网络时,ARM内核可以与部署功能强大且 灵活的卷积专用处理器协同使用。专用卷积处理器嵌入卷积引擎和可编程软核,释放ARM处理器的大部分监督职责,并允许加速器由软件以超细度控制[3]。

3 系统软件部分设计

3.1 PYNQ开发框架 FPGA传统的开发框架有两张,其中一种是FPGA和CPU互联的,另一种是和RAM互联。这两种方式的弊端是要求开发人员关注硬件的实现细节。这两种开发方式会让开发人员在开发的过程中遇到各种问题,这些问题的解决也十分困难。PYNQ的出现解决了这一问题,能够让开发人员在开发的过程中避开这些问题。PYNQ是一个全新的开发框架,无论是哪类开发人员都能专注与工程的开发,而不用太深入的研究硬件。在开发工程中可以调用IP核,让整个设计的实现和测试更加方便,非常适合进行复杂系统设计。

3.2 HLS加速的基本理论 传统的FPGA开发流程中,是采用基于RTL的设计方式来进行逻辑设计的,这种开发方式有优点也有缺点。其优点在于,可以进行自定义的接口协议的开发,在进行逻辑黏合时候就有很强的优势,设计者可以在开发的过程中从底层的硬件出发,设计相应逻辑接口[4]。而赛灵思提供的HLS在高级综合的过程中,设计代码中的数组、结构体和循环体等都会通过编译器编译映射为存储器、计数器和状态机等硬件结构。这种方式明显缩短了开发周期,减少了开发人员成本。

3.3 人脸识别程序 Python开发先调用预先准备好三方库。本系统将输出结果显示在屏幕上,因此先对HDMI进行初始化。然后输入待检测的图片,将数据存入在PYNQ中。然后调用opencv和numpy的三方库,对脸部进行识别,将识别出的数据用numpy数组的形式存储在内存中,最后将数组输出在显示屏中,并以JPG格式存储。

4 系统测试与数据分析

为测试系统的实现效果,在PYNQ-Z1的实物板上进行实验。首先准备好一张8GB的sd卡,在官网上下载相应的镜像文件。使用win32磁盘烧写软件将镜像文件烧入。然后设置PYNQ的网络环境,在对应的局域网内将域名改为192.168.1.1,尝试ping通网络。接通电源,打开PYNQ,若四盏等闪烁则PYNQ开启成功。Python的运行环境选择jupyter notebook,在jupyternotebook中运行程序,需要将所检测的人脸图片写入相应的加载路径,然后一步步执行程序,实验效果如图1所示。

图1 人脸识别

5 结语

本文设计并实现了人脸检测系统,应用于各种人脸检测的场景。本系统可以对所需的元素进行框定处理,并具有较快的处理速度。后续在PYNQ上也可以实现更多人脸识别的案例,对神经卷积网络进行研究。

猜你喜欢

开发人员人脸识别卷积
人脸识别 等
基于3D-Winograd的快速卷积算法设计及FPGA实现
揭开人脸识别的神秘面纱
卷积神经网络的分析与设计
人脸识别技术的基本原理与应用
从滤波器理解卷积
Semtech发布LoRa Basics 以加速物联网应用
基于傅里叶域卷积表示的目标跟踪算法
人脸识别在高校安全防范中的应用
后悔了?教你隐藏开发人员选项