0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于开源鸿蒙的RKNN人脸识别应用案例

OpenAtom OpenHarmony 来源:OpenAtom OpenHarmony 2025-09-03 09:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【拆·应用】是为开源鸿蒙应用开发者打造的技术分享平台,是汇聚开发者的技术洞见与实践经验、提供开发心得与创新成果的展示窗口。诚邀您踊跃发声,期待您的真知灼见与技术火花!

引言

本期内容由AI Model SIG提供,介绍了在开源鸿蒙中,基于RK3588的RKNN人脸识别应用开发全流程。

背景介绍

在边缘计算领域,RK3588作为一款高性能AIoT芯片,具备6TOPS的NPU算力,非常适合部署人脸识别等计算机视觉应用。深圳市视美泰技术股份有限公司(以下简称“视美泰”)基于开源鸿蒙系统,结合Rockchip NPU强大的AI算力,基于RKNN开发了人脸识别应用案例,此案例将RKNN能力与开源鸿蒙进行适配和集成,为开发者提供直观、便捷的AI应用体验。

RKNN介绍

RKNN是瑞芯微推出的神经网络推理加速引擎,Rockchip NPU平台使用的模型类型,RKNN通常应用于边缘设备上的深度学习任务,如人脸识别、物体检测和语音识别等。它是一个强大的神经网络开发和运行框架,简化了深度学习模型开发的多个复杂步骤,并提供了优秀的跨平台支持和模型优化能力。

294fb174-84b8-11f0-a18e-92fbcf53809c.jpg

技术实现详解

本案例采用双模型推理设计,充分发挥Rockchip NPU的硬件优势:

YOLOv5人脸检测模型:负责实时检测图像中的人脸位置。

FaceNet特征提取模型:提取人脸特征向量,实现精准识别。

检测流程:摄像头采集 → 图像预处理 → RKNN推理 → 结果处理 → UI显示

1.模型加载与初始化

模型加载流程:

(1)首先尝试从应用沙箱目录加载已保存的模型文件。

(2)如果沙箱中不存在,则从rawfile资源中加载。

(3)初始化RKNN上下文,设置使用所有NPU核心(RKNN_NPU_CORE_0_1_2)。

(4)查询模型的输入输出信息,获取tensor属性。

2.预览流图像预处理

(1)首先通过opencv库的imread读取预览流图像。

(2)获取的预览流图像为BGR格式,需要将BGR转为RGB格式。

(3)计算目标尺寸和缩放比例。

(4)再通过计算出来的比例进行自适应缩放和填充,通过opencv库的resize和copyMakeBorder完成调整预览流图像大小和添加填充,这种处理方式可以避免图像变形,提高检测精度。

295e8564-84b8-11f0-a18e-92fbcf53809c.png

3.人脸检测推理执行

(1)准备并设置输入数据参数。

(2)通过rknn_inputs_set设置输入。

(3)对预览流图片执行推理,获取输出结果。

(4)通过后处理函数处理YOLOv5模型的输出,将输出转换为可用的检测结果,包括边界框坐标、类别和置信度。

29682e5c-84b8-11f0-a18e-92fbcf53809c.png

4.人脸识别图像预处理

(1)首先根据人脸检测过程中保存的人脸边界坐标数据,对对应的预览流图片进行人脸裁切,将预览流中裁切出来的人脸图尺寸缩放到224*224,将这一尺寸作为标准的人脸识别输入尺寸,将缩放好的图片输出保存。

(2)启动人脸识别工作线程(如果尚未启动)。

(3)获取当前时间戳,查找刚刚输出的缩放好的图片,将时间戳最接近现在时间戳的添加到异步处理队列中。

2976c412-84b8-11f0-a18e-92fbcf53809c.png

5.人脸识别推理流程

(1)将准备推理的人脸图像进行预处理。

(2)准备输入数据并且设置输入。

(3)执行推理,获取输出结果。

(4)查询输出张量的属性(包括零点和缩放因子),将输出向量大小调整为128维,并将量化的int8数据转换回浮点数,实现将模型的量化输出转换回原始特征空间。

(5)最后计算特征向量的平方和,计算L2范数,将特征向量的每个元素除以L2范数归一化后的特征向量长度为1,便于后续使用余弦相似度计算人脸相似性。

2987089a-84b8-11f0-a18e-92fbcf53809c.png

6.获取人脸与人脸库对比

(1)首先人脸库的人脸图像会在应用启动时,自动执行人脸识别推理,并保存从人脸图像中提取的128维特征向量。

