RKNPU 概述
RKNPU(Rockchip Neural Processing Unit)是瑞芯微(Rockchip)公司專(zhuān)為神經(jīng)網(wǎng)絡(luò)處理設(shè)計(jì)的硬件加速單元,旨在提升人工智能和機(jī)器學(xué)習(xí)任務(wù)的效率。以下是其核心要點(diǎn):
定義與功能
硬件加速單元:RKNPU是集成在瑞芯微芯片中的專(zhuān)用NPU,專(zhuān)注于加速深度學(xué)習(xí)算法,如圖像識(shí)別、目標(biāo)檢測(cè)、語(yǔ)音處理等,同時(shí)優(yōu)化功耗與性能平衡。
支持多平臺(tái):適配瑞芯微多款芯片,包括RK3566、RK3568、RK3588等,覆蓋從嵌入式設(shè)備到高性能邊緣計(jì)算場(chǎng)景。
架構(gòu)與軟件棧
分層架構(gòu):
硬件層:物理NPU硬件,提供算力支持。
驅(qū)動(dòng)層:負(fù)責(zé)硬件初始化、數(shù)據(jù)傳輸和任務(wù)調(diào)度,連接上層應(yīng)用與硬件258。
應(yīng)用層:通過(guò)C或Python API(如RKNN API)實(shí)現(xiàn)模型部署,支持動(dòng)態(tài)形狀和多種操作符,開(kāi)發(fā)者可靈活調(diào)用58。
開(kāi)源工具鏈:提供驅(qū)動(dòng)、運(yùn)行時(shí)庫(kù)(如librknn_runtime)及模型轉(zhuǎn)換工具(如RKNN-Toolkit2),支持TensorFlow、PyTorch等框架模型的轉(zhuǎn)換與優(yōu)化。
核心技術(shù)與工具
RKNN模型:瑞芯微專(zhuān)有的模型格式,通過(guò)量化、融合等技術(shù)優(yōu)化模型,提升在NPU上的推理效率。支持加密功能,確保模型安全性。
開(kāi)發(fā)工具:
RKNN-Toolkit2:用于PC端模型轉(zhuǎn)換、量化和性能評(píng)估,支持跨平臺(tái)模型遷移。
RKNPU2 SDK:提供C/C++接口,適用于高性能嵌入式部署。
應(yīng)用場(chǎng)景
智能物聯(lián)網(wǎng)(IoT):如智能攝像頭、工業(yè)傳感器,實(shí)現(xiàn)本地實(shí)時(shí)數(shù)據(jù)處理,減少云端依賴(lài)。
邊緣計(jì)算:支持高并發(fā)任務(wù)(如視頻分析、語(yǔ)音識(shí)別),適用于低帶寬或離線(xiàn)環(huán)境。
消費(fèi)電子:應(yīng)用于智能電視、家居設(shè)備,提升人臉識(shí)別、圖像處理等功能的響應(yīng)速度。
優(yōu)勢(shì)與特點(diǎn)
高效能低功耗:通過(guò)硬件加速和驅(qū)動(dòng)優(yōu)化,顯著降低AI任務(wù)的能耗,適合資源受限的嵌入式設(shè)備。
多框架兼容性:支持主流深度學(xué)習(xí)框架的模型轉(zhuǎn)換,降低開(kāi)發(fā)門(mén)檻。
社區(qū)與生態(tài):開(kāi)源驅(qū)動(dòng)和詳盡的文檔支持,開(kāi)發(fā)者可快速上手并參與社區(qū)迭代。
開(kāi)發(fā)環(huán)境搭建
Ubuntu:用于模型轉(zhuǎn)換和編譯示例程序。
Miniforge Conda :Python環(huán)境和包管理工具。
RKNN-Toolkit2:模型適配與優(yōu)化的核心工具。
rknn_model_zoo:提供示例代碼。
源碼下載
按照如下兩個(gè)鏈接將rknn-toolkit2和rknn_model_zoo下載到本地Ubuntu系統(tǒng)下。
RKNPU2 SDK (for RK3576/RK3562/RK3566/RK3568/RK3588/RV1103/RV1106)
https://github.com/airockchip/rknn-toolkit2
Model zoo:
https://github.com/airockchip/rknn_model_zoo
安裝RKNN-Toolkit2環(huán)境
[!NOTE]
請(qǐng)確保源碼下載章節(jié)中RKNPU2 SDK下載成功,安裝RKNN-Toolkit2會(huì)使用到此工具包。
安裝Python
如果系統(tǒng)中沒(méi)有安裝 Python 3.8(建議版本),或者同時(shí)有多個(gè)版本的 Python 環(huán)境,建議使用Miniforge Conda 創(chuàng)建新的 Python 3.8 環(huán)境。
安裝Miniforge Conda
Miniforge Conda是一個(gè)Python環(huán)境和包管理工具,它提供了一個(gè)輕量級(jí)、高效的Conda發(fā)行版,適合那些希望避免Anaconda大型包集合或者對(duì)系統(tǒng)資源有限制的用戶(hù)。通過(guò)使用Miniforge,用戶(hù)可以享受到Conda的便利,同時(shí)不必?fù)?dān)心額外的負(fù)擔(dān)。
在終端窗口執(zhí)行以下命令,檢查當(dāng)前系統(tǒng)是否安裝Miniforge Conda,若已安裝則省略此節(jié)步驟。
在終端窗口執(zhí)行以下命令,檢查當(dāng)前系統(tǒng)是否安裝Miniforge Conda,若已安裝則省略此節(jié)步驟。
conda-V
#如果輸出類(lèi)似conda 24.9.2,表示當(dāng)前系統(tǒng)已安裝Miniforge conda,且版本為24.9.2
#如果輸出conda: command not found,表示當(dāng)前系統(tǒng)未安裝Miniforge conda
如果沒(méi)有安裝Miniforge Conda,可以通過(guò)下面的鏈接下載Miniforge Conda安裝包。
[!TIP]
如果當(dāng)前Ubuntu終端訪(fǎng)問(wèn)不到該github鏈接,也可瀏覽器訪(fǎng)問(wèn)https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh下載該安裝腳本并拷貝到Ubuntu環(huán)境目錄下進(jìn)行安裝。
wget-chttps://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
通過(guò)以下命令安裝Miniforge Conda。
chmod 777 Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
使用Miniforge Conda創(chuàng)建Python環(huán)境
在計(jì)算機(jī)的終端窗口中執(zhí)行以下命令進(jìn)入Conda base環(huán)境。
source~/miniforge3/bin/activate#Miniforge安裝目錄
#成功后,命令行提示符會(huì)變成以下形式:
#(base)xxx@xxx:~$
通過(guò)以下命令創(chuàng)建名稱(chēng)為toolkit2的Python3.8環(huán)境。
conda create-ntoolkit2python=3.8
激活toolkit2環(huán)境,后續(xù)將在此環(huán)境中安裝RKNN-Toolkit2:
[!NOTE]
當(dāng)終端重啟后要重新激活toolkit2環(huán)境
conda activate toolkit2
#成功后,命令行提示符會(huì)變成以下形式
#(toolkit2)xxx@xxx:~$
安裝RKNN-Toolkit2
激活RKNN-Toolkit2環(huán)境成功后,可通過(guò)pip源或者本地wheel包這兩種方式安裝RKNN-Toolkit2(建議使用本地wheel包安裝):
pip源安裝
#通過(guò)以下命令安裝
pip install rknn-toolkit2-ihttps://pypi.org/simple
?
#如果已安裝 RKNN-Toolkit2, 可通過(guò)以下命令升級(jí) RKNN-Toolkit2
pip install rknn-toolkit2-ihttps://pypi.org/simple--upgrade
本地wheel包安裝
#進(jìn)入rknn-toolkit2目錄,以下操作均在rknn-toolkit2根目錄下進(jìn)行
cdrknn-toolkit2-master/rknn-toolkit2/
?
#請(qǐng)根據(jù)不通的python版本以及處理器架構(gòu)選擇不同的requirements文件,cp38為python版本號(hào)為3.8,請(qǐng)根據(jù)實(shí)際conda安裝Python環(huán)境時(shí)的版本和處理器架構(gòu)進(jìn)行安裝,2.3.2為當(dāng)前rknn-toolkit2的版本
pip install-rpackages/x86_64/requirements_cp38-2.3.2.txt
?
#安裝RKNN-Toolkit2,cp38為python版本號(hào)為3.8,請(qǐng)根據(jù)實(shí)際conda安裝Python環(huán)境時(shí)的版本和處理器架構(gòu)選擇對(duì)應(yīng)的wheel安裝包進(jìn)行安裝,2.3.2為當(dāng)前rknn-toolkit2的版本
pip install packages/x86_64/rknn_toolkit2-2.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

