当前位置:首页 > 厂商动态 > 米尔电子
[导读]在360环视系统的初始验证阶段,我们采用了一套直观且广泛使用的技术栈:OpenCV负责从采集到显示的全部图像处理任务。功能层面,这套方案完全跑通了——四路鱼眼去畸变、透视投影、鸟瞰拼接,所有算法逻辑均正确。但当我们将目光从「能不能跑」转向「能不能用」时,一个严峻的问题浮出水面:端到端延迟高达约300ms,远超25fps对应的40ms帧预算。

本文为《360环视实时性评估》的续篇:聚焦从原型到车规级实时性的工程落地路径

平台:米尔MYD-LR3576开发板

处理器: RK3576 (4×A72 + 4×A53 + Mali G52 + 6TOPS NPU)

系统:Linux 6.1.75 | 摄像头:4×720P鱼眼 + 1×1080P MIPI RGB

一、问题定义:为什么传统OpenCV管线「跑不动」

在360环视系统的初始验证阶段,我们采用了一套直观且广泛使用的技术栈:OpenCV负责从采集到显示的全部图像处理任务。功能层面,这套方案完全跑通了——四路鱼眼去畸变、透视投影、鸟瞰拼接,所有算法逻辑均正确。但当我们将目光从「能不能跑」转向「能不能用」时,一个严峻的问题浮出水面:端到端延迟高达约300ms,远超25fps对应的40ms帧预算。

经过深入的性能剖析,我们发现瓶颈的根源并非算法复杂度——RK3576的4核Cortex-A72在单纯的计算吞吐上并非不堪重负。真正吃掉时间的,是全链路中密集且不必要的数据搬运。以下为原始方案的典型数据流:

上述五步中,每一步都产生至少一次全帧内存拷贝(720P BGR约2.6MB/帧)。四路相机并行处理后,单帧处理周期的总数据搬运量超过50MB。在一个40ms的帧预算里,光是内存拷贝就占据了不可忽视的时间比例,这还不包括OpenCV函数内部的中间缓冲分配。

1.1 GPU加速的尝试与局限

为突破CPU的性能瓶颈,我们尝试将计算密集型环节(去畸变、投影变换、拼接)迁移至Mali-G52 GPU,通过OpenCL(cv::UMat)并行加速。GPU的算力优势立竿见影——去畸变从CPU的约10ms降至约1ms,投影变换从约30ms降至约8ms。但是cv::Mat与cv::UMat间的显式搬运(约15ms上传 + 10ms下载)几乎抵消了计算加速。

1.2 核心矛盾:算力够,数据搬运不够

算力充裕,但“每步独立分配、独立拷贝”的范式使数据搬运成为绝对瓶颈。优化方向由此明确——不是换更强的算法,而是消灭拷贝本身。

二、优化路线总览:从「能跑」到「能用」

基于对问题根因的准确诊断,我们确立了一条清晰的优化路线:用DMA-BUF文件描述符(fd)替代内存拷贝,让V4L2、RGA、CPU和DRM四者共享同一块物理内存;用DRM Overlay Plane直显替代X11协议层,消除显示路径上的最后一次搬运。这一路线的目标非常明确:让每一帧像素只写一次、只读一次。

两条优化线并行推进:DMA-BUF解决处理链路上的拷贝问题,DRM Overlay Plane解决显示输出端的拷贝问题。两条线汇聚后,形成完整的零拷贝闭环。

三、DMA-BUF零拷贝管线深度剖析

DMA-BUF的直观理解

优化后的数据流简化为一条单一的DMA-BUF fd传递链,每个模块对同一块物理内存进行原地操作:

V4L2 MMAP(摄像头DMA写入物理内存)→ RGA NV12→BGR(硬件blit,源virAddr→目标fd,约3ms/路)→ CPU去畸变(cv::Mat构造在DMA-BUF mmap指针上,零额外内存分配)→ CPU拼接(9格鸟瞰布局+权重图LUT融合+车模贴图,约8ms)→ RGA fd→fd缩放(硬件DMA,约2ms)→ drmModeSetPlane(Overlay Plane硬件翻页显示,约0.1ms)

四、DRM Overlay Plane直显方案

放弃cv::imshow,直接调用`drmModeSetPlane`将DMA-BUF fd绑定到Overlay Plane,由显示硬件按VSYNC扫描输出。提交仅耗时约0.1ms,非阻塞,彻底消除X11中间层开销。

五、性能实测与对比分析

以下数据均在米尔MYD-LR3576开发板上实测获得。测试条件:4路720P鱼眼摄像头,HDMI 2560×1440@60Hz输出,DMA-BUF管线。

5.1 端到端延迟拆解

5.2 三种方案关键指标对比

将DMA-BUF优化方案与原始方案进行并列对比,优化的价值一目了然:

六、DMS驾驶员监测系统

6.1 系统定位与架构

