1. 嵌入式AI概述:端侧推理是什么?为什么需要它?

大家好,欢迎来到《嵌入式端侧推理引擎应用指南》的第一章。

说实话,每次跟刚入行的朋友聊嵌入式AI,大家第一反应都是:“把模型塞进手机里跑?” 嗯,差不多是这个意思,但远不止这么简单。

今天我们就来聊聊,到底什么是端侧推理,为什么这几年它这么火,以及市面上那些主流的推理引擎,到底该怎么选。

1.1 什么是端侧推理?

端侧推理,说白了,就是在设备本地运行AI模型,而不是把数据发到云端去算。

你想想看,传统的AI应用,比如你手机上的语音助手,很多时候是录音→上传云端→云端算完→返回结果。这个过程叫“云端推理”。

而端侧推理呢?模型直接烧在手机、摄像头、智能手表、甚至一个MCU上。数据不出设备,推理结果当场出。

我最早接触这个概念是在2017年,当时在做一个智能门锁项目。客户要求人脸识别必须在100毫秒内完成,而且不能联网。嗯,那时候我就知道,云端这条路走不通了。

核心定义: 端侧推理 = 在嵌入式设备上本地运行AI模型,不依赖云端。

1.2 为什么需要端侧推理?

你可能会问:“云端算力那么强,为什么非要跑在端上?” 这个问题我当年也问过我的导师。

原因其实很现实,主要有这么几点:

  • 延迟敏感: 自动驾驶、工业质检这类场景,延迟超过10毫秒就可能出事故。云端来回一趟,少说几十毫秒,扛不住。
  • 隐私安全: 医疗影像、人脸数据、银行交易,这些你敢随便上传?我在项目中遇到过客户明确要求“数据不出厂区”,那只能端侧推理。
  • 离线可用: 矿井、深海、偏远山区,网络信号时有时无。端侧推理是唯一选择。
  • 带宽成本: 一个高清摄像头每秒产生几十兆数据,全传云端?流量费都付不起。
  • 功耗控制: 云端推理需要持续联网通信,功耗反而比本地推理高。我做过测试,某些场景下端侧推理功耗只有云端的1/5。
个人经验: 我建议你在项目初期就明确“是否必须端侧推理”。如果允许混合架构(端侧+云端),设计空间会大很多。

1.3 主流推理引擎介绍

好,接下来我们看看市面上那些主流的推理引擎。我按自己的使用经验,给大家排个序。

1.3.1 TensorFlow Lite

Google出品,生态最完善。如果你用TensorFlow训练模型,TFLite几乎是首选。

它的优势在于:

  • 支持Android、iOS、Linux、MCU
  • 硬件加速(GPU、NPU、DSP)支持较好
  • 模型转换工具链成熟

但有个坑:对自定义算子支持不够友好。我曾经想塞一个自己写的算子进去,折腾了两天才搞定。

1.3.2 ONNX Runtime

微软主导的开源项目。它的核心卖点是“中间格式”——你不管用什么框架训练,转成ONNX,它都能跑。

我个人习惯用PyTorch训练,然后转ONNX,再用ONNX Runtime部署。这套流程非常丝滑。

不过要注意:ONNX Runtime在ARM平台上的性能优化,不如NCNN和MNN那么极致。

1.3.3 NCNN

腾讯开源,专为手机端优化。说实话,在ARM CPU上的推理速度,NCNN是我用过最快的之一。

它的特点:

  • 纯C++实现,无第三方依赖
  • 针对ARM v7/v8做了深度优化
  • 支持Vulkan GPU加速

我记得有一次在骁龙865上跑MobileNetV2,NCNN比TFLite快了将近30%。

1.3.4 MNN

阿里巴巴开源。它的设计理念是“通用、高效、轻量”。

MNN的优势在于:

  • 支持Windows、Linux、Android、iOS
  • 内存占用极低(适合MCU)
  • 算子丰富,覆盖主流模型

我曾经在STM32上跑过MNN,效果出乎意料地好。不过要注意,MNN的文档更新有点慢,有些新特性需要看源码。

1.3.5 TNN

字节跳动开源,算是后起之秀。它的亮点是跨平台做得很好,一套代码可以编译到不同后端。

TNN的特点:

  • 支持CPU、GPU、NPU、DSP
  • 模型转换工具支持PyTorch、TensorFlow、Caffe
  • 量化工具链完善

嗯,这里要注意:TNN的社区活跃度不如前几个,遇到问题可能需要自己啃源码。

1.4 如何选择推理引擎?

我给大家一个简单的选择思路:

场景 推荐引擎 理由
Android手机 TFLite / NCNN 生态好,优化到位
iOS设备 CoreML / TFLite 苹果自家优化
ARM Linux ONNX Runtime / MNN 通用性强
MCU(STM32等) TFLite Micro / MNN 内存占用极低
跨平台项目 TNN / ONNX Runtime 一套代码多平台
避坑指南: 我曾经在一个项目里,一开始选了TFLite,后来发现模型里有个自定义算子不支持,被迫换引擎。所以,选引擎之前,先确认你的模型算子是否被支持。这是最容易被忽略的坑。

1.5 小结

这一章我们聊了:

  • 端侧推理是什么——在设备本地跑模型
  • 为什么需要它——延迟、隐私、离线、带宽、功耗
  • 主流引擎有哪些——TFLite、ONNX Runtime、NCNN、MNN、TNN
  • 怎么选——看场景、看算子、看生态

下一章,我们会深入讲解模型量化——这是嵌入式AI里最核心的技术之一。到时候我会分享一些实战中的量化踩坑经历,保证让你少走弯路。

好,今天就到这里。有问题欢迎留言讨论。