91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

瑞芯微RKNPU開發(fā)全指南:從環(huán)境搭建到性能優(yōu)化,一文搞定邊緣AI部署

jf_44130326 ? 來源:Linux1024 ? 2026-02-06 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在邊緣AI領(lǐng)域,瑞芯微Rockchip)的RKNPU憑借高性能、低功耗的特性,成為很多嵌入式開發(fā)者的首選。無論是RK35883NPU(算力達(dá)6TOPS),還是RV1106的輕量化NPU,都需要通過RKNN SDK實(shí)現(xiàn)模型部署。今天這篇文章,我們就從SDK核心組件、開發(fā)全流程、進(jìn)階優(yōu)化到避坑指南,手把手教你搞定RKNPU開發(fā)!

一、先搞懂:RKNN SDK核心組件

RKNN SDK不是單一工具,而是一套“PC端工具鏈+板端運(yùn)行時(shí)的完整生態(tài)。先理清這3個(gè)核心組件的分工,后續(xù)開發(fā)才不會(huì)亂:

1.核心組件交互圖

wKgZO2kalGeAIWsMAAH2rYaEBK8052.png

2.組件詳解

?RKNN-Toolkit2PC端)

開發(fā)者模型加工廠,主要負(fù)責(zé):

?模型轉(zhuǎn)換:支持ONNXPyTorch、TensorFlow等主流框架轉(zhuǎn)RKNN格式;

?量化優(yōu)化:將FP32模型量化為INT8(支持Normal/KL-Divergence/MMSE三種算法),減小模型體積、提升推理速度;

?評(píng)估分析:在模擬器或連板狀態(tài)下,分析模型精度(余弦距離)、性能(單幀耗時(shí))、內(nèi)存(權(quán)重/中間Tensor占用)。

?RKNN Runtime(板端)

模型的推理引擎,分兩種API

?通用API:易上手,數(shù)據(jù)預(yù)處理(歸一化、格式轉(zhuǎn)換)在CPU完成,適合快速驗(yàn)證;

?零拷貝API:高性能,預(yù)處理在NPU完成,數(shù)據(jù)無需CPU-NPU拷貝(直接用物理地址/fd),適合攝像頭、視頻解碼等低延遲場(chǎng)景。

?RKNN Server(板端)

連板調(diào)試的橋梁,運(yùn)行在開發(fā)板后臺(tái),接收PCToolkit2的指令,轉(zhuǎn)發(fā)數(shù)據(jù)/推理結(jié)果,支持多設(shè)備管理。

二、開發(fā)全流程:從01部署一個(gè)模型

“MobileNet圖像分類模型為例,帶大家走一遍完整開發(fā)流程,關(guān)鍵步驟附實(shí)操代碼和注意事項(xiàng):

1.開發(fā)全流程圖表

wKgZO2kalGiADFFoAACMGFWIcxY757.png

2. step 1:環(huán)境準(zhǔn)備

1PC端:安裝RKNN-Toolkit2

推薦用Docker(避免環(huán)境沖突),命令如下:

# 1. 安裝Docker并添加用戶組sudo groupadd dockersudo usermod -aG docker$USERnewgrp docker# 2. 加載RKNN-Toolkit2鏡像(鏡像從瑞芯微網(wǎng)盤下載)docker load --input rknn-toolkit2-x.x.x-cpxx-docker.tar.gz# 3. 啟動(dòng)容器(映射USB和示例代碼)docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /your/examples:/examples rknn-toolkit2:x.x.x-cpxx /bin/bash

2)板端:確認(rèn)NPU環(huán)境

開發(fā)板必須滿足3個(gè)條件:

?NPU驅(qū)動(dòng)版本≥0.9.2(查詢命令:cat /sys/kernel/debug/rknn/driver_version);

?RKNN Server已啟動(dòng)(查詢命令:ps | grep rknn_server,未啟動(dòng)則執(zhí)行restart_rknn.sh);

?Runtime庫版本與Toolkit2匹配(如Toolkit2 v2.0.0librknnrt.so v2.0.0)。

3. step 2:模型轉(zhuǎn)換(核心步驟)

ONNX模型為例,用Toolkit2Python接口實(shí)現(xiàn)轉(zhuǎn)換:

