0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

基于RV1126開發(fā)板的rknn-toolkit-lite使用方法

ljx2016 ? 來源:ljx2016 ? 作者:ljx2016 ? 2025-04-15 17:33 ? 次閱讀

1. rknn-toolkit-lite介紹

rknn-toolkit-lite是用于python算法的推理的組件,當前已經(jīng)在EASY-EAI-Nano完成適配,用戶可以用它進行深度學習算法的純python開發(fā)。而且同時支持已經(jīng)進行了預編譯的模型,短短幾行代碼即可完成算法的推理,大幅降低開發(fā)成本。同時很多不熟悉C/C++的算法開發(fā)人員有效降低開發(fā)門檻。本地文檔是根據(jù)已經(jīng)完成rknn模型轉換的模型進行板卡上的推理,關于rknn模型轉換請閱讀請閱讀《在EASY EAI Nano運行自定義的AI算法》。

wKgZO2f-KQ2AHOZgAAKzPIHJcF4641.png

2. 固件燒錄

當前我們通過系統(tǒng)預裝的方式支持rknn-toolkit-lite,燒錄固件方式請閱讀《固件燒錄與更新》。

固件下載鏈接:https://pan.baidu.com/s/1sWFoPf6oJtZsUPp-_do7AQ

提取碼:1234

固件包如下所示:

wKgZPGf-KQ6AR0G_AAAkMjOfcTk795.png

3. 在板卡測試demo

下載百度網(wǎng)盤:https://pan.baidu.com/s/1yoof_SyY1ty93dIRe1dZgA (提取碼:1234 )

“測試程序/inference_with_lite.tar.bz2”,把文件傳到EASY-EAI-Nano板卡目錄上。

執(zhí)行以下指令進行解壓:

tar xvf inference_with_lite.tar.bz2
wKgZO2f-KQ6AE9D3AABkdRULKr8838.png

執(zhí)行以下指令切換目錄并執(zhí)行測試程序:

cd /userdata/inference_with_lite/
python3 test.py

結果如下所示:

wKgZPGf-KQ6AHBg7AAEMU8v6kKQ706.png

4. rknn-toolkit-lite流程說明

4.1 使用流程圖

RKNN Tookit Lite使用流程如下:

wKgZO2f-KQ6ASBWaAAAizVY6QAg659.png

4.2 例程

第三小節(jié)的例程如下所示:

import platform
import cv2
import numpy as np
from rknnlite.api import RKNNLite

RKNN_MODEL = '10class_ResNet50_pre.rknn'
IMG_PATH = './test-1.jpg'
INPUT_SIZE = 224

BOX_THRESH = 0.25
NMS_THRESH = 0.6

CLASSES = ("SUV", "bus", "family sedan", "fire engine", "heavy truck", "jeep", "minibus", "racing car", "taxi", "truck")

def show_outputs(output):

	print("softmax output:", output)

	max_confidence = np.max(output)
	index = np.where(output == max_confidence)
	print("max confidence:", max_confidence)
	print("max confidence index:", index[0][0])
	print("CLASSES predict: ", CLASSES[index[0][0]])

def softmax(x):
	return np.exp(x)/sum(np.exp(x))


if __name__ == '__main__':
	rknn_lite = RKNNLite()

	# load RKNN model
	print('--> Load RKNN model')
	ret = rknn_lite.load_rknn(RKNN_MODEL)
	if ret != 0:
		print('Load RKNN model failed')
		exit(ret)
	print('done')

	# Set inputs
	img = cv2.imread(IMG_PATH)
	img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
	resize_img = cv2.resize(img,(224,224))

	# init runtime environment
	print('--> Init runtime environment')

	ret = rknn_lite.init_runtime(target=None)
	if ret != 0:
		print('Init runtime environment failed')
		exit(ret)
	print('done')

	# Inference
	print('--> Running model')
	outputs = rknn_lite.inference(inputs=[resize_img])

	print("outputs[0]:", outputs[0])
	print("outputs[0].shape:", outputs[0].shape)
	show_outputs(softmax(np.array(outputs[0][0])))
	rknn_lite.release()

5. API詳細說明

5.1 RKNNLite初始化及對象釋放

在使用RKNN Toolkit Lite時,都需要先調用RKNNLite()方法初始化一個RKNNLite對象,并在用完后調用該對象的release()方法將資源釋放掉。

初始化RKNNLite對象時,可以設置verbose和verbose_file參數(shù),以打印詳細的日志信息。其中verbose參數(shù)指定是否要在屏幕上打印詳細日志信息;如果設置了verbose_file參數(shù),且verbose參數(shù)值為True,日志信息還將寫到這個參數(shù)指定的文件中。

舉例如下:

# 將詳細的日志信息輸出到屏幕,并寫到inference.log文件中 
rknn_lite = RKNNLite(verbose=True, verbose_file='./inference.log') # 只在屏幕打印詳細的日志信息 
rknn_lite = RKNNLite(verbose=True) 
… 
rknn_lite.release() 

5.2 加載RKNN模型

