關(guān)注+星標(biāo)公眾號(hào),不錯(cuò)過(guò)精彩內(nèi)容
來(lái)源 | 米爾電子
在車載視覺(jué)系統(tǒng)開(kāi)發(fā)中,200ms 的延遲差距往往決定了方案的成敗。當(dāng)傳統(tǒng)架構(gòu)還在為數(shù)據(jù)搬運(yùn)消耗大量 CPU 資源時(shí),米爾電子基于 RK3576 的雙視覺(jué)系統(tǒng)已通過(guò)“零拷貝”技術(shù)將端到端延遲壓縮至 100ms 以內(nèi),為實(shí)時(shí)感知提供了全新解題思路。
米爾采用的方案是:用DMA-BUF文件描述符替代內(nèi)存拷貝,讓V4L2、RGA、CPU和DRM共享同一塊物理內(nèi)存;用DRM Overlay Plane直顯繞過(guò)X11協(xié)議層。兩條優(yōu)化線并行推進(jìn),形成完整的零拷貝閉環(huán)——端到端延遲從300ms降至100ms以內(nèi)。
本文為《360環(huán)視實(shí)時(shí)性評(píng)估》的續(xù)篇:聚焦從原型到車規(guī)級(jí)實(shí)時(shí)性的工程落地路徑。問(wèn)題定義:為什么傳統(tǒng)OpenCV管線「跑不動(dòng)」在360環(huán)視系統(tǒng)的初始驗(yàn)證階段,我們采用了一套直觀且廣泛使用的技術(shù)棧:OpenCV負(fù)責(zé)從采集到顯示的全部圖像處理任務(wù)。功能層面,這套方案完全跑通了——四路魚眼去畸變、透視投影、鳥(niǎo)瞰拼接,所有算法邏輯均正確。但當(dāng)我們將目光從「能不能跑」轉(zhuǎn)向「能不能用」時(shí),一個(gè)嚴(yán)峻的問(wèn)題浮出水面:端到端延遲高達(dá)約300ms,遠(yuǎn)超25fps對(duì)應(yīng)的40ms幀預(yù)算。經(jīng)過(guò)深入的性能剖析,我們發(fā)現(xiàn)瓶頸的根源并非算法復(fù)雜度——RK3576的4核Cortex-A72在單純的計(jì)算吞吐上并非不堪重負(fù)。真正吃掉時(shí)間的,是全鏈路中密集且不必要的數(shù)據(jù)搬運(yùn)。以下為原始方案的典型數(shù)據(jù)流:上述五步中,每一步都產(chǎn)生至少一次全幀內(nèi)存拷貝(720P BGR約2.6MB/幀)。四路相機(jī)并行處理后,單幀處理周期的總數(shù)據(jù)搬運(yùn)量超過(guò)50MB。在一個(gè)40ms的幀預(yù)算里,光是內(nèi)存拷貝就占據(jù)了不可忽視的時(shí)間比例,這還不包括OpenCV函數(shù)內(nèi)部的中間緩沖分配。為突破CPU的性能瓶頸,我們嘗試將計(jì)算密集型環(huán)節(jié)(去畸變、投影變換、拼接)遷移至Mali-G52 GPU,通過(guò)OpenCL(cv::UMat)并行加速。GPU的算力優(yōu)勢(shì)立竿見(jiàn)影——去畸變從CPU的約10ms降至約1ms,投影變換從約30ms降至約8ms。但是cv::Mat與cv::UMat間的顯式搬運(yùn)(約15ms上傳 + 10ms下載)幾乎抵消了計(jì)算加速。核心矛盾:算力夠,數(shù)據(jù)搬運(yùn)不夠算力充裕,但“每步獨(dú)立分配、獨(dú)立拷貝”的范式使數(shù)據(jù)搬運(yùn)成為絕對(duì)瓶頸。優(yōu)化方向由此明確——不是換更強(qiáng)的算法,而是消滅拷貝本身。基于對(duì)問(wèn)題根因的準(zhǔn)確診斷,我們確立了一條清晰的優(yōu)化路線:用DMA-BUF文件描述符(fd)替代內(nèi)存拷貝,讓V4L2、RGA、CPU和DRM四者共享同一塊物理內(nèi)存;用DRM Overlay Plane直顯替代X11協(xié)議層,消除顯示路徑上的最后一次搬運(yùn)。這一路線的目標(biāo)非常明確:讓每一幀像素只寫一次、只讀一次。兩條優(yōu)化線并行推進(jìn):DMA-BUF解決處理鏈路上的拷貝問(wèn)題;DRM Overlay Plane解決顯示輸出端的拷貝問(wèn)題。兩條線匯聚后,形成完整的零拷貝閉環(huán)。優(yōu)化后的數(shù)據(jù)流簡(jiǎn)化為一條單一的DMA-BUF fd傳遞鏈,每個(gè)模塊對(duì)同一塊物理內(nèi)存進(jìn)行原地操作:V4L2 MMAP(攝像頭DMA寫入物理內(nèi)存)→ RGA NV12→BGR(硬件blit,源virAddr→目標(biāo)fd,約3ms/路)→ CPU去畸變(cv::Mat構(gòu)造在DMA-BUF mmap指針上,零額外內(nèi)存分配)→ CPU拼接(9格鳥(niǎo)瞰布局+權(quán)重圖LUT融合+車模貼圖,約8ms)→ RGA fd→fd縮放(硬件DMA,約2ms)→ drmModeSetPlane(Overlay Plane硬件翻頁(yè)顯示,約0.1ms)放棄cv::imshow,直接調(diào)用`drmModeSetPlane`將DMA-BUF fd綁定到Overlay Plane,由顯示硬件按VSYNC掃描輸出。提交僅耗時(shí)約0.1ms,非阻塞,徹底消除X11中間層開(kāi)銷。以下數(shù)據(jù)均在米爾MYD-LR3576開(kāi)發(fā)板上實(shí)測(cè)獲得。測(cè)試條件:4路720P魚眼攝像頭,HDMI 2560×1440@60Hz輸出,DMA-BUF管線。三種方案關(guān)鍵指標(biāo)對(duì)比將DMA-BUF優(yōu)化方案與原始方案進(jìn)行并列對(duì)比,優(yōu)化的價(jià)值一目了然:DMS駕駛員監(jiān)測(cè)系統(tǒng)如果說(shuō)360環(huán)視是車輛「向外看」的眼睛,DMS(Driver Monitoring System)則是「向內(nèi)看」的眼睛。前者保障車輛周圍的環(huán)境安全,后者保障駕駛者本人的狀態(tài)安全——兩者共同構(gòu)成車載智能視覺(jué)系統(tǒng)的完整閉環(huán)。在米爾基于RK3576開(kāi)發(fā)板上,DMS系統(tǒng)基于Rockchip DMS SDK構(gòu)建,利用NPU的6TOPS算力進(jìn)行實(shí)時(shí)AI推理:- 輸入:MIPI CSI接口RGB攝像頭,分辨率1920×1080,安裝于駕駛位前方,對(duì)準(zhǔn)駕駛員面部。
- 推理引擎:RK3576內(nèi)置NPU,運(yùn)行DMS打包模型(rkdms_3576.data,約4.9MB),包含人臉檢測(cè)、關(guān)鍵點(diǎn)定位、屬性分析等多個(gè)子模型。
- 檢測(cè)功能:疲勞駕駛(閉眼檢測(cè))、打哈欠檢測(cè)、打電話檢測(cè)、抽煙檢測(cè)。
- 報(bào)警輸出:本地音頻文件播放,分類型觸發(fā)(fatigue.wav / yawning.wav / phone.wav/smoking.wav)。
DMS SDK輸出的檢測(cè)結(jié)果包含豐富的面部狀態(tài)信息,應(yīng)用程序可基于這些指標(biāo)自定義判定邏輯:雙系統(tǒng)同屏集成:360環(huán)視 + DMS在實(shí)際車載場(chǎng)景中,360環(huán)視和DMS需要同時(shí)呈現(xiàn)在駕駛員可見(jiàn)的屏幕上。我們利用HDMI 2560×1440@60Hz的完整分辨率,通過(guò)DRM Overlay Plane機(jī)制實(shí)現(xiàn)了左右分屏布局:將360環(huán)視和DMS同時(shí)運(yùn)行時(shí),RK3576開(kāi)發(fā)板的整體資源占用情況如下。這個(gè)「資源賬本」清晰地展示了異構(gòu)計(jì)算架構(gòu)的優(yōu)勢(shì)——不同類型的工作負(fù)載跑在不同類型的處理單元上,互不阻塞:- 端到端延遲從300ms降至約100ms:通過(guò)全鏈路DMA-BUF零拷貝,消除了從采集到顯示的5次內(nèi)存搬運(yùn)。徹底消除了GPU方案的波動(dòng)問(wèn)題,系統(tǒng)行為穩(wěn)定可復(fù)現(xiàn)。
- 雙視覺(jué)系統(tǒng)同屏集成:360環(huán)視與DMS駕駛員監(jiān)測(cè)在單塊2560×1440屏幕上左右分屏同時(shí)運(yùn)行,獨(dú)立進(jìn)程架構(gòu)保證了系統(tǒng)的模塊化和魯棒性。
- 異構(gòu)計(jì)算資源協(xié)同:360環(huán)視跑CPU+RGA,DMS跑NPU,GPU幾乎空閑。三種計(jì)算資源各司其職、并行不悖,充分發(fā)揮了RK3576異構(gòu)架構(gòu)的潛力。
在嵌入式平臺(tái)上構(gòu)建實(shí)時(shí)視覺(jué)系統(tǒng),算力通常不是第一瓶頸,數(shù)據(jù)搬運(yùn)才是。GPU能加速計(jì)算,但不能消除搬運(yùn)——搬運(yùn)轉(zhuǎn)嫁到GPU?CPU的PCIe/總線路徑上,甚至可能更慢。我們的優(yōu)化路徑從「用更快的計(jì)算單元」轉(zhuǎn)向「消滅不必要的數(shù)據(jù)移動(dòng)」,這個(gè)思維轉(zhuǎn)變是性能突破的根本原因。DMA-BUF和DRM是Linux生態(tài)系統(tǒng)為這類場(chǎng)景量身定制的零拷貝基礎(chǔ)設(shè)施。善用這些機(jī)制,在RK3576級(jí)別的嵌入式芯片上完全能夠構(gòu)建出滿足車規(guī)實(shí)時(shí)性要求的智能視覺(jué)系統(tǒng)。注釋:DMS 是使用的瑞芯微官方模型,使用需要申請(qǐng)license文件。