(2)再从实时人脸的图像中提取到128维特征向量后,会与人脸库中保存的128维特征向量进行点积计算,因为进行了归一化处理,所以返回值相似度的范围为0.0-1.0,当相似度为0.6以上即为同张人脸。

299b9b7a-84b8-11f0-a18e-92fbcf53809c.png

NAPI接口

本应用共提供3个NAPI接口,供开发者在ArkTS调用,能够快速实现人脸识别应用的开发:

下列接口返回值中 * 表示仅在成功时存在并返回

saveModelFile - 保存模型文件

29b7d268-84b8-11f0-a18e-92fbcf53809c.jpg

saveFaceDatabaseImages - 保存人脸数据库图片

29c55d8e-84b8-11f0-a18e-92fbcf53809c.jpg

processImageWithRKNN - 图像处理与人脸识别

29d47fe4-84b8-11f0-a18e-92fbcf53809c.jpg

程序运行流程

展示应用运行时的部分重要函数:

1.应用启动阶段

29e54144-84b8-11f0-a18e-92fbcf53809c.jpg

2.摄像头初始化

29edb40a-84b8-11f0-a18e-92fbcf53809c.jpg

3.图片处理流水线

29f9416c-84b8-11f0-a18e-92fbcf53809c.jpg

4.RKNN NAPI接口调用

2a0d1f7a-84b8-11f0-a18e-92fbcf53809c.jpg

5.UI渲染与交互

2a21630e-84b8-11f0-a18e-92fbcf53809c.jpg

2a295348-84b8-11f0-a18e-92fbcf53809c.jpg

技术特点

NPU加速:充分利用Rockchip NPU的算力,实现高效的模型推理。

多核心支持:设置使用所有NPU核心,最大化硬件利用率。

异步处理:人脸识别采用异步处理,不阻塞UI线程。

内存优化:智能管理模型数据和图像缓存,避免内存泄漏。

实时结果反馈:提供实时的人脸检测和识别结果。

依赖

1.操作系统及硬件依赖

OpenHarmony系统版本: 仅支持OpenHarmony 5.0.0 Release 64位系统(API 12)。

设备要求: 需要支持Rockchip NPU的设备,案例默认适配RK3588。

2.模型依赖

将所需模型放置在rawfile/model/usemodel/目录下。

yolov5.rknn: 人脸检测模型,需要放置在rawfile/model/usemodel/目录下。

facenet.rknn: 人脸特征提取模型,需要放置在rawfile/model/usemodel/目录下。

3.人脸识别人脸库依赖

将所需识别人物的参考人脸图片放置在rawfile/face_databases目录下,按1-20命名,例如:1.jpg。

应用效果展示

演示使用板卡:视美泰 AIoT-3588A

OpenHarmony版本:OpenHarmony 5.0.0 Release 64位

RKNPU版本: v0.9.8

同一个人不同场景下的识别效果展示

不同人的识别效果展示

总结

本文主要介绍了基于开源鸿蒙系统,将RKNN适配了开源鸿蒙,实现RKNN人脸识别应用案例,可智能识别人脸及与人脸库中的参考人脸进行匹配比对。文中使用搭载开源鸿蒙5.0.0 Release 64位系统的视美泰AIoT-3588A开发板进行应用案例效果展示。

应用源码获取

RKNN人脸识别应用案例相关源码均已上传至gitcode。

仓库地址:https://gitcode.com/openharmony-sig/applications_ai_model_samples/tree/master/RknnFacialRecognitionDemo_api12

开源鸿蒙 64位固件以及烧录文档链接:

https://pan.baidu.com/s/1kgLCKylfeaYkuaBwehInBw?pwd=mf6t

提取码:mf6t

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    4031

    浏览量

    45545
  • 人脸识别
    +关注

    关注

    77

    文章

    4117

    浏览量

    87731
  • 鸿蒙
    +关注

    关注

    60

    文章

    2853

    浏览量

    45340
  • RK3588
    +关注

    关注

    8

    文章

    491

    浏览量

    7045

