第4章:视觉Pipeline概览:从Sensor到显示,各模块功耗占比分析
做嵌入式视觉系统,我最常被问到的一个问题是:「功耗到底烧在哪了?」
很多人一上来就盯着算法优化,觉得神经网络是吃电大户。其实不然。我见过太多项目,辛辛苦苦把模型压缩了50%,结果整机功耗只降了5%。为什么?因为视觉Pipeline里,真正的「电老虎」往往藏在别处。
今天,我们就来拆一拆这条完整的链路:从Sensor采集,到ISP处理,再到显示输出。看看每一环到底吃了多少电。
4.1 视觉Pipeline的典型构成
一个标准的嵌入式视觉系统,通常包含以下阶段:
- 图像传感器(Sensor):光电转换,输出RAW数据
- MIPI接口传输:从Sensor到SoC的物理链路
- ISP处理:去噪、白平衡、色彩校正、缩放等
- 内存访问(DDR):帧缓冲、中间结果暂存
- 视觉算法:CNN、特征提取、目标检测等
- 显示输出:LCD/OLED驱动、MIPI DSI传输
嗯,这里要注意:不同应用场景下,各模块的功耗占比天差地别。比如一个1080p@30fps的安防摄像头,和一块4K@60fps的智能屏幕,它们的瓶颈完全不在一个地方。
4.2 各模块功耗占比实测数据
我拿一个典型的AI摄像头方案(Sensor: IMX335, SoC: RV1126, 分辨率: 1080p@30fps)来举例。这是我在一个智能门禁项目里实际测到的数据:
| 模块 | 典型功耗(mW) | 占比 | 备注 |
|---|---|---|---|
| 图像传感器 | 180~250 | 15% | 含模拟电路+ADC |
| MIPI CSI传输 | 50~80 | 5% | 2-lane MIPI @ 800Mbps |
| ISP处理 | 200~350 | 20% | 含3A统计、去噪、缩放 |
| DDR访问 | 300~500 | 30% | 帧读写+中间结果 |
| 视觉算法 | 250~400 | 25% | 轻量级CNN推理 |
| 显示输出 | 100~150 | 5% | MIPI DSI + 小尺寸LCD |
看到没?DDR访问居然占了30%,比算法推理还高。我当初第一次看到这个数据时也挺惊讶的。后来仔细一分析,发现每次帧数据从Sensor进来,经过ISP处理,再送到算法模块,中间要经过多次DDR读写。说白了,数据搬来搬去才是最耗电的。
核心结论:在大多数嵌入式视觉系统中,内存访问(DDR)和ISP处理是功耗的前两名,加起来往往超过50%。算法推理反而排第三。
4.3 不同分辨率下的占比变化
你可能会问:那如果分辨率变了呢?
我做过一个对比实验,同一个方案,分别跑VGA、1080p、4K三种分辨率。结果很有意思:
| 分辨率 | Sensor占比 | ISP占比 | DDR占比 | 算法占比 |
|---|---|---|---|---|
| VGA (640x480) | 25% | 15% | 20% | 35% |
| 1080p (1920x1080) | 15% | 20% | 30% | 25% |
| 4K (3840x2160) | 10% | 25% | 40% | 15% |
为什么会这样?
分辨率越高,数据量呈平方级增长。Sensor本身的功耗虽然也涨,但远没有DDR带宽需求涨得快。4K下,DDR占比直接飙到40%。这时候你再怎么优化算法,也省不出多少电。
我的经验:做高分辨率视觉系统时,第一件事不是优化模型,而是减少不必要的帧缓冲。比如ISP输出直接送给算法,中间不要存一帧到DDR再读出来。这个改动,我曾经在一个项目里直接省了120mW。
4.4 显示链路的隐藏功耗
很多人会忽略显示这一环。如果你做的是无屏设备(比如网络摄像头),那确实可以不管。但如果是带屏产品——比如智能门锁、车载仪表盘——显示功耗可能让你大吃一惊。
我做过一个带3.5寸LCD的视觉门铃。整机功耗约1.2W,其中LCD背光就占了400mW,加上显示驱动和MIPI DSI传输,总共接近500mW。占比超过40%。
你想想看,算法推理才200mW,显示却吃掉了一半。所以做带屏产品时,背光亮度调节、刷新率动态切换,这些才是降功耗的突破口。
避坑指南:我曾经在一个项目里,为了追求显示流畅度,把刷新率固定在了60fps。结果整机功耗超标。后来改成静态画面降帧到30fps,动态画面才切回60fps,功耗直接降了15%。
4.5 如何快速定位功耗瓶颈
说了这么多,你肯定想知道:拿到一个现成的视觉系统,怎么快速找出哪个模块最耗电?
我个人习惯用三步法:
- 看数据流:数一数每帧数据在DDR里读写了多少次。每多一次,就是几十毫瓦的代价。
- 测模块独立功耗:把Sensor关掉,只跑ISP和算法,看功耗变化。反过来,只开Sensor,关掉算法。这样一减,各模块的贡献就出来了。
- 关注带宽利用率:用性能计数器看DDR的实际带宽。如果利用率超过70%,那DDR基本就是瓶颈了。
举个例子。有一次我接手一个项目,整机功耗1.8W,要求降到1.2W。我用三步法一查,发现DDR带宽利用率高达85%,而且每帧数据在DDR里被读了3次。后来通过ISP直通模式(跳过中间帧缓冲),直接省了300mW。再配合算法量化,又省了200mW。最终稳稳达标。
4.6 小结
这一章我们拆解了视觉Pipeline的功耗分布。记住几个关键点:
- DDR访问往往是隐藏的功耗大户,别只盯着算法
- 分辨率越高,DDR占比越大,高分辨率下优先优化数据通路
- 显示背光不可忽视,带屏产品要重点优化
- 用三步法快速定位瓶颈,别靠猜
下一章,我会详细讲Sensor选型与功耗建模。到时候我会分享一个我自己用的Sensor功耗估算公式,保证实用。