API Load_rknn
描述 加載RKNN模型。
參數(shù) path:RKNN模型文件路徑
load_model_in_npu: 是否直接加載npu中的rknn模型。其中path為rknn模型在npu中的路徑。只有當RKNN Toolkit Lite運行在連有NPU設備的PC上或RK3399Pro Linux開發(fā)板時才可以設為True。默認值為False.
返回值 0:加載成功
-1:加載失敗

舉例如下:

# 從當前目錄加載 ResNet50模型
ret = rknn_lite.load_rknn('10class_ResNet50_pre.rknn')

5.3 初始化運行時環(huán)境

在模型推理之前,必須先初始化運行時環(huán)境,確定模型在哪一個芯片平臺上運行。

API init_runtime
描述 初始化運行時環(huán)境。確定模型運行的設備信息(芯片型號、設備 ID)。
參數(shù) target:目標硬件平臺,目前支持“rk3399pro”、“rk1806”、“rk1808”、“rv1109”、 “rv1126”。默認為 None,將根據(jù)應用所運行的開發(fā)板自動選擇。
device_id:設備編號,如果 PC 連接多臺智能設備時,需要指定該參數(shù),設備編號可 以通過”list_devices”接口查看。默認值為 None。
async_mode:是否使用異步模式。調用推理接口時,涉及設置輸入圖片、模型推理、 獲取推理結果三個階段。如果開啟了異步模式,設置當前幀的輸入將與推理上一幀同 時進行,所以除第一幀外,之后的每一幀都可以隱藏設置輸入的時間,從而提升性能。 在異步模式下,每次返回的推理結果都是上一幀的。該參數(shù)的默認值為 False。
返回值 0:加載成功
-1:加載失敗

舉例如下:

	# init runtime environment
	print('--> Init runtime environment')
	ret = rknn_lite.init_runtime(target=None)
	if ret != 0:
		print('Init runtime environment failed')
		exit(ret)
	print('done')

5.4 模型推理

API inference
描述 對指定輸入進行推理,返回推理結果。
參數(shù) inputs:待推理的輸入,如經(jīng)過 cv2 處理的圖片。類型是 list,列表成員是 ndarray。
data_type:輸入數(shù)據(jù)的類型,可填以下值:’float32’, ‘float16’, ‘uint8’, ‘int8’, ‘int16’。 默認值為’uint8’。
data_format:數(shù)據(jù)模式,可以填以下值: “nchw”, “nhwc”。默認值為’nhwc’。這兩個的 不同之處在于 channel 放置的位置。
inputs_pass_through: 將輸入透傳給 NPU 驅動。非透傳模式下,在將輸入傳給 NPU 驅 動之前,工具會對輸入進行減均值、除方差等操作;而透傳模式下,不會做這些操作。 這個參數(shù)的值是一個數(shù)組,比如要透傳 input0,不透傳 input1,則這個參數(shù)的值為[1, 0]。默認值為 None,即對所有輸入都不透傳。
返回值 results:推理結果,類型是 list,列表成員是 ndarray。

舉例如下:

以分類模型為例,如 resnet50,代碼如下(完整代碼參考第三小節(jié)):

	# Inference
	print('--> Running model')
	outputs = rknn_lite.inference(inputs=[resize_img])

	print("outputs[0]:", outputs[0])
	print("outputs[0].shape:", outputs[0].shape)
	show_outputs(softmax(np.array(outputs[0][0])))

5.5 查詢 SDK 版本

API get_sdk_version
描述 獲取 SDK API 和驅動的版本號。
注:使用該接口前必須完成模型加載和初始化運行環(huán)境。
參數(shù)
返回值 sdk_version:API 和驅動版本信息。類型為字符串

舉例說明:

# 獲取 SDK 版本信息 
…… 
sdk_version = rknn_lite.get_sdk_version() 
……

返回的 SDK 信息如下:

