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

驗證是否安裝成功
執行以下命令,沒有報錯則代表RKNN-Toolkit2環境安裝成功。
#進入Python交互模式
python
?
#導入RKNN類
from rknn.api import RKNN

安裝編譯環境
安裝cmake
在計算機終端中執行以下命令。
#更新包列表
sudoapt-get update
?
#安裝cmake
sudoapt-get install cmake
安裝Linux GCC交叉編譯器
因為不同的Linux文件系統對應的編譯工具鏈版本不一致,請根據實際系統選擇對應的交叉編譯器,并下載到本地。
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等。每個模型示例提供了Python和C/C++兩個版本的示例代碼。以下我們以在RK3588的buildroot系統上部署C/C++的YOLOV8模型示例。
[!NOTE]
請確保源碼下載章節中Model Zoo下載成功,以下的示例程序均采用其中的示例代碼。
準備模型
#進入rknn_model_zoo-main/examples/yolov8/model目錄
cdrknn_model_zoo-main/examples/yolov8/model
?
# 運行 download_model.sh 腳本,下載 yolov8 onnx 模型
# 例如,下載好的 onnx 模型存放路徑為 model/yolov8n.onnx
chmod777download_model.sh
./download_model.sh
模型轉換
進入rknn_model_zoo-main/examples/yolov8/python目錄,運行convert.py 腳本,該腳本將原始的 ONNX 模型轉成RKNN 模型。
#進入rknn_model_zoo-main/examples/yolov8/python目錄
cdrknn_model_zoo-main/examples/yolov8/python
?
# 運行 convert.py 腳本,將原始的 ONNX 模型轉成 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為例,如果使用其他型號的CPU平臺,請在模型轉換時根據實際情況更改轉換命令中的CPU平臺指定。
編譯RKNN C/C++ Demo
指定編譯器的路徑 GCC_COMPILER 為本地的 GCC 編譯器路徑(編譯工具鏈請參考安裝編譯環境中安裝Linux GCC交叉編譯器章節)。即在build-linux.sh腳本中添加GCC_COMPILER屬性。
# 添加到 build-linux.sh 腳本的開頭位置即可
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目錄下運行build-linux.sh腳本。
#添加運行權限
chmod777build-linux.sh
?
# 運行 build-linux.sh 腳本
# 用法:./build-linux.sh -t -a -d [-b ] [-m]
# -t : target ((rk356x/rk3588/rk3576/rv1126b/rv1106/rk1808/rv1126)) # 平臺類型
# -a : arch (aarch64/armhf) # 板端系統架構
# -d : demo name # 對應 examples 目錄下子文件夾的名稱, 如yolov8、 mobilenet
# -b : build_type(Debug/Release)
# -m : enable address sanitizer, build_type need set to Debug
./build-linux.sh-trk3588-aaarch64-dyolov8
編譯完成后會在rknn_model_zoo_main目錄下生成install/rk3588_linux_aarch64/rknn_yolov8_demo/文件夾(根據對應的example生成對應的demo文件夾),將該文件夾通過scp或者其他方式拷貝到板卡中。
[!NOTE]
本示例以RK3588為例,如果使用其他型號的CPU平臺,請在Demo編譯時根據實際情況更改轉換命令中的CPU平臺指定。
板端運行Demo
通過串口、ssh、adb其中一種方式登錄到板卡終端。并進入存放C/C++ Demo的目錄。

在板端運行可執行文件。
#設置依賴庫環境變量
exportLD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
?
#運行可執行文件
#用法 ./rknn_yolov8_demo model_path為模型文件路徑 image_path為待推理圖片路徑
./rknn_yolov8_demo ./model/yolov8n.rknn ./model/bus.jpg
查看編譯結果
板端運行Demo推理完畢后會在當前目錄下生成推理后的圖片out.png,可以將out.png拷貝到PC上查看推理結果。

-
神經網絡
+關注
關注
42文章
4806瀏覽量
102720 -
瑞芯微
+關注
關注
25文章
531瀏覽量
52156 -
機器學習
+關注
關注
66文章
8490瀏覽量
134030 -
NPU
+關注
關注
2文章
319瀏覽量
19483
發布評論請先 登錄
【瑞芯微RK1808計算棒試用申請】AIoT領域車牌識別Demo
【瑞芯微RK1808計算棒試用申請】AIoT領域車牌識別Demo
介紹三款瑞芯微車規芯片的簡單規格參數
基于瑞芯微RV1109的酒店人臉識別應用
瑞芯微首款AI芯片RK3399Pro:NPU性能達2.4TOPs!

NPU時代來臨,瑞芯微AI芯片與Paddle Lite完成適配
NPU性能深度評測:瑞芯微RK3588、RK3576、RK3568、RK3562

評論