亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Ultra96-V2的人脸识别

发布时间:2021-06-05
分享到:

基于Ultra96-V2的人脸识别

发布时间:2021-06-05
分享到:

该人脸识别系统是利用Vitis-AI 1.3在Ultra96-V2开发板上实现的,为更好的创建人脸应用程序,在该项目中利用了以下几种模型:

  • WorkDetect:人脸检测(densitybox_640_360 )
  • WorkTrack:脸部追踪
  • WorkCapture:面部质量(face-quality )
  • WorkRecog:人脸特征(facerec_resnet20 )
  • WorkCompare:找到匹配的面孔

硬件部件:

设计步骤: 

步骤一、创建SD卡

为Avnet平台提供预构建的Vitis-AI 1.3 SD卡映像:

  • u96v2_sbc_base:Ultra96-V2开发板
  • uz7ev_evcc_base:UltraZed-EV SOM(7EV)+ FMC运营商卡
  • uz3eg_iocc_base:UltraZed-EG SOM(3EG)+ IO运营商卡

下载并解压缩后,可将.img文件编程为16GB的micro SD卡:

1、解压缩档案,获得.img文件

2、将主板专用的SD卡映像编程为16GB(或更大)的micro SD卡一种。在Windows计算机上,使用Balena Etcher或Win32DiskImager(免费的开源软件)

3、在Linux机器上,使用Balena Etcher或使用dd实用程序:

$ sudo dd bs=4M if=Avnet-{platform}-Vitis-AI-1-3-{date}.img of=/dev/sd{X} status=progress conv=fsync

(其中{X}是小写字母,用于指定SD卡的设备。您可以使用“ df -h”来确定哪个设备与您的SD卡相对应)

步骤二、下载人脸识别代码

1、注册XILINX(点击进入

2、点击“演示和设计”选项卡,可以在其中找到一些应用示例(包括面部识别)的来源

下载“ face_recog_demo_src_v1.3.tar.gz”档案,并将其复制到Ultra96-V2板的SD卡中

步骤三、提取并构建人脸识别

“ face_recog_demo_src_v1.3.tar.gz”归档文件包含许多无用的文件(.*),可以使用--exclude参数提取档案,防止提取一些不需要的文件

提取存档后,可以构建应用程序。因为要使用该应用程序的X-windows版本,所以用build_x.sh脚本进行构建。

第一次在Ultra96-V2上构建应用程序的尝试导致了内存不足错误,这是因为调用带有太高的“ -j”参数(即10)的make引起的。要解决此问题,可修改cmake.sh脚本并更改以下代码:

可以使用sed进行操作:

构建成功:

创建两个可执行文件:

  • build_database:用于创建面部特征的数据库
  • face_demo:用于识别视频中的人脸

步骤四、执行提供的图像/视频

创建人脸数据库:创建一个名为face_feature.lib的面部数据库文件

在运行示例前,需要设置DISPLAY环境变量,并将显示分辨率设置为640x480 

要通过测试视频执行人脸识别,需执行以下操作:

测试结果:

  • 测试视频包含用于创建要素数据库的完全相同的面孔
  • 测试视频在中间处于“焦点不清晰”状态,导致下半脸合格,因此没有人脸识别
  • 显示屏左下方显示的脸部是最后识别的脸部(带有匹配项)
  • 每帧仅显示一个可识别的脸部(即使识别了多个脸部)

第5步-使用自定义面孔和USB摄像头执行

进一步举例说明该示例是否适用于自定义面部,以及包含相同人物但不具有相同面部图像的视频

对其进行了测试

补充:可对该项目进行以下修改:

  • 显示面的质量
  • 除人脸ID外的显示名称
  • 在每个检测到的面部边界框旁边显示识别的面部图像
加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论