wKgZPGf-KQ6AQlvRAAA1FYIIaUg671.png


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1563

    瀏覽量

    63597
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5565

    瀏覽量

    102741
  • SDK
    SDK
    +關注

    關注

    3

    文章

    1067

    瀏覽量

    47792
  • rv1126
    +關注

    關注

    0

    文章

    106

    瀏覽量

    3380
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

    RV1126開發(fā)板上實現(xiàn)人臉檢測:在圖像中找出人臉,以及每張人臉的landmarks位置。 方案設計邏輯流程圖,方案代碼分為分為兩個業(yè)務流程,主體代碼負責抓取、合成圖像, 算法代碼負責人臉檢測功能。
    的頭像 發(fā)表于 04-21 17:59 ?362次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>實現(xiàn)人臉檢測方案

    基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

    RV1126開發(fā)板上實現(xiàn)人臉檢測:在圖像中找出人臉,以及每張人臉的landmarks位置。 方案設計邏輯流程圖,方案代碼分為分為兩個業(yè)務流程,主體代碼負責抓取、合成圖像, 算法代碼負責人臉檢測功能。
    的頭像 發(fā)表于 04-21 14:00 ?13次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>實現(xiàn)人臉檢測方案

    基于RV1126開發(fā)板實現(xiàn)人臉識別方案

    RV1126開發(fā)板上實現(xiàn)人臉識別:在圖像中找出人臉,并與數(shù)據(jù)庫進行比對,得出該人臉對應的身份信息。 方案設計邏輯流程圖,方案代碼分為分為三個業(yè)務流程,主體代碼負責抓取、合成圖像,算法代碼負責人臉識別功能,按鍵監(jiān)聽負責修改數(shù)據(jù)庫工作狀態(tài)。
    的頭像 發(fā)表于 04-21 10:24 ?107次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>實現(xiàn)人臉識別方案

    基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

    RV1126開發(fā)板上實現(xiàn)人臉檢測:在圖像中找出人臉,以及每張人臉的landmarks位置。 方案設計邏輯流程圖,方案代碼分為分為兩個業(yè)務流程,主體代碼負責抓取、合成圖像, 算法代碼負責人臉檢測功能。
    的頭像 發(fā)表于 04-21 10:21 ?99次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>實現(xiàn)人臉檢測方案

    基于RV1126開發(fā)板實現(xiàn)安全帽檢測方案

    RV1126開發(fā)板上實現(xiàn)安全帽檢測:在圖像中找出人頭/安全帽。 方案設計邏輯流程圖,方案代碼分為分為兩個業(yè)務流程,主體代碼負責抓取、合成圖像,算法代碼負責安全帽檢測功能。
    的頭像 發(fā)表于 04-21 09:20 ?310次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>實現(xiàn)安全帽檢測方案

    基于RV1126開發(fā)板實現(xiàn)駕駛員行為檢測方案

    RV1126開發(fā)板上實現(xiàn)駕駛員行為檢測:通過圖像識別出這幾種行為:打電話、抽煙、疲勞駕駛。
    的頭像 發(fā)表于 04-18 17:47 ?354次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>實現(xiàn)駕駛員行為檢測方案

    基于RV1126開發(fā)板實現(xiàn)人員檢測方案

    RV1126開發(fā)板實現(xiàn)人員檢測:在圖像中找出人。 方案設計邏輯流程圖,方案代碼分為分為兩個業(yè)務流程,主體代碼負責抓取、合成圖像,算法代碼負責人員檢測功能。
    的頭像 發(fā)表于 04-18 17:14 ?220次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>實現(xiàn)人員檢測方案

    基于RV1126開發(fā)板的resnet50訓練部署教程

    本教程基于圖像分類算法ResNet50的訓練和部署到EASY-EAI-Nano(RV1126)進行說明
    的頭像 發(fā)表于 04-18 15:07 ?352次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>的resnet50訓練部署教程

    基于RV1126開發(fā)板的音頻硬件電路設計

    ? ? ? ?核心自帶音頻輸入輸出功能,無需外接音頻編解碼芯片,節(jié)省成本與空間。核心核上的PMIC RK809-2芯片內(nèi)部集成高性能音頻Codec,RV1126通過I2S1接口和RK809-2
    的頭像 發(fā)表于 04-17 09:31 ?234次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>的音頻硬件電路設計

    基于RV1126開發(fā)板的按鍵測試方法與例程

    RV1126開發(fā)板的按鍵測試方法與例程詳細描述
    的頭像 發(fā)表于 04-15 17:03 ?290次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>的按鍵測試<b class='flag-5'>方法</b>與例程

    基于RV1126開發(fā)板網(wǎng)絡配置方法

    RV1126開發(fā)板網(wǎng)絡硬件資源有:以太網(wǎng)、WiFi,采用的網(wǎng)絡配置方案是:Netplan。 ? ? ? ?Netplan是一個用于配置Linux網(wǎng)絡的簡單工具。用戶只需要一個yaml格式的文件去
    的頭像 發(fā)表于 04-15 14:57 ?252次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>網(wǎng)絡配置<b class='flag-5'>方法</b>

    基于RV1126開發(fā)板的人員檢測算法開發(fā)

    RV1126開發(fā)人員檢測AI算法組件
    的頭像 發(fā)表于 04-14 13:56 ?268次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>的人員檢測算法<b class='flag-5'>開發(fā)</b>

    基于RV1126開發(fā)板的人臉檢測算法開發(fā)

    RV1126開發(fā)人臉檢測算法組件
    的頭像 發(fā)表于 04-14 10:19 ?255次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發(fā)板</b>的人臉檢測算法<b class='flag-5'>開發(fā)</b>

    RV1126 實現(xiàn)人臉檢測方案

    基于RV1126開發(fā)板實現(xiàn)人臉檢測方案,充分體現(xiàn)了電子方面的實踐經(jīng)驗和目標檢測技術。
    的頭像 發(fā)表于 04-14 09:25 ?195次閱讀
    <b class='flag-5'>RV1126</b> 實現(xiàn)人臉檢測方案

    RV1126 實現(xiàn)簡單的UI開發(fā)示例

    RV1126上實現(xiàn)簡單的UI開發(fā)實例
    的頭像 發(fā)表于 04-09 16:08 ?307次閱讀
    <b class='flag-5'>RV1126</b> 實現(xiàn)簡單的UI<b class='flag-5'>開發(fā)</b>示例

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品