觸覺智能(RK方案商)分享瑞芯微RK3588 RKNN端側模型的開發(fā)環(huán)境搭建方法與測試方法。
【測試環(huán)境說明】
開發(fā)板系統(tǒng):Ubuntu22.04
開發(fā)環(huán)境:Ubuntu22.04虛擬機
演示設備:觸覺智能RK3588開發(fā)板EVB3588,開發(fā)板基于核心板+底板設計,可通過核心板開發(fā)設計底板。
RKNN
RKNN,全程Rockchip Neural Network)是瑞芯微專為自家 NPU (神經網絡處理單元) 開發(fā)的端側神經網絡計算框架,提供完整的 "模型轉換 - 部署 - 推理" 解決方案。瑞芯微官方軟件??梢詭椭脩艨焖俚貙?a href="http://www.greenbey.cn/tags/ai/" target="_blank">AI模型部署到Rockchip芯片,整體的框架如下。

RKNN-Toolkit2是用戶模型轉換、推理與性能評估的開發(fā)套件。使用 RKNPU 時,需先通過該工具將訓練好的模型轉為 RKNN 格式,再借助 RKNN C API 或 Python API 在開發(fā)板上部署。其 Python 接口可快速實現(xiàn)模型轉換、量化、推理、性能與內存評估、量化精度分析、模型加密等功能。。

RKNN Runtime 負責加載 RKNN 模型并調用 NPU 驅動完成推理,推理流程包含輸入預處理、NPU運算、輸出后處理,并根據(jù)模型輸入格式與量化方式,提供通用 API 和零拷貝 API 兩種處理流程。
- 通用API推理
提供一套簡潔易用的推理 API,流程如圖所示。數(shù)據(jù)歸一化、量化、格式轉換、反量化等在 CPU 上運行,模型推理在 NPU 上執(zhí)行。

- 零拷貝API推理
優(yōu)化了通用 API 數(shù)據(jù)處理流程,歸一化、量化與模型推理均在 NPU 上執(zhí)行,數(shù)據(jù)排布與反量化可在CPU或NPU完成;零拷貝 API 的輸入處理效率高于通用 API。

開發(fā)環(huán)境搭建
RKNN-Toolkit2安裝
首先,執(zhí)行如下命令進行安裝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





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

進入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

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

- 下載RKNN相關倉庫
執(zhí)行如下命令從github上拉群RKNN相關倉庫,后續(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虛擬機并解壓軟件包,建議將GCC軟件包解壓到 Projects的文件夾中,后面編譯RKNN C Demo時會用到:

- 安裝板端RKNPU環(huán)境
開發(fā)板硬件連接如下圖所示,燒錄網盤固件(全新SDK網盤即將發(fā)布):
IDO_EVB3588_V1B_Ubuntu22.04_2HDMI4K_251219.img。

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

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

檢查rknn_server、librknnrt.so版本是否一致,命令如下:
# 查詢rknn_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。

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

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

完成以上步驟,瑞芯微原廠RKNN模型推理的開發(fā)環(huán)境就完成搭建了
-
瑞芯微
+關注
關注
27文章
845瀏覽量
54647 -
RK3588
+關注
關注
8文章
586瀏覽量
7542 -
RKNN Toolkit
+關注
關注
0文章
3瀏覽量
137 -
觸覺智能
+關注
關注
1文章
66瀏覽量
897 -
rk3588s
+關注
關注
0文章
37瀏覽量
717
發(fā)布評論請先 登錄
瑞芯微RK3588 RKNN模型推理環(huán)境部署與功能測試技巧(上)
評論