人工智能这几年火得不行,人脸识别、语音识别、自动驾驶到处都在用。但大部分人对AI的认知可能还停留在"云端跑大模型",觉得AI就得用GPU服务器、就得联网。其实现在越来越多的AI应用是跑在嵌入式设备本地的,也就是常说的"边缘AI"——不用联网,不用云端,一颗小小的MCU或MPU就能跑一些简单的AI推理,延迟低、隐私性好、不费流量。今天聊聊人工智能怎么在嵌入式系统里落地,从框架选择到模型部署的思路。
先搞清楚一个概念:嵌入式系统里的AI主要是"推理"(Inference),不是"训练"(Training)。训练是拿海量数据去训练模型,计算量巨大,需要GPU服务器,一般在云端完成;推理是用训练好的模型去做预测,比如给一张图片判断里面有没有人,给一段语音识别说了什么,计算量相对小很多,可以在嵌入式设备上本地完成。所以嵌入式AI的流程大致是这样的:先在PC端或云端用训练框架(比如TensorFlow、PyTorch)把模型用数据集训练好,然后把模型做轻量化、压缩、量化,转换成嵌入式端能跑的格式,最后部署到嵌入式设备上,输入数据就能得到预测结果。
那嵌入式AI的硬件平台怎么选?主要看算力需求。如果是跑一些简单的分类、回归模型,普通的32位MCU(比如STM32F4、STM32H7系列,Cortex-M4/M7内核)就能搞定,主频几百MHz,带DSP和FPU,能跑简单的神经网络推理。如果算力要求高一点,比如做人脸检测、关键字识别,可以选带NPU(神经网络处理单元)的MCU或MPU,比如恩智浦的i.MX RT系列带跨界处理器,瑞芯微的RK1808、RK3588,全志的V831,这些芯片内置了硬件NPU,算力能达到几TOPS,跑常见的目标检测模型都没问题。如果是更复杂的场景(比如自动驾驶的感知),那就得用高端的SOC或者专用的AI加速卡了。
软件框架方面,嵌入式端有很多轻量化的AI推理框架可以用。最常用的几个:第一个是TensorFlow Lite Micro(TFLite Micro),谷歌官方的,专门针对微控制器,资源占用很小,几十KB的FLASH和RAM就能跑,支持Cortex-M系列内核,上手容易,适合入门。第二个是ONNX Runtime Micro,微软的,支持ONNX格式的模型,跨平台兼容性好。第三个是NCNN,腾讯开源的,针对移动端和嵌入式端优化,支持很多常见的算子,在ARM平台上性能不错,做人脸识别、目标检测用得比较多。第四个是MobileNet、YOLO这些轻量级模型本身就已经优化好了,转成嵌入式框架的格式直接就能用。还有就是各个芯片厂商自家的NPU SDK,比如瑞芯微的RKNN、恩智浦的eIQ,针对自家硬件做了加速,性能最好,但是和硬件绑定,不通用。
模型优化是嵌入式AI的关键环节,因为嵌入式设备资源有限,直接把训练好的大模型放上去肯定跑不动。常见的优化手段有几个:第一个是轻量化模型设计,比如用MobileNet、ShuffleNet、SqueezeNet这些轻量级网络,或者用YOLOv5n、YOLOv8n这些小版本的模型,参数只有几兆,速度很快。第二个是量化,也就是把模型里的浮点数权重转换成定点数(比如INT8),这样模型体积可以减到1/4,推理速度还能提升几倍,精度损失却很小,一般嵌入式端都是用INT8量化。第三个是剪枝,把模型里不重要的权重和连接去掉,减少参数量。第四个是知识蒸馏,用一个大的"老师模型"去指导一个小的"学生模型"训练,让小模型能接近大模型的精度。这些优化手段通常组合着用,才能把大模型压缩到嵌入式设备跑得动。
说几个实际的嵌入式AI落地场景,大家感受一下。第一个是智能门锁的人脸识别,用摄像头拍人脸,用本地嵌入式AI做人脸检测和比对,不用联网就能开锁,延迟低还不用担心隐私泄露。第二个是语音唤醒和关键字识别,智能音箱、智能家电里常用,MCU本地跑一个小的语音模型,听到"小爱同学"或者"小度小度"就唤醒,不用一直往云端传音频,省电又省流量。第三个是工业视觉检测,产线上用摄像头拍产品,嵌入式AI本地做缺陷检测,比如有没有划痕、有没有少装零件,毫秒级出结果,不用传到后台服务器,实时性好。第四个是农业里的病虫害识别,手持设备拍一下作物叶子,本地AI就判断有没有病虫害、是什么病,不用联网,在田间地头也能用。总的来说,嵌入式AI的趋势是越来越普及,芯片算力越来越强,框架越来越好用,以后会有更多的智能设备用上本地AI。
下一篇:没有了