做边缘端AI选型这件事,我见过太多人一上来就问“哪款芯片算力高”,然后拿一堆 TOPS 参数在桌面上比大小。这个方向本身就容易被带偏。边缘端的特殊性在于,算力只是无数约束条件中的一个——功耗、体积、时延、价格、开发工具链、散热环境,每一项都可能直接砍掉一半的候选芯片。所以我在实际项目里一直坚持的思路,是先把场景定死,再反推芯片:场景决定了输入类型、时延要求、功耗预算和成本预期,这些全是硬约束,而芯片的 TOPS 反而是最后才来填的那个空。这篇文章会按这套方法论,把边缘端 AI 算力选型的完整路径拆开讲一遍,包括场景分层、关键指标、反推流程,以及我在真实项目中踩过的那些坑。内容适合做边缘 AI 盒子、工业视觉、智能终端、低功耗设备这类方向的软硬件工程师,也适合正在纠结第一块开发板选什么、想从零开始入门边缘端 AI 的同学参考。
1. 先给场景分级,再谈芯片
1.1 边缘端AI场景可以粗略分成四个族
很多朋友找我咨询选型,第一句话就是“我要做个AI盒子,上RK3588行不行”。我会反问一句:你这盒子是放在室内还是室外?用电池还是电源适配器?要同时看几路视频?画面里是检测人还是检测焊缝裂纹?因为这几个问题的答案,基本已经把芯片限定在一个很小的范围内了。边缘端 AI 不像云端,可以拿几十块显卡去堆算力。边缘项目一定有一个固定的物理形态、功耗边界和时延要求,所有技术选型都得在这些约束下做。
我习惯把常见场景分成四个族,每个族对应一个算力范围和平台类型:
| 场景族 | 典型应用 | 参考算力范围 | 代表平台 | 核心约束 |
|---|---|---|---|---|
| 超低功耗语音/传感 | 唤醒词、振动监测、声纹识别、异常音频检测 | 小于0.1 TOPS | ESP32-S3、STM32N6、带NPU的Cortex-M系列 | 电池寿命、成本、体积 |
| 轻量视觉识别 | 扫码、OCR、简单目标检测、人脸门禁 | 0.5~1 TOPS | RV1106、RV1103、君正T41、全志V853 | 图像预处理、单位成本 |
| 多路视频结构化 | 园区安防、客流统计、多路视频分析 | 2~6 TOPS | RK3566、RK3568、RK3588、晶晨A311D、Jetson Orin Nano | 编解码路数、内存带宽 |
| 边缘大模型/复杂多模态 | 本地语言模型、姿态估计、密集检测、视频理解 | 20 TOPS以上 | Jetson Orin NX/AGX、高端定制模组 | 内存容量、持续散热、模型优化 |
这个分层不是按芯片价格排的,而是按“这个场景到底在算什么”来排的。语音唤醒和振动监测这类任务,模型可能只有几MB,一秒钟只推理几次,算力需求极低,真正难的是把功耗压到毫瓦级别,让设备能靠电池活几个月。轻量视觉识别场景通常只需要单路视频输入,跑一个几M参数的检测或分类模型,对吞吐要求不高,但非常在意单板成本和量产稳定性。多路视频结构化是边缘AI盒子最典型的应用,市场上有大量产品形态,比如4路NVR分析盒子、工地安全帽检测、工厂流水线质检,这类场景要同时处理多路视频流,对ISP、编解码器、NPU和内存带宽都有综合要求。
边缘大模型是这两年新出现的需求,不少客户开始在本地跑语音对话、知识库检索、多模态理解这类任务。单说算力,这些模型把INT8量化以后依然可能要求超过20 TOPS,而且内存带宽和内存容量成了更大的瓶颈。很多时候不是没有芯片能算,而是开发板价格已经超过客户整机预算。
1.2 功耗、时延和体积,反过来怎么限定芯片选择
从场景分层跳出来看,真正决定芯片的往往不是“要算的模型有多大”,而是“设备放在什么环境里,谁给它供电,人能不能等它出结果”。我举三个真实约束:
第一个是功耗。一个采用18650电池供电的无线监测设备,如果电池容量2600mAh,要连续工作三个月,那平均工作电流就要压到微安到毫安级别。哪怕RK3588算力再强,整板功耗轻松十几瓦,在这个场景里连候选资格都没有。这个时候你能选的只有MCU级别或者低功耗视觉SoC,因为它们可以深度睡眠、事件唤醒、快速推理后再睡回去。
第二个是时延。人脸闸机从相机采图到闸门动作,通常要求400ms以内完成,其中还包含抓拍、活体检测、特征比对、继电器动作的时间。如果把时间预算拆开,留给NPU推理的可能只有100ms。工业场景更苛刻,比如瓶盖检测按生产线节拍走,一个产品在相机下方停留的时间可能只有0.5秒,错过就到了下一个工位。这类场景要求你用“帧预算”去倒推算力,而不是凭感觉选“越大越好”的芯片。
第三个是体积和散热。无风扇的密封外壳是边缘设备最常见的形态,因为现场有粉尘、有油污、可能还要IP65防护等级。一个装了被动散热器的RK3588,在环境温度35摄氏度下能稳定输出的持续算力,和它广告页上的峰值6 TOPS,往往是两个数。后续我会专门讨论持续算力和峰值算力的差别。总之,场景先定了功耗墙、时延墙、散热墙,芯片是在这三堵墙之间找生存空间。
2. 算力选型必须看懂的四个关键指标
2.1 纸面TOPS不是全部:INT8、FP16、FP32的算力差异
很多人选芯片就只看一个参数,叫TOPS。这个数字本身没什么问题,问题出在它默认的前提上。TOPS是Tera Operations Per Second,每秒万亿次操作。但如果厂商没有说明是在什么数据类型下测出来的,这个数字的参考价值就得打个折扣。
边缘端推理芯片宣传的TOPS,绝大多数是指INT8定点算力。INT8就是每个操作数用8bit来表示,计算快、省内存、省带宽,但精度比浮点低。如果换成FP16半精度,同一颗芯片的算力通常只有INT8的一半甚至更低;换成FP32单精度,还会再掉一大截。可以用一张表和一张图来理解不同数据类型的差异:
| 数据类型 | 位宽 | 典型用途 | 对算力的影响 |
|---|---|---|---|
| INT8 | 8bit | 边缘端推理主力,量化后的AI模型 | 同硬件下算力最高 |
| FP16 | 16bit | 精度敏感推理、部分训练微调 | 通常为INT8算力的一半左右 |
| FP32 | 32bit | 训练、高精度计算 | 通常远低于INT8算力 |
| FP64 | 64bit | 科学计算、HPC | 边缘端基本不用 |
这就能解释一个常见困惑:同样的模型,用FP32在PC上跑,可能一张消费级显卡能跑到100FPS,但到了边缘设备上,一旦量化成INT8,帧率居然没有大幅下降,甚至更高。原因就是边缘芯片的算力高度集中在INT8上,它压根为浮点准备的计算单元就很少。所以你在算“芯片能不能跑这个模型”的时候,默认应该按INT8的口径去算,除非模型本身精度对量化特别敏感,那就要预留FP16或者混合精度的余量。
2.2 内存带宽:被忽略的隐形瓶颈
TOPS决定的是“芯片能算多快”,内存带宽决定的则是“数据能不能及时喂给计算单元”。边缘端AI很多场景是视频流,每一帧图像从ISP出来要搬运到内存,预处理后要搬运到NPU,NPU算完的特征图要搬运回CPU做后处理,最后的检测结果还要叠加到视频流上编码输出。这些动作全部要走DRAM总线。
举个具体数字。一个1080p的检测模型,输入图像3MB左右,中间层的特征图每次推理可能要读写几十MB。假设模型每帧平均搬运60MB数据,跑25FPS,那一秒钟就需要1.5GB/s的带宽。如果你选的低端板子用的是LPDDR3,带宽只有4GB/s左右,那么光模型推理的数据搬运就占掉了将近四成总线资源,再加上视频编解码、网络传输、系统进程,总线很容易成为瓶颈。很多“算力明明够,但实际FPS就是上不去”的案例,排查到最后都是DDR带宽被打满,NPU在空转等数据。
所以选型时我不仅看芯片的TOPS,还会看这颗芯片官方Demo板配的是什么内存。同一颗RK3588,配LPDDR4X和配DDR3,多路视频分析的实际性能可以差出不少。产品量产时不能只为省几块钱去砍内存带宽,否则功能验证阶段会不断返工。
2.3 NPU利用率和算子覆盖度,比宣传TOPS更真实
厂商标称的TOPS,是在完全理想的情况下测出来的,实际工程里能用到一半就要谢天谢地。原因主要有三个。
第一是算子覆盖度。TOPS是芯片峰值算力,但你跑的网络里如果有一些NPU不支持的算子,比如某些特殊激活函数、动态尺寸的Resize、非固定的循环结构,这些运算会被“回退”到CPU上去执行。CPU算力相比NPU低一个数量级,一个模型里哪怕只有5%的算子掉到CPU上,整个推理延迟可能直接翻倍。所以选芯片前要做算子兼容性检查,把你的模型在目标工具的转换日志里跑一遍,看看有多少层被标成“CPU fallback”。
第二是NPU利用率。很多NPU是类似多核DSP的架构,对网络结构的形状、通道数、卷积核大小非常敏感。某些网络结构在A家NPU上利用率很高,换到B家就低得离谱。这不是芯片不行,而是架构匹配度的问题。所以最终选型一定要在你实际要跑的模型上做benchmark,而不是拿厂商的跑分数据来推断。
第三是数据搬运开销。NPU不是直接从内存读原始图像的,它需要一个DMA或者专用的数据搬运引擎把输入数据切成NPU想要的排布格式。这个过程本身就消耗时间和总线带宽。小模型尤其明显,计算时间可能只有5ms,但数据准备时间还要3ms,整体效率直接从宣传的80%掉到60%。
2.4 外设资源和开发工具链,决定项目交付速度
芯片不能只看算力,还要看它周围那圈东西合不合你的项目用。举几个真实案例电路设计时我踩过的坑:需要接4路模拟摄像头,但芯片只有一个MIPI CSI接口,得另外加视频解码芯片和转换器,成本和复杂度立刻上来;设备要做工业远程配置,需要RS485接口,但开发板没有现成的,为了一个串口去改核心板,项目节奏直接被打乱;现场要支持PoE供电,可网口根本没有PoE供电能力,又要加一个外部模块。这些问题如果等到画完PCB再发现,返工成本是灾难级的。
另外就是开发工具链。边缘端AI芯片不是买回来就能跑的,厂商SDK的成熟度、模型转换工具的完善度、文档和社区资料的数量,直接影响你的交付周期。比如Rockchip有RKNN-Toolkit,地平线有OpenExplorer,Jetson有JetPack和TensorRT生态,这些工具的易用性和算子支持范围差异很大。小团队选型的时候,一定把“开发套件能帮我少踩多少坑”算进决策成本里,而不是只盯着BOM里那颗芯片的单价。
3. 从“一个具体场景”出发的完整反推流程
3.1 五步法:从输入输出到芯片选型
我现在做一个新项目,不会直接去翻芯片手册,而是严格按下面这五步走一遍。这套流程花了几个项目才固定下来,每一步都能砍掉一批候选,比拿芯片列表硬比参数高效得多。
第一步,定义输入输出。搞清楚设备接什么传感器、输出什么结果。摄像头分辨率多少、帧率多少、是单路还是多路;输出是继电器信号、TCP上报、还是本地显示。这一步的结果会直接影响对编码器、ISP、GPIO和网络接口的要求。
第二步,估算计算强度。确定大概的网络结构后,查它的FLOPs或MACs,再乘上帧率,得到一个每秒计算量。这个数字和芯片的TOPS对比时,要预留至少20%到30%的余量,同时把NPU实际利用率按50%到60%来折算。这就是我常说的“纸面防御系数”,后面案例里我会具体算一遍。
第三步,设定功耗与散热边界。明确设备是电池供电还是市电供电,外壳是密封还是有风扇,允许的最大整机功耗是多少。这个步骤会直接淘汰掉一大半大算力芯片。
第四步,列出外设清单。把摄像头接口、显示屏、网口数量、串口、GPIO、USB、SD卡、4G模块全部列出来,然后逐个去对候选芯片的原生接口和核心板引出情况。差一个外设,可能就要多加一颗转接芯片,这个成本也要算进选型评价里。
第五步,做交集筛选并进入实测。把前几步的硬约束叠加在一起,得到两到三块候选芯片,然后买开发板,在上面跑你真实的模型和真实的输入源。这是唯一能验证“纸面算力”和“真实体验”之间差距的方法。
3.2 一个可复现的例子:安全帽检测边缘盒子
我用一个非常典型的项目来说明这套流程怎么落地:做一个工地安全帽检测边缘盒子,单路1080p摄像头输入,25帧每秒实时检测,检测结果通过RTSP视频流叠加框和串口消息输出,要求整机延迟不超过200ms。
第一步。输入:单路1080p@25fps,网络摄像头通过以太网接入;输出:RTSP叠加视频流加串口报警。这决定了芯片必须带硬件视频编码器,至少支持1080p@25的H.264编码,不能全靠CPU软编。
第二步。选择模型。这个场景检测目标明确,我选YOLOv5s,输入分辨率640×640,它的计算量大约是8.2 GFLOPs,折算成MACs大约是4.1 GMACs。一秒25帧,就是每秒102 GMACs,也就是0.102 TMACs。如果芯片标称0.5 TOPS,按MACs口径理解就是0.5 TMACs每秒,再看NPU实际利用率大概率只有50%到60%,那有效算力就是0.25到0.3 TMACs。0.102除以0.3,大约占用三成多,理论上能跑,但已经没有太多余量了,而且还没算ISP缩放、前后处理、编解码的开销。所以单路场景,我会直接跳过RV1106这类0.5 TOPS平台,把目标放在1 TOPS以上。如果是两路视频,就直接上RK3566或者RK3588。
第三步。功耗和散热。盒子用12V电源适配器供电,放在工地临时板房的弱电箱里,环境温度可能35摄氏度以上,不能有风扇,否则粉尘会堵死散热口。这个条件下,RK3588满负载约10到12W,被动散热会非常吃力,大概率要降频运行。于是再往下一档,RK3566大约3到5W,或RK3568约4到6W,被动散热相对容易压得住。这一步直接决定了最终平台锁定在中端SoC,而不是旗舰。
第四步。外设清单。需要一路百兆或千兆以太网接摄像头和平台;一个RS485口接报警器;一个HDMI或CVBS接口做本地显示;一个USB口做调试和升级;还要有至少2GB内存跑系统。这些接口在RK3566/RK3568的核心板上基本都有引出,BOM改动很小。如果是Jetson平台,虽然算力有富余,但单板价格几乎是RK平台的十倍以上,还要单独解决电源和散热,在这个项目里属于过度设计。
第五步。把RK3566和RK3568放进同一个测试环境,跑同一个YOLOv5s INT8模型,记录三组数据:NPU推理耗时、CPU后处理耗时、整体功耗。最终实测RK3566单路25FPS没问题,NPU占用在40%左右,系统很从容。这个实测结果一出来,选型就基本锁死了。
3.3 交叉验证的实测方法
纸上算完不算完,我强烈建议在做选型结论前,再走一遍交叉验证。具体方法是先在PC上用ONNX Runtime或者TensorRT把模型跑到一个可接受的精度和速度,确认模型本身没有问题,然后把同一份模型通过厂商的转换工具部署到目标开发板上,对比推理精度、帧率、延迟和功耗。
我在实际项目中会做一张对比记录表,固定住输入源、分辨率、帧率、模型版本,然后记录PC端数据、开发板端数据、量化前后mAP差异。这张表也是后续跟客户或领导汇报选型结论的依据。如果某个候选芯片在关键指标上明显落后,直接淘汰,不用犹豫。
这一步有个容易忽略的点:一定要把NPU的频率档位、CPU的调度策略、散热条件也记录在案。我见过团队换了个散热环境,同一块开发板FPS从20掉到10,还以为是芯片个体差异,其实是被动散热在高温环境下触发降频了。测试环境不稳定,选型结论不可靠。
4. 常见问题与实战排查:那些选型时看不见的坑
4.1 模型转换和算子兼容的坑
边缘端AI项目里,模型转换是最容易卡壳的环节。PyTorch模型转ONNX再转厂商格式,每一步都可能翻车。我遇到最多的是三个问题。
第一是动态shape问题。训练时模型输入是任意尺寸,ONNX导出后如果保留动态维度,在NPU转换工具里经常直接报错。解决办法是在导出ONNX时固定输入尺寸,或者用Resize把预处理放到模型外部。
第二是算子不兼容。比如某些Transformer结构里的GELU激活、动态卷积、非对称Padding,NPU工具链不一定支持。解决办法是能替换的算子替换掉,替换不了就把这部分留在CPU上跑,但要认真评估它带来的延迟开销。
第三是转换工具链版本问题。厂商的工具链更新很快,不同版本对算子支持范围差异很大。我的习惯是尽量用芯片厂商最新稳定版工具链,并且在转换前先跑一遍官方的模型库,确认工具链本身是通的,再转自己的模型。这样能把“芯片不支持”和“我的模型写法太特殊”两个问题区分开。
4.2 INT8量化精度掉点的问题
边缘端芯片的大算力基本都靠INT8,但INT8量化经常带来精度损失,尤其在检测小目标或细粒度分类任务上。精度掉点有两大常见原因。
第一个是校准数据集太单一。很多工具链默认只用几十张图做激活值统计,如果这几十张图不能覆盖真实场景里的光照、角度、目标尺度分布,量化后的模型在真实数据上就会明显劣化。我的建议是自己准备一套覆盖多种工况的校准集,至少几百张,而不是直接用COCO验证集。
第二个原因是动态范围太大。如果模型某些层的特征值跨度极大,INT8量化会把大数值放大、小数值直接压没,导致小目标或者弱特征丢失。这种时候可以考虑per-channel量化,或者对敏感层使用混合精度,把个别层留在FP16。实际操作中,检测类模型用INT8通常能做到mAP损失1%到2%以内,如果损失超过3%,大概率是校准集或预处理有问题,而不是芯片的锅。
4.3 散热、供电和降频带来的“持续算力”问题
厂商宣传的TOPS是峰值算力。在无风扇密封外壳里,芯片温度上升到芯片厂商设定的阈值后,会自动降频降压,实际输出算力可能连广告值的一半都不到。这就是我前面说的“持续算力”概念。千万不能用峰值算力去匹配业务的算力需求,否则高温季节一到,设备一天到晚在降频,检测帧率跟着往下掉,客户的投诉电话会自动打过来。
我自己的经验是选型时让持续算力覆盖业务需求,同时要求峰值算力至少留出20%到30%的余量。如果一个场景算出来需要1 TOPS,那尽量选标称2 TOPS以上的平台,多出来的部分用来应对高温降频、模型升级带来的算力增长和厂商固件的调度开销。这个思路在多个项目里验证过,虽然BOM成本略高,但换来了产品在恶劣环境里的稳定性。
散热上还有两个细节:一是被动散热片不是越大越好,要和外壳的导热路径配合,很多金属外壳本身就能当散热器用;二是即使标注“无风扇设计”,也要保证外壳内部有对流通道,完全密闭且没有散热结构的空间,任何SoC都扛不住连续满负载。这些要在结构设计阶段就一起考虑,而不是等样机出来再补散热方案。
4.4 远程运维和OTA的隐藏成本
边缘AI设备经常部署在客户现场,少则几十台,多则上千台,分布在不同的城市和园区里。如果选型时不考虑远程运维能力,等设备批量落地以后再想加,成本完全不是一个量级。
我在选型时会关注几个隐性能力。一是能不能OTA升级系统、模型和应用层程序,这决定了后续模型迭代能不能远程推送。二是系统有没有看门狗和异常自动重启机制,边缘盒子长期运行,crash和卡死几乎是必然事件,没有自愈能力就只能靠人工跑现场。三是设备侧日志能不能远程回传,哪怕是简单的HTTP post日志,也能帮研发团队快速定位问题。这些能力听起来不性感,但对于一个“要量产”的边缘AI产品,它们和算力芯片一样重要。
我还踩过另一个坑:国产芯片厂商的SDK更新频繁,有的版本之间驱动接口不兼容,OTA升级后老程序起不来。所以选型时一定要确认厂商是否提供长期维护的稳定分支,并且在你自己的测试环境里模拟一遍从旧版本升级到新版本的全过程,别等设备上线了才发现升级路径是断的。
按我这几年做边缘AI项目的经验来看,芯片选型没有最好,只有约束下的合适。参数再亮眼,功耗扛不住、算子不支持、散热顶不上、开发套件不成熟,项目一样会卡在某个环节。纸上算能筛掉一批明显不合适的方案,但最终还得回到真机实测这一步。如果你正处在选型的十字路口,我建议先花一天时间把应用场景的输入输出、时延预算、功耗边界和开发人力写清楚,再拿本文这套框架过一遍,答案通常就清晰了。最后送一个我自己反复验证过的判断标准:边缘端算力不是越大越好,而是刚好够用,同时给模型迭代和恶劣工况各留一点余量——这才是产品能长期稳定跑下去的关键。