fromrknn.apiimportRKNN# 1. 初始化RKNN對(duì)象rknn = RKNN(verbose=True)# 2. 配置轉(zhuǎn)換參數(shù)(目標(biāo)平臺(tái)、均值/歸一化、量化)rknn.config(  mean_values=[[103.94,116.78,123.68]], # 與訓(xùn)練時(shí)一致  std_values=[[58.82,58.82,58.82]],  target_platform='rk3588', # 目標(biāo)硬件(如rk3566、rv1106)  quantized_algorithm='normal', # 量化算法  do_quantization=True# 開啟量化)# 3. 加載ONNX模型ret = rknn.load_onnx(model='./mobilenet_v2.onnx')# 4. 量化構(gòu)建(需準(zhǔn)備校正集dataset.txt,每行1張圖片路徑)ret = rknn.build(do_quantization=True, dataset='./dataset.txt')# 5. 導(dǎo)出RKNN模型ret = rknn.export_rknn('./mobilenet_v2.rknn')# 6. 釋放資源rknn.release()

關(guān)鍵注意點(diǎn)

?校正集(dataset.txt)需覆蓋業(yè)務(wù)場(chǎng)景(如分類模型需包含所有類別圖片),數(shù)量建議20-200張;

?目標(biāo)平臺(tái)(target_platform)必須與開發(fā)板一致,否則模型無法運(yùn)行(RK3566/3568通用,RK3588/3588S通用)。

4. step 3:模型評(píng)估(避坑關(guān)鍵)

轉(zhuǎn)換后的模型,必須先評(píng)估再部署,避免能跑但精度/性能不達(dá)標(biāo)

# 1. 初始化運(yùn)行時(shí)(連板評(píng)估,target設(shè)為開發(fā)板型號(hào))ret= rknn.init_runtime(target='rk3588', device_id='515e9b401c060c0b')# 2. 精度分析(對(duì)比量化模型與浮點(diǎn)模型的每層誤差)ret= rknn.accuracy_analysis(inputs=['./test.jpg'], target='rk3588')# 3. 性能評(píng)估(輸出單幀耗時(shí)、FPS、每層算子耗時(shí))perf_detail= rknn.eval_perf()# 4. 內(nèi)存評(píng)估(輸出權(quán)重、中間Tensor內(nèi)存占用)mem_detail= rknn.eval_memory()

評(píng)估結(jié)果解讀

?精度:余弦距離越接近1(如0.999),誤差越?。?/span>

?性能:RK3588運(yùn)行MobileNetV2,INT8量化后FPS可達(dá)100+;

?內(nèi)存:權(quán)重內(nèi)存≈3.5MB,總內(nèi)存≈5.4MB(符合邊緣設(shè)備需求)。

5. step 4:板端部署(C/Python任選)

