RKNN Toolkit使用教程
RKNN Toolkit使用教程
RKNN Toolkit:?http://wiki.t-firefly.com/zh_CN/Core-1808-JD4/npu_rknn_toolkit.html#?
RKNN?API SDK:?http://www.t-firefly.com/product.html
rknpu_ddk:? https://github.com/airockchip/rknpu_ddk
論壇:http://t.rock-chips.com/wiki.php
Rockchip提供RKNN-Toolkit開發套件進行模型轉換、推理運行和性能評估。
用戶通過提供的 python 接口可以便捷地完成以下功能:
1)模型轉換:支持 Caffe、Tensorflow、TensorFlow Lite、ONNX、Darknet 模型,支持RKNN 模型導入導出,后續能夠在硬件平臺上加載使用。
2)模型推理:能夠在 PC 上模擬運行模型并獲取推理結果,也可以在指定硬件平臺RK3399Pro Linux上運行模型并獲取推理結果。
3)性能評估:能夠在 PC 上模擬運行并獲取模型總耗時及每一層的耗時信息,也可以通過聯機調試的方式在指定硬件平臺 RK3399Pro Linux上運行模型,并獲取模型在硬件上運行時的總時間和每一層的耗時信息。
RKNN Tookit僅支持Linux系統,可在PC上使用。
程序安裝
RKNN Toolkit可從此鏈接中下載:下載鏈接?(提取碼:3rtt),或者使用SDK中的/external/rknn-toolkit目錄。
在PC中安裝
Ubuntu 16.04
基礎安裝:
sudo apt-get install -y python3 python3-pip libglib2.0-dev \libsm-dev libxrender-dev libxext-dev安裝RKNN Toolkit:
pip3 install --user -r rknn-toolkit/packages/requirements-cpu.txt # rknn-toolkit的版本可能不一樣,請選擇對應的文件進行安裝 pip3 install --user rknn-toolkit/packages/rknn_toolkit-1.3.0-cp35-cp35m-linux_x86_64.whl如果PC中有GPU加速則用requirements-gpu.txt替換requirements-cpu.txt。
Ubuntu 18.04
步驟如Ubuntu 16.04,只需將rknn_toolkit-1.3.0-cp35-cp35m-linux_x86_64.whl替換為rknn_toolkit-1.3.0-cp36-cp36m-linux_x86_64.whl
在PC中程序升級(1.0.0 -> 1.3.0)
Ubuntu 18.04
pip3 install --user -r rknn-toolkit/packages/requirements-cpu.txt pip3 install --user -U rknn-toolkit/packages/rknn_toolkit-1.3.0-cp36-cp36m-linux_x86_64.whl如果PC中有GPU加速則用requirements-gpu.txt替換requirements-cpu.txt。
Ubuntu 16.04
pip3 install --user -r rknn-toolkit/packages/requirements-cpu.txt pip3 install --user -U rknn-toolkit/packages/rknn_toolkit-1.3.0-cp35-cp35m-linux_x86_64.whlAPI調用流程
模型轉換
模型轉換使用示例如下,詳細請參考RKNN Tookit中的example。
from rknn.api import RKNN INPUT_SIZE = 64if __name__ == '__main__':# 創建RKNN執行對象rknn = RKNN()# 配置模型輸入,用于NPU對數據輸入的預處理# channel_mean_value='0 0 0 255',那么模型推理時,將會對RGB數據做如下轉換# (R - 0)/255, (G - 0)/255, (B - 0)/255。推理時,RKNN模型會自動做均值和歸一化處理# reorder_channel=’0 1 2’用于指定是否調整圖像通道順序,設置成0 1 2即按輸入的圖像通道順序不做調整# reorder_channel=’2 1 0’表示交換0和2通道,如果輸入是RGB,將會被調整為BGR。如果是BGR將會被調整為RGB#圖像通道順序不做調整rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2')# 加載TensorFlow模型# tf_pb='digital_gesture.pb'指定待轉換的TensorFlow模型# inputs指定模型中的輸入節點# outputs指定模型中輸出節點# input_size_list指定模型輸入的大小print('--> Loading model')rknn.load_tensorflow(tf_pb='digital_gesture.pb',inputs=['input_x'],outputs=['probability'],input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])print('done')# 創建解析pb模型# do_quantization=False指定不進行量化# 量化會減小模型的體積和提升運算速度,但是會有精度的丟失print('--> Building model')rknn.build(do_quantization=False)print('done')# 導出保存rknn模型文件rknn.export_rknn('./digital_gesture.rknn')# Release RKNN Contextrknn.release()模型推理
模型推理使用示例如下,詳細請參考RKNN Tookit中的example,以rknn-toolkit/example/mobilenet_v1為例。
RKNN-Toolkit 通過 PC 的 USB 連接到開發板硬件,將構建或導入的 RKNN 模型傳到 RK1808 上運行,并從 RK1808 上獲取推理結果、性能信息。
請執行以下步驟
確保開發板的 USB OTG 連接到 PC,并且 ADB 能夠正確識別到設備,即在 PC 上執行adb?devices?-l命令能看到目標設備。
調用?init_runtime?接口初始化運行環境時需要指定 target 參數和 device_id 參數。其中 target 參數表明硬件類型, 選值為?rk1808, 當 PC 連接多個設備時,還需要指定 device_id 參數,即設備編號,可以通過adb?devics命令查看,舉例如下:
$ adb devices List of devices attached 0123456789ABCDEF device即改為
ret = rknn.init_runtime(target='rk1808', device_id='0123456789ABCDEF')運行
python3 ./test.py運行成功后就可以獲得經過RK1808推理后得到的數據。
API
詳細的API請參考RKNN-Toolkit中的使用指南文檔在<rk1808-linux-sdk>/docs/Develop?reference?documents/NPU目錄中的:《RKNN-Toolkit使用指南_V*.pdf》。
總結
以上是生活随笔為你收集整理的RKNN Toolkit使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CMake学习笔记
- 下一篇: COCO数据格式说明