1. 端侧AI算力为什么是具身智能的“隐形瓶颈”
先讲一个我自己踩过的坑。去年做一台室内巡检小车,底盘、传感器、电机控制全都调好了,结果卡在算力选型上。一开始图省事,直接用了某款标称“8 TOPS”的开发板,心想跑个YOLOv5s部署个TensorRT怎么都够了。等真把多路相机数据灌进去才发现,端侧部署跟跑Demo完全是两码事——内存带宽、DLA/NPU调度、预处理开销,每一项都能把你的算力预期打回原形。
具身智能跟传统IoT设备最大的不同在于:它需要闭环。感知、决策、控制这三件事必须在本地实时完成,而不是把数据传回服务器再拿结果。车在跑、无人机在飞,一个决策周期拖到300ms,避障就变成了撞墙。所以端侧AI算力从来不是一个“跑不跑得动模型”的问题,而是“在功耗许可范围内,能不能跑完整个感知决策链路”的问题。
这个链路有多重?以一台车载巡检机器人为例:
- 3路以上摄像头输入,每帧需要畸变校正、缩放、归一化;
- 2D检测模型(YOLO系列或RTMDet系列)跑一遍,输出目标框;
- 如果要做抓取或精细操作,还得跑一个实例分割模型;
- 多目标跟踪(ByteTrack之类)需要CPU参与,不算NPU负载但极其吃内存;
- 局部路径规划随时在跑,这部分吃CPU和内存带宽;
- 最后才是底层电机控制,看起来最不起眼,但实时性要求最高。
所以选型的时候,绝对不能只盯着一个“TOPS”数字。TOPS只是峰值算力的理论上限,跟可持续算力、实际吞吐之间差着十万八千里。这也是为什么我觉得有必要把这两年端侧AI算力选型的实测经验整理出来——尤其是车载/机载这种对功耗、散热、体积都极度敏感的场景,踩坑成本比桌面端高太多了。
2. 主流端侧算力芯片方案盘点:从参数到生态的一次看清
先说清楚,这里讨论的不是“嵌入式MCU跑TinyML”,也不是“服务器GPU做边缘推理”,而是真正面向具身智能的端侧AI计算平台——能跑大模型推理、支持多路视觉输入、有完整软件栈的中高端算力芯片。
目前市面上常见的方案,我按实际使用体验分成四类。
2.1 NVIDIA Jetson系列:生态无敌,但要把功耗账算明白
Jetson Orin系列是绝大多数团队的第一选择,原因很简单:CUDA生态太成熟了,任何深度学习模型都能在PC上调试好再直接部署,迁移成本极低。Orin NX 16GB版本标称100 TOPS,实测跑YOLOv8m的TensorRT FP16版本,能做到50FPS左右。这在端侧里已经是相当能打的数据。
但有两个问题容易翻车。
第一,功耗不是标称的10W-25W那么简单。我实测过Orin NX在满载推理时的整板功耗,峰值冲到接近40W。如果散热设计跟不上,两分钟之内降频,帧率直接腰斩。车载场景如果是油车还好,电车或纯电池供电的设备就非常难受。
第二,Jetson的“TOPS”包含Tensor Core贡献的稀疏算力。实际部署时,稀疏推理需要模型结构配合,大多数情况下你只能用密集算力,粗算要打个五折。Orin NX的密集INT8算力大概在50-60 TOPS区间,这才是你真正能用的。
2.2 地平线征程系列:车规级真香,但定制化程度高
征程5/征程6在车端是主力。征程5标称128 TOPS,征程6系列更是把算力顶到560 TOPS。我接触征程5比较多,它最大的优势是功耗/算力比做得非常好看——同样跑BEV感知,整板功耗比Jetson Orin低30%左右。
但问题也很明显:它的工具链(OE包)是为智能驾驶场景高度定制的,跑通用检测模型没问题,一旦想部署点非常规结构(比如自研的Transformer变体),就会遇到算子缺失、需要手写自定义算子的情况。这件事对算法团队来说是个不小的功耗。
另外,地平线方案的开发板和个人开发者生态跟NVIDIA不是一个量级,资料少、社区少,遇到问题很多时候只能提工单。适合有实力、有耐心的团队,不太适合小团队或个人项目第一次做端侧。
2.3 华为昇腾系列:算力澎湃,但踩坑成本高
昇腾310/Atlas 200系列在机器人领域用得不算多,但在边缘计算、安防领域很常见。310标称22 TOPS INT8,实测跑多路视频分析非常稳定,而且华为的文档其实写得相当细,CANN的算子支持度也算不错的。
真正劝退的是两件事:一是开发环境相对封闭,MindSpore生态之外的东西需要额外适配;二是大部分模块不带散热,你得自己设计结构件,这对做机器人的团队来说又多了一道工序。不过如果你的场景和华为的生态高度契合,性能和性价比确实很高。
2.4 RK3588、Jetson之外的“第二梯队”:性价比之选
瑞芯微RK3588的NPU标称6 TOPS,很多人觉得不够看。但实际用下来,它的INT8推理吞吐比想象中好得多。我用RK3588跑过YOLOv5s,单路1080p能做到25-30FPS,对于轻量具身智能设备(比如桌面机械臂)完全够用。
更重要的是RK3588的价格只有Jetson平台的五分之一甚至更低,而且通用Linux生态(Debian/Ubuntu定制镜像)对搞ROS的人来说很友好。作为第一台原型机验证平台,RK3588的性价比无可替代。
2.5 四类方案横向对比表
| 维度 | NVIDIA Jetson Orin NX | 地平线征程5 | 华为昇腾310 | RK3588 |
|---|---|---|---|---|
| 标称算力 | 100 TOPS(含稀疏) | 128 TOPS | 22 TOPS | 6 TOPS |
| 实用算力(估) | 50-60 TOPS INT8 | 90-100 TOPS | 18-20 TOPS | 4-5 TOPS |
| 生态成熟度 | 极佳(CUDA) | 中等(OE定制) | 中等(CANN) | 良好(Linux通用) |
| 功耗表现 | 满载偏热 | 最优 | 中规中矩 | 优秀 |
| 开发难度 | 最低 | 中高 | 中 | 低 |
| 价格 | 高 | 高 | 中 | 低 |
这张表很重要的一点:实用算力不等于标称算力,标称数字看看就好,最终还是要拿自己的模型跑一轮实测。
3. 车载场景实测:两代平台的真实表现对比
车载是最典型的具身智能端侧场景。下面是我的两轮实测记录,分别用Jetson Orin NX和地平线征程5的改版方案,跑同一个目标检测与跟踪任务。
3.1 测试环境与评估方法
先交代测试条件,所有数据才有多考价值。
- 传感器:前视摄像头1080p@40FPS + 左右环视720p@30FPS
- 任务链路:YOLOv8m目标检测(基于Coco预训练微调)+ ByteTrack多目标跟踪 + 三路视频流并行解析
- 推理框架:TensorRT(Orin)/OE(征程5)
- 精度对比:以同一段30秒含行人、车辆、非机动车混合场景的视频作为基准,评估mAP@0.5,帧率按端到端(含预处理、推理、后处理)计算
- 功耗测量:用USB功率计测整板输入功率(不含屏幕、传感器),环境温度25度,不主动风冷
3.2 Jetson Orin NX 16GB实测数据
TensorRT FP16部署YOLOv8m,3路视频流并行处理,结果:
- 单路1080p端到端帧率:34FPS
- 三路并行后整体负载:NPU利用率约78,CPU约56%
- 整板功耗:满载状态下23W到38W波动,跟目标数量、后处理开销强相关
- 内存占用峰值:约12.3GB(16GB版本)
这个结果有个意外发现:NPU并不是瓶颈,瓶颈在数据预处理和后处理。YOLOv8m的输出头在批量较小的情况下,后处理的NMS(非极大值抑制)在CPU上的开销很大。我试过把后处理挪到GPU上,反而因为数据拷贝的开销更慢。最后还是靠优化NMS的算子实现、把批量推理打开,才把三路并行帧率从25FPS提到34FPS。
另外一个坑是CPU频率。Orin NX默认可能把CPU锁在较低频率以节省功耗,但一旦CPU成为瓶颈,整体帧率会非常难看。必须手动打开CPU的performance模式,同时注意温升——open性能模式之后功耗会涨4-5W。
3.3 地平线征程5实测数据
同一套模型,用OE工具链做INT8量化部署,结果:
- 单路1080p端到端帧率:38FPS
- 三路并行后整体负载:BPU(征程5的AI加速单元)利用率约70%,CPU约44%
- 整板功耗:满载18W到25W
- 内存占用峰值:约8.1GB
从纯性能数字上看,征程5在INT8量化后的表现优于Orin NX的FP16,而且功耗更低。但这背后的代价是量化过程相当折腾。我的模型里有几个自定义的检测头结构,OE的编译器在量化时直接报“不支持的slice/fusion组合”,最后只能把检测头回退到CPU执行,导致帧率损耗约10%。
另外OE工具链的量化校准过程比TensorRT“麻烦得多”。TensorRT的PTQ基本跑一遍校准数据就行,OE需要你自己实施跑校准流程,而且对输入数据分布的敏感性更高,同一批校准数据用两次结果可能差0.5%-1%的mAP。
3.4 车载场景的功耗与散热实战
车载环境最大的变数在散热。装车后,机舱温度在夏天能到60-70度,即使有空调引导,对于满载40W的Orin NX来说仍然很危险。我在某次长时间高温测试里,Orin NX连续工作40分钟后SoC温度冲到87度,频率开始下探,帧率从34FPS掉到22FPS。
解决方案也没多高深,就是一个字:余量。选型时至少给算力需求预留40%的余量,给功耗预算预留40%的余量,给散热设计预留40%的余量。三条线同时预留,才能保证产品在恶劣环境下不掉链子。
3.5 实测数据对照表
| 指标 | Orin NX 16GB | 征程5 |
|---|---|---|
| 单路帧率 | 34FPS | 38FPS |
| 三路总帧率 | 约102FPS | 约114FPS |
| 满载功耗 | 23-38W | 18-25W |
| 内存占用 | 12.3GB | 8.1GB |
| 整体开发周期 | 约3周 | 约6周(含量化调试) |
| 稳定性 | 高 | 中高 |
4. 机载场景实测:能上天的芯片,不只是看TOPS
无人机和车载有一条根本性的差异:对无人机来说,每多一克重量都是成本,每多一瓦功耗都是续航杀手。车载你可以背个大电池、装个风扇,机载不行。
4.1 机载算力的筛选逻辑
航空级设备跟车规级设备的最大区别在于:你对功耗的要求是“绝对”的,不是“相对”的。车载功耗38W属于“热”而已,机载功耗38W等于直接砍掉20%以上续航,甚至可能超过电源模块的承载能力。
所以在机载方案里,我第一步做的不是算力选型,是功耗预算拆分。假设一款中型工业巡检无人机,全机可用功率是150W,电机和飞控占70W,传感器(激光雷达+相机)占20W,剩下60W给计算平台。那么算力平台的功耗预算必须控制在45W以内——还要留10W给电源转换损耗和余量。
在这个约束下,Orin NX 16GB直接出局,除非你愿意把分辨率降到720p且只用两路输入,才有可能压到25W左右。
4.2 实测方案A:NVIDIA Jetson Orin Nano(轻量作图模式)
Orin Nano 8GB版本标称40 TOPS(稀疏),实际密集算力约20-25 TOPS,功耗在7W-15W之间。我用它跑单路1080p的YOLOv8s + 单路720p的语义分割模型(轻量版LiteSeg),结果:
- 检测任务:单路30FPS(FP16)
- 分割任务:720p 20FPS(FP16)
- 两路并行时整板功耗:12-16W
- 系统整体非常稳定,无降频
Orin Nano是目前机载场景里我觉得“卡在能用的临界点”的方案。只做2D视觉感知绰绰有余,一旦你想在上面跑一个轻量VLM(视觉语言模型)或者3D手势识别网络,就会明显力不从心。
4.3 实测方案B:RK3588(低功耗主力)
RK3588在机载场景反而出乎意料地好用。它的NPU虽然只有6 TOPS,但优势在于整板功耗能控制在4-8W,而且CPU性能强(4个A76大核)。实测单路1080p YOLOv5s 25FPS、单路720p语义分割18FPS,搭载一块5,000mAh 6S电池的无人机,续航只损失了大约12%。
另外RK3588支持硬解多路视频流,这个能力在车载和机载里被严重低估。它内置的VPU可以同时硬解8路1080p的H.264/H.265流,CPU占用几乎为零。相比之下,Jetson平台虽然也有硬件解码器,但API的使用门槛高不少,我在RK3588上调用硬解的开发量比Jetson少了至少一半。
4.4 机载场景的借鉴:能用的才叫算力
机载实测给了一个非常直观的结论:算力只有在功率预算内释放出来的部分才真正有用。你有一个150 TOPS的芯片,但功耗限制只能让它发挥三分之一性能,那实际可用算力就是50 TOPS,比你买一个中等算力但能全速运行的芯片效果还差——因为芯片本身的价格和体积都白费了。
所以我的建议是:机载选型时,把“每瓦有效帧率”(Frames Per Watt, FPW)作为首要指标,而不是TOPS。Orin Nano的FPW大约在2.0-2.5帧/瓦,RK3588的FPW在3.0-4.5帧/瓦,这能直接量化你在牺牲画质或模型复杂度的情况下获得了多少续航回报。
5. 厂商宣传里最容易被忽略的三个“算力陷阱”
这一章是纯避坑经验,每一条都是我或者身边同行拿真金白银换来的教训。
5.1 稀疏算力 vs 密集算力
NVIDIA和部分国产芯片厂商标注的TOPS,很多都是“稀疏算力”(Sparse TOPS),意思是模型里的权重和激活有一半是零时可以翻倍计算的算力。但稀疏推理需要特殊的模型训练方式(比如结构化剪枝、2:4稀疏约束),不是任何普通模型都能享受的。实际部署的时候,你几乎90%以上的情况用的都是密集算力。所以看规格书时,先找“Dense TOPS”或“密集INT8算力”这一行,没有就直接打五折算。
5.2 端到端帧率 vs 纯推理帧率
厂商喜欢标“XX模型推理帧率”,但那是纯NPU推理的时间,不含图像解码、缩放、通道转换、NMS后处理。我在多个平台上实测过,这四项加起来通常占端到端延迟的20%-40%。如果一个Demo标称“YOLOv8s 60FPS”,你端到端实测可能只有35-40FPS。
只要看到Demo,先问三个问题:
- 图像输入源是直接读文件还是实时摄像头流?
- 有没有包含输出解析和后处理?
- CPU端有没有同时跑其他任务(比如SLAM、路径规划)?
这三个问题如果不问清楚,买回来的开发板在真实机器人上可能连一半性能都跑不出来。
5.3 持续算力 vs 峰值算力
热设计决定了芯片能不能持续跑在峰值算力上。很多小尺寸模块,比如Jetson Orin NX,在高负载下几分钟就会因为温度墙降频。厂商标称的TOPS是在特殊散热条件(主动风扇+热管)下测出来的,你装在密封的机器人腔体里,根本不可能达到。
选型时,我会先看“thermal design power”下面的持续性能数据,而不是峰值。如果厂商没有给,就自己做了个快速测试:满负载推理跑30分钟,看帧率掉多少。掉幅大于15%,说明这个平台在这个散热条件下撑不住你当前的算法负载。
6. 选型方法论:从需求倒推芯片型号的四步流程
讲了这么多实测数据和避坑经验,最后给出一套我在实际项目里反复使用且验证有效的选型流程。
6.1 第一步:定义你的真实性能需求
不要先看芯片,先写自己的算法清单:
- 用什么模型(YOLO哪个版本、参数量多少)?
- 输入分辨率、帧率要求?
- 要不要多路并行(几路)?
- 除AI推理外,CPU还要跑哪些任务(SLAM、路径规划、状态机、ROS主节点)?
在这个阶段,先用自己的模型跑一次x86基准测试(在PC上用TensorRT跑),拿到单帧推理时间。然后估算端侧所需帧率,比如PC上3070跑YOLOv8m单帧10ms,端侧如果是40 TOPS的芯片,理论大概能跑到30-40ms/帧。再加30%的余量,就是你在这个平台上能获得的大致帧率。
6.2 第二步:核算功耗预算和散热条件
车载常用的是12V/24V电源,功耗预算可放宽到30-50W;机载必须做总功率拆分,控制在15-30W;如果是电池供电的地面机器人,续航要求决定了你只有多少功耗额度。散热条件同样关键:有没有主动风扇位置?能不能开通风口?腔体大小够不够装散热片?
这个步骤的核心输出是三个数字:功耗上限、散热能力等级、允许的体积重量。
6.3 第三步:锁定2-3个候选方案,主动做POC验证
不要凭参数买板子,每个候选平台租或借一两块开发板,跑一个最小闭环验证:实时视频流输入 + 目标检测 + 输出画框并打日志。记录三项数据就好:
- 端到端帧率(FPS)
- 整板功耗(W)
- 可以在主板上看到SoC温度(℃)
这三组数字一出来,选型就完成了80%。
6.4 第四步:做可落地性检查
最后查一遍这五件事:
- 软件栈是否支持你的模型结构(有没有自定义算子需求);
- 是否支持你要用的传感器接口(比如MIPI CSI、GMSL、CAN);
- 量产时的供货稳定性和单价(有的芯片两次采购差价能到30%);
- 有没有成熟的可参考的开源项目(这决定你的启动时间);
- 团队开发能力是否匹配(用的是TensofRT还是专用专属OE/CANN,学习成本完全不同)。
这个流程帮我在过去一年内避免了三起严重的选型回退风险。过去我的习惯是“挑算力最大的买”,现在变成了“先算功率、再找呼吸空间、然后才看算力”。
7. 实测过程中的意外问题与解法汇总
最后分享几个我在多次测试中反复遇到的典型问题,这些问题在你的项目里大概率也会撞上,提前打好预防针能省不少时间。
7.1 电源噪声导致NPU推理结果异常波动
这个坑很隐蔽。有一轮测试中,Jetson平台单路推理帧率从34FPS突然跳到12FPS,而且时不时报CUDNN执行异常。排查了很久,最后用示波器一测才发现,外部电源在NPU高负载时纹波高达120mV,超过了模块允许的范围,导致内部电压管理模块频繁触发保护。
解决办法也简单:换成质量更好的宽压电源模块,并在供电输入端并联大容量钽电容和去耦电容。从那以后,我所有的测试平台都标配一个靠谱的稳压模块,这块投入永远不亏。
7.2 内存带宽不足导致推理和路径规划互相拖累
车载系统里,CPU和NPU经常共用同一块内存。路径规划算法一旦需要访问大块地图栅格数据,就会跟推理争内存带宽,导致两边同时变慢。解决方案是:把推理用内存和CPU主任务内存做分区,或者给关键路径任务启动实时调度(比如用Docker的实时rcU或把进程绑定到大核)。
RK3588上这个问题更明显,因为它的NPU和CPU共享DDR,而DDR带宽本身就不算高。我的经验是尽量把内存频率调到最高档位(工控板BIOS里通常能开),并使用双通道内存配置,带宽能多个30%左右。
7.3 固件版本差异导致性能表现不一致
这个问题在国产芯片上尤其明显。同一颗征程5芯片,固件和工具链版本不同,性能差异能到10%-15%。我踩过最离谱的一次是:同一版本OE工具链,在不同批次的开发板上跑出完全不同的帧率,最后发现是一块板的BSP(板级支持包)版本过旧,NPU驱动没有开启最高频率档。
所以在正式测试之前,第一件事就是把板子的固件、驱动、工具链全部升级到厂商最新稳定版,并做一次基准测试记录存档——后面有任何异常,先对比基线。
7.4 摄像头数据格式与推理框架的衔接问题
很多摄像头默认输出NV12或YUYV格式,而推理框架需要RGB。如果直接在CPU端做颜色空间转换,一帧1080p大约要消耗2-3毫秒,三路就是近10毫秒,这账算下来很不划算。GStreamer或V4L2的硬件格式转换要善用,或者在网络模型输入端直接塞入TENSOR RT所兼容的输入格式。RK3588的RGA硬件转换模块就很好用,几乎零开销;Jetson平台则可以用VPI库或者定制CUDA kernel做转换。
实测下来,用硬件做格式转换之后,RK3588端到端帧率提升了18%,这个优化比换模型还划算。
7.5 边界情况测试比正常测试更重要
很多团队做评估时只测“理想场景”:光线充足、目标清晰、无遮挡、无抖动。但真实的具身智能产品一定会遇到极端光照、强抖动、低对比度目标、快速运动模糊。强烈建议在选型测试阶段就加入至少三组边界场景:
- 逆光强曝光场景(行人轮廓接近背景时漏检率);
- 低照度+运动模糊场景(夜间车辆跟随时检测框抖动幅度);
- 多目标瞬间涌入场景(后处理是否卡顿、是否丢跟踪ID)。
每一组边界测试都可能暴露算法、算力或框架层面的新瓶颈,这些场景下的性能才是产品的真实性能。
8. 给正在做具身智能硬件选型的朋友几条掏心窝的建议
聊了这么多实测数据和避坑结论,最后再分享几条我个人的经验和体会。
第一,选型不是一次性的决策,而是持续迭代的过程。第一台原型机用RK3588验证算法和逻辑,第二台样机换Orin Nano验证性能和功耗边界,第三台才确定最终量产方案。不要试图一步到位选个“终极芯片”,这会拖慢整个项目进度。
第二,算力芯片的“进入成本”(开发工具链学习时间、社区资料丰富度、可复用代码量)至少要跟“算力数字”放在同等重要的位置。对于小团队来说,一个开发周期短但算力稍弱方案,往往比一个算力强但需要三个月啃资料的方案更划算。
第三,散热设计和结构设计必须在选型前期就介入,不能后期兜底。选Orin NX还是RK3588,直接决定了你的结构里要不要预留两个风扇位、散热片高度、通风口面积,这些在整机设计阶段不好改。
第四,别迷信“跑分”。厂商给的TOPS、DMIPS、FLOPS都是理想实验室数据,只有自己拿真实算法、真实数据、真实工况跑出来的“端到端帧率+端到端功耗”,才是你做任何项目决策时的唯一可靠依据。我在项目初期专门建立了一个小型的选型实测脚本库,把常见模型、常用输入尺寸、几种关键传感器配置都自动化跑一遍,后续每个新平台进来,先跑同一个脚本套餐出基线数据,再谈选型。
第五,关注生命周期,不只看当前表现。芯片的软件支持周期很关键——你花三个月完成量产方案,不久后芯片如果宣布停产或者软件不再更新,整个项目的维护成本会非常痛苦。挑芯片的时候多看看厂商的长期支持计划,比看一两个技术指标重要得多。
我在端侧AI算力这个方向踩过的坑不算少,但也正因为这些坑,慢慢才形成了自己的一套选型打法:先算功率、再找呼吸空间、然后才看算力,最后用实际测试数据说话。这套方法可能不会让你选到性能最极致的芯片,但一定能帮你选到最不容易翻车的方案。做具身智能硬件本来就够难了,别让算力选型再给你上一课。