嵌入式机器学习 - 学习笔记1.2.1 - 嵌入式设备上的机器学习
1. 本章学习目标
学完本章后,你应该能够理解:
什么是 Embedded System,嵌入式系统。
Single-Board Computer,单板计算机,与 Microcontroller,微控制器,有什么区别。
为什么传统机器学习框架更容易运行在 Raspberry Pi 等 Linux 单板计算机上。
TensorFlow Lite for Microcontrollers 如何让神经网络部署到 MCU。
软件优化、模型量化、处理器指令和推理库如何共同推动 TinyML 发展。
为什么传统嵌入式控制强调确定性,而机器学习输出通常具有概率性。
为什么机器学习不适合单独承担急停、生命支持等关键安全功能。
如何把本章知识迁移到 EEG、ECG、EMG、PPG、HRV、GSR / EDA 等生理信号 TinyML 项目中。
2. 本章内容导读
过去,大多数机器学习模型依赖桌面计算机、服务器或大型数据中心运行。随着模型压缩、整数化量化、嵌入式推理框架、优化计算内核和 MCU 指令集的发展,一部分机器学习任务已经可以运行在成本更低、功耗更小的微控制器上。
本章首先介绍嵌入式系统的概念,并比较 Raspberry Pi 一类单板计算机与 Arduino、ESP32、Nordic、STM32、RP2040 等微控制器平台的区别。随后,本章解释 TensorFlow Lite for Microcontrollers 等工具如何降低 MCU 部署神经网络的难度,并通过语音识别、目标检测、野生动物声音监测和工业异常检测等案例说明嵌入式机器学习的应用价值。最后,本章重点讨论传统嵌入式系统的确定性与机器学习概率性之间的矛盾,明确 TinyML 的能力边界和安全使用原则。
3. 正文笔记
3.1 为什么机器学习开始从服务器走向嵌入式设备?
传统机器学习和深度学习通常运行在计算资源充足的平台上,例如:
桌面计算机;
GPU 工作站;
云服务器;
数据中心;
高性能边缘计算设备。
这些平台具备较大的内存、较高的处理器性能和完整的软件环境,因此可以运行复杂神经网络。
但并不是所有任务都需要、或者都适合上传到服务器处理。例如:
麦克风采集声音 → 上传云端 → 云端识别关键词 → 返回识别结果 → 控制本地设备这种流程会带来网络依赖、通信延迟、隐私风险和能耗问题。如果任务只是判断是否听到一个关键词,就可以考虑直接在本地完成:
麦克风采集声音 → MCU 本地提取特征 → TinyML 模型推理 → 输出识别结果近年 TinyML 的进步并不是因为“矩阵运算突然可以在 MCU 上运行”,而是因为模型量化、轻量网络、优化内核、编译器、部署工具和芯片指令集同时取得了进步。相关综述把 TinyML 描述为让机器学习运行在低成本、低功耗、资源受限设备上的技术方向,同时指出内存、算力、可靠性和模型精度仍是主要挑战。(arXiv)
3.2 什么是 Embedded System,嵌入式系统?
嵌入式系统可以通俗地理解为:
被嵌入到某个更大机械系统或电子系统中,并为特定功能服务的计算机系统。
与普通电脑不同,嵌入式系统通常不是为了让用户自由安装软件、编辑文档或浏览网页,而是为了完成一个或一组特定任务。
常见例子包括:
洗衣机中的控制器;
汽车发动机控制单元;
无人机飞行控制器;
工业电机监测节点;
智能音箱中的唤醒词识别模块;
可穿戴心率监测设备;
生理信号采集与反馈装置;
电刺激器中的参数控制模块。
需要注意的是,嵌入式系统的边界并不完全由设备尺寸决定。Raspberry Pi 可以作为普通 Linux 小电脑使用,也可以嵌入机器人或工业设备中,此时它就属于嵌入式系统的一部分。智能手机则兼具通用计算与嵌入式系统特征,因此课程中“手机与嵌入式设备相对”的说法主要是一种便于入门理解的工程分类。
3.3 单板计算机和微控制器有什么区别?
课程使用 Raspberry Pi 和 Arduino 说明了两类常见平台。
3.3.1 Single-Board Computer:单板计算机
Single-Board Computer,简称 SBC,是把处理器、内存、存储接口、通信接口和其他外设集成在一块电路板上的计算机。
典型代表包括:
Raspberry Pi;
NVIDIA Jetson;
BeagleBone;
部分 Linux 边缘计算板。
它们通常可以:
运行 Linux 等完整操作系统;
使用命令行或图形界面;
运行 Python;
安装软件包;
运行较完整的机器学习框架;
同时执行多个复杂应用。
例如 Raspberry Pi 4 属于 Linux 开发板,可以连接传感器、麦克风和摄像头,也可以运行 Edge Impulse 导出的 Linux 模型。(Edge Impulse Documentation)
3.3.2 Microcontroller:微控制器
Microcontroller,简称 MCU,通常把 CPU、RAM、Flash、定时器、ADC、GPIO、UART、I²C、SPI 等功能集成在一颗芯片中。
典型平台包括:
Arduino Uno 使用的 ATmega328P;
ESP32 / ESP32-S3;
Nordic nRF52 / nRF53;
STM32;
RP2040;
Arduino Nano 33 BLE Sense。
Arduino Uno 就是一块基于 ATmega328P 的微控制器开发板,主要通过数字接口、模拟输入和串口等外设完成传感器采集与设备控制。(Arduino 文档)
微控制器的程序通常采用以下两种方式运行:
方式一:裸机程序 Bare-metal 初始化硬件 → 进入 while(1) 主循环 → 不断读取传感器、处理数据和控制外设方式二:实时操作系统 RTOS 传感器采集任务 + 通信任务 + 模型推理任务 + 控制任务 → 由调度器统一管理FreeRTOS 将 RTOS 描述为面向嵌入式和实时应用、强调及时且确定性响应的操作系统。RTOS 可以提供任务调度、任务通信、时间管理和同步机制,但它本身并不能保证整个产品一定安全。(FreeRTOS)
3.4 单板计算机与微控制器对比
| 对比项目 | 单板计算机 SBC | 微控制器 MCU |
|---|---|---|
| 典型平台 | Raspberry Pi、Jetson | ESP32、STM32、Nordic、RP2040、Arduino |
| 操作系统 | 通常运行 Linux 等完整系统 | 裸机程序或 RTOS |
| 内存资源 | 通常较大 | 通常较小 |
| 存储方式 | SD 卡、eMMC、SSD | 片内 Flash 或外部 Flash |
| 编程语言 | Python、C、C++ 等 | 主要为 C / C++ |
| 用户界面 | 可运行命令行或图形界面 | 通常只有按键、LED、小屏幕 |
| 启动时间 | 通常较长 | 通常较短 |
| 实时性 | 普通 Linux 实时性有限 | 更容易实现精确时序控制 |
| 功耗 | 相对较高 | 通常更低 |
| 机器学习开发 | 更容易运行完整框架 | 需要轻量运行时和模型优化 |
| 适合场景 | 边缘网关、复杂视觉、多模型系统 | 可穿戴设备、传感器节点、实时控制 |
两者并不是互相替代关系。在实际系统中也可以组合使用:
MCU: 负责严格定时采样、低功耗运行和实时控制 SBC: 负责复杂模型、图形界面、数据库和网络服务3.5 为什么机器学习框架更容易运行在单板计算机上?
现代机器学习框架最初大多面向桌面、服务器或 Linux 环境设计,例如:
scikit-learn;
TensorFlow;
PyTorch;
Caffe。
这些工具通常依赖:
Python 运行环境;
完整操作系统;
动态内存管理;
文件系统;
大量第三方库;
较大的 RAM;
较完整的数学运算支持。
因此,在能够运行 Linux 的 Raspberry Pi 上安装和使用这些框架,通常比在 MCU 上容易。
而微控制器通常没有:
完整 Python 环境;
大容量内存;
虚拟内存;
通用文件系统;
完整操作系统服务。
所以不能简单地把服务器上的 Python 训练代码复制到 MCU 中运行。实际流程通常是:
电脑或云端: 使用 Python 训练模型 ↓ 模型转换、压缩和量化 微控制器: 使用 C / C++ 推理运行时执行模型3.6 TensorFlow Lite for Microcontrollers 解决了什么问题?
课程中提到的TensorFlow Lite for Microcontrollers,TFLM,是专门面向微控制器和资源受限设备的推理运行时。
Google 当前官方文档将这一方向称为LiteRT for Microcontrollers,而开源代码仓库仍沿用tflite-micro名称。该运行时用于在只有有限内存的 MCU、DSP 和其他嵌入式设备上执行机器学习模型。(Google AI for Developers)
它解决的关键问题是:开发者不需要手动实现神经网络中的全部底层运算。
如果没有推理框架,开发者可能需要自行编写:
矩阵乘法 卷积 激活函数 池化 全连接层 张量内存分配 量化数据转换使用 LiteRT for Microcontrollers 后,开发者通常可以:
训练 TensorFlow / Keras 模型 → 转换为轻量模型 → 量化为 int8 等格式 → 转成 C 数组或模型文件 → 在 MCU 中调用 C++ 推理接口但它并不等于桌面版 TensorFlow。微控制器版本只支持有限的运算集合,并且模型能否运行仍取决于 RAM、Flash、运算类型和目标平台。(Google AI for Developers)
3.7 为什么现在 MCU 可以运行更复杂的模型?
真正推动 TinyML 的不是单一技术,而是多项改进共同作用。
3.7.1 模型量化
把 float32 浮点参数转换成 int8 等低精度整数,可以降低:
模型大小;
RAM 占用;
运算量;
推理能耗。
3.7.2 优化神经网络内核
Arm 的 CMSIS-NN 为 Cortex-M 提供了经过优化的卷积、全连接和激活等神经网络内核,并支持与 TFLM 的 int8、int16 量化规范配合。(ARM Software)
3.7.3 芯片指令集加速
ESP32-S3 增加了用于神经网络和信号处理的向量指令,可以通过 ESP-NN、ESP-DSP 等软件库进行优化。(Espressif Systems)
3.7.4 自动化部署工具
Edge Impulse 可以把信号处理、模型结构和项目配置一起打包为 C++、Arduino、Linux 或 STM32 等部署格式,并支持 int8 量化和面向 RAM 的优化。(Edge Impulse Documentation)
STM32Cube.AI / X-CUBE-AI 则可以对训练好的神经网络进行分析、优化和编译,并生成可集成到 STM32 工程中的代码。(STMicroelectronics)
因此,TinyML 的发展过程可以概括为:
更小的模型 + 更低精度的数据格式 + 更高效的计算内核 + 更适合 AI 的 MCU 指令 + 更完善的部署工具 = 更复杂的模型可以运行在微控制器上3.8 嵌入式机器学习有哪些应用?
课程列举了多个应用方向。
3.8.1 本地语音识别
智能家居设备可以在本地识别:
唤醒词;
简单语音命令;
“开灯”;
“停止”;
“增大音量”。
本地识别可以降低延迟,也能减少持续上传原始语音带来的隐私风险。
3.8.2 图像和目标识别
边缘摄像头可以识别:
特定物体;
人员是否出现;
产品表面缺陷;
动物类别;
设备状态。
但视觉模型通常比简单传感器模型更消耗 RAM 和计算资源,因此更依赖高性能 MCU、专用加速器或 Linux 边缘设备。
3.8.3 野生动物声音识别
研究人员可以在野外部署低功耗声音采集设备,用于识别:
鸟叫;
蛙鸣;
蝙蝠声;
其他动物特定叫声。
设备只需上传识别结果或异常片段,不必持续传输全部原始音频。
3.8.4 工业异常检测
机器学习可以分析:
振动;
电流;
温度;
声音;
转速。
当设备运行模式偏离正常状态时,系统可以提前报警,从而辅助预测性维护。
这种思路与生理信号监测非常相似:
工业设备正常模式 → 偏离正常模式 → 判断可能出现故障人体正常生理模式 → 信号模式发生变化 → 判断可能存在疲劳、压力或异常状态4. 确定性控制与概率性机器学习
4.1 什么是确定性?
传统嵌入式控制通常具有明确规则:
if (temperature > threshold) { openValve(); }只要输入条件成立,程序就执行预先规定的动作。
这类系统强调:
什么时候执行;
执行顺序是什么;
最晚多久必须完成;
中断能否及时响应;
控制输出是否可预测。
例如发动机点火、工业安全联锁和电刺激输出时序,都可能对时间非常敏感。
RTOS 可以让任务按优先级和时间约束运行,帮助系统实现可测量、可分析的响应时间。(FreeRTOS)
4.2 为什么机器学习具有概率性?
机器学习模型学习的是训练数据中的统计规律,而不是绝对规则。
例如关键词识别模型可能输出:
stop:0.93 go:0.04 unknown:0.03这代表模型认为输入最可能是stop,但不能保证判断一定正确。
机器学习模型可能出现:
False Positive,误报;
False Negative,漏报;
低置信度结果;
对陌生输入错误分类;
换环境后性能下降;
不同人群上的表现差异;
传感器噪声导致误判。
因此:
传统规则: 满足条件就执行固定结果 机器学习: 根据统计规律输出最可能的结果需要特别注意:RTOS 可以让模型按时运行,却不能让模型的分类结果变成绝对正确。
4.3 语音急停按钮为什么存在安全风险?
课程设想了一个例子:当工作人员喊出 “stop” 时,设备自动停止。
从交互角度看,这似乎很方便,但如果把语音识别作为唯一的急停机制,就会存在严重风险。
假设模型准确率为 99%,仍意味着在某些输入条件下可能无法识别命令。对于普通灯光控制,偶尔漏识别可能只是体验不好;但对于工业急停、医疗控制或汽车系统,漏识别可能导致人身伤害。
因此,更合理的结构是:
硬件急停按钮 / 安全继电器 → 作为独立、确定性的主要安全通道 语音 TinyML 模型 → 作为额外辅助触发方式OSHA 的相关资料强调,紧急停止控制必须便于接近,并应在人员进入危险区域前停止机器。课程中“99% 或 98% 能否获得 OSHA / FDA 批准”的数字只是用于说明风险,并不是通用的监管合格线;实际要求取决于具体产品、风险等级、系统设计和验证证据。(职业安全与健康管理局)
FDA 关于机器学习医疗设备的指导也强调完整产品生命周期、代表性数据、风险管理、临床相关测试和人机协同表现,而不是只根据一个准确率数字判断系统是否安全。(U.S. Food and Drug Administration)
4.4 安全系统中应该如何使用机器学习?
在安全关键场景中,可以采用下面的思路。
机器学习适合做的事情
辅助检测;
风险提示;
提前预警;
状态分类;
异常趋势发现;
给人工决策提供额外信息。
机器学习不应单独承担的事情
唯一急停通道;
唯一生命支持控制;
唯一电刺激强度限制;
未经验证的医学诊断;
没有人工监督的高风险治疗决策。
推荐结构如下:
传感器输入 ↓ 机器学习模型 ↓ 风险提示或辅助判断 ↓ 确定性安全规则再次检查 ↓ 人工确认或安全控制输出还可以加入:
最大输出限制;
硬件看门狗;
超时关闭;
置信度阈值;
异常输入检测;
传感器断线检测;
人工急停;
独立安全通道;
故障时进入安全状态。
5. 关键概念解释
| 概念 | 通俗解释 | 技术解释 | 在本章中的作用 |
|---|---|---|---|
| Embedded System | 藏在设备里的小电脑 | 为特定机械或电子系统服务的计算系统 | 本章应用载体 |
| SBC | 一块板上的小型完整电脑 | 通常能运行 Linux 和完整应用环境 | 适合较复杂边缘计算 |
| MCU | 用来采集和控制的芯片 | 集成 CPU、RAM、Flash 和外设的微控制器 | TinyML 主要部署对象 |
| Bare-metal | 不用操作系统直接跑程序 | 固件直接控制硬件和主循环 | 资源占用小、控制直接 |
| RTOS | 管理实时任务的小型系统 | 提供调度、同步和时间控制 | 帮助实现实时采集与推理 |
| Inference | 让训练好的模型做判断 | 在新数据上运行模型得到输出 | MCU 主要执行阶段 |
| Quantization | 把模型数字变小 | 将 float32 转为 int8 等低精度表示 | 降低模型大小和计算量 |
| LiteRT for Microcontrollers | MCU 神经网络运行工具 | 面向资源受限设备的 C++ 推理运行时 | 降低模型部署难度 |
| CMSIS-NN | Cortex-M 高速计算工具箱 | 面向 Arm MCU 的优化神经网络内核 | 加快模型推理 |
| Deterministic | 同样条件得到明确行为 | 时间和控制结果可分析、可预测 | 安全控制的重要要求 |
| Probabilistic | 输出带有不确定性 | 根据统计模型给出类别或概率 | 机器学习的基本特点 |
| False Negative | 该发现却没有发现 | 把正样本错误判断为负样本 | 安全场景中的主要风险 |
| Fail-safe | 出故障时进入安全状态 | 故障后输出保持或转为低风险状态 | 安全系统设计原则 |
6. 本章案例复盘
| 案例 | 输入数据 | 模型任务 | 适合平台 | 主要价值 | 需要注意的问题 |
|---|---|---|---|---|---|
| 语音唤醒 | 麦克风音频 | 关键词分类 | MCU / SBC | 低延迟、本地识别 | 口音、儿童声音和环境噪声 |
| 目标识别 | 摄像头图像 | 图像分类或检测 | 高性能 MCU / SBC | 自动识别物体和人员 | 模型较大、隐私风险 |
| 动物叫声识别 | 野外音频 | 声音分类 | 低功耗 MCU | 减少长期原始数据传输 | 风声、雨声和背景噪声 |
| 工业异常检测 | 振动、声音、电流 | 分类或异常检测 | MCU | 提前发现故障趋势 | 不能替代硬件安全联锁 |
| 语音急停 | 麦克风音频 | 关键词识别 | MCU | 提供辅助交互 | 不能作为唯一安全通道 |
本章案例共同说明:
嵌入式机器学习适合处理传统规则难以完整描述的感知问题,但不能自动替代确定性控制和经过验证的安全机制。
7. 与生理信号监测 TinyML 项目的联系
7.1 共性:生理信号也是嵌入式时间序列数据
EEG、ECG、EMG、PPG、HRV、GSR / EDA 与语音、振动、运动信号具有共同结构:
传感器采集 → 数字化 → 滤波去噪 → 时间窗口切分 → 特征提取 → 机器学习模型 → 状态分类或数值预测 → MCU 端实时输出因此,本章介绍的 MCU 推理、资源限制、实时性和安全边界都可以直接迁移到生理信号项目中。
7.2 不同生理信号的任务与部署特点
| 信号 | 常见任务 | 更偏向的计算方式 | 端侧部署难点 | 安全边界 |
|---|---|---|---|---|
| EEG | 疲劳、注意力、睡眠阶段 | 频带特征、CNN、轻量时序模型 | 多通道、噪声大、计算量较高 | 不能把实验分类结果描述为“读心”或医学诊断 |
| ECG | 心率、心律异常识别 | 波形检测、1D CNN、特征分类 | 采样质量和医学标签要求高 | 异常提示不能直接替代医生诊断 |
| EMG | 手势、肌肉疲劳、康复评估 | 时域特征、频域特征、分类模型 | 采样率较高,电极位置影响明显 | 控制假肢或刺激器时必须设置独立安全限制 |
| PPG | 心率、血氧趋势、压力 | 峰值检测、回归、轻量 CNN | 容易受到运动伪迹影响 | 低质量波形不能输出确定性健康结论 |
| HRV | 压力、疲劳、自主神经状态 | 窗口级统计特征、分类或回归 | 依赖准确心搏检测和较长窗口 | 单次 HRV 变化不能直接等同于疾病或疼痛 |
| GSR / EDA | 情绪唤醒、压力、疼痛反应 | 统计特征、SCR 特征、分类或回归 | 个体差异大、变化慢、非特异性 | 皮肤电变化不能直接等同于疼痛强度 |
BiomedBench 研究表明,不同生物医学应用在采样、计算负载、活跃时间和空闲时间方面存在明显差异,因此没有一种低功耗平台能在所有生理信号应用中都取得最佳表现。(arXiv)
7.3 生理信号系统中的“概率模型 + 确定性控制”
以 GSR / EDA 反馈电刺激器为例,不建议直接设计成:
模型判断疼痛较高 → 自动无限制提高刺激强度更安全的设计是:
GSR / EDA + 其他生理信号 → TinyML 估计疼痛相关状态 → 输出建议档位或风险提示 → 确定性程序检查最大强度、脉宽、频率和持续时间 → 用户确认或控制器执行同时设置:
最大刺激强度 最大连续工作时间 通信超时关闭 传感器脱落检测 模型置信度不足时不调整 硬件急停 人工覆盖 异常状态回到安全参数也就是说,机器学习负责“判断趋势”,确定性固件负责“守住安全底线”。
7.4 VOFA+ 与 CSV 数据的作用
如果生理信号通过 VOFA+ 采集并保存为 CSV,这些文件就是后续 TinyML 项目的原始 Dataset。
推荐结构为:
timestamp_s,signal_1,signal_2,label,subject_id,stage 0.00,1234,0.82,baseline,S01,rest 0.01,1238,0.83,baseline,S01,rest 0.02,1245,0.85,mild_pain,S01,exercise其中可以包含:
时间戳;
EEG / ECG / EMG / PPG / GSR 原始通道;
HRV 窗口特征;
实验阶段;
疼痛或疲劳标签;
受试者编号;
设备编号。
这些数据经过窗口化、特征提取和数据集划分后,可以在电脑或 Edge Impulse 上训练模型,再把模型部署到 MCU。Edge Impulse 的部署包可以将信号处理块、模型和配置整合在一起,并在设备本地离线推理。(Edge Impulse Documentation)
7.5 Edge Impulse 在生理信号项目中的作用
Edge Impulse 可以承担:
CSV 数据导入 → 数据标注 → 时间窗口切分 → 特征提取 → 分类 / 回归 / 异常检测训练 → 模型量化 → RAM 与 Flash 评估 → 生成 C++ / Arduino / STM32 部署库但 Edge Impulse 解决的是机器学习开发流程问题,不能替代:
生理信号采集电路验证;
医学标签设计;
临床试验;
伦理审批;
医疗器械风险管理;
确定性安全控制。
7.6 主控平台迁移分析
| 平台 | 适合任务 | 主要优势 | 主要限制 |
|---|---|---|---|
| Raspberry Pi / Linux SBC | 多通道处理、复杂模型、上位机 | Python 生态完整、内存较大 | 功耗较高、实时性不如 MCU |
| ESP32 / ESP32-S3 | GSR、PPG、低速 ECG、无线原型 | Wi-Fi、BLE、DSP / NN 优化能力 | ADC 和模拟噪声需要认真处理 |
| Nordic nRF52 / nRF53 | 可穿戴 PPG、ECG、EDA、HRV | BLE 和低功耗能力突出 | 无原生 Wi-Fi,模型资源有限 |
| Arduino Nano 33 BLE Sense | TinyML 教学、IMU、语音实验 | Edge Impulse 支持成熟、板载传感器丰富 | 更适合教学和快速验证 |
| STM32 | ECG、EMG、实时控制、工业应用 | ADC、定时器、实时控制生态成熟 | 不同系列资源差异较大 |
| RP2040 / Pico | 低成本数据采集和基础模型 | 双核、PIO、开发资料丰富 | 无专用神经网络加速器 |
ESP32-S3 提供面向神经网络和信号处理的向量指令;nRF52840 基于带 FPU 的 Cortex-M4,并面向低功耗无线应用;RP2040 则定位于嵌入式系统、实时控制和 I/O 管理。(Espressif Systems)
选择平台时应综合考虑:
采样率 ADC 或数字传感器接口 RAM Flash 推理延迟 功耗 BLE / Wi-Fi 实时控制要求 模型大小 开发工具链 安全机制8. 本章内容对未来项目的启发
8.1 疼痛监测
机器学习可以辅助识别疼痛相关生理模式,但不能保证每一次都判断正确。因此,模型结果更适合作为状态估计、辅助反馈或趋势分析,而不是唯一的治疗控制依据。
8.2 情绪识别
EDA、HRV、PPG 和 EEG 模型具有概率性,并且情绪标签本身存在主观性。端侧推理有助于减少隐私数据上传,但不能消除标签偏差和个体差异。
8.3 疲劳检测
EEG、EMG、HRV、PPG 和 IMU 可以结合使用。TinyML 适合持续监测和本地提醒,但涉及交通、工业操作等安全场景时,应保留人工确认和确定性安全机制。
8.4 运动状态识别
EMG + IMU 动作识别适合 MCU 实时推理。若识别结果用于控制外骨骼、假肢或电刺激设备,则需要加入动作确认、输出限幅和故障关闭机制。
8.5 可穿戴生理信号监测
MCU 的低功耗和本地推理可以降低通信频率、延长电池续航,并减少原始健康数据上传。
8.6 多模态生理信号融合
多模态融合可能提升模型鲁棒性,但也增加:
采样同步难度;
RAM 占用;
模型复杂度;
功耗;
传感器佩戴负担;
安全验证难度。
9. 本章还不能解决的问题
本章建立了嵌入式机器学习的基本概念,但还不能直接解决:
生理信号模拟前端 AFE 如何设计。
不同信号的准确采样率如何确定。
ADC 精度和输入范围如何选择。
电极接触噪声和运动伪迹如何处理。
哪种模型最适合具体生理信号。
如何测量 MCU 上的真实推理延迟。
如何评估模型最坏情况下的表现。
如何设计独立安全通道。
医疗器械法规和伦理审批如何开展。
如何证明模型对不同受试者具有泛化能力。
电池设备如何平衡采样、推理、通信和续航。
模型升级后如何重新验证系统安全性。
10. 本章总结
本章最重要的收获是:嵌入式机器学习并不是把服务器上的复杂模型原封不动地装进微控制器,而是通过轻量模型、量化、优化运算库、芯片指令和部署工具,让适合的机器学习任务能够在资源受限设备上运行。单板计算机更接近完整电脑,适合运行 Linux 和较复杂的软件;微控制器成本和功耗更低,更适合传感器采集、实时控制和长期运行。与此同时,传统嵌入式控制强调确定性,而机器学习具有概率性,因此 TinyML 不能被视为所有问题的“万能解决方案”。在工业安全、医疗健康和电刺激控制等高风险应用中,机器学习应主要用于辅助识别和风险提示,真正的安全边界仍应由确定性程序、硬件限制、人工监督和独立安全机制共同保证。
11. 参考资料
| 资料名称 | 类型 | 链接 | 与本章内容的关系 |
|---|---|---|---|
| TinyML 学习笔记提示词文档 | 用户提供的写作要求 | 本笔记结构、写作风格和项目迁移分析依据该文档整理 | |
| LiteRT for Microcontrollers | Google 官方文档 | 官方页面 (Google AI for Developers) | 说明微控制器推理运行时的定位和资源限制 |
| TensorFlow Lite for Microcontrollers | GitHub 项目 | 官方仓库 (GitHub) | 提供 TFLM 源代码、平台支持和示例 |
| LiteRT for Microcontrollers C++ Library | Google 官方文档 | 官方页面 (Google AI for Developers) | 解释 MCU 端 C++ 推理库的基本结构 |
| FreeRTOS RTOS Fundamentals | 官方文档 | 官方页面 (FreeRTOS) | 用于解释 RTOS、实时响应和确定性调度 |
| CMSIS-NN Documentation | Arm 官方文档 | 官方页面 (ARM Software) | 说明 Cortex-M 上的神经网络优化内核 |
| ESP32-S3 | Espressif 官方资料 | 官方页面 (Espressif Systems) | 说明 ESP32-S3 的向量指令和 AI / DSP 加速能力 |
| Edge Impulse Hardware | 官方文档 | 官方页面 (Edge Impulse Documentation) | 说明 Edge Impulse 对不同边缘硬件目标的支持 |
| Edge Impulse Deployment | 官方文档 | 官方页面 (Edge Impulse Documentation) | 说明模型量化、C++、Arduino、Linux 和 STM32 部署方式 |
| STM32Cube.AI / X-CUBE-AI | ST 官方文档 | 官方页面 (STMicroelectronics) | 说明神经网络模型如何优化并部署到 STM32 |
| nRF52840 | Nordic 官方资料 | 官方页面 (Nordic Semiconductor) | 支持低功耗 BLE 可穿戴平台的迁移分析 |
| RP2040 Microcontroller Documentation | Raspberry Pi 官方文档 | 官方页面 (Raspberry Pi) | 说明 RP2040 在嵌入式和实时控制中的定位 |
| TinyML: Tools, Applications, Challenges, and Future Research Directions | 综述论文 | 论文页面 (arXiv) | 总结 TinyML 工具、应用、资源限制和研究挑战 |
| Tiny Machine Learning: Progress and Futures | 综述论文 | 论文页面 (arXiv) | 说明 TinyML 的系统—算法协同设计和发展方向 |
| BiomedBench | 学术论文 | 论文页面 (arXiv) | 用于分析不同生理信号可穿戴应用的计算与功耗差异 |
| OSHA Machine Guarding — Safety Trip Controls | 官方安全资料 | 官方页面 (职业安全与健康管理局) | 支持急停和安全控制不能只依赖概率模型的讨论 |
| Good Machine Learning Practice for Medical Devices | FDA 官方资料 | 官方页面 (U.S. Food and Drug Administration) | 支持医疗 AI / ML 系统的生命周期风险管理和验证要求 |