看過(guò)來(lái),RK3576開(kāi)發(fā)板NPU方案你用對(duì)了嗎?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要
本文基于米爾 MYD-LR3576 開(kāi)發(fā)板,詳細(xì)記錄了如何利用 500 萬(wàn)像素 USB 攝像頭實(shí)現(xiàn) 640×640 分辨率的 YOLO5s 目標(biāo)檢測(cè),并將結(jié)果實(shí)時(shí)輸出至 1080P 屏幕的全流程。通過(guò)系統(tǒng)級(jí)的軟硬件協(xié)同優(yōu)化,最終將端到端延遲控制在 40ms 以內(nèi),實(shí)現(xiàn)了 20FPS 的穩(wěn)定實(shí)時(shí)檢測(cè)性能。文章重點(diǎn)剖析了攝像頭特性分析、顯示通路選擇、RGA 硬件加速、RKNN NPU 集成等關(guān)鍵技術(shù)環(huán)節(jié),為嵌入式 AI 視覺(jué)系統(tǒng)的開(kāi)發(fā)與調(diào)優(yōu)提供了一套完整的思路與實(shí)踐方案。
圖:米爾基于RK3576核心板開(kāi)發(fā)板
一、 系統(tǒng)架構(gòu)與性能目標(biāo)
1.1 硬件平臺(tái)
? 主控芯片:Rockchip RK3576(四核A72+四核A53,6TOPS NPU,RGA,GPU,VPU)
? 攝像頭:500萬(wàn)像素USB攝像頭(支持MJPEG/YUYV格式)
? 顯示器:4K HDMI顯示屏(通過(guò)Weston桌面環(huán)境顯示)
? 開(kāi)發(fā)板:米爾MYD-LR3576
1.2 軟件平臺(tái)
使用米爾官方 V2.0.0 SDK 提供的 buildroot 鏡像,內(nèi)核版本為 6.1.118。
系統(tǒng)信息如下:
1.3 性能目標(biāo)
· 實(shí)時(shí)性:完成從攝像頭采集 → NPU推理 → 屏幕顯示的完整流程,耗時(shí)不超過(guò)攝像頭一幀的時(shí)間。
· 輸入/輸出:盡可能提高攝像頭采集幀率,并在顯示端支持更高的輸出分辨率。
· 功能:實(shí)現(xiàn) YOLO5s 目標(biāo)檢測(cè),并在視頻畫(huà)面中實(shí)時(shí)繪制檢測(cè)框。
二、數(shù)據(jù)處理流程與優(yōu)化實(shí)踐
攝像頭數(shù)據(jù)需要經(jīng)歷哪些過(guò)程才能到顯示端輸出,參考下圖
2.1 CPU 處理方案及其瓶頸
如果把攝像頭數(shù)據(jù)直接顯示到屏幕上,先了解清楚它們輸入輸出關(guān)系。
攝像頭輸出可以用v4l2-ctl -D -d /dev/videoxx --list-formats-ext
Display輸出可用用cat /sys/kernel/debug/dri/0/state查看
根據(jù)實(shí)時(shí)性來(lái)說(shuō),需要選擇最高fps分辨率對(duì)應(yīng)輸出,這里選擇640x480 20fps,那么它需要把YUYV格式替換成RGBA8888才能顯示。
顯示大小不超過(guò)屏幕最大分辨率3840x2160即可。
CPU處理是如下過(guò)程
若要將攝像頭采集的 YUYV 格式數(shù)據(jù)直接顯示到屏幕,需先轉(zhuǎn)換為 RGBA8888 格式。在 CPU 上進(jìn)行格式轉(zhuǎn)換與縮放的性能如下(輸入為 640×480 YUYV):
可見(jiàn),CPU 在處理 1080P 分辨率時(shí)已接近能力上限,更高分辨率則無(wú)法滿足實(shí)時(shí)性要求。
2.2 引入 RGA 進(jìn)行硬件加速
RGA作為RK3576 2D處理芯片模塊,它的作用是對(duì)圖片做旋轉(zhuǎn),縮放,旋轉(zhuǎn),鏡像以及格式轉(zhuǎn)換。
根據(jù)手冊(cè)信息,它能處理數(shù)據(jù)的性能是 物理地址 > dma > 虛擬地址。那么用RGA來(lái)替換CPU的格式轉(zhuǎn)換和縮放。
RGA是一次進(jìn)行轉(zhuǎn)換和縮放,下面是對(duì)比CPU運(yùn)算的對(duì)比圖
使用 RGA 替代 CPU 進(jìn)行格式轉(zhuǎn)換與縮放后,性能對(duì)比如下:
RGA 的引入帶來(lái)了數(shù)量級(jí)的性能提升,尤其是 DMA 模式,大幅降低了處理延遲。
2.3 GPU 直接顯示方案
調(diào)試階段常使用 OpenCV 的 imshow 顯示圖像,但其依賴 CPU 參與,無(wú)法滿足實(shí)時(shí)性要求。系統(tǒng)實(shí)際采用 DRM 顯示框架與 Weston 桌面環(huán)境,因此我們選用 Wayland-client 方案進(jìn)行直接顯示,實(shí)現(xiàn) GPU 直顯。
不同輸入模式下的顯示耗時(shí)對(duì)比:
2.4 NPU 推理流程與耗時(shí)分析
通用模型,通過(guò)rknn-toolkit2轉(zhuǎn)換成rknn后就可以通過(guò)RKNN API來(lái)調(diào)用和推導(dǎo)。
這里我們直接采用同事提供的rknn模型,yolov5s-640-640.rknn和coco_80_labels_list.txt,以及一些調(diào)用參考代碼。
它的輸入必須是640x640RGB格式
rknn推理虛擬地址關(guān)鍵步驟如下
實(shí)際測(cè)試后rknn_run 這個(gè)階段大概耗時(shí) 26~31ms之間
rknn_outputs_get 獲取數(shù)據(jù)后即可進(jìn)行內(nèi)部處理,檢測(cè)出目標(biāo),坐標(biāo),信心指數(shù),根據(jù)實(shí)際需求繪制在屏幕上,這一步可以多進(jìn)程異步處理,不算在串行時(shí)間內(nèi),筆者測(cè)試大概會(huì)多花8ms左右。
因此 總計(jì)一下攝像頭實(shí)時(shí)采集NPU推理到顯示整個(gè)過(guò)程耗時(shí)情況
結(jié)論:NPU 推理階段(T2)仍是系統(tǒng)的主要耗時(shí)環(huán)節(jié)。但通過(guò) DMA + RGA + 直接顯示 的優(yōu)化組合,系統(tǒng)整體延遲大幅降低,且在高分辨率輸出下仍能保持穩(wěn)定的幀率。
2.5 多攝像頭系統(tǒng)資源占用分析
? 虛擬內(nèi)存方案
1個(gè)攝像頭
4個(gè)攝像頭
? Dma方案
1路攝像頭輸出
2路攝像頭輸入
三、總結(jié)
在嵌入式 AI 視覺(jué)系統(tǒng)中,NPU 的算力是決定性能上限的關(guān)鍵因素。然而,要達(dá)到這一上限,必須構(gòu)建高效的數(shù)據(jù)流水線。本文實(shí)踐表明,通過(guò) RGA 硬件加速、DMA 零拷貝數(shù)據(jù)傳輸以及 GPU 直接顯示 的協(xié)同優(yōu)化,能夠徹底釋放 RK3576 平臺(tái)的異構(gòu)計(jì)算潛力,將端到端延遲控制在數(shù)十毫秒內(nèi),實(shí)現(xiàn)高清、實(shí)時(shí)的目標(biāo)檢測(cè)應(yīng)用。這一優(yōu)化思路同樣適用于其他具備類似硬件加速單元的嵌入式 AI 平臺(tái)。