驗(yàn)證是否安裝成功
執(zhí)行以下命令,沒(méi)有報(bào)錯(cuò)則代表RKNN-Toolkit2環(huán)境安裝成功。
#進(jìn)入Python交互模式
python
?
#導(dǎo)入RKNN類(lèi)
from rknn.api import RKNN

安裝編譯環(huán)境
安裝cmake
在計(jì)算機(jī)終端中執(zhí)行以下命令。
#更新包列表
sudoapt-get update
?
#安裝cmake
sudoapt-get install cmake
安裝Linux GCC交叉編譯器
因?yàn)椴煌腖inux文件系統(tǒng)對(duì)應(yīng)的編譯工具鏈版本不一致,請(qǐng)根據(jù)實(shí)際系統(tǒng)選擇對(duì)應(yīng)的交叉編譯器,并下載到本地。
Buildroot:https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz?rev=cf8baa0ef2e54e9286f0409cdda4f66c&hash=E813B503D52B4EF0CBEBEE36300B05049EB6B41F
Ubuntu22.04:https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz?rev=8d05006a68d24d929d602804ec9abfb4&hash=E8A66D3B9FF0EFC60A5C041AC3C5EE476349817B
編譯示例程序
RKNN Model Zoo 提供了示例代碼,example目錄下包括了一些常用的模式示例,例如MobileNet 和 YOLO等。每個(gè)模型示例提供了Python和C/C++兩個(gè)版本的示例代碼。以下我們以在RK3588的buildroot系統(tǒng)上部署C/C++的YOLOV8模型示例。
[!NOTE]
請(qǐng)確保源碼下載章節(jié)中Model Zoo下載成功,以下的示例程序均采用其中的示例代碼。
準(zhǔn)備模型
#進(jìn)入rknn_model_zoo-main/examples/yolov8/model目錄
cdrknn_model_zoo-main/examples/yolov8/model
?
# 運(yùn)行 download_model.sh 腳本,下載 yolov8 onnx 模型
# 例如,下載好的 onnx 模型存放路徑為 model/yolov8n.onnx
chmod777download_model.sh
./download_model.sh
模型轉(zhuǎn)換
進(jìn)入rknn_model_zoo-main/examples/yolov8/python目錄,運(yùn)行convert.py 腳本,該腳本將原始的 ONNX 模型轉(zhuǎn)成RKNN 模型。
#進(jìn)入rknn_model_zoo-main/examples/yolov8/python目錄
cdrknn_model_zoo-main/examples/yolov8/python
?
# 運(yùn)行 convert.py 腳本,將原始的 ONNX 模型轉(zhuǎn)成 RKNN 模型
# 用法: python convert.py model_path [rk3568|rk3588|rk3562|rk3576] [i8/fp] [output_path]
python convert.py ../model/yolov8n.onnx rk3588 i8 ../model/yolov8n.rknn
[!NOTE]
本示例以RK3588為例,如果使用其他型號(hào)的CPU平臺(tái),請(qǐng)?jiān)谀P娃D(zhuǎn)換時(shí)根據(jù)實(shí)際情況更改轉(zhuǎn)換命令中的CPU平臺(tái)指定。
編譯RKNN C/C++ Demo
指定編譯器的路徑 GCC_COMPILER 為本地的 GCC 編譯器路徑(編譯工具鏈請(qǐng)參考安裝編譯環(huán)境中安裝Linux GCC交叉編譯器章節(jié))。即在build-linux.sh腳本中添加GCC_COMPILER屬性。
# 添加到 build-linux.sh 腳本的開(kāi)頭位置即可
GCC_COMPILER=/home/hzhy/RKNN_Project/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu
在rknn_model_zoo目錄下運(yùn)行build-linux.sh腳本。
#添加運(yùn)行權(quán)限
chmod777build-linux.sh
?
# 運(yùn)行 build-linux.sh 腳本
# 用法:./build-linux.sh -t -a -d [-b ] [-m]
# -t : target ((rk356x/rk3588/rk3576/rv1126b/rv1106/rk1808/rv1126)) # 平臺(tái)類(lèi)型
# -a : arch (aarch64/armhf) # 板端系統(tǒng)架構(gòu)
# -d : demo name # 對(duì)應(yīng) examples 目錄下子文件夾的名稱(chēng), 如yolov8、 mobilenet
# -b : build_type(Debug/Release)
# -m : enable address sanitizer, build_type need set to Debug
./build-linux.sh-trk3588-aaarch64-dyolov8
編譯完成后會(huì)在rknn_model_zoo_main目錄下生成install/rk3588_linux_aarch64/rknn_yolov8_demo/文件夾(根據(jù)對(duì)應(yīng)的example生成對(duì)應(yīng)的demo文件夾),將該文件夾通過(guò)scp或者其他方式拷貝到板卡中。
[!NOTE]
本示例以RK3588為例,如果使用其他型號(hào)的CPU平臺(tái),請(qǐng)?jiān)贒emo編譯時(shí)根據(jù)實(shí)際情況更改轉(zhuǎn)換命令中的CPU平臺(tái)指定。
板端運(yùn)行Demo
通過(guò)串口、ssh、adb其中一種方式登錄到板卡終端。并進(jìn)入存放C/C++ Demo的目錄。

