本文介紹瑞芯微原廠RKNN端側(cè)模型的測試驗證方法,而關(guān)于開發(fā)環(huán)境搭建可以查看先前文章
http://www.3532n.com/d/7651862.html。基于觸覺智能RK3576開發(fā)板Purple Pi OH2演示。
RKNN
RKNN(Rockchip Neural Network) 是瑞芯微專為自家 NPU (神經(jīng)網(wǎng)絡(luò)處理單元) 開發(fā)的端側(cè)神經(jīng)網(wǎng)絡(luò)計算框架,提供完整的 "模型轉(zhuǎn)換 - 部署 - 推理" 解決方案。RK官方提供了RKNN軟件棧可以幫助用戶快速地將AI模型部署到Rockchip芯片,整體的框架如下。

RKNN-Toolkit2是為用戶提供在計算機(jī)上進(jìn)行模型轉(zhuǎn)換、推理和性能評估的開發(fā)套件,RKNN-Toolkit2的主要框圖如下。為了使用RKNPU,用戶需要首先在計算機(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ū)動實現(xiàn)在NPU上推理RKNN模型。推理RKNN模型時,包括原始數(shù)據(jù)輸入預(yù)處理、NPU運(yùn)行模型、輸出后處理三項流程。根據(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高。

運(yùn)行示例程序
開始介紹測試方法之前,對開發(fā)環(huán)境搭建不了解可以看上集:瑞芯微RK3576原廠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模型:
# 進(jìn)入 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 rk3576 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 rk3576 -a aarch64 -d yolov5

編譯后的安裝目錄如下:

打包安裝目錄生成的文件部署到開發(fā)板系統(tǒng):
tar -xf rknn_yolov5_demo.tar.gzcd 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,從板端拉取到本地查看,在本地電腦的終端中查看效果。

瑞芯微原廠RKNN模型推理測試方法攻略就完成了,關(guān)注觸覺智能電子發(fā)燒友。
-
瑞芯微
+關(guān)注
關(guān)注
27文章
803瀏覽量
54515 -
RKNN Toolkit
+關(guān)注
關(guān)注
0文章
2瀏覽量
137 -
rk3576
+關(guān)注
關(guān)注
1文章
277瀏覽量
1629
發(fā)布評論請先 登錄
【米爾RK3576開發(fā)板評測】+項目名稱3、使用rknn 進(jìn)行圖像檢測
國產(chǎn)開發(fā)板的端側(cè)AI測評-基于米爾瑞芯微RK3576
【米爾RK3576開發(fā)板評測】+項目名稱百度飛槳PP-YOLOE
適配多種系統(tǒng),米爾瑞芯微RK3576核心板解鎖多樣化應(yīng)用
Onenet云網(wǎng)關(guān)方案應(yīng)用--基于米爾瑞芯微RK3576開發(fā)板
基于米爾瑞芯微RK3576開發(fā)板的Qwen2-VL-3B模型NPU多模態(tài)部署評測
如何精準(zhǔn)驅(qū)動菜品識別模型--基于米爾瑞芯微RK3576邊緣計算盒
迅為RK3576開發(fā)板NPU環(huán)境搭建和使用rknn-toolkit2功能演示模型轉(zhuǎn)換
瑞芯微RK3576與RK3576S有什么區(qū)別,性能參數(shù)配置與型號差異解析
AI硬件選型必看!瑞芯微RV1126B/RK3562/RK3576/RK3588之NPU性能實測對比
瑞芯微RK3576原廠RKNN模型環(huán)境部署與功能驗證技巧(下)
評論