本文介紹瑞芯微原廠RKNN端側(cè)模型的開發(fā)環(huán)境搭建方法,后續(xù)還將帶來詳細(xì)測試方法。基于觸覺智能RK3576開發(fā)板Purple Pi OH2演示。
RKNN
RKNN(Rockchip Neural Network) 是瑞芯微專為自家 NPU (神經(jīng)網(wǎng)絡(luò)處理單元) 開發(fā)的端側(cè)神經(jīng)網(wǎng)絡(luò)計(jì)算框架,提供完整的 "模型轉(zhuǎn)換 - 部署 - 推理" 解決方案。RK官方提供了RKNN軟件??梢詭椭脩艨焖俚貙?a href="http://www.brongaenegriffin.com/tags/ai/" target="_blank">AI模型部署到Rockchip芯片,整體的框架如下。

RKNN-Toolkit2是為用戶提供在計(jì)算機(jī)上進(jìn)行模型轉(zhuǎn)換、推理和性能評估的開發(fā)套件,RKNN-Toolkit2的主要框圖如下。為了使用RKNPU,用戶需要首先在計(jì)算機(jī)上運(yùn)行RKNN-Toolkit2工具,將訓(xùn)練好的模型轉(zhuǎn)換為RKNN格式模型,之后使用RKNN C API或Python API在開發(fā)板上進(jìn)行部署。該工具提供的Python接口可以便捷地完成模型轉(zhuǎn)換、量化、模型推理、性能和內(nèi)存評估、量化精度分析、模型加密等功能。

RKNN Runtime負(fù)責(zé)加載RKNN模型,并調(diào)用NPU驅(qū)動實(shí)現(xiàn)在NPU上推理RKNN模型。推理RKNN模型時,包括原始數(shù)據(jù)輸入預(yù)處理、NPU運(yùn)行模型、輸出后處理三項(xiàng)流程。根據(jù)不同模型輸入格式和量化方式,RKNN Runtime提供通用API和零拷貝API兩種處理流程:
- 通用API推理流程
提供一套簡潔、無門檻的推理API,易于使用,流程如圖所示。其中對數(shù)據(jù)的歸一化、量化、數(shù)據(jù)排布格式轉(zhuǎn)換、反量化等均在CPU上運(yùn)行,模型本身的推理在NPU上運(yùn)行。

- 零拷貝API推理
優(yōu)化了通用API的數(shù)據(jù)處理流程,歸一化、量化和模型推理都會在NPU上運(yùn)行,NPU輸出的數(shù)據(jù)排布格式和反量化過程在CPU或者NPU上運(yùn)行。零拷貝API對于輸入數(shù)據(jù)流程的處理效率會比通用API高。

另外對RK3576端側(cè)性能感興趣的朋友們,可點(diǎn)擊觸覺智能相關(guān)實(shí)測視頻:
https://www.bilibili.com/video/BV1T8UqBMErn/?spm_id_from=333.1387
開發(fā)環(huán)境搭建
- RKNN-Toolkit2安裝
首先,執(zhí)行如下命令進(jìn)行安裝Miniforge Conda:
wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh chmod 777 Miniforge3-Linux-x86_64.sh bash Miniforge3-Linux-x86_64.sh





進(jìn)入Conda base環(huán)境,創(chuàng)建一個RKNN-Toolkit2 Conda環(huán)境,命令如下:
source ~/miniforge3/bin/activate conda create -n RKNN-Toolkit2 python=3.8

進(jìn)入RKNN-Toolkit2 Conda環(huán)境:
conda activate RKNN-Toolkit2

激活RKNN-Toolkit2 Conda環(huán)境后,可通過 pip 源安裝RKNN-Toolkit2:
pip install rknn-toolkit2 -i https://pypi.org/simple

驗(yàn)證RKNN-Toolkit2,若執(zhí)行以下命令沒有報(bào)錯,則安裝成功。
python3 >>> from rknn.api import RKNN

- 下載RKNN相關(guān)倉庫
執(zhí)行如下命令從github上拉群RKNN相關(guān)倉庫,后續(xù)編譯、測試會用到。
mkdir Projects cd Projects # 下載 RKNN-Toolkit2 倉庫 git clone https://github.com/airockchip/rknn-toolkit2.git --depth 1 # 下載 RKNN Model Zoo 倉庫 git clone https://github.com/airockchip/rknn_model_zoo.git --depth 1


- 安裝編譯工具
執(zhí)行如下命令安裝cmake工具:
sudo apt install cmake
下載GCC 交叉編譯器工具鏈:
- https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz
下載后拷貝到Ubuntu虛擬機(jī)并解壓軟件包,建議將GCC軟件包解壓到 Projects的文件夾中,后面編譯RKNN C Demo時會用到:

- 安裝板端RKNPU環(huán)境
開發(fā)板硬件連接如下圖所示,燒錄網(wǎng)盤固件:
IDO_PurplePiOH2_V1B_Ubuntu22.04_HDMI4K_250907R.img。

