1. 从“All in AI”到“走向边缘”:一个嵌入式老兵的观察
这两年“All in AI”的口号喊得震天响,大模型训练集群动辄上万张卡,云端推理服务卷到毫秒级延迟。但我身边不少做了七八年嵌入式的朋友,反而在这波浪潮里找到了更踏实的位置——不是去卷大模型训练框架,而是把AI能力塞进巴掌大的板子里,让它在一个没有空调、没有运维、甚至没有稳定网络的现场跑起来。这就是边缘AI,也是嵌入式工程师眼下最值得认真对待的一个方向。
说白了,边缘AI就是把原本要传到云端才能完成的推理任务,直接放在设备本地做。摄像头采集到画面,板子自己判断有没有异常;传感器读到振动数据,MCU自己决定要不要报警。它解决的核心问题是延迟、带宽、隐私和离线可用性——这四个词,恰好是嵌入式工程师最熟悉的老朋友。云端AI工程师可能一辈子不用考虑“这块板子功耗只有5瓦”或者“现场温度零下二十度”,但这些恰恰是我们的主场。
这篇文章适合谁看?如果你是从单片机、RTOS、嵌入式Linux一路做过来的工程师,想搞清楚边缘AI到底怎么落地、选什么芯片、用什么工具链、踩过哪些坑,那这篇就是写给你的。如果你刚入行,正在纠结“嵌入式还有没有前途”,我也想把这条路的真实面貌摊开讲清楚。全文会围绕Jetson、Rockchip、Yocto这几个热搜里反复出现的关键词展开,结合我自己和同行实际做过的项目,把选型逻辑、部署流程、排查经验一条条说透。
先说一个我自己的判断:边缘AI不是让嵌入式工程师转行去做算法,而是让算法在资源受限的硬件上真正跑起来。这个“跑起来”三个字,含金量比很多人想象的高得多。模型转换、算子支持、内存对齐、散热设计、电源管理、长期稳定性——每一项都是嵌入式的老本行,只是换了个AI的壳。所以别慌,你的积累没有白费,只是需要补几块新拼图。
2. 边缘AI到底在嵌入式领域解决什么问题
2.1 云端推理的三个硬伤,边缘AI怎么补
先讲清楚为什么边缘AI会存在。很多人第一反应是“云端算力那么强,为什么要把模型放到小板子上?”这个问题问得好,答案藏在三个硬伤里。
第一个硬伤是延迟。云端推理的链路是:设备采集数据 → 编码 → 上传 → 云端排队 → 推理 → 下发结果。这条链路里,网络传输和排队往往占了大头。工业场景里一个机械臂的异常检测,要求响应时间在几十毫秒以内,你走公网传一圈回来,黄花菜都凉了。边缘AI把推理放在本地,链路缩短到“采集 → 推理 → 执行”,延迟能压到个位数毫秒。
第二个硬伤是带宽。一路1080P摄像头每秒产生约2到4兆比特的原始数据,一个厂区几十路摄像头,全天候往云端传,带宽成本和存储成本都很吓人。边缘AI的做法是本地先做筛选,只把“有异常”的片段或结构化结果上传,数据量能降两三个数量级。
第三个硬伤是隐私和离线可用性。医疗影像、人脸数据、生产配方这类信息,很多场景根本不允许出本地。而且现场网络说断就断,云端一挂设备就瘫,这在工业里是不可接受的。边缘AI让设备具备“断网也能干活”的能力,这是嵌入式工程师最擅长的可靠性设计。
提示:判断一个项目该不该上边缘AI,先问三个问题——延迟要求是否低于100毫秒?数据是否敏感或量大?现场网络是否不可靠?三个里中一个,就值得认真评估边缘方案。
2.2 嵌入式工程师的天然优势在哪里
我见过不少从纯算法背景转过来做边缘部署的人,他们最大的痛苦是“模型在服务器上跑得好好的,一到板子上就各种报错”。而嵌入式工程师反而在这件事上有天然优势,因为边缘AI的难点从来不是模型本身,而是工程化落地。
模型转换这一步,算法工程师可能只知道ONNX,但嵌入式工程师清楚不同芯片的NPU支持哪些算子、量化到INT8之后精度掉多少、内存怎么对齐才能让DMA效率最高。这些细节在服务器上无所谓,在边缘设备上就是能不能跑起来的分水岭。
再比如散热和功耗。Jetson Orin Nano满载功耗能到十几瓦,塞进一个密闭金属壳里,不加散热片十分钟就降频。这种问题算法工程师根本不会遇到,但嵌入式工程师一看功耗曲线和热阻参数,心里就有数了。还有长期运行的稳定性、看门狗、日志轮转、OTA升级,全是嵌入式的老本行。
所以我的观点很明确:边缘AI是嵌入式工程师的主场,不是客场。你需要的不是从头学深度学习,而是学会把已有的工程能力迁移到AI场景里,再补上模型部署这一环。
2.3 从热搜词看行业真实需求分布
把这次的热搜词摊开看,其实能读出很多信息。Jetson系列出现了Nano、Orin NX、Orin Nano、AGX Orin好几个型号,说明大家在选型阶段非常纠结,不同算力档位对应不同预算和场景。Rockchip这边RK3588被反复提到,配合“ubuntu rockchip社区项目”这个搜索,说明很多人卡在系统适配和驱动上。Yocto作为构建系统出现,意味着有相当一部分项目对系统定制和裁剪有硬需求,不是拿现成镜像烧进去就完事。
还有几个词很有意思:“嵌入式八股文”“嵌入式面试题”“嵌入式最吃香10个岗位”,这些说明大量从业者正在焦虑自己的职业方向,想搞清楚边缘AI到底是不是下一个风口。“vb6.0可以编程嵌入式硬件吗”这种问题则暴露了另一批人的知识断层,他们可能从很老的平台过来,对现代嵌入式开发完全没有概念。
“jetson orin nano部署qwen”“jetson orin ollama”这两个词特别值得注意,说明已经有人在边缘设备上跑大语言模型了。虽然目前体验还很勉强,但方向已经明确。而“airslam jetson部署”“jetson nano yolov5”则代表视觉SLAM和目标检测这两类最成熟的边缘AI应用。
3. 主流边缘AI平台选型:Jetson、Rockchip与Yocto的取舍
3.1 Jetson系列:算力天花板,但别只看算力
Jetson是英伟达的边缘计算产品线,从Nano到AGX Orin覆盖了从几TOPS到两百多TOPS的算力区间。它的最大优势是CUDA生态——你在服务器上用的PyTorch、TensorRT、DeepStream,几乎可以无缝迁移到Jetson上。这对团队来说意味着学习成本低、资料多、社区活跃。
但选Jetson不能只看算力数字。我拿几个常见型号做个对比,这些都是实际项目里会关心的参数:
| 型号 | AI算力 | 内存 | 功耗范围 | 典型场景 | 实际到手价区间 |
|---|---|---|---|---|---|
| Jetson Nano | 0.5 TOPS | 4GB | 5-10W | 入门视觉、教学 | 已停产,二手为主 |
| Jetson Orin Nano | 20-40 TOPS | 4/8GB | 7-15W | 多路视觉、轻量LLM | 千元级 |
| Jetson Orin NX | 70-100 TOPS | 8/16GB | 10-25W | 复杂视觉、机器人 | 两千元级 |
| Jetson AGX Orin | 200+ TOPS | 32/64GB | 15-60W | 自动驾驶、多传感器融合 | 万元级 |
选型的核心逻辑是算力要留余量,但功耗和散热要先算清楚。我见过有人拿Orin NX做一个小型手持设备,结果散热压不住,跑几分钟就降频到一半算力。后来换成Orin Nano加模型量化,反而稳定跑满。所以别被TOPS数字迷惑,先算你的场景需要多少算力,再看功耗预算能不能撑住。
Jetson的软件栈是JetPack,基于Ubuntu,里面打包了CUDA、cuDNN、TensorRT。部署流程通常是:PyTorch训练 → 导出ONNX → TensorRT转换 → 生成engine文件 → 在设备上加载推理。这个链路很成熟,但TensorRT转换时的算子兼容性和精度损失是常见的坑,后面会细讲。
3.2 Rockchip RK3588:国产方案的真实体验
RK3588这两年在国内边缘AI项目里出镜率极高,核心原因是性价比和供货稳定性。它自带6 TOPS的NPU,支持INT8/INT16混合量化,能跑YOLO系列、ResNet、甚至一些轻量Transformer。价格比同算力的Jetson低不少,而且国内供应链成熟。
但RK3588的坑也很真实。首先是系统适配,官方SDK和社区Ubuntu镜像的质量参差不齐,很多外设驱动需要自己移植。热搜里“ubuntu rockchip社区项目rk3588”这个搜索量高,就是因为大量人卡在这一步。其次是NPU工具链,RKNN-Toolkit2的算子支持不如TensorRT全面,一些自定义算子需要自己写CPU回退,性能会掉。
我的经验是:RK3588适合对成本敏感、有一定Linux驱动能力、模型相对标准的项目。如果你的模型是主流检测或分类网络,RKNN转换通常比较顺;如果是自己魔改的网络结构,就要做好折腾算子适配的准备。
3.3 Yocto:什么时候值得上,什么时候别碰
Yocto是一个嵌入式Linux构建系统,能让你从源码级别定制整个系统镜像。它的价值在于裁剪和可控——去掉不需要的包、减小镜像体积、固定版本、保证可复现构建。对于量产项目,Yocto几乎是标配,因为你需要一个稳定、可维护、可长期支持的系统。
但Yocto的学习曲线很陡。第一次接触的人往往被layer、recipe、bbappend这些概念绕晕,构建一次动辄几个小时。我的建议是:原型阶段别用Yocto,用厂商提供的现成Ubuntu镜像快速验证;等方案定了、要量产了,再上Yocto做定制。热搜里Yocto出现,说明不少项目已经走到量产阶段,这是好事,但也意味着要投入人力去维护构建系统。
注意:Yocto构建对机器配置要求高,建议至少16核CPU、32GB内存、500GB SSD,否则构建时间会让你怀疑人生。第一次构建前先把下载缓存配好,能省大量重复下载时间。
3.4 选型决策表:按场景对号入座
把上面的分析整理成一张决策表,方便你对号入座:
| 场景特征 | 推荐平台 | 理由 |
|---|---|---|
| 预算充足、要跑复杂模型、团队熟悉CUDA | Jetson Orin NX/AGX | 生态成熟,迁移成本低 |
| 成本敏感、模型标准、有Linux驱动能力 | RK3588 | 性价比高,NPU够用 |
| 超低功耗、简单推理、MCU级别 | STM32+NPU或专用AI芯片 | 功耗和成本极致 |
| 需要量产、系统要长期维护 | 任意平台+Yocto | 可复现、可裁剪、可控 |
| 快速原型验证 | 厂商现成Ubuntu镜像 | 省去系统适配时间 |
选型没有绝对的对错,只有适不适合。我见过用Jetson Nano做简单颜色识别的,也见过用RK3588跑多路视频分析的,关键是匹配需求和团队能力。
4. 边缘AI部署实操:从模型到板子的完整链路
4.1 模型训练与导出的关键决策
边缘部署的第一步不是拿到板子,而是在训练阶段就为部署做准备。很多人训练完才想部署,结果发现模型结构不支持、算子不兼容、精度掉太多,返工成本极高。
我的做法是训练时就锁定部署目标。比如确定要用TensorRT,那训练时就用PyTorch,导出ONNX时注意opset版本,尽量用TensorRT明确支持的算子。如果要用RKNN,就提前查RKNN-Toolkit2的算子支持列表,避免用冷门激活函数或自定义层。
导出ONNX时有个细节容易被忽略:动态维度。训练时batch size可能是动态的,但边缘部署通常固定batch size为1。导出时把动态轴固定下来,能避免后续转换时的很多麻烦。另外,输入输出的名字要规范,方便后续在推理代码里对应。
# PyTorch导出ONNX的典型写法 torch.onnx.export( model, dummy_input, "model.onnx", opset_version=11, input_names=["input"], output_names=["output"], dynamic_axes=None # 边缘部署固定维度 )导出后一定要用ONNX Runtime验证一遍,确认输出和原模型一致。这一步能提前发现很多转换问题,别等到板子上才排查。
4.2 量化:精度与速度的平衡术
量化是边缘AI部署绕不开的一环。FP32模型在边缘设备上又大又慢,量化到INT8通常能带来2到4倍的速度提升和4倍的内存节省。但量化会掉精度,掉多少取决于模型和量化方法。
主流的量化方式有两种:训练后量化(PTQ)和量化感知训练(QAT)。PTQ简单,拿训练好的模型直接量化,适合大多数标准网络;QAT需要在训练时模拟量化误差,精度更好但成本高,适合对精度敏感的场景。
PTQ的关键是校准数据集。你需要准备一批有代表性的输入数据,让量化工具统计激活值的分布,确定量化参数。校准集不用多,几百张图通常够,但一定要覆盖实际场景的分布。我见过用纯白背景图做校准,结果现场复杂背景下精度崩掉的案例。
TensorRT的量化用trtexec或Python API,RKNN用rknn.config(quantized_dtype='asymmetric_quantized-8')。量化后务必在验证集上对比精度,如果掉点超过可接受范围,就考虑QAT或者混合量化(部分层保持FP16)。
提示:量化不是越激进越好。有些层对量化特别敏感,比如检测网络的回归头,强行INT8会导致框位置偏移。混合量化让敏感层保持高精度,是实用的折中方案。
4.3 TensorRT与RKNN的转换流程对比
TensorRT和RKNN是Jetson和Rockchip两条路线上的核心工具,流程有相似也有差异。
TensorRT的典型流程:ONNX →trtexec --onnx=model.onnx --saveEngine=model.engine --fp16→ 生成engine → Python或C++加载推理。TensorRT会自动做层融合、内核选择、内存优化,你主要控制精度模式和workspace大小。
RKNN的流程:ONNX →rknn.load_onnx()→rknn.config()→rknn.build()→rknn.export_rknn()→ 设备端加载。RKNN需要显式指定目标平台(如rk3588)、量化方式、均值方差等参数。
两者的共同坑是算子不支持。TensorRT遇到不支持的算子会报错或回退到CPU,RKNN则可能直接转换失败。解决办法通常是改模型结构,用支持的算子替换,或者把不支持的部分拆出来单独处理。
4.4 板端推理代码的工程化要点
模型转换完只是开始,板端推理代码的工程化才是长期稳定运行的关键。我总结几个要点。
内存管理:边缘设备内存有限,推理时的输入输出buffer要复用,避免频繁分配释放。TensorRT的engine加载后,context和buffer可以常驻,每次推理只更新输入数据。
多线程与流水线:视频分析场景里,采集、预处理、推理、后处理可以做成流水线,用多线程或异步机制重叠执行,提升吞吐。但要注意线程安全和资源竞争,NPU通常不支持多context并发,需要串行化。
异常处理:推理可能因为输入异常、内存不足、NPU错误而失败,代码里要有兜底逻辑,不能让一个异常把整个进程搞崩。看门狗和日志是必备的。
功耗与温度监控:长时间运行要监控温度和功耗,必要时主动降频或降帧率,避免过热宕机。Jetson可以用tegrastats,RK3588可以读sysfs节点。
# Jetson查看功耗和温度的常用命令 tegrastats --interval 1000这些工程细节看起来琐碎,但正是它们决定了项目能不能从demo走到量产。
5. 实战踩坑与排查:那些文档里不会写的事
5.1 模型转换失败的常见原因
模型转换失败是边缘AI部署里最高频的问题。我把常见原因整理成一张速查表:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 转换报算子不支持 | 用了目标工具链不支持的算子 | 查算子支持列表,替换或拆分 |
| 转换成功但推理结果全错 | 输入预处理不一致 | 核对均值方差、归一化、通道顺序 |
| 精度大幅下降 | 量化校准集不具代表性 | 换校准集,或改混合量化 |
| 推理速度远低于预期 | 算子回退到CPU | 用profiler看各层耗时 |
| 内存溢出 | workspace或buffer过大 | 减小workspace,复用buffer |
我印象最深的一次是YOLOv5转RKNN,转换成功但检测框全偏。排查了半天,发现是预处理里的letterbox填充方式不一致,训练时用的灰色填充,部署时用了黑色,导致坐标映射错位。这种问题文档里不会写,只能靠对比验证。
5.2 系统适配与外设驱动的坑
RK3588这类平台,系统适配是另一个大坑。社区Ubuntu镜像虽然能用,但外设驱动经常不全。我遇到过MIPI摄像头在官方镜像里能识别,换到社区镜像就找不到设备的情况,最后是手动移植了设备树和驱动。
Yocto构建时,驱动移植更麻烦,需要写recipe把驱动源码打包进去,还要处理内核配置。建议的做法是先在现成镜像上验证所有外设,确认硬件没问题,再迁移到Yocto。这样能把硬件问题和系统问题分开排查,效率高很多。
5.3 长期运行的稳定性问题
Demo跑通和7x24小时稳定运行是两回事。我踩过的稳定性坑包括:内存泄漏导致几天后OOM、日志文件写满磁盘、温度过高降频、看门狗误触发重启。
解决办法是把稳定性当成一个独立需求来设计。内存用工具定期检查,日志做轮转和大小限制,温度做监控和降频策略,看门狗喂狗逻辑要严谨。这些在嵌入式里都是成熟做法,只是AI场景下负载更重,需要重新调参。
5.4 性能调优的实战技巧
性能调优没有银弹,但有章法。先用profiler定位瓶颈,是预处理慢、推理慢还是后处理慢。推理慢的话,看是不是算子回退、batch size不合适、精度模式没开。预处理慢的话,考虑用GPU或NPU做resize和归一化。
一个实用技巧是把预处理也放到GPU上。Jetson上可以用CUDA做图像resize和归一化,比CPU快很多,还能和推理重叠。RK3588的NPU也支持一些预处理算子,用好了能省不少时间。
6. 嵌入式工程师的能力升级路径
6.1 需要补的三块新拼图
从传统嵌入式转到边缘AI,需要补三块拼图:深度学习基础、模型部署工具链、AI场景的工程化经验。
深度学习基础不用学到能发论文,但要理解卷积、激活、量化、推理这些概念,看得懂模型结构。模型部署工具链就是TensorRT、RKNN、ONNX这些,多动手转换几个模型就熟了。AI场景的工程化经验靠项目积累,比如视频流水线、多模型调度、精度验证方法。
6.2 学习路线与资源取舍
学习路线我建议以项目驱动,别一上来啃理论。找一个开源模型,比如YOLOv5或MobileNet,在Jetson或RK3588上完整走一遍训练、导出、转换、部署、调优的流程。走通一遍,比看十篇教程都管用。
资源方面,官方文档永远是第一手资料,TensorRT和RKNN的文档虽然枯燥但准确。社区里Jetson的论坛和Rockchip的开发者社区活跃度不错,遇到问题先搜再问。至于“嵌入式八股文”那类东西,面试前看看就行,别当成学习主线。
6.3 项目经验怎么积累
没有实际项目怎么办?自己造。用一块Jetson Nano或RK3588开发板,做一个完整的边缘AI小项目,比如智能门禁、异常检测、车牌识别。从硬件选型、系统烧录、模型部署到外壳设计全走一遍,这就是最好的简历素材。
我在招人时,更看重候选人有没有完整走通过一个边缘AI项目,而不是背了多少八股。因为走通过的人,一定踩过坑、查过文档、调过参数,这些经验是装不出来的。
7. 几个值得动手的边缘AI项目方向
7.1 视觉类:从YOLO到SLAM
视觉是边缘AI最成熟的方向。入门可以从YOLOv5/v8的目标检测开始,在Jetson或RK3588上部署,做一个人流统计或安全帽检测。进阶可以做多路视频分析,考验的是流水线和资源调度能力。
SLAM方向门槛更高,热搜里的“airslam jetson部署”说明有人在尝试。SLAM对算力和传感器同步要求高,Jetson Orin系列比较合适。这个方向适合机器人背景的工程师。
7.2 语音与LLM:边缘上的新可能
“jetson orin nano部署qwen”“jetson orin ollama”这些搜索说明边缘LLM已经有人在玩了。目前Orin Nano跑7B量化模型勉强能出结果,但速度不快。这个方向适合做离线语音助手、本地知识库问答这类场景,对隐私要求高的场合有价值。
7.3 工业与物联网:最落地的场景
工业质检、设备预测性维护、环境监控,这些是边缘AI最容易产生实际价值的场景。它们对延迟和可靠性要求高,对模型复杂度要求反而不高,正好是嵌入式工程师的主场。热搜里的“嵌入式环境监控”就属于这一类。
8. 我个人的一些体会
做了这么多年嵌入式,我最大的感受是:技术浪潮会变,但工程能力是通用的。边缘AI看起来是新东西,拆开来看,无非是在熟悉的硬件上跑了一个新的负载。你过去积累的驱动、系统、功耗、稳定性经验,一样都用得上。
我见过太多人焦虑“嵌入式是不是要完了”,然后盲目去卷算法。其实大可不必。算法岗卷的是模型创新,嵌入式岗卷的是落地能力,两者需要的技能树不同。边缘AI恰恰是两者的交汇点,而嵌入式工程师在这个交汇点上,位置比很多人想象的好。
最后分享一个我自己的习惯:每接触一个新平台,先不急着跑模型,而是把系统烧录、外设验证、功耗测量、温度监控这些基础工作做扎实。基础打牢了,后面跑什么模型都顺。这个习惯让我在多个项目里少走了很多弯路,也希望对你有用。