瑞芯微Rockchip开发者社区
直播中

jf_07365693

2年用户 380经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[讨论]

【幸狐Omni3576边缘计算套件试用体验】人脸识别

face_recog

【幸狐Omni3576边缘计算套件试用体验】人脸识别

本文介绍了幸狐 Omni3576 边缘计算套件结合 Retinaface 算法实现人脸特征识别的项目设计和部署方案。

算法介绍

RetinaFace 是帝国理工学院在 2019 年 5 月发表的论文中描述的人脸检测算法,作者开源了相关代码。

RetinaFace_algorithm.jpg

Retinaface 是一种单阶段人脸检测器,它通过联合额外监督和自监督多任务学习的优势,在各种尺度的人脸上进行像素级人脸定位。

特点

  • 在 WIDER FACE 数据集上手动标注了五个面部特征点,在该外监督信号的帮助下,显著改善人脸检测效果;
  • 增加自监督网格解码器分支,用于与现有的监督分支并行,预测像素级 3D 人脸信息;
  • 在 WIDER FACE 硬测试集上,RetinaFace 的表现优于最先进模型的平均精度 1.1% ;
  • 在 IJB-C 测试集上,RetinaFace 使最先进的 ArcFace 能够改善其面部验证结果;
  • 通过采用轻量级骨干网络,RetinaFace 可以在单个 CPU 核心上实时运行 VGA 分辨率的图像。

环境部署

这里简要介绍环境部署流程,详细方案参考前面关于图像识别车牌识别 的帖子。

  1. 安装 Ubuntu 22.04 操作系统
  2. 安装 RKNN-Toolkit2 工具
  3. 安装 Conda 工具
  4. 部署 RKNN-Toolkit2 Conda 环境

推理测试

rknn_model_zoo 是瑞芯微官方提供的 RKNPU 支持的各种主流算法的部署示例,最新的示例支持 mobilenet 模型部署和 yolo 模型部署。

根据该模型的 GitHub 介绍文档,支持车牌识别的库对应 RetinaFace,且硬件支持 RK3576

retinaface_github_table.jpg

1.克隆 rknn_model_zoo 库文件

git clone https://github.com/airockchip/rknn_model_zoo.git

2.获取 RetinaFace ONNX 模型文件

cd rknn_model_zoo/examples/RetinaFace/model
chmod a+x download_model.sh
./download_model.sh

retinaface_onnx.jpg

3.执行 rknn_model_zoo/examples/RetinaFace/python 目录下的模型转换程序 convert.py

conda activate RKNN-Toolkit2
cd rknn_model_zoo/examples/RetinaFace/python
 python3 convert.py ../model/RetinaFace_mobile320.onnx rk3576

输出模型

retinaface_onnx2rknn.jpg

编译和构建

将 ONNX 模型转换成 RKNN 模型后,对 rknn_model_zoo/examples/RetinaFace 目录下的例程进行交叉编译。

编译前需设置环境变量

export GCC_COMPILER=/home/ljl/Omni3576-sdk/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu

注意工具链路径,建议先 编译官方 SDK .

执行 rknn_model_zoo 目录下的 build-linux.sh 脚本

chmod +x ./build-linux.sh
./build-linux.sh -t rk3576 -a aarch64 -d RetinaFace

retinaface_build_model.jpg

交叉编译完成后在 rknn_model_zoo/install 目录下生成 rknn_RetinaFace_demo 文件夹,包含编译出来的程序和库文件

retinaface_install_files.jpg

运行程序

rknn_RetinaFace_demo 文件夹传输至开发板,ADB 执行

adb push D:\rknn_RetinaFace_demo /home/luckfox

或使用 FileZilla 软件将文件夹拖拽至板端。

修改目标程序权限,执行程序

chmod a+x rknn_RetinaFace_demo
./rknn_retinaface_demo ./model/RetinaFace.rknn ./model/test.jpg

程序执行目标图片的识别任务,打印相关过程、人脸位置以及识别率等参数信息

retinaface_recognize_output.jpg

输出人脸识别结果,位于 rknn_RetinaFace_demo 文件目录下

retinaface_test_result.jpg

rknn_RetinaFace_demo/model 文件夹下添加人脸图片,执行板端推理程序,即可实现人脸的特征标定。

识别效果

介绍了 RetinaFace 模型实现单张和多张人脸识别的效果展示。

单张人脸识别

这里选取了一些影视作品的人物图片作为识别样本,识别效果如下

retinaface_results_single.jpg

单张人脸图片识别效果较好,基本能够实现 100% 识别,且五官标定位置准确。

多张人脸同时识别

在单张人脸识别的基础上,尝试多张人脸同时识别的情况。

将目标图片上传至板端并运行程序,终端输出推理识别结果,包括多张人脸的位置和对应的准确率

retinaface_Friends_output.jpg

图片输出结果位于 rknn_RetinaFace_demo 文件目录下

retinaface_result_Friends.jpg

接下来就是心心念念的整活儿阶段了,找一些有趣的图片来测试

retinaface_result_hongloumeng.jpg

retinaface_result_shuihu.jpg

retinaface_result_LGZ.jpg

retinaface_result_westfour.jpg

retinaface_result_TSJ.jpg

retinaface_result_TBBT.jpg

反馈

  • 体验发现识别效果与图片质量密切相关,人脸清晰度对识别率的影响较大,整体识别取得了令人满意的效果。
  • 此外,图片中人脸的角度对识别结果也有影响,脸部倾斜或侧脸会削弱识别率。
  • 因此若要提高识别率,可以增加人脸图片的清晰度、像素分辨率,尽量选择人脸正面识别等。

总结

本文介绍了幸狐 Omni3576 边缘计算套件实现人脸特征识别的项目设计和部署方案,包括算法介绍、推理测试、板端部署、程序运行和效果展示等,并分析了结果和误差产生原因,给出了相应的解决方案,为智能识别相关项目提供了参考。

更多回帖

发帖
×
20
完善资料,
赚取积分