本文將介紹瑞芯微RK3588原廠RKNN端側(cè)模型的測試驗(yàn)證方法,而關(guān)于開發(fā)環(huán)境搭建可以查看先前文章。
【測試環(huán)境說明】
開發(fā)板系統(tǒng):Ubuntu22.04
開發(fā)環(huán)境:Ubuntu22.04虛擬機(jī)
演示設(shè)備:觸覺智能RK3588開發(fā)板EVB3588,開發(fā)板基于核心板+底板設(shè)計,用戶可通過核心板二次開發(fā)。
RKNN
RKNN,全程Rockchip Neural Network)是瑞芯微專為自家 NPU (神經(jīng)網(wǎng)絡(luò)處理單元) 開發(fā)的端側(cè)神經(jīng)網(wǎng)絡(luò)計算框架,提供完整的 "模型轉(zhuǎn)換 - 部署 - 推理" 解決方案。瑞芯微官方軟件??梢詭椭脩艨焖俚貙?a href="http://www.brongaenegriffin.com/tags/ai/" target="_blank">AI模型部署到Rockchip芯片,整體的框架如下。

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

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

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

示例測試
開始介紹測試方法之前,對開發(fā)環(huán)境搭建不了解可以看上集:瑞芯微RK3588 RKNN模型推理環(huán)境部署與功能測試技巧(上)
- RKNN Model Zoo介紹
RKNN Model Zoo提供了示例代碼,旨在幫助用戶快速在Rockchip瑞芯微的開發(fā)板上運(yùn)行各種常用模型,整個目錄結(jié)構(gòu)如下:
. ├── 3rdparty # 第三方庫 ├── asset ├── build-android.sh ├── build-linux.sh # Linux構(gòu)建腳本 ├── datasets # 數(shù)據(jù)集 ├── docs ├── examples # 示例代碼 ├── FAQ_CN.md ├── FAQ.md ├── LICENSE ├── py_utils ├── README_CN.md ├── README.md ├── scaling_frequency.sh └── utils # 常用方法,如文件操作,畫圖等
其中,examples目錄包括了一些常用模型的示例,例如MobileNet 和 YOLO等。每個模型示例提供了Python 和 C/C++ 兩個版本的示例代碼。

以yolov5為例:
rknn_model_zoo ├── examples │ └── yolov5 │ ├── cpp # C/C++ 版本的示例代碼 │ ├── model # 模型、測試圖片等文件 │ ├── python # 模型轉(zhuǎn)換腳本和Python版本的示例代碼 │ └── README.md └── ...
- RKNN Python Demo 使用方法
準(zhǔn)備模型,執(zhí)行腳本下載onnx測試模型。
# 進(jìn)入 rknn_model_zoo/examples/yolov5/model 目錄 cd Projects/rknn_model_zoo/examples/yolov5/model chmod a+x download_model.sh # 運(yùn)行 download_model.sh 腳本,下載 yolov5 onnx 模型 ./download_model.sh

轉(zhuǎn)換模型,執(zhí)行以下命令將onnx模型轉(zhuǎn)換為rknn模型。
rknn_model_zoo/examples/yolov5/python 目錄 cd Projects/rknn_model_zoo/examples/yolov5/python # 運(yùn)行 convert.py 腳本,將原始的 ONNX 模型轉(zhuǎn)成 RKNN 模型 python convert.py ../model/yolov5s_relu.onnx rk3588 i8 ../model/yolov5s_relu.rknn

連板調(diào)試,RKNN-Toolkit2的連板調(diào)試功能依賴板端的RKNN Server程序,該程序是一個運(yùn)行在開發(fā)板上的后臺代理服務(wù),用于接收PC(測試使用Ubuntu虛擬機(jī))通過USB傳輸過來的命令和數(shù)據(jù),然后調(diào)用相應(yīng)的運(yùn)行時接口,并返回相應(yīng)結(jié)果給PC。所以在做連板調(diào)試前需要確認(rèn)開發(fā)板是否已啟動RKNN Server程序。
adb shell ps | grep rknn_server

執(zhí)行如下命令,進(jìn)行連板在線調(diào)試:
# 如果帶上 --img_show 參數(shù),則會顯示結(jié)果圖片 python yolov5.py --model_path ../model/yolov5s_relu.rknn --target rk3588 --img_show

