久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 看過來,RK3576開發板NPU方案你用對了嗎?

看過來,RK3576開發板NPU方案你用對了嗎?

作者: 時間:2026-01-23 來源:EEPW 收藏
編者按:本文基于米爾MYD-LR3576開發板,詳細記錄了如何利用500萬像素USB攝像頭實現640×640分辨率的YOLO5s目標檢測,并將結果實時輸出至1080P屏幕的全流程。通過系統級的軟硬件協同優化,最終將端到端延遲控制在40ms以內,實現了20FPS的穩定實時檢測性能。文章重點剖析了攝像頭特性分析、顯示通路選擇、RGA硬件加速、RKNN NPU集成等關鍵技術環節,為嵌入式AI視覺系統的開發與調優提供了一套完整的思路與實踐方案。

1769176689434093.png

圖 米爾基于核心板開發板

一、 系統架構與性能目標

1.1 硬件平臺

●   主控芯片:Rockchip (四核A72+四核A53,6TOPS NPU,RGA,GPU,VPU)

●   攝像頭:500萬像素USB攝像頭(支持MJPEG/YUYV格式)

●   顯示器:4K HDMI顯示屏(通過Weston桌面環境顯示)

●   開發板:米爾MYD-LR3576

1.2 軟件平臺

使用米爾官方 V2.0.0 SDK 提供的 buildroot 鏡像,內核版本為 6.1.118。

系統信息如下:

root@myd-lr3576-buildroot:/# uname -a

Linux myd-lr3576-buildroot 6.1.118 #1 SMP Fri Sep 26 02:34:15 UTC 2025 aarch64 GNU/Linux

1.3 性能目標

●   實時性:完成從攝像頭采集 → NPU推理 → 屏幕顯示的完整流程,耗時不超過攝像頭一幀的時間。

●   輸入/輸出:盡可能提高攝像頭采集幀率,并在顯示端支持更高的輸出分辨率。

●   功能:實現 YOLO5s 目標檢測,并在視頻畫面中實時繪制檢測框。

二、數據處理流程與優化實踐

攝像頭數據需要經歷哪些過程才能到顯示端輸出,參考下圖

1769176735408045.png

2.1 CPU處理方案及其瓶頸

1769176763507443.png

如果把攝像頭數據直接顯示到屏幕上,先了解清楚它們輸入輸出關系。

攝像頭輸出可以用v4l2-ctl -D -d /dev/videoxx --list-formats-ext

Display輸出可用用cat /sys/kernel/debug/dri/0/state查看

1769176787894596.png

      根據實時性來說,需要選擇最高fps分辨率對應輸出,這里選擇640x480 20fps,那么它需要把YUYV格式替換成RGBA8888才能顯示。

顯示大小不超過屏幕最大分辨率3840x2160即可。

CPU處理是如下過程

1769176813782820.png

若要將攝像頭采集的 YUYV 格式數據直接顯示到屏幕,需先轉換為 RGBA8888 格式。在 CPU 上進行格式轉換與縮放的性能如下(輸入為 640×480 YUYV):

目標分辨率

YUV轉換耗時

縮放耗時

總耗時

理論FPS

1920×1080

8ms

25ms

33ms

~30

2560×1440

8ms

46ms

54ms

~18

3840×2160

8ms

103ms

111ms

~9

可見,CPU 在處理 1080P 分辨率時已接近能力上限,更高分辨率則無法滿足實時性要求。

2.2 引入RGA進行硬件加速

RGA作為 2D處理芯片模塊,它的作用是對圖片做旋轉,縮放,旋轉,鏡像以及格式轉換。

根據手冊信息,它能處理數據的性能是 物理地址 >  dma > 虛擬地址。那么用RGA來替換CPU的格式轉換和縮放。

1769176837814045.png

RGA是一次進行轉換和縮放,下面是對比CPU運算的對比圖

使用 RGA 替代 CPU 進行格式轉換與縮放后,性能對比如下:

