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開(kāi)發(fā)套件進(jìn)行模型轉(zhuǎn)換、推理運(yùn)行和性能評(píng)估。
用戶(hù)通過(guò)提供的 python 接口可以便捷地完成以下功能:
1)模型轉(zhuǎn)換:支持 Caffe、Tensorflow、TensorFlow Lite、ONNX、Darknet 模型,支持RKNN 模型導(dǎo)入導(dǎo)出,后續(xù)能夠在硬件平臺(tái)上加載使用。
2)模型推理:能夠在 PC 上模擬運(yùn)行模型并獲取推理結(jié)果,也可以在指定硬件平臺(tái)RK3399Pro Linux上運(yùn)行模型并獲取推理結(jié)果。
3)性能評(píng)估:能夠在 PC 上模擬運(yùn)行并獲取模型總耗時(shí)及每一層的耗時(shí)信息,也可以通過(guò)聯(lián)機(jī)調(diào)試的方式在指定硬件平臺(tái) RK3399Pro Linux上運(yùn)行模型,并獲取模型在硬件上運(yùn)行時(shí)的總時(shí)間和每一層的耗時(shí)信息。
RKNN Tookit僅支持Linux系統(tǒng),可在PC上使用。
程序安裝
RKNN Toolkit可從此鏈接中下載:下載鏈接?(提取碼:3rtt),或者使用SDK中的/external/rknn-toolkit目錄。
在PC中安裝
Ubuntu 16.04
基礎(chǔ)安裝:
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的版本可能不一樣,請(qǐng)選擇對(duì)應(yīng)的文件進(jìn)行安裝 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中程序升級(jí)(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調(diào)用流程
模型轉(zhuǎn)換
模型轉(zhuǎn)換使用示例如下,詳細(xì)請(qǐng)參考RKNN Tookit中的example。
from rknn.api import RKNN INPUT_SIZE = 64if __name__ == '__main__':# 創(chuàng)建RKNN執(zhí)行對(duì)象rknn = RKNN()# 配置模型輸入,用于NPU對(duì)數(shù)據(jù)輸入的預(yù)處理# channel_mean_value='0 0 0 255',那么模型推理時(shí),將會(huì)對(duì)RGB數(shù)據(jù)做如下轉(zhuǎn)換# (R - 0)/255, (G - 0)/255, (B - 0)/255。推理時(shí),RKNN模型會(huì)自動(dòng)做均值和歸一化處理# reorder_channel=’0 1 2’用于指定是否調(diào)整圖像通道順序,設(shè)置成0 1 2即按輸入的圖像通道順序不做調(diào)整# reorder_channel=’2 1 0’表示交換0和2通道,如果輸入是RGB,將會(huì)被調(diào)整為BGR。如果是BGR將會(huì)被調(diào)整為RGB#圖像通道順序不做調(diào)整rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2')# 加載TensorFlow模型# tf_pb='digital_gesture.pb'指定待轉(zhuǎn)換的TensorFlow模型# inputs指定模型中的輸入節(jié)點(diǎn)# outputs指定模型中輸出節(jié)點(diǎn)# 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')# 創(chuàng)建解析pb模型# do_quantization=False指定不進(jìn)行量化# 量化會(huì)減小模型的體積和提升運(yùn)算速度,但是會(huì)有精度的丟失print('--> Building model')rknn.build(do_quantization=False)print('done')# 導(dǎo)出保存rknn模型文件rknn.export_rknn('./digital_gesture.rknn')# Release RKNN Contextrknn.release()模型推理
模型推理使用示例如下,詳細(xì)請(qǐng)參考RKNN Tookit中的example,以rknn-toolkit/example/mobilenet_v1為例。
RKNN-Toolkit 通過(guò) PC 的 USB 連接到開(kāi)發(fā)板硬件,將構(gòu)建或?qū)氲?RKNN 模型傳到 RK1808 上運(yùn)行,并從 RK1808 上獲取推理結(jié)果、性能信息。
請(qǐng)執(zhí)行以下步驟
確保開(kāi)發(fā)板的 USB OTG 連接到 PC,并且 ADB 能夠正確識(shí)別到設(shè)備,即在 PC 上執(zhí)行adb?devices?-l命令能看到目標(biāo)設(shè)備。
調(diào)用?init_runtime?接口初始化運(yùn)行環(huán)境時(shí)需要指定 target 參數(shù)和 device_id 參數(shù)。其中 target 參數(shù)表明硬件類(lèi)型, 選值為?rk1808, 當(dāng) PC 連接多個(gè)設(shè)備時(shí),還需要指定 device_id 參數(shù),即設(shè)備編號(hào),可以通過(guò)adb?devics命令查看,舉例如下:
$ adb devices List of devices attached 0123456789ABCDEF device即改為
ret = rknn.init_runtime(target='rk1808', device_id='0123456789ABCDEF')運(yùn)行
python3 ./test.py運(yùn)行成功后就可以獲得經(jīng)過(guò)RK1808推理后得到的數(shù)據(jù)。
API
詳細(xì)的API請(qǐng)參考RKNN-Toolkit中的使用指南文檔在<rk1808-linux-sdk>/docs/Develop?reference?documents/NPU目錄中的:《RKNN-Toolkit使用指南_V*.pdf》。
總結(jié)
以上是生活随笔為你收集整理的RKNN Toolkit使用教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CMake学习笔记
- 下一篇: COCO数据格式说明