【拆·應用】是為開源鴻蒙應用開發者打造的技術分享平臺,是匯聚開發者的技術洞見與實踐經驗、提供開發心得與創新成果的展示窗口。誠邀您踴躍發聲,期待您的真知灼見與技術火花!
引言
本期內容由AI Model SIG提供,介紹了在開源鴻蒙中,基于RK3588的RKNN人臉識別應用開發全流程。
背景介紹
在邊緣計算領域,RK3588作為一款高性能AIoT芯片,具備6TOPS的NPU算力,非常適合部署人臉識別等計算機視覺應用。深圳市視美泰技術股份有限公司(以下簡稱“視美泰”)基于開源鴻蒙系統,結合Rockchip NPU強大的AI算力,基于RKNN開發了人臉識別應用案例,此案例將RKNN能力與開源鴻蒙進行適配和集成,為開發者提供直觀、便捷的AI應用體驗。
RKNN介紹
RKNN是瑞芯微推出的神經網絡推理加速引擎,Rockchip NPU平臺使用的模型類型,RKNN通常應用于邊緣設備上的深度學習任務,如人臉識別、物體檢測和語音識別等。它是一個強大的神經網絡開發和運行框架,簡化了深度學習模型開發的多個復雜步驟,并提供了優秀的跨平臺支持和模型優化能力。

技術實現詳解
本案例采用雙模型推理設計,充分發揮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完成調整預覽流圖像大小和添加填充,這種處理方式可以避免圖像變形,提高檢測精度。

3.人臉檢測推理執行
(1)準備并設置輸入數據參數。
(2)通過rknn_inputs_set設置輸入。
(3)對預覽流圖片執行推理,獲取輸出結果。
(4)通過后處理函數處理YOLOv5模型的輸出,將輸出轉換為可用的檢測結果,包括邊界框坐標、類別和置信度。

4.人臉識別圖像預處理
(1)首先根據人臉檢測過程中保存的人臉邊界坐標數據,對對應的預覽流圖片進行人臉裁切,將預覽流中裁切出來的人臉圖尺寸縮放到224*224,將這一尺寸作為標準的人臉識別輸入尺寸,將縮放好的圖片輸出保存。
(2)啟動人臉識別工作線程(如果尚未啟動)。
(3)獲取當前時間戳,查找剛剛輸出的縮放好的圖片,將時間戳最接近現在時間戳的添加到異步處理隊列中。

5.人臉識別推理流程
(1)將準備推理的人臉圖像進行預處理。
(2)準備輸入數據并且設置輸入。
(3)執行推理,獲取輸出結果。
(4)查詢輸出張量的屬性(包括零點和縮放因子),將輸出向量大小調整為128維,并將量化的int8數據轉換回浮點數,實現將模型的量化輸出轉換回原始特征空間。
(5)最后計算特征向量的平方和,計算L2范數,將特征向量的每個元素除以L2范數歸一化后的特征向量長度為1,便于后續使用余弦相似度計算人臉相似性。

6.獲取人臉與人臉庫對比
(1)首先人臉庫的人臉圖像會在應用啟動時,自動執行人臉識別推理,并保存從人臉圖像中提取的128維特征向量。
(2)再從實時人臉的圖像中提取到128維特征向量后,會與人臉庫中保存的128維特征向量進行點積計算,因為進行了歸一化處理,所以返回值相似度的范圍為0.0-1.0,當相似度為0.6以上即為同張人臉。

本應用共提供3個NAPI接口,供開發者在ArkTS調用,能夠快速實現人臉識別應用的開發:
下列接口返回值中 * 表示僅在成功時存在并返回
saveModelFile - 保存模型文件

saveFaceDatabaseImages - 保存人臉數據庫圖片

processImageWithRKNN - 圖像處理與人臉識別

程序運行流程
展示應用運行時的部分重要函數:
1.應用啟動階段

2.攝像頭初始化

3.圖片處理流水線

4.RKNN NAPI接口調用

5.UI渲染與交互


技術特點
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文章
4203瀏覽量
46120 -
人臉識別
+關注
關注
77文章
4127瀏覽量
88452 -
鴻蒙
+關注
關注
60文章
2963瀏覽量
45882 -
RK3588
+關注
關注
8文章
556瀏覽量
7318
原文標題:拆·應用丨第4期:基于開源鴻蒙的RKNN人臉識別應用案例
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
開源鴻蒙行業論壇成功舉辦
開源鴻蒙6.0 Release版本重磅發布
新大陸自動識別亮相2025開源鴻蒙技術大會
開源鴻蒙持續取得顯著成果
基于LockAI視覺識別模塊:C++人臉識別
基于開源鴻蒙的RKNN人臉識別應用案例
評論