1Python部署(快速驗(yàn)證,用RKNN-Toolkit Lite2

from rknn.api import RKNNLite# 1. 初始化RKNNLite對(duì)象rknn_lite = RKNNLite(verbose=True)# 2. 加載RKNN模型ret = rknn_lite.load_rknn('./mobilenet_v2.rknn')# 3. 初始化運(yùn)行時(shí)(多核配置:RK3588可設(shè)NPU_CORE_0_1_2)ret = rknn_lite.init_runtime(core_mask=RKNNLite.NPU_CORE_ALL)# 4. 預(yù)處理輸入圖片img = cv2.imread('./test.jpg')img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)img = np.expand_dims(img, 0)# 5. 推理outputs = rknn_lite.inference(inputs=[img])# 6. 后處理(輸出TOP5類別)show_top5(outputs)# 7. 釋放資源rknn_lite.release()

2C部署(高性能,用RKNN Runtime

核心流程:初始化模型設(shè)置輸入推理獲取輸出釋放資源,關(guān)鍵代碼片段:

#include"rknn_api.h"intmain(){  rknn_context ctx; // 1. 初始化模型  ret =rknn_init(&ctx, model_buf, model_len,0,NULL);  // 2. 查詢輸入輸出屬性  rknn_input_output_num io_num; rknn_query(ctx, RKNN_QUERY_IN_OUT_NUM, &io_num,sizeof(io_num));  // 3. 設(shè)置輸入數(shù)據(jù)  rknn_input inputs[io_num.n_input];  inputs[0].index =0;  inputs[0].type = RKNN_TENSOR_UINT8;  inputs[0].fmt = RKNN_TENSOR_NHWC;  inputs[0].buf = img_data;  inputs[0].size = img_size; rknn_inputs_set(ctx, io_num.n_input, inputs);  // 4. 推理 rknn_run(ctx,NULL);  // 5. 獲取輸出  rknn_output outputs[io_num.n_output]; rknn_outputs_get(ctx, io_num.n_output, outputs,NULL);  // 6. 后處理 post_process(outputs);  // 7. 釋放資源 rknn_outputs_release(ctx, io_num.n_output, outputs); rknn_destroy(ctx); return0;}

三、進(jìn)階優(yōu)化:讓模型跑更快、更省內(nèi)存

掌握以下技巧,能讓RKNPU性能翻倍、內(nèi)存占用減半,尤其適合邊緣設(shè)備:

1.性能優(yōu)化

1NPU多核配置(RK3588/RK3576專屬)

RK35883個(gè)NPU核,RK35762個(gè),通過core_mask設(shè)置多核運(yùn)行:

# Python(Toolkit2)rknn.init_runtime(target='rk3588', core_mask=RKNN.NPU_CORE_0_1_2)# C APIrknn_set_core_mask(ctx, RKNN_NPU_CORE_0_1_2);

效果MobileNetV2RK3588上,多核運(yùn)行比單核快2.5倍。

2)零拷貝API(減少DDR帶寬消耗)

適合攝像頭、視頻解碼等場(chǎng)景,數(shù)據(jù)直接用物理地址:

// 1. 創(chuàng)建外部分配內(nèi)存(用物理地址)rknn_tensor_mem* input_mem =rknn_create_mem_from_phys(ctx, phys_addr, virt_addr, size);// 2. 設(shè)置零拷貝輸入rknn_set_io_mem(ctx, input_mem, &input_attr);// 3. 推理rknn_run(ctx,NULL);

效果:數(shù)據(jù)拷貝耗時(shí)減少80%,端到端延遲降低30%

2.內(nèi)存優(yōu)化

1RK3588 SRAM使用(減輕DDR壓力)

RK3588956KB SRAM,可分配給NPU存中間Tensor

// 初始化時(shí)開啟SRAMret =rknn_init(&ctx, model, size, RKNN_FLAG_ENABLE_SRAM,NULL);

查詢SRAM使用cat /sys/kernel/debug/rknn/mm,可看到已用/剩余大小。

2)動(dòng)態(tài)Shape(單模型支持多分辨率)

無需生成多個(gè)模型,一個(gè)模型支持多種輸入尺寸(如224x224192x192):

# 配置動(dòng)態(tài)輸入dynamic_input = [  [[1,3,224,224]],  [[1,3,192,192]]]rknn.config(dynamic_input=dynamic_input)

場(chǎng)景NLP模型(可變序列長度)、圖像分割(可變分辨率)。

3.模型優(yōu)化

1)混合量化(精度與性能平衡)

對(duì)精度敏感的層(如輸出層)用FP16,其他層用INT8

# 混合量化配置文件custom_quantize_layers: Conv__350 float16 # 指定層用FP16quantize_parameters: FeatureExtractor/Conv  qtype: asymmetric_quantized  dtype: int8

2)模型剪枝(無損減小體積)

開啟model_pruning,自動(dòng)移除冗余權(quán)重:

rknn.config(model_pruning=True)

效果MobileNetV2權(quán)重減少6.9%,運(yùn)算量減少13.4%,精度無損失。

四、避坑指南:開發(fā)者常踩的5個(gè)坑

1.連板調(diào)試失敗

?原因:RKNN Server未啟動(dòng)或版本不匹配;

?解決:執(zhí)行restart_rknn.sh,確保Server版本與Toolkit2一致。

1.量化后精度下降嚴(yán)重

?原因:校正集不具代表性,或量化算法選擇不當(dāng);

?解決:更換KL-Divergence/MMSE算法,增加校正集數(shù)量(50-100張)。