原文标题:拆·应用丨第4期:基于开源鸿蒙的RKNN人脸识别应用案例

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源鸿蒙6.0 Release版本重磅发布

    近日,在长沙国际会议中心举办的开源鸿蒙技术大会2025上,开放原子开源鸿蒙(即OpenAtom OpenHarmony,简称“开源
    的头像 发表于 10-10 16:49 2171次阅读

    新大陆自动识别亮相2025开源鸿蒙技术大会

    字经济发展中的核心价值。作为开源鸿蒙生态在自动识别领域的重要推动者,公司集中展示了多款搭载开源鸿蒙系统的智能终端产品,展现了在国产化技术路线
    的头像 发表于 09-30 15:26 643次阅读

    基于开源鸿蒙的语音识别及语音合成应用开发样例

    本期内容由AI Model SIG提供,介绍了在开源鸿蒙中,利用sherpa_onnx开源三方库进行ASR语音识别与TTS语音合成应用开发的流程。
    的头像 发表于 08-25 14:26 3561次阅读
    基于<b class='flag-5'>开源</b><b class='flag-5'>鸿蒙</b>的语音<b class='flag-5'>识别</b>及语音合成应用开发样例

    如何挑选人脸识别终端?人脸识别一体机品牌排行榜

    挑选人脸识别终端时需要注意稳定性、人脸识别算法可靠性、兼容性、安全性、软件管理、维护与安装以及产品外观与价格等多个因素。另外,在挑选人脸
    的头像 发表于 08-18 10:44 1567次阅读
    如何挑选<b class='flag-5'>人脸</b><b class='flag-5'>识别</b>终端?<b class='flag-5'>人脸</b><b class='flag-5'>识别</b>一体机品牌排行榜

    开源鸿蒙持续取得显著成果

    近日,2025开放原子开源生态大会开源鸿蒙主题演讲在北京国家会议中心成功举办。大会聚焦开源鸿蒙技术创新、人才发展与产业落地,全面呈现“Pow
    的头像 发表于 07-28 17:39 686次阅读

    人脸方向识别算法

    人脸识别
    深蕾半导体
    发布于 :2025年07月22日 09:58:29

    基于LockAI视觉识别模块:C++人脸识别

    本文基于RV1106做成的LockAI视觉识别模块,采用 LZ-Picodet 模型训练的人脸检测模型 LZ-Face,以及ArcFace人脸识别模型,实现
    发表于 07-01 12:01

    基于LockAI视觉识别模块:C++人脸识别

    本文基于RV1106做成的LockAI视觉识别模块,采用LZ-Picodet模型训练的人脸检测模型LZ-Face,以及ArcFace人脸识别模型,实现
    的头像 发表于 07-01 10:09 504次阅读
    基于LockAI视觉<b class='flag-5'>识别</b>模块:C++<b class='flag-5'>人脸</b><b class='flag-5'>识别</b>

    华为亮相2025开源鸿蒙开发者大会

    近日,开源鸿蒙开发者大会2025(以下简称大会)在深圳成功举办。大会以开源鸿蒙5.1 Release版本发布为契机,聚焦开源
    的头像 发表于 05-29 09:07 1067次阅读

    人脸识别身份核验终端使用鸿蒙系统,有什么好处?

    随着人脸识别技术越来越得到广泛应用,不少人对人脸识别核验终端所涉及的个人信息安全十分关注。而且人脸识别
    的头像 发表于 05-20 09:57 697次阅读
    <b class='flag-5'>人脸</b><b class='flag-5'>识别</b>身份核验终端使用<b class='flag-5'>鸿蒙</b>系统,有什么好处?

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

    _RetinaFace_demo ./rknn_retinaface_demo ./model/RetinaFace.rknn ./model/test.jpg 程序执行目标图片的识别任务,打印相关过程、
    发表于 04-01 21:46

    【幸狐Omni3576边缘计算套件试用体验】RKNN 推理测试与图像识别

    【幸狐 Omni3576 边缘计算套件测评】RKNN 推理测试与图像识别 本文介绍了幸狐 Omni3576 边缘计算套件实现 RKNN 推理和图像物体识别的测试流程,包括
    发表于 03-20 16:14

    【米尔RK3576开发板评测】+项目名称RetinaFace人脸检测

    路径,授权rknn_retinaface_demo文件权限 chmod 777 rknn_retinaface_demo 4.3、运行程序,想要检测识别的图片 ./rknn_retin
    发表于 02-15 13:28

    ElfBoard开源项目|百度智能云平台的人脸识别项目

    百度智能云平台的人脸识别项目,旨在利用其强大的人脸识别服务实现自动人脸识别。选择百度智能云的原因
    的头像 发表于 12-24 10:54 1845次阅读
    ElfBoard<b class='flag-5'>开源</b>项目|百度智能云平台的<b class='flag-5'>人脸</b><b class='flag-5'>识别</b>项目