3、AI基础概念速成:机器学习、深度学习、神经网络核心概念,以及嵌入式AI与传统AI的差异
在正式进入嵌入式AI应用开发之前,必须先厘清一组基础概念:机器学习、深度学习、神经网络,以及它们与嵌入式系统结合后产生的独特约束。很多初学者容易将“AI”等同于“神经网络”,或将“嵌入式AI”理解为“在树莓派上跑个Python脚本”,这些认知偏差会在后续项目选型和调优时带来严重问题。本章将用工程视角梳理这些概念的本质、边界与差异,并重点剖析嵌入式AI在算力、功耗、内存和实时性方面的特殊约束。
3.1 机器学习:从数据中归纳规律
机器学习(Machine Learning, ML)的核心思想是:不通过显式编程规则,而是让算法从数据中自动发现模式。以智能家居中的人体存在检测为例,传统方案是设定“PIR传感器输出高电平持续5秒即判定有人”,但这种方法在宠物经过、窗帘飘动时极易误判。而机器学习方案则是采集大量“有人/无人”场景下的传感器数据(包括PIR、毫米波雷达、温湿度),让模型学习出更鲁棒的判断边界。
核心原理:特征、模型与训练
一个完整的机器学习系统包含三个关键要素:特征(Feature)、模型(Model)和训练(Training)。特征是从原始数据中提取的数值化表示,例如振动信号的均值、峰值、频谱能量;模型是输入特征到输出标签的映射函数;训练则是通过优化算法(如梯度下降)调整模型参数,使预测误差最小化。在嵌入式场景中,特征工程尤为重要——好的特征可以用简单的决策树或线性模型解决复杂问题,从而避免引入深度学习带来的算力开销。
| 对比维度 | 传统规则算法 | 机器学习 | 深度学习 |
|---|---|---|---|
| 特征来源 | 人工设计阈值 | 人工提取+算法筛选 | 自动学习特征 |
| 数据需求 | 少量样本 | 数百~数千样本 | 数万~百万样本 |
| 计算开销 | 极低(几十条if-else) | 低(适合MCU) | 高(需NPU/DSP) |
| 可解释性 | 完全透明 | 较好(特征权重可分析) | 较差(黑盒) |
| 典型嵌入式应用 | 阈值报警、简单滤波 | 异常检测、故障分类 | 图像识别、语音唤醒 |
判断方法:如何选择ML还是DL
在嵌入式项目立项时,可按照以下路径快速决策:第一步,评估数据量——如果每个类别只有几十到几百个样本,优先考虑传统ML(SVM、随机森林、XGBoost);第二步,分析输入类型——如果是结构化传感器数据(温度、振动、电流),传统ML通常足够;如果是图像、音频、雷达点云等高维非结构化数据,则必须使用深度学习;第三步,检查硬件资源——MCU(如STM32F4)只能运行轻量级ML模型,而带NPU的SoC(如瑞萨RZ/V2L、NXP i.MX 8M Plus)可以运行小型CNN。
3.2 深度学习与神经网络:分层特征提取
深度学习是机器学习的一个分支,其核心是使用多层神经网络自动学习数据的层次化表示。以工业质检中的PCB焊点缺陷检测为例,传统ML需要工程师手动设计“焊点面积、亮度方差、边缘梯度”等特征;而深度学习模型(如ResNet-18)的浅层卷积核自动学习边缘、纹理,深层卷积核学习“虚焊”“桥连”“少锡”等抽象缺陷模式。
核心原理:神经元、激活函数与反向传播
神经网络的基本单元是神经元,它执行加权求和后通过激活函数(如ReLU、Sigmoid)引入非线性。多个神经元组成层,层与层之间全连接或卷积连接。训练过程使用反向传播算法:前向传播计算预测值,损失函数度量预测与真实标签的差距,然后从输出层向输入层逐层计算梯度,更新权重。在嵌入式部署时,我们通常只使用训练好的模型进行推理(Inference),即前向传播过程,不再进行反向传播。
// 嵌入式端部署的典型CNN推理流程(伪代码)
// 输入:128x128x3 的RGB图像
// 输出:5类缺陷的概率分布
float* inference(uint8_t* image) {
// 1. 预处理:归一化到[-1,1],调整通道顺序
tensor_t input = preprocess(image, 128, 128, 3);
// 2. 逐层推理(以量化后的INT8模型为例)
tensor_t x = conv2d(input, conv1_weight, conv1_bias, stride=2, padding=1);
x = relu(x);
x = maxpool(x, pool_size=2);
x = conv2d(x, conv2_weight, conv2_bias, stride=1, padding=1);
x = relu(x);
x = global_avgpool(x);
x = fully_connected(x, fc_weight, fc_bias);
// 3. softmax输出概率
return softmax(x);
}
案例拆解:智能家居语音唤醒的模型选型
某智能音箱项目需要实现“小度小度”的离线唤醒功能,硬件平台为ESP32-S3(内置向量扩展指令,主频240MHz,内存520KB)。初始方案直接部署完整的语音识别模型(参数量5000万),结果内存溢出且推理延迟超过2秒。经过分析,团队将任务拆解为两级:第一级使用一个参数量仅5万的轻量级CNN(3层卷积+2层全连接)作为唤醒词检测器,输入为40维MFCC特征(帧长25ms,帧移10ms),输出为“是/否”唤醒词;第二级仅在唤醒成功后,才通过WiFi将后续语音上传云端进行完整语义理解。最终模型量化到INT8后仅占用48KB Flash,推理延迟约80ms,功耗降低至0.3W,成功满足产品需求。
3.3 嵌入式AI与传统AI的差异
嵌入式AI(TinyML/Edge AI)与传统云端AI的差异不仅是部署位置的不同,更是整个技术栈的范式转移。传统AI追求“模型越大越准”,而嵌入式AI追求“在资源约束下达到可用精度”。以下从五个维度展开对比。
核心差异:资源约束驱动的设计哲学
| 维度 | 传统云端AI | 嵌入式AI | 工程影响 |
|---|---|---|---|
| 算力 | GPU/TPU集群,TFLOPS级 | MCU/NPU,GOPS~TOPS级 | 模型必须轻量化(MobileNet、EfficientNet-Lite) |
| 内存 | 数百GB DDR/HBM | SRAM≤2MB,Flash≤16MB | 需模型剪枝、权重共享、内存复用 |
| 功耗 | 数百瓦~数千瓦 | mW~W级 | 需低功耗设计(事件驱动、DMA传输) |
| 延迟 | 网络RTT 50~200ms | 本地推理 1~50ms | 实时控制成为可能 |
| 数据隐私 | 数据需上传云端 | 数据本地处理 | 满足GDPR/等保合规 |
| 开发流程 | Python+PyTorch/TF | C/C+++CMSIS-NN/Glow/TVM | 需要跨领域技能(算法+嵌入式) |
操作流程:嵌入式AI项目开发流水线
一个标准的嵌入式AI项目通常包含以下六个阶段,每个阶段都有独特的工具链和验证方法:
- 数据采集与标注:在目标硬件上采集真实场景数据(注意传感器噪声、光照变化),使用LabelImg或CVAT进行标注,划分训练/验证/测试集。
- 模型训练与调优:在PC端使用PyTorch/TensorFlow训练模型,采用迁移学习(如使用ImageNet预训练权重)加速收敛。
- 模型压缩:进行剪枝(移除不重要的通道)、量化(FP32→INT8)、知识蒸馏(大模型指导小模型)。
- 工具链转换:将模型转换为嵌入式推理引擎支持的格式,如ONNX→TensorFlow Lite Micro、ONNX→TVM、或厂商专用SDK(如STM32Cube.AI、NXP eIQ)。
- 硬件在环验证:在真实开发板上运行模型,测量推理延迟、峰值内存、功耗,并对比PC端精度差异。
- 系统集成与优化:将AI推理模块与传感器驱动、通信协议栈集成,优化DMA传输和中断优先级。
实战场景:工业质检中的“云-边”协同
某电子制造工厂的PCB缺陷检测产线,原方案为“工业相机拍摄→图像上传至GPU服务器→返回检测结果”,单件检测周期约800ms,且网络抖动时会产生积压。改造后采用“边缘AI盒子+云端训练”的架构:边缘侧部署瑞萨RZ/V2L开发板(集成1TOPS NPU),运行量化后的YOLOv5s模型,本地完成缺陷检测,单件耗时120ms;云端负责模型持续训练和版本更新。关键优化点包括:使用JPEG直通解码减少CPU占用、将NPU推理与图像采集通过双缓冲流水线重叠、对低置信度样本(<0.6)才上传云端复核。最终产线吞吐量提升6倍,且断网时产线仍可正常运行。
3.4 常见误区与总结
在嵌入式AI的学习和实践中,以下四个误区最为常见,需要特别警惕:
- 误区一:认为“AI=深度学习”。实际上,在资源受限的MCU上,传统ML(如决策树、朴素贝叶斯)往往比深度学习更实用。例如,在电机振动故障诊断中,提取RMS、峰值因子、峭度等时域特征后,使用随机森林即可达到98%的准确率,而部署CNN反而因内存不足而无法运行。
- 误区二:忽视数据采集的“域差异”。在实验室采集的数据(理想光照、无振动)与现场数据(油污、震动、温漂)存在分布差异,导致模型部署后精度骤降。解决方法是采用“域随机化”数据增强,或在现场采集少量数据做微调。
- 误区三:盲目追求INT8量化。虽然INT8能减少4倍内存占用并加速推理,但某些模型(如含大量BatchNorm层的模型)量化后精度损失严重。建议先尝试INT16混合精度,或使用量化感知训练。
- 误区四:忽略“确定性”要求。工业控制场景要求AI推理必须在固定时间内完成(如≤10ms),不能因为缓存未命中或中断延迟导致超时。此时需要采用静态内存分配、禁用动态堆分配、设置看门狗定时器。
总结:本章厘清了机器学习、深度学习、神经网络三者的层级关系——机器学习是方法论,深度学习是其中一类方法,神经网络是深度学习的载体。在嵌入式场景中,我们既要理解这些概念的数学本质,更要建立“资源约束优先”的工程思维。下一阶段,我们将深入探讨嵌入式AI的硬件基础,包括MCU与MPU的选型、NPU/DSP加速器原理,以及传感器数据采集与预处理的关键技术。