RKNN SDK 快速上手指南
開發(fā)板:ArmSoM-W3,ArmSoM-Sige7,ArmSoM-Sige5,ArmSoM-AIM7
OS:Debian11/12
目的:本文介紹如何使用rk的npu sdk。
作為瑞芯微8nm高性能AIOT平臺,RK3576/RK3588 NPU性能可謂十分強(qiáng)大,6TOPS設(shè)計能夠?qū)崿F(xiàn)高效的神經(jīng)網(wǎng)絡(luò)推理計算。這使得RK3576/RK3588在圖像識別、語音識別、自然語言處理等人工智能領(lǐng)域有著極高的性能表現(xiàn)。
此外,RK3576/RK3588 的NPU還支持多種學(xué)習(xí)框架,包括TensorFlow,Pytorch、Caffe、MXNet等在人工智能開發(fā)中流行的深度學(xué)習(xí)框架,能夠為開發(fā)者提供豐富的工具和庫,使他們能夠方便地進(jìn)行模型訓(xùn)練和推理,可輕松應(yīng)對各種大數(shù)據(jù)運算場景。??
rk3576 npu
RK3576/RK3588 NPU典型應(yīng)用?
計算機(jī)視覺(Computer Vision):NPU可用于圖像識別、目標(biāo)檢測、人臉識別等任務(wù)。在安防監(jiān)控、自動駕駛、醫(yī)療影像分析等領(lǐng)域中有著廣泛的應(yīng)用。
自然語言處理(Natural Language Processing,NLP):NPU可加速文本分類、情感分析、機(jī)器翻譯等任務(wù),使得處理大規(guī)模文本數(shù)據(jù)變得更高效。
語音識別與處理(Speech Recognition and Processing):在語音識別、語音合成等方面,NPU可以提高處理速度和準(zhǔn)確性,應(yīng)用于智能語音助手、語音交互系統(tǒng)等場景。
智能家居與物聯(lián)網(wǎng)(IoT):NPU的低功耗特性使其適用于智能家居設(shè)備、智能監(jiān)控攝像頭、智能穿戴設(shè)備等物聯(lián)網(wǎng)應(yīng)用,從而實現(xiàn)設(shè)備的智能化和自動化。
醫(yī)療健康:在醫(yī)學(xué)影像分析、疾病診斷、基因組學(xué)等領(lǐng)域,NPU可以加速大規(guī)模數(shù)據(jù)的處理和分析,幫助醫(yī)療工作者更準(zhǔn)確地診斷疾病和制定治療方案。
智能交通:在智能交通系統(tǒng)中,NPU可用于車輛識別、交通流量監(jiān)控、智能交通信號燈控制等任務(wù),提升交通系統(tǒng)的效率和安全性。
Rockchip NPU SDK?
rockchip的npu sdk分為兩個部分,PC端使用的是rknn-toolkit2,可以在PC端進(jìn)行模型轉(zhuǎn)換,推理以及性能評估。具體來說是把主流的模型如Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、PyTorch 等轉(zhuǎn)換為RKNN模型,并可以在PC端使用這個RKNN模型進(jìn)行推理仿真,計算時間和內(nèi)存開銷。板端還有一部分,就是rknn runtime環(huán)境,包含一組C API庫以及與NPU進(jìn)行通信的驅(qū)動模塊,可執(zhí)行程序等。
RKNN軟件??梢詭椭脩艨焖賹I模型部署到瑞芯微芯片上。整體框架如下:
為了使用 RKNPU,用戶需要首先在計算機(jī)上運行 RKNN-Toolkit2 工具,將訓(xùn)練好的模型轉(zhuǎn)換為 RKNN 格式的模型,然后使用 RKNN C API 或 Python API 在開發(fā)板上進(jìn)行推理。
RKNN-Toolkit2是一款軟件開發(fā)套件,供用戶在PC和瑞芯微NPU平臺上進(jìn)行模型轉(zhuǎn)換、推理和性能評估。
RKNN-Toolkit-Lite2為瑞芯微NPU平臺提供Python編程接口,幫助用戶部署RKNN模型,加速AI應(yīng)用落地。
RKNN Runtime為Rockchip NPU平臺提供C/C++編程接口,幫助用戶部署RKNN模型,加速AI應(yīng)用的落地。
RKNPU內(nèi)核驅(qū)動負(fù)責(zé)與NPU硬件交互。它已經(jīng)開源,可以在Rockchip內(nèi)核代碼中找到。
提示
RKNPU2 SDK v2.0.0-beta (for RK3576/RK3562/RK3566/RK3568/RK3588/RV1103/RV1106) https://github.com/airockchip/rknn-toolkit2
Model zoo: https://github.com/airockchip/rknn_model_zoo
docs: https://github.com/airockchip/rknn-toolkit2/tree/master/doc
RK3576/RK3588 NPU使用案例分享?
導(dǎo)出rknn模型步驟
請參考 https://github.com/airockchip/rknn_model_zoo/tree/main/models/CV/object_detection/yolo
注意事項?
使用rknn-toolkit2版本大于等于1.4.0。
切換成自己訓(xùn)練的模型時,請注意對齊anchor等后處理參數(shù),否則會導(dǎo)致后處理解析出錯。
官網(wǎng)和rk預(yù)訓(xùn)練模型都是檢測80類的目標(biāo),如果自己訓(xùn)練的模型,需要更改include/postprocess.h中的OBJ_CLASS_NUM以及NMS_THRESH,BOX_THRESH后處理參數(shù)。
demo需要librga.so的支持,編譯使用請參考 https://github.com/airockchip/librga
由于硬件限制,該demo的模型默認(rèn)把 yolov5 模型的后處理部分,移至cpu實現(xiàn)。本demo附帶的模型均使用relu為激活函數(shù),相比silu激活函數(shù)精度略微下降,性能大幅上升。
Android Demo?
編譯?
首先導(dǎo)入ANDROID_NDK_PATH,例如export ANDROID_NDK_PATH=~/opts/ndk/android-ndk-r18b,然后執(zhí)行如下命令:
./build-android.sh -t -a [-b ]# 例如: ./build-android.sh -t rk3568 -a arm64-v8a -b Release
推送執(zhí)行文件到板子?
連接板子的usb口到PC,將整個demo目錄到 /data:
adb rootadb remountadb push install/rknn_yolov5_demo /data/
運行?
adb shellcd /data/rknn_yolov5_demo/export LD_LIBRARY_PATH=./lib./rknn_yolov5_demo model//yolov5s-640-640.rknn model/bus.jpg
Aarch64 Linux Demo?
編譯?
首先導(dǎo)入GCC_COMPILER,例如export GCC_COMPILER=~/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu ,然后執(zhí)行如下命令:
./build-linux.sh -t -a -b ]# 例如: ./build-linux.sh -t rk3588 -a aarch64 -b Release
推送執(zhí)行文件到板子?
將 install/rknn_yolov5_demo_Linux 拷貝到板子的/userdata/目錄.
如果使用rockchip的EVB板子,可以使用adb將文件推到板子上:
adb push install/rknn_yolov5_demo_Linux /userdata/
如果使用其他板子,可以使用scp等方式將install/rknn_yolov5_demo_Linux拷貝到板子的/userdata/目錄
運行?
adb shellcd /userdata/rknn_yolov5_demo_Linux/export LD_LIBRARY_PATH=./lib./rknn_yolov5_demo model//yolov5s-640-640.rknn model/bus.jpg
Note: Try searching the location of librga.so and add it to LD_LIBRARY_PATH if the librga.so is not found on the lib folder. Using the following commands to add to LD_LIBRARY_PATH.
export LD_LIBRARY_PATH=./lib:
視頻流Demo運行命令參考如下:?
h264視頻
./rknn_yolov5_video_demo model//yolov5s-640-640.rknn xxx.h264 264
注意需要使用h264碼流視頻,可以使用如下命令轉(zhuǎn)換得到:
ffmpeg -i xxx.mp4 -vcodec h264 xxx.h264
h265視頻
./rknn_yolov5_video_demo model//yolov5s-640-640.rknn xxx.hevc 265
注意需要使用h265碼流視頻,可以使用如下命令轉(zhuǎn)換得到:
ffmpeg -i xxx.mp4 -vcodec hevc xxx.hevc
rtsp視頻流
./rknn_yolov5_video_demo model//yolov5s-640-640.rknn 265
注意?
需要根據(jù)系統(tǒng)的rga驅(qū)動選擇正確的librga庫,具體依賴請參考: https://github.com/airockchip/librga
rk3562 目前僅支持h264視頻流
rtsp 視頻流Demo僅在Linux系統(tǒng)上支持,Android上目前還不支持
視頻流輸入的h264名稱不能為"out.h264",會被覆蓋
演示視頻?
https://www.bilibili.com/video/BV1jt421M7Pj/
審核編輯 黃宇
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
5050瀏覽量
97456 -
NPU
+關(guān)注
關(guān)注
2文章
284瀏覽量
18610 -
rk3576
+關(guān)注
關(guān)注
1文章
51瀏覽量
127
發(fā)布評論請先 登錄
相關(guān)推薦
評論