在板端運(yùn)行可執(zhí)行文件。
#設(shè)置依賴(lài)庫(kù)環(huán)境變量
exportLD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
?
#運(yùn)行可執(zhí)行文件
#用法 ./rknn_yolov8_demo model_path為模型文件路徑 image_path為待推理圖片路徑
./rknn_yolov8_demo ./model/yolov8n.rknn ./model/bus.jpg
查看編譯結(jié)果
板端運(yùn)行Demo推理完畢后會(huì)在當(dāng)前目錄下生成推理后的圖片out.png,可以將out.png拷貝到PC上查看推理結(jié)果。

-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4813瀏覽量
103396 -
瑞芯微
+關(guān)注
關(guān)注
25文章
570瀏覽量
52386 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8500瀏覽量
134475 -
NPU
+關(guān)注
關(guān)注
2文章
326瀏覽量
19678
發(fā)布評(píng)論請(qǐng)先 登錄
【瑞芯微RK1808計(jì)算棒試用申請(qǐng)】AIoT領(lǐng)域車(chē)牌識(shí)別Demo
【瑞芯微RK1808計(jì)算棒試用申請(qǐng)】AIoT領(lǐng)域車(chē)牌識(shí)別Demo
介紹三款瑞芯微車(chē)規(guī)芯片的簡(jiǎn)單規(guī)格參數(shù)
基于瑞芯微RV1109的酒店人臉識(shí)別應(yīng)用
瑞芯微首款A(yù)I芯片RK3399Pro:NPU性能達(dá)2.4TOPs!

NPU時(shí)代來(lái)臨,瑞芯微AI芯片與Paddle Lite完成適配
NPU性能深度評(píng)測(cè):瑞芯微RK3588、RK3576、RK3568、RK3562

瑞芯微RK3506開(kāi)發(fā)板之Qt應(yīng)用開(kāi)發(fā)手冊(cè)(上) 深圳觸覺(jué)智能出品,嵌入式方案商

瑞芯微RK3506開(kāi)發(fā)板Ethercat主站適配開(kāi)發(fā)詳細(xì)攻略,實(shí)測(cè)微秒級(jí)抖動(dòng)延遲!

評(píng)論