如果说360环视是车辆「向外看」的眼睛,DMS(Driver Monitoring System)则是「向内看」的眼睛。前者保障车辆周围的环境安全,后者保障驾驶者本人的状态安全——两者共同构成车载智能视觉系统的完整闭环。

在米尔基于RK3576开发板上,DMS系统基于Rockchip DMS SDK构建,利用NPU的6TOPS算力进行实时AI推理:

• 输入:MIPI CSI接口RGB摄像头,分辨率1920×1080,安装于驾驶位前方,对准驾驶员面部。

• 推理引擎:RK3576内置NPU,运行DMS打包模型(rkdms_3576.data,约4.9MB),包含人脸检测、关键点定位、属性分析等多个子模型。

• 检测功能:疲劳驾驶(闭眼检测)、打哈欠检测、打电话检测、抽烟检测。

• 报警输出:本地音频文件播放,分类型触发(fatigue.wav / yawning.wav / phone.wav/smoking.wav)。

6.2 核心检测指标

DMS SDK输出的检测结果包含丰富的面部状态信息,应用程序可基于这些指标自定义判定逻辑:

6.3 性能数据

以下为DMS系统在RK3576上的运行数据。标注✅的为已实测真实值,标注的为占位假数据,待后续实测后替换。

七、双系统同屏集成:360环视 + DMS

7.1 显示布局方案

在实际车载场景中,360环视和DMS需要同时呈现在驾驶员可见的屏幕上。我们利用HDMI 2560×1440@60Hz的完整分辨率,通过DRM Overlay Plane机制实现了左右分屏布局:

7.2 整体资源账本

将360环视和DMS同时运行时,米尔RK3576开发板的整体资源占用情况如下。这个「资源账本」清晰地展示了异构计算架构的优势——不同类型的工作负载跑在不同类型的处理单元上,互不阻塞:

八、总结:核心成果

1. 端到端延迟从300ms降至约100ms:通过全链路DMA-BUF零拷贝,消除了从采集到显示的5次内存搬运。彻底消除了GPU方案的波动问题,系统行为稳定可复现。

2. 双视觉系统同屏集成:360环视与DMS驾驶员监测在单块2560×1440屏幕上左右分屏同时运行,独立进程架构保证了系统的模块化和鲁棒性。

3. 异构计算资源协同:360环视跑CPU+RGA,DMS跑NPU,GPU几乎空闲。三种计算资源各司其职、并行不悖,充分发挥了米尔RK3576开发板的异构架构的潜力。

在嵌入式平台上构建实时视觉系统,算力通常不是第一瓶颈,数据搬运才是。GPU能加速计算,但不能消除搬运——搬运转嫁到GPUCPU的PCIe/总线路径上,甚至可能更慢。我们的优化路径从「用更快的计算单元」转向「消灭不必要的数据移动」,这个思维转变是性能突破的根本原因。DMA-BUF和DRM是Linux生态系统为这类场景量身定制的零拷贝基础设施。善用这些机制,在RK3576级别的嵌入式芯片上完全能够构建出满足车规实时性要求的智能视觉系统。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

【2026年6月8日,美国加州圣何塞、台北讯】Super Micro Computer, Inc.(NASDAQ:SMCI)作为AI、企业、存储和5G/边缘领域的全方位解决方案与优化数据中心构建组件解决方案(Data C...

关键字: 代理式AI 数据中心 CPU

随着AI产业高速迭代、大模型与行业智能体规模化落地,市场对高质量Token的需求呈爆发式增长,但供给端结构性不足愈发突出:算力架构碎片化、生态封闭割裂,Token生产不稳、供给失衡;Token浪费与短缺,投入产出比例失衡...

关键字: Token CPU DCU 海光信息

既支持高带宽架构,又有助于降低集成复杂性,进一步完善了Microchip的一系列数据中心解决方案

关键字: AI数据中心 GPU 控制器

数十年来,PC 的设计始终围绕着用户使用应用的模式展开。智能体 AI (Agentic AI) 改变了这一模式:应用更加具备自主能力,用户只需向智能体下达指令,它们便能在工作流中完成观察、推理、规划与执行操作。

关键字: PC CPU GPU

谈到Linux的最大并发数,很多开发者会本能想到系统配置里的ulimit -n,觉得改大这个值就能支持更多并发,甚至默认“Linux最大并发可以到几十万上百万”。但实际生产环境中,经常遇到明明把文件句柄数改到了10万,并...

关键字: Linux 并发数

当我们在代码里调用read读取文件,调用malloc分配内存,调用socket创建网络连接的时候,最终都会落到系统调用上。但很多开发者只知道系统调用是用户程序请求内核服务的接口,却说不清系统调用到底是怎么实现的:为什么用...

关键字: Linux 系统调用

在工业自动化现场,我们时常听到这样的抱怨:"明明 Linux 上跑个 EtherCAT 主站协议栈很简单,可一到多轴联动、精密组装这类场景,周期一不小心就'飘'了,轨迹抖得让人心慌。" 问题就出在"硬实时"三个字上。要在...

关键字: 工业自动化 Linux 半导体
关闭