注意:OTG接口需要連接到Ubuntu虛擬機(jī),Ubuntu虛擬機(jī)需要安裝adb命令:
sudo apt install adb
接下來,確認(rèn)板卡系統(tǒng)支持的RKNPU驅(qū)動版本,開發(fā)板上電進(jìn)入系統(tǒng),執(zhí)行以下命令查詢NPU驅(qū)動版本:
adb shell dmesg | grep -i rknpu

默認(rèn)出廠固件已支持NPU驅(qū)動,若以上命令查詢不到NPU驅(qū)動版本,在內(nèi)核源中使能如下配置以集成NPU驅(qū)動:
CONFIG_ROCKCHIP_RKNPU=y
RKNN-Toolkit2的調(diào)試功能要求板端安裝RKNPU2環(huán)境,并啟動
rknn_server服務(wù)。以下是RKNPU2 環(huán)境中的兩個基本概念:
RKNN Server:一個運(yùn)行在開發(fā)板上的后臺代理服務(wù)。該服務(wù)的主要功能是調(diào)用板端 Runtime 對應(yīng)的接口處理計(jì)算機(jī)通過USB傳輸過來的數(shù)據(jù),并將處理結(jié)果返回給計(jì)算機(jī)。
RKNPU2 Runtime 庫(librknnrt.so):主要職責(zé)是負(fù)責(zé)在系統(tǒng)中加載 RKNN 模型,并通過調(diào)用專用的神經(jīng)處理單元(NPU)執(zhí)行RKNN模型的推理操作。
如果能夠啟動 rknn_server 服務(wù),則代表板端已經(jīng)安裝 RKNPU2 環(huán)境。
# 進(jìn)入板端 adb shell # 啟動 rknn_server restart_rknn.sh

檢查rknn_server、librknnrt.so版本是否一致,命令如下:
# 查詢r(jià)knn_server版本 strings /usr/bin/rknn_server | grep -i "rknn_server version" # 查詢librknnrt.so庫版本 strings /usr/lib/librknnrt.so | grep -i "librknnrt version"
如果出現(xiàn)以下輸出信息,則代表rknn_server版本為x.x.x,librknnrt.so的版本為x.x.x。

默認(rèn)出廠的固件rknn_server、librknnrt.so已經(jīng)一致,若版本不一致需要更新庫。
# 進(jìn)入前面下載的rknn-toolkit2倉庫的 rknpu2 目錄 cd Projects/rknn-toolkit2/rknpu2

拷貝上述腳本和庫替換開發(fā)板系統(tǒng)對應(yīng)的文件進(jìn)行更新:

完成以上步驟,瑞芯微原廠RKNN模型推理的開發(fā)環(huán)境就完成搭建了,下集為您帶來RKNN詳細(xì)測試方法。本文相關(guān)資料請關(guān)注深圳觸覺智能。
-
瑞芯微
+關(guān)注
關(guān)注
27文章
790瀏覽量
54254 -
RKNN Toolkit
+關(guān)注
關(guān)注
0文章
1瀏覽量
133 -
AI大模型
+關(guān)注
關(guān)注
0文章
398瀏覽量
998 -
rk3576
+關(guān)注
關(guān)注
1文章
265瀏覽量
1542
發(fā)布評論請先 登錄
【米爾RK3576開發(fā)板評測】+項(xiàng)目名稱3、使用rknn 進(jìn)行圖像檢測
【米爾RK3576開發(fā)板評測】+項(xiàng)目名稱RetinaFace人臉檢測
【米爾RK3576開發(fā)板評測】+項(xiàng)目名稱百度飛槳PP-YOLOE
RK3576 vs RK3588:為何越來越多的開發(fā)者轉(zhuǎn)向RK3576?
基于米爾瑞芯微RK3576開發(fā)板部署運(yùn)行TinyMaix:超輕量級推理框架
基于米爾瑞芯微RK3576開發(fā)板的Qwen2-VL-3B模型NPU多模態(tài)部署評測
如何精準(zhǔn)驅(qū)動菜品識別模型--基于米爾瑞芯微RK3576邊緣計(jì)算盒
新品體驗(yàn) | RK3576開發(fā)板
RK3576單板發(fā)布倒計(jì)時:RK3399與RK3576對比
迅為RK3576開發(fā)板NPU環(huán)境搭建和使用rknn-toolkit2功能演示模型轉(zhuǎn)換
迅為RK3576開發(fā)板NPU環(huán)境搭建和使用rknn-toolkit2功能演示連板推理
瑞芯微RK3576與RK3576S有什么區(qū)別,性能參數(shù)配置與型號差異解析
迅為如何在RK3576上部署YOLOv5;基于RK3576構(gòu)建智能門禁系統(tǒng)
RK3576平臺RKNN模型部署實(shí)操(上)
評論