||
摘要: 本文提出一种基于PYNQ-Z1 的儿童防误锁人脸识别检测预警系统。通过搭建liunx环境,运行 Jupyter Notebook 交互式在线编译器,调用 IPython 内核和 PYNQ 的硬件库,导入 OpenCV 库编写并且编译执行 Python 程序,可实现在线控制 PYNQ-Z2 来获得视频流输入并对视频数据进行传输和处理,从而实现人脸图像的分析与检测。本设计利用了 PYNQ-Z2的可编程系统(PS)和可编程逻辑(PL)的交互式数据传输处理,尽可能的发挥 ARM 和 FPGA 的优势,从而实时的进行人脸检测。
1、概述
车内儿童滞留问题一直是汽车安全领域的重要研究问题之一,目前主要研究工作仍然不能解决滞留车内儿童的安全问题。针对该问题,本文采用人脸识别技术,及时检测出车内滞留儿童,通过报警联动功能,及时解救受困儿童,具有很强的时效性。
近年来,人脸识别在支付、安保、机器人等领域得到了广泛应用,已成为计算机视觉领域的研究热点。 人脸识别需要检测、对齐和识别等步骤。
随着深度学习技术的发展,将深度学习算法应用到人脸识别,有效提高人脸识别检测精度和鲁棒性。
为提高便携性,使用嵌入式终端,
设计实现了一种基于PYNQ-Z1的人脸识别系统,在嵌入式终端实现结合深度学习的人脸识别——实时视频输入、人脸识别、显示结果输出。该系统应用在车内儿童滞留、误锁,防窒息报警灯等应用场景,可精准检测出车内儿童,并发出报警信号,联动显示到家人终端设备中,及时解救受困儿童,在时效性和精准线上具有很大优势。
(1)本项目使用技术新。作出神经网络优化,添加具体功能应用等对项目的实现。通过使用 vivado 配置硬件资源,使用 petalinux 生成镜像,使用 DNNDK 生成 decent 和 dnndc,使用SDK 生成可执行文件,最后在 PYNQ 开发板上运行。
(2)儿童车内预警应用需求大。在乘用车内,儿童在密闭空间滞留时间过长,对儿童的身体和心里会造成很大伤害。预防儿童在误锁车内或长时间滞留,具有很大的应用市场。
(3)PYNQ开发嵌入式软硬件环境方便部署。使用嵌入式人人工智能开发板设计开发本项目,具有实施方便,可集成度高,PYNQ又可以进行定制化,后期与车联网,物联网扩展性高。
2、系统设计与实现
2.1、系统整体结构
系统框架图
功能说明:DPU 应用部署
1. 模型压缩 (主机)
2. 模型编译 (主机)
3. DPU 编程开发 (主机或开发板)
4. 混合编译 (开发板)
5. 运行 (开发板)
将 DPU 的 IP 添加进一个 vivado 工程中,将所需 IP 进行连接,将 block_design 生成 HDL_wrapper,进一步生成 bitstream 并且输出.hdf 文件。
在 petalinux 中生成所需文件及目录。
构建一个应用,将使用 DNNDK 优化的训练模型生成的.elf 文件与.cc 文件共同输入到 SDK 中,添加环境变量到由 petalinux 生成的 sysroot 目录。
以脸部识别的 demo 为例,首先将 face_detection.cc 和 dpu_densebox.elf(由 dnnc 生成)import 到指定的路径。添加后的文件结构如图所示。
经过链接、编译后,最终将 petalinux 生成的 BOOT.BIN、image.ub 和 SDK 生成的 face_detection.elf 复制到 SD 卡中,将 SD卡插入 Ultra96 开发板,便可运行。
系统框架整体介绍
系统资源调度示意图
1. xilin xilinx x 开发软件的操作
1. Vivado
2. SDK
3. PetaLinux
4. Ubantu
2. 底层框架的搭建调试 底层框架的搭建调试
1. vivado IP 调用和参数设置
2. 在 Ubantu 中下载安装 Petalinux,并调试环境
3. 创建 Petalinux 工程,利用服务器编译
3. 熟悉DPU工作模块的功能和流程
1、DEep ComprEssioN Tool (DECENT),深度压缩工具:提供剪枝和定点化运算。
Deep Neural Network Compiler (DNNC), 神经网络编译器:将网络算法编译到 DPU 平台高效运行。运用 DECENT 后的 caffe 网络模型作为输入。
2、Deep Neural Network Assembler (DNNAS), 神经网络集成器:将 DPU 指令流会编程标准的 ELF二进制文件Neural Network Runtime (N2Cube), 神经网络运行,运行时支持环境,神经网络的加载,资源管理,调度。
3、N2Cube 核心组件包括四个部分 : DPU 驱动程序 (Driver),加载器 (Loader)、性能分析器(Profiler)及编程开发库编程开发库 (Library)。
DPU框架:
Tensorflow/Caffe的使用,具体配置部署教程参见官网和github源码。
2.2、 开发平台
2.3、系统实现与流程
项目整体图示:
实验结果
在 application 开发过程中,我们使用 Xilinx SDK 工具,利用前几步中制作的配置文件,进行 ARM 平台上的应用开发。由于在前一步中制作的.elf 文件在这里调试不成功,最后我们使用了 Xilinx提供的.elf 文件,然后在 SDK 中配置了交叉编译环境,基于 Xilinx 的 face_detection 应用,我们增加了人脸计数和实时性能监测,包括帧率的监测和 CPU 和内存使用率的监测。另外我们尝试了视频的多路显示进行性能对比。
项目功能模块描述:
在 SDK 中编译出程序后,我们在PYNQ平台上进行了测试。测试结果表明,通过 DPU 对深度学习模型进行加速后,其应用能够在 ARM 处理器上流畅运行,我们的测试结果显示:1)在PYNQ上部署一个 DPU 核(B1152-1.3.0),大约占用了 FPGA 上一半的资源,所以在进一步优化的情况下可以考虑部署两个 DPU 核;2)ARM 上的人脸检测的应用大约占用了 90%的 CPU 时间和 20%的内存(总 512MB),在这个情况下能够稳定在 30FPS 左右,画面非常流畅;3)增加一路视频显示会导致帧率下降到 13FPS 左右,出现延迟、跳帧的情况,我们估计这主要是 ARM 的性能瓶颈导致的。
测试训练集输出情况:
通过本次本赛,从嵌入式软件入门,编写底层驱动和软核,到App开发,收获颇丰。见识到PYNQ的生态,最吸引人的DPU加速。本次DPU人脸检测项目过程,是对心态和力气的双重考验。有时做项目遇到bug,长时间调试未果,心态容易崩溃。但是这次项目实战,也是技术岗位的一种积累。学习了FPGA的优势以及ARM处理器的强大功能,总之是收获满满。
参加嵌入式互联大赛
参与龙芯卓越工程师培训
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-26 22:54
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社