1.模型轉(zhuǎn)換報(bào)錯(cuò)動(dòng)態(tài)Shape不支持

?原因:Toolkit2 < 1.5.2?不支持動(dòng)態(tài)Shape;

?解決:升級(jí)Toolkit21.5.2+,用dynamic_input配置。

1.板端推理耗時(shí)比連板評(píng)估長

?原因:連板評(píng)估有數(shù)據(jù)傳輸開銷,板端推理更真實(shí);

?解決:以板端C APIeval_perf結(jié)果為準(zhǔn)。

1.NPU Hang?。ㄍ评砗臅r(shí)超20s

?原因:驅(qū)動(dòng)bug或模型超出FP16范圍;

?解決:升級(jí)NPU驅(qū)動(dòng)到最新版,訓(xùn)練時(shí)添加BN層限制數(shù)值范圍。

五、開發(fā)資源匯總

最后給大家整理了必備資源,收藏好少走彎路:

?RKNN Toolkit2https://github.com/airockchip/rknn-toolkit2(含API文檔、示例);

?RKNN Model Zoohttps://github.com/airockchip/rknn_model_zooMobileNet、YOLOv5等預(yù)轉(zhuǎn)換模型);

?RGAhttps://github.com/airockchip/librga(圖像縮放、旋轉(zhuǎn)加速,配合NPU使用);

?官方文檔:本文基于《RKNN SDK V2.0.0beta0用戶指南》,完整文檔可在瑞芯微官網(wǎng)下載。

總結(jié)

瑞芯微RKNPU開發(fā)的核心是工具鏈?zhǔn)炀?/span>+優(yōu)化技巧到位:先用Toolkit2做好模型轉(zhuǎn)換與評(píng)估,再根據(jù)場(chǎng)景選擇通用/零拷貝API,最后通過多核、SRAM、動(dòng)態(tài)Shape等技巧壓榨性能。邊緣AI部署不復(fù)雜,跟著這篇指南走,你也能快速搞定RKNPU!

如果有疑問,歡迎在評(píng)論區(qū)交流,也可以關(guān)注瑞芯微官方GitHub獲取最新動(dòng)態(tài)~

(附:全文核心腦圖)

