日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RKNN Toolkit使用教程

發布時間:2024/4/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.whl

API調用流程

模型轉換

模型轉換使用示例如下,詳細請參考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推理后得到的數據。

  • mport numpy as np import cv2 from rknn.api import RKNNdef show_outputs(outputs):output = outputs[0][0]output_sorted = sorted(output, reverse=True)top5_str = 'mobilenet_v1\n-----TOP 5-----\n'for i in range(5):value = output_sorted[i]index = np.where(output == value)for j in range(len(index)):if (i + j) >= 5:breakif value > 0:topi = '{}: {}\n'.format(index[j], value)else:topi = '-1: 0.0\n'top5_str += topiprint(top5_str)def show_perfs(perfs):perfs = 'perfs: {}\n'.format(outputs)print(perfs)if __name__ == '__main__':# Create RKNN objectrknn = RKNN()# pre-process configprint('--> config model')rknn.config(channel_mean_value='103.94 116.78 123.68 58.82', reorder_channel='0 1 2')print('done')# Load tensorflow modelprint('--> Loading model')ret = rknn.load_tflite(model='./mobilenet_v1.tflite')if ret != 0:print('Load mobilenet_v1 failed!')exit(ret)print('done')# Build modelprint('--> Building model')ret = rknn.build(do_quantization=True, dataset='./dataset.txt')if ret != 0:print('Build mobilenet_v1 failed!')exit(ret)print('done')# Export rknn modelprint('--> Export RKNN model')ret = rknn.export_rknn('./mobilenet_v1.rknn')if ret != 0:print('Export mobilenet_v1.rknn failed!')exit(ret)print('done')# Set inputsimg = cv2.imread('./dog_224x224.jpg')img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# init runtime environmentprint('--> Init runtime environment')ret = rknn.init_runtime(target='rk1808', device_id='0123456789ABCDEF')if ret != 0:print('Init runtime environment failed')exit(ret)print('done')# Inferenceprint('--> Running model')outputs = rknn.inference(inputs=[img])show_outputs(outputs)print('done')# perfprint('--> Begin evaluate model performance')perf_results = rknn.eval_perf(inputs=[img])print('done')rknn.release()

    API

    詳細的API請參考RKNN-Toolkit中的使用指南文檔在<rk1808-linux-sdk>/docs/Develop?reference?documents/NPU目錄中的:《RKNN-Toolkit使用指南_V*.pdf》

    總結

    以上是生活随笔為你收集整理的RKNN Toolkit使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。