1、硬件选型误区:CPU vs GPU vs NPU,算力不是唯一标准,内存带宽与接口协议(MIPI/USB)的坑

做嵌入式视觉这几年,我见过太多人一上来就问:「这个芯片多少TOPS?」。好像算力高了,一切问题就都解决了。

说实话,这想法太天真了。我刚开始做项目时也犯过这个错,选了个标称4TOPS的芯片,结果跑个VGA分辨率的模型都卡成PPT。后来才发现,算力只是冰山一角。

1.1 算力迷信:TOPS到底骗了多少人?

先说说TOPS这个数字是怎么来的。厂商标称的TOPS,通常是在特定条件下测出来的——比如INT8精度、特定网络结构、理想散热环境。你实际用起来,能跑到标称值的60%就算不错了。

我举个例子。某款NPU标称2TOPS,但它的数据搬运路径很长。每次推理前,得先把图像从传感器搬到DDR,再从DDR搬到NPU内部SRAM。这一来一回,延迟就上去了。实际跑YOLOv3 tiny,帧率还不如一个优化好的GPU。

⚠️ 避坑指南: 我曾经被一个芯片的「4TOPS」宣传语忽悠过。选型时只看算力,没注意它的内存带宽只有8GB/s。结果跑720p的模型,带宽直接成了瓶颈,算力利用率不到30%。后来换了个2TOPS但带宽32GB/s的芯片,反而跑得更快。

1.2 CPU vs GPU vs NPU:谁才是你的菜?

这三者的定位完全不同,你想想看:

  • CPU:适合做控制、预处理、后处理。比如图像缩放、颜色空间转换、非极大值抑制(NMS)。这些任务逻辑复杂,但计算量不大。
  • GPU:适合做并行计算密集的任务。比如传统视觉算法(滤波、特征提取)、大模型推理。但功耗高,散热是个大问题。
  • NPU:专门为神经网络推理设计的。功耗低、效率高,但灵活性差。换个网络结构可能就得重新适配。

我个人习惯的做法是:预处理和后处理放CPU,核心推理放NPU。如果NPU不支持某些算子(比如自定义的激活函数),再考虑用GPU或CPU兜底。

处理器类型 优势 劣势 典型场景
CPU 灵活、生态好 并行计算弱 控制、预处理、后处理
GPU 并行计算强 功耗高、成本高 传统视觉、大模型
NPU 能效比高、专用性强 灵活性差、适配成本高 神经网络推理

1.3 内存带宽:被忽视的隐形杀手

算力再高,数据喂不进去也是白搭。内存带宽决定了数据从DDR搬到计算单元的速度。

我算一笔账给你看。假设你要处理一张1920x1080的RGB图像,每帧数据量大约是1920*1080*3 ≈ 6MB。如果帧率是30fps,那每秒需要搬运的数据量就是6MB*30 = 180MB。这还只是原始图像,还没算模型权重和中间特征图。

实际项目中,模型权重动辄几十MB,中间特征图也可能有几MB。如果内存带宽不够,计算单元就得干等着数据搬运。这就是所谓的「内存墙」问题。

💡 经验之谈: 选型时,我建议你关注两个指标:
1. 内存带宽:至少是算力需求的2倍以上。
2. 内存类型:LPDDR4X比DDR3带宽高不少,但成本也高。根据项目预算权衡。

1.4 接口协议的坑:MIPI vs USB

摄像头接口这块,坑特别多。我遇到过最典型的问题就是:选了个MIPI接口的摄像头,结果主控的MIPI CSI接口只支持2-lane,而摄像头需要4-lane才能跑满帧率。

MIPI和USB的区别,说白了就是:

  • MIPI:专为摄像头设计,延迟低、带宽高、功耗低。但布线要求高,走线长度有限制(一般不超过30cm)。适合板级集成。
  • USB:通用性强、即插即用、传输距离远。但延迟高、带宽共享(USB 3.0理论5Gbps,实际能到3Gbps就不错了)。适合原型验证或外接摄像头。

我建议你这样做:

  1. 量产项目:优先用MIPI。注意检查主控支持的lane数(2-lane还是4-lane),以及每个lane的速率(比如1.5Gbps/lane)。
  2. 原型验证:可以用USB摄像头,方便调试。但要注意USB带宽是否够用——比如同时接两个1080p@30fps的摄像头,USB 3.0可能就扛不住了。
⚠️ 避坑指南: 我曾经在一个项目中用了USB 2.0接口的摄像头,结果跑VGA分辨率都掉帧。后来一查,USB 2.0理论带宽只有480Mbps,实际能用的也就200-300Mbps。而一个VGA@30fps的YUV图像就需要约110Mbps,再加上协议开销,带宽直接吃满。所以,千万别用USB 2.0做视觉项目,至少得上USB 3.0。

1.5 选型清单:我踩过的坑都在这了

最后,我整理了一份选型检查清单,你照着做基本不会出大问题:

  • 算力:别只看TOPS,要看实际推理帧率。最好拿你的模型在目标芯片上跑一下。
  • 内存带宽:计算你的数据吞吐量,确保带宽有30%以上的余量。
  • 接口协议:MIPI注意lane数和速率;USB注意版本和带宽共享。
  • 散热:GPU和高端NPU发热严重,别忘了算散热方案的成本。
  • 生态:SDK是否完善?有没有现成的模型转换工具?社区活跃吗?

嗯,硬件选型这事,说白了就是「木桶效应」。算力再高,其他短板也会拖后腿。我建议你多花点时间做前期调研,别急着下单。毕竟,芯片买回来焊上去,再想换可就麻烦了。