效果如圖:

- RKNN C Demo 使用方法
完整運(yùn)行一個RKNN C Demo,需要先將C/C++源代碼編譯成可執(zhí)行文件,然后將可執(zhí)行文件、模型文件、測試圖片等相關(guān)文件推送到板端上,最后在板端運(yùn)行可執(zhí)行文件。
在rknn_model_zoo工程下的build-linsx.sh 本中指定前面下載的GCC交叉編譯器路徑。
GCC_COMPILER=/home/ido/rknn/Projects/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu


執(zhí)行如下命令編譯測試Demo,以yolov5為例:
# 運(yùn)行 build-linux.sh 腳本 # 用法:./build-linux.sh -t -a -d [-b ] [-m] # -t : target (rk356x/rk3588) # 平臺類型,rk3568/rk3566 都統(tǒng)一為rk356x # -a : arch (aarch64/armhf) # 板端系統(tǒng)架構(gòu) # -d : demo name # 對應(yīng) examples 目錄下子文件夾的名稱,如yolov5、mobilenet # -b : build_type(Debug/Release) # -m : enable address sanitizer, build_type need set to Debug chmod a+x build-linux.sh ./build-linux.sh -t rk3588 -a aarch64 -d yolov5
編譯后的安裝目錄如下:

打包安裝目錄生成的文件部署到開發(fā)板系統(tǒng):
tar -xf rknn_yolov5_demo.tar.gz cd rknn_yolov5_demo/ chmod a+x rknn_yolov5_demo # 執(zhí)行一下命令進(jìn)行測試 ./rknn_yolov5_demo model/yolov5s_relu.rknn model/bus.jpg

命令執(zhí)行完后會生成預(yù)測結(jié)果圖片out.png,從板端拉取到本地查看,在本地電腦的終端中查看效果。

- 常見問題規(guī)避
在線調(diào)試報錯:

解決方法-更新板端系統(tǒng)的adb工具:
https://github.com/airockchip/rknn-toolkit2/blob/master/doc/rknn_server_proxy.md
wget -O adbd.zip https://ftzr.zbox.filez.com/v2/delivery/data/7f0ac30dfa474892841fcb2cd29ad924/adbd.zip unzip adbd.zip adb push adbd/linux-aarch64/adbd /usr/bin/adbd
瑞芯微RK3588原廠RKNN模型詳細(xì)測試方法與常見問題已講解完畢。本文相關(guān)資料請關(guān)注深圳觸覺智能
-
AI
+關(guān)注
關(guān)注
91文章
41461瀏覽量
302789 -
瑞芯微
+關(guān)注
關(guān)注
27文章
866瀏覽量
54691 -
RK3588
+關(guān)注
關(guān)注
8文章
594瀏覽量
7606 -
rk3588s
+關(guān)注
關(guān)注
0文章
38瀏覽量
726
發(fā)布評論請先 登錄
基于RK3588的NPU案例分享!6T是真的強(qiáng)!
【ELF 2學(xué)習(xí)板試用】ELF2開發(fā)板(飛凌嵌入式)搭建深度學(xué)習(xí)環(huán)境部署(RKNN環(huán)境部署)
添越智創(chuàng)基于 RK3588 開發(fā)板部署測試 DeepSeek 模型全攻略
請問如何在RK3588上使用npu,用onnx模型來推理
基于米爾瑞芯微RK3576開發(fā)板的Qwen2-VL-3B模型NPU多模態(tài)部署評測
重磅!基于瑞芯微RK3588旗艦芯片打造的MinipcRK3588面世
【飛凌RK3568開發(fā)板試用體驗(yàn)】RKNN模型推理測試
已結(jié)束-【書籍評測活動NO.2】瑞芯微官方推薦,基于RK3399Pro與RK3588的深度學(xué)習(xí)實(shí)踐
iTOP-RK3588開發(fā)板更新RKNN模型
關(guān)于瑞芯微 RK3588的試用體驗(yàn)
瑞芯微旗艦芯RK3588開發(fā)板開售 比亞迪為應(yīng)達(dá)利頒獎
瑞芯微(EASY EAI)RV1126B rknn-toolkit-lite2使用方法
瑞芯微RK3588 RKNN模型推理環(huán)境部署與功能測試技巧(下)
評論