wKgZO2kalGiAYPedAAHmZngU7wE206.png

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

    關(guān)注

    27

    文章

    790

    瀏覽量

    54260
  • 環(huán)境搭建
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    9461
  • 邊緣AI
    +關(guān)注

    關(guān)注

    0

    文章

    239

    瀏覽量

    6124
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NPU使用攻略

    核心要點(diǎn):定義與功能硬件加速單元:RKNPU是集成在芯片中的專用NPU,專注于加速深度學(xué)習(xí)算法,如圖像識(shí)別、目標(biāo)檢測(cè)、語音處理等,同時(shí)優(yōu)化
    的頭像 發(fā)表于 05-21 15:50 ?2808次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>NPU使用攻略

    【飛凌嵌入式OK3576-C開發(fā)板體驗(yàn)】RKNPU圖像識(shí)別測(cè)試

    RKNPU提供了豐富的開發(fā)工具和SDK,如RKNN-Toolkit2等。這些工具可以幫助用戶快速將AI模型部署
    發(fā)表于 10-10 09:27

    國產(chǎn)開發(fā)板的端側(cè)AI測(cè)評(píng)-基于米爾RK3576

    SSD接口 個(gè)MicroSD卡槽 除了開發(fā)板的外設(shè)接口資源,板卡上涉及的大多數(shù)芯片方案都是國產(chǎn),所以不難發(fā)現(xiàn)廠商對(duì)于國產(chǎn)芯片替代在不斷地推進(jìn)。
    發(fā)表于 02-14 16:29

    基于米爾RK3576開發(fā)板的Qwen2-VL-3B模型NPU多模態(tài)部署評(píng)測(cè)

    關(guān)鍵詞: RK3576、NPU(神經(jīng)網(wǎng)絡(luò)處理器)、端側(cè)小語言模型(SLM)、多模態(tài) LLM、邊緣 AI
    發(fā)表于 08-29 18:08

    這幾年為啥那么火?

    技術(shù)過硬,同時(shí)也抓住了AI風(fēng)口,下面幾個(gè)角度來描述。 1、
    發(fā)表于 10-20 15:50

    如何精準(zhǔn)驅(qū)動(dòng)菜品識(shí)別模型--基于米爾RK3576邊緣計(jì)算盒

    ,RKNN-Toolkit2是釋放MYD-LR3576-B內(nèi)部6 TOPS NPU潛力的鑰匙。 它大大降低了開發(fā)者將AI模型部署
    發(fā)表于 10-31 21:19

    RK1808計(jì)算棒試用體驗(yàn)】(1)------開發(fā)環(huán)境搭建和mobilenet_v1示例體驗(yàn)

    `RK1808計(jì)算棒試用體驗(yàn)(1)------開發(fā)環(huán)境搭建近期收到了Elecfans論壇的
    發(fā)表于 10-25 18:15

    Toybrick AI開發(fā)平臺(tái)

    1.端側(cè)AI的發(fā)展現(xiàn)狀與挑戰(zhàn)AI云計(jì)算端側(cè)僅負(fù)責(zé)發(fā)送輸入數(shù)據(jù),并接收計(jì)算結(jié)果優(yōu)勢(shì):計(jì)算資源集中管理和分配單計(jì)算可達(dá)很高的算力和精度部署便捷劣勢(shì):算力成本高流量成本高、延遲大離線無法工
    發(fā)表于 07-24 10:58

    【中獎(jiǎng)公示】8.8RKNN系列直播:RKNN Runtime部署指南

    )(6058)恩將酬報(bào)(5355289)(5289)-------------------------------------------------------------直播詳情:RKNN
    發(fā)表于 08-05 15:59

    【中獎(jiǎng)公示】8.11RKNN系列直播二:RKNN模型精度優(yōu)化指南

    、meiyaolei(6188)3、忘憂(5416058)(6058)直播詳情:RKNN系列直播第二期:RKNN模型精度優(yōu)化指南時(shí)間:
    發(fā)表于 08-11 10:36

    和英偉達(dá)的邊緣計(jì)算盒子方案,你會(huì)選哪家的?

    ,miniPC整機(jī),工控體機(jī),廣告機(jī)等場(chǎng)景。 和英偉達(dá)的邊緣計(jì)算盒子方案,你們會(huì)選哪
    發(fā)表于 09-29 14:31

    嵌入式邊緣AI應(yīng)用開發(fā)指南

    、針對(duì)性能和精度目標(biāo)對(duì)模型進(jìn)行訓(xùn)練和優(yōu)化,以及學(xué)習(xí)使用在嵌入式邊緣處理器上部署模型的專用工具。模型選擇
    發(fā)表于 11-03 06:53

    基于RV1109的酒店人臉識(shí)別應(yīng)用

    技術(shù),以及紅外熱成像模塊,支持口罩識(shí)別。RV1126高性能人臉識(shí)別核心板 TB-RV1126Ds開發(fā)板是針對(duì)
    發(fā)表于 01-29 14:41

    迅為視頻教程 | RKNPU2 入門實(shí)踐搞定

    迅為視頻教程 | RKNPU2 入門實(shí)踐搞定!
    的頭像 發(fā)表于 06-20 17:00 ?1978次閱讀
    迅為視頻教程 | <b class='flag-5'>RKNPU</b>2 <b class='flag-5'>從</b>入門<b class='flag-5'>到</b>實(shí)踐<b class='flag-5'>一</b>套<b class='flag-5'>搞定</b>!

    迅為RK3568/RK3588開發(fā)板視頻教程 | RKNPU2 入門實(shí)踐搞定!

    迅為RK3568/RK3588開發(fā)板視頻教程 | RKNPU2 入門實(shí)踐搞定!
    的頭像 發(fā)表于 06-30 15:07 ?2727次閱讀
    迅為RK3568/RK3588<b class='flag-5'>開發(fā)</b>板視頻教程 | <b class='flag-5'>RKNPU</b>2 <b class='flag-5'>從</b>入門<b class='flag-5'>到</b>實(shí)踐<b class='flag-5'>一</b>套<b class='flag-5'>搞定</b>!