目標分辨率

CPU方案總耗時

RGA [virtual addr]

RGA [dma]

1920×1080

33ms

7ms

2ms

2560×1440

54ms

10ms

3ms

3840×2160

111ms

20ms

7ms

RGA的引入帶來了數量級的性能提升,尤其是DMA模式,大幅降低了處理延遲。

2.3 GPU直接顯示方案

調試階段常使用 OpenCV 的 imshow 顯示圖像,但其依賴 CPU 參與,無法滿足實時性要求。系統實際采用 DRM 顯示框架與 Weston 桌面環境,因此我們選用 Wayland-client 方案進行直接顯示,實現 GPU 直顯。

1769176862599293.png

不同輸入模式下的顯示耗時對比:

輸入分辨率

Virtual addr顯示耗時

DMA顯示耗時

1920×1080

3ms

0 ms

2560×1440

5~9ms

0 ms

3840×2160

13~16ms

0 ms

2.4 NPU推理流程與耗時分析

1769176890102103.png

通用模型,通過rknn-toolkit2轉換成rknn后就可以通過RKNN API來調用和推導。

這里我們直接采用同事提供的rknn模型,yolov5s-640-640.rknn和coco_80_labels_list.txt,以及一些調用參考代碼。

它的輸入必須是640x640RGB格式

rknn推理虛擬地址關鍵步驟如下

步驟

API調用

關鍵操作

注意事項

初始化

rknn_init

初始化NPU


初始化

rknn_set_core_mask

設置綁定NPU core0還是core1,還是自動

推薦自動

初始化

rknn_query

查詢輸入和輸出個數


準備

rknn_inputs_set

設置輸入數據

數據格式必須匹配

推理

rknn_run

執行NPU推理

耗時主要瓶頸

獲取

rknn_outputs_get

獲取推理結果

可選want_float

釋放

rknn_outputs_release

釋放輸出資源

必須調用,防泄露

實際測試后rknn_run 這個階段大概耗時 26~31ms之間

rknn_outputs_get 獲取數據后即可進行內部處理,檢測出目標,坐標,信心指數,根據實際需求繪制在屏幕上,這一步可以多進程異步處理,不算在串行時間內,筆者測試大概會多花8ms左右。

image.png

因此 總計一下攝像頭實時采集NPU推理到顯示整個過程耗時情況

數據類型

輸出分辨率

T1

T2

T3

T4

總時間

理論FPS

虛擬地址

1920x1080

0

26~31

7

3

36~41

~30

2160x1440

10

5~9

41~50

25

3840x2160

20

13~16

59~67

19

Dma

1920x1080

27~40

2

0

29~42

~34

2160x1440

3

0

30~43

~30

3840x2160

7

0

34~47

~31

結論:NPU 推理階段(T2)仍是系統的主要耗時環節。但通過 DMA + RGA + 直接顯示 的優化組合,系統整體延遲大幅降低,且在高分辨率輸出下仍能保持穩定的幀率。

2.5 多攝像頭系統資源占用分析

●   虛擬內存方案

1個攝像頭

1769176973198485.png

1769177041621083.png

1769177072753564.png

4個攝像頭

1769177103854175.png

1769177143614106.png

●   Dma方案

1路攝像頭輸出

1769177193519228.png

2路攝像頭輸入

image.png

三、總結

在嵌入式 AI 視覺系統中,NPU 的算力是決定性能上限的關鍵因素。然而,要達到這一上限,必須構建高效的數據流水線。本文實踐表明,通過 RGA 硬件加速、DMA 零拷貝數據傳輸以及 GPU 直接顯示 的協同優化,能夠徹底釋放 RK3576 平臺的異構計算潛力,將端到端延遲控制在數十毫秒內,實現高清、實時的目標檢測應用。這一優化思路同樣適用于其他具備類似硬件加速單元的嵌入式 AI 平臺。


評論


相關推薦

技術專區

關閉