1. 本章学习目标
学完本章后,你应该能够理解:
-
Artificial Intelligence,人工智能,Machine Learning,机器学习,Deep Learning,深度学习之间的关系。
-
为什么 AI 近几年受到高度关注,以及深度学习革命背后的关键推动因素。
-
监督学习、回归、分类、无监督学习分别解决什么问题。
-
传统算法和机器学习算法的本质区别。
-
为什么这些基础概念对后续 Edge Impulse、TinyML、Arduino / ESP32 / Nordic 等嵌入式机器学习项目很重要。
-
如何把本章的 AI / ML 基础知识迁移到 EEG、ECG、EMG、PPG、HRV、GSR / EDA 等生理信号监测 TinyML 项目中。
2. 本章内容导读
本章由 Alexander Fred-Ojala 讲解,主题是 "What is Machine Learning",也就是"什么是机器学习"。这一章不是直接动手做项目,而是为后续 TinyML 实战打基础。课程先从人工智能为什么重要讲起,再解释人类智能和人工智能的关系,随后梳理 Data Science、Artificial Intelligence、Machine Learning 和 Deep Learning 的层级关系。接着,本章回顾了 AI 的发展历史、几次 AI 热潮和低谷,并总结当前深度学习革命背后的四个关键推动因素:更多数据、更强算力、新算法和更广泛的社会关注。最后,本章介绍机器学习的主要类型,包括监督学习中的回归和分类,以及无监督学习中的聚类、降维、异常检测等任务。
3. 正文笔记
3.1 为什么学习 TinyML 前要先理解 AI 和机器学习?
很多初学者一接触 Edge Impulse、Arduino、ESP32 或 TinyML,就容易直接关注"怎么训练模型""怎么部署到开发板"。但如果不先理解 AI 和机器学习的基本概念,后面很容易出现几个问题:
只知道点按钮训练模型
→ 不知道模型到底在学什么
→ 不知道为什么要打标签
→ 不知道分类、回归、异常检测怎么选
→ 不知道模型为什么能泛化或不能泛化
→ 到 MCU 部署时也不知道如何根据任务选择模型
本章的作用就是补上这一块基础知识。TinyML 虽然强调"在微控制器上运行机器学习",但它的核心仍然是机器学习:先从数据中学习规律,再把这个规律部署到设备端进行推理。
在 Coursera 的课程介绍中,这门课的目标就是让学习者理解机器学习系统的基本原理,并学习如何把模型部署到微控制器上运行。也就是说,TinyML 的完整学习路线并不是从硬件开始,而是从"数据、模型、训练、推理、部署"这一整套机器学习流程开始。
3.2 AI 为什么会被认为如此重要?
课程中引用了 Google / Alphabet CEO Sundar Pichai 对 AI 的评价:AI 是人类正在研究的最重要技术之一,甚至可能比电或火更深刻。类似说法现在已经非常常见,比如"数据是新的石油""AI 是新的基础设施"等。
这些说法听起来有点夸张,但背后有一个核心原因:AI 的本质是人类正在创造一种外部智能。
过去,机器主要帮助人类完成体力劳动或重复性计算,例如:
汽车 → 增强人的移动能力
电力 → 增强人的生产和生活能力
计算机 → 增强人的计算和信息处理能力
互联网 → 增强人的连接和信息传播能力
AI → 尝试增强人的判断、识别、预测和决策能力
这就是为什么 AI 不只是一个软件工具,而是会影响各个行业的底层技术。Stanford HAI 的 AI Index 也把 AI 描述为一种正在影响技术、经济和社会的重要技术,并持续跟踪 AI 的技术进展、经济影响和社会影响。
对于 TinyML 来说,这种影响会进一步下沉到嵌入式设备中:AI 不再只运行在云服务器或电脑上,而是可以运行在手表、传感器、耳机、工业节点、医疗可穿戴设备和低功耗 MCU 上。
3.3 人类智能和人工智能的关系
课程中先解释了人类智能。人类智能并不容易被严格定义,哲学家、神经科学家、心理学家和计算机科学家都讨论过这个问题。但从工程角度看,人类智能至少包括以下能力:
解决问题
设定目标并实现目标
分析过去、现在和未来
进行推理和判断
与他人沟通
协作完成任务
影响他人的决策
形成社会和文明
拥有意识、情绪、直觉、想象力和创造力
人工智能并不是完整复制人类智能,而是让机器、系统、模型或计算机在某些方面模拟甚至增强人类智能。
更正式地说,Russell 和 Norvig 在《Artificial Intelligence: A Modern Approach》中把 AI 统一到"智能体 Intelligent Agent"的框架下:AI 研究的是能够从环境中接收感知信息,并采取行动影响环境的智能体。这个定义很适合嵌入式系统,因为一个 TinyML 设备通常也是这样工作的:传感器感知环境,模型进行判断,设备再通过显示、通信、控制或报警产生动作。
例如,一个 生理信号监测设备可以这样理解:
环境 / 人体状态
→ 生理信号传感器采集电信号
→ MCU 读取数据
→ TinyML 模型判断当前状态
→ 设备输出提示、记录数据或通过 BLE 发送结果
这个过程本质上就是一个小型的智能体系统。
3.4 Data Science、AI、Machine Learning、Deep Learning 的关系
本章用一个由大到小的层级关系来解释几个核心术语:
Data Science 数据科学
└── Artificial Intelligence 人工智能
└── Machine Learning 机器学习
└── Deep Learning 深度学习
3.4.1 Data Science:数据科学
Data Science,数据科学,是最宽泛的概念。只要使用科学方法、统计方法、算法或工具从数据中提取知识,并帮助做出更好的决策,都可以算作数据科学。
它可以出现在很多场景中:
| 场景 | 数据科学在做什么 |
|---|---|
| 金融投资 | 用历史数据辅助投资策略 |
| 电商平台 | 分析用户行为和推荐商品 |
| 医疗健康 | 从生理数据中寻找健康状态变化 |
| 工业设备 | 分析振动、电流、温度判断设备状态 |
| TinyML 项目 | 从传感器数据中训练可部署模型 |
所以,数据科学不一定等于 AI,也不一定等于深度学习。Excel 统计、Python 数据分析、机器学习建模,都可以属于数据科学的一部分。
3.4.2 Artificial Intelligence:人工智能
AI 是数据科学中的一个重要方向,强调让机器表现出某种"智能行为"。
在 TinyML 场景中,AI 不是指科幻电影中的机器人意识,而是指设备能够根据传感器数据做出某种判断,例如:
听到关键词 → 唤醒语音助手
检测到异常振动 → 判断机器可能故障
检测到特定手势 → 控制设备
检测到生理信号变化 → 判断压力、疲劳或疼痛状态可能变化
3.4.3 Machine Learning:机器学习
Machine Learning,机器学习,是 AI 的一个子集。它的核心思想是:不再完全由人手写规则,而是让模型从训练数据中学习规则。
传统程序一般是:
人写规则
+ 输入数据
→ 程序输出结果
机器学习则是:
输入数据
+ 正确答案 / 标签
→ 训练过程
→ 学到模型规则
然后在实际使用时:
新输入数据
+ 训练好的模型
→ 预测结果
IBM 对机器学习算法的分类中,也将机器学习算法分为监督学习、无监督学习和强化学习等基本类别。
3.4.4 Deep Learning:深度学习
Deep Learning,深度学习,是机器学习中的一个子集。它通常使用多层神经网络,通过一层一层的计算学习数据中的表示。
可以这样理解:
传统机器学习:人先设计特征,模型再学习分类规则
深度学习:模型尝试从原始数据中逐层学习特征和规律
例如在图像识别中,深度学习模型可能从边缘、纹理、局部形状逐渐学到物体类别。在语音识别中,它可能从声音频谱中学习关键词特征。在生理信号项目中,深度学习模型可能从 ECG、EMG、PPG、GSR / EDA 波形中学习状态变化模式。
但对于 TinyML 来说,并不是越深越好。因为 MCU 的 RAM、Flash、算力和功耗有限,很多时候需要轻量模型、量化模型,甚至传统特征 + 小型分类器。
3.5 AI 不是新东西:从早期数学方法到几次 AI 热潮
本章强调一个重要观点:AI 并不是最近几年才出现的新技术。
很多机器学习中的数学思想,比如线性回归、最小二乘、概率统计、分类模型,早在现代深度学习之前就已经存在。只是近几年由于数据、算力、算法和社会关注度同时成熟,AI 才进入了新的爆发期。
3.5.1 1950 年代:AI 作为一个研究领域诞生
1956 年 Dartmouth Summer Research Project on Artificial Intelligence 通常被认为是人工智能作为研究领域的重要起点,Dartmouth 官方资料也将其描述为 AI 领域的一个奠基性事件。
在这个时期,人们开始非常乐观地设想"智能机器"和"认知计算机"。Frank Rosenblatt 的 Perceptron,感知机,也在这一时期成为神经网络早期历史中的重要模型。Cornell 的资料介绍,Rosenblatt 的感知机工作在当时远远超前,并为后来的神经网络发展埋下伏笔。
3.5.2 AI Winter:为什么 AI 会经历低谷?
AI 的发展并不是一直向上。历史上曾出现过几次 AI 热潮,然后又因为技术能力没有达到公众预期,进入所谓 AI Winter,人工智能寒冬。
这对今天学习 TinyML 很有提醒意义:不要因为某个模型在演示中效果很好,就直接认为它可以在真实场景中稳定可靠。尤其是生理信号项目,如果模型只在少量数据上表现不错,还不能说明它已经适合真实医疗或健康监测应用。
3.5.3 2010 年代以来:深度学习革命
课程中把当前这轮 AI 热潮称为 Deep Learning Revolution,深度学习革命。它大致从 2010 年代开始,被认为是 AI 真正进入大规模应用的时期。
本章总结了当前深度学习革命的四个推动因素:
| 推动因素 | 通俗解释 | 对 TinyML 的意义 |
|---|---|---|
| 更多数据 | 互联网、传感器、手机、可穿戴设备产生大量数据 | 可以训练更好的模型,也能建立传感器数据集 |
| 更强算力 | CPU、GPU、专用加速器发展迅速 | 训练可以在云端完成,推理可以压缩后部署到端侧 |
| 新算法 | 深度学习、优化算法、模型压缩等不断进步 | 让小模型也能完成有效识别 |
| 广泛关注 | 政府、大学、企业和开发者都投入 AI | 工具链成熟,学习资源和硬件平台更多 |
其中算力进步与摩尔定律密切相关。Intel 对 Moore's Law 的说明是,集成电路上的晶体管数量大约每两年翻倍且成本增长很小,这一趋势长期影响了半导体和计算机行业发展。
对 TinyML 来说,深度学习革命的意义不是把大型模型直接塞进 MCU,而是让我们可以在云端训练模型,再通过量化、压缩和优化,把适合任务的小模型部署到嵌入式设备上。
3.6 机器学习的三类基本任务
本章重点介绍了机器学习算法的主要类别,其中最重要的是监督学习和无监督学习。
3.6.1 Supervised Learning:监督学习
Supervised Learning,监督学习,是指训练数据中同时包含输入数据和正确答案,也就是标签 Label。IBM 对监督学习的解释是:它使用带标签的数据集训练 AI 模型,使模型学习数据中的模式和关系,并在新数据上预测正确输出。
监督学习可以理解为"带答案的练习题":
输入:一段传感器数据
答案:这个数据属于哪一类
模型:根据大量样本学习输入和答案之间的关系
在 TinyML 中,监督学习非常常见,例如:
| 项目 | 输入数据 | 标签 |
|---|---|---|
| 手势识别 | 加速度计 / 陀螺仪窗口 | 上下挥动、左右挥动、静止 |
| 关键词识别 | 麦克风音频窗口 | yes、no、unknown、noise |
| ECG 分类 | 心电波形 | 正常、异常、不同心律类别 |
| EMG 动作识别 | 肌电信号 | 握拳、张手、屈腕、伸腕 |
| GSR / EDA 疼痛监测 | 皮肤电时间序列 | 无痛、轻度疼痛、中度疼痛等 |
监督学习又可以继续分成回归和分类。
3.6.2 Regression:回归
Regression,回归,用于预测连续数值。
例如:
输入:房屋面积、位置、房龄
输出:房价
在生理信号项目中,回归可以用于:
输入:GSR / EDA、HRV、PPG、EMG 等窗口特征
输出:预设标签
或者:
输入:PPG 波形
输出:心率数值
回归任务的重点是预测一个连续变量,而不是判断类别。IBM 对监督学习中回归的说明也强调,回归方法常用于理解变量之间关系并预测数值结果。
3.6.3 Classification:分类
Classification,分类,用于预测离散类别。
例如:
输入:一张图片
输出:猫 / 狗 / 其他
在 TinyML 中,分类是最常见的任务之一:
| 应用 | 分类目标 |
|---|---|
| 手势识别 | 判断是哪一种手势 |
| 语音关键词识别 | 判断是否说出某个关键词 |
| 工业异常检测 | 判断设备正常或异常 |
| ECG 状态识别 | 判断心律类别 |
| GSR / EDA 状态识别 | 判断压力 / 疼痛 / 放松状态 |
如果你后续在 Edge Impulse 中看到 "Classification" 学习模块,它对应的就是这种任务。
3.6.4 Unsupervised Learning:无监督学习
Unsupervised Learning,无监督学习,是指训练数据没有人工提供的正确标签,模型需要自己从数据中寻找结构。IBM 对无监督学习的解释是:无监督学习使用 ML 算法分析和聚类未标注数据,从中发现隐藏模式或数据分组。
无监督学习常见任务包括:
| 任务 | 含义 | 生理信号项目中的例子 |
|---|---|---|
| Clustering 聚类 | 把相似数据分组 | 自动发现不同生理状态模式 |
| Dimensionality Reduction 降维 | 把高维数据压缩成低维表示 | 可视化多通道 EEG / EMG 特征 |
| Outlier Detection 异常检测 | 找出与正常模式不同的数据 | 发现异常心电、异常皮肤电反应 |
| Segmentation 分段 | 根据模式变化切分数据 | 把长时间生理信号分成不同状态片段 |
无监督学习特别适合早期探索数据。例如你还没有可靠疼痛标签,但已经采集了多组 GSR / EDA、PPG、HRV 数据,就可以先用聚类或可视化方法看看不同实验阶段的数据是否自然分开。
4. 传统算法和机器学习算法的区别
本章最后用一个非常重要的对比来总结机器学习的本质。
4.1 传统算法:人写规则
传统算法通常是:
人类设定规则
+ 输入数据
→ 程序输出结果
例如:
如果温度 > 38℃
→ 判断发热
这种方法的优点是简单、可解释、可控;缺点是面对复杂数据时,很难手写完整规则。
4.2 机器学习算法:模型从数据中学习规则
机器学习则是:
输入数据
+ 正确答案
→ 训练过程
→ 学到模型参数 / 规则
训练好以后:
新输入数据
+ 训练好的模型
→ 预测结果
这就是本章最核心的思想:机器学习不是完全不要规则,而是把规则从"人手写"变成"模型通过数据学习"。
4.3 Generalization:泛化能力
Generalization,泛化能力,是判断机器学习模型是否真正有用的关键。
如果模型只在训练数据上表现好,但遇到新数据就失效,说明它只是"背题",没有真正学到规律。
对于 TinyML 和生理信号项目,泛化能力尤其重要:
同一个人在不同时间测量 → 信号会变
不同人之间 → 生理差异更大
不同电极位置 → 信号会变
不同运动状态 → 噪声会变
不同设备和 ADC → 数据分布也会变
因此,模型训练时要注意数据集划分、交叉验证、受试者差异、实验标签可靠性和真实场景测试。
5. 关键概念解释
| 概念 | 通俗解释 | 技术解释 | 在本章中的作用 |
|---|---|---|---|
| Data Science 数据科学 | 用数据帮助做判断 | 使用统计、算法和科学方法从数据中提取知识 | 是 AI / ML 所在的大背景 |
| Artificial Intelligence 人工智能 | 让机器表现出智能行为 | 构建能感知、推理、决策或行动的系统 | 是本章讨论的最大技术方向 |
| Machine Learning 机器学习 | 让机器从数据中学规律 | 通过训练数据学习模型参数,并对新数据预测 | 是 TinyML 的算法基础 |
| Deep Learning 深度学习 | 多层神经网络学习复杂规律 | 使用多层模型逐级学习数据表示 | 是当前 AI 热潮的重要来源 |
| Supervised Learning 监督学习 | 带答案训练模型 | 使用输入和标签训练模型 | 对分类、回归、生理信号识别非常重要 |
| Regression 回归 | 预测连续数值 | 输出连续变量,例如评分、心率、趋势 | 可用于疼痛评分、心率估计 |
| Classification 分类 | 判断属于哪一类 | 输出离散类别 | 可用于手势、语音、生理状态分类 |
| Unsupervised Learning 无监督学习 | 没有答案,让模型自己找规律 | 从未标注数据中发现结构 | 可用于聚类、异常检测、数据探索 |
| Training 训练 | 让模型做练习题 | 使用训练数据优化模型参数 | 生成可部署模型 |
| Inference 推理 | 用训练好的模型判断新数据 | 在新输入上运行模型得到输出 | MCU 端运行的主要阶段 |
| Generalization 泛化 | 换一批新数据也能判断对 | 模型对未见数据保持性能的能力 | 决定模型是否有真实应用价值 |
| TinyML | 小设备上的机器学习 | 在 MCU 等资源受限设备上运行 ML 推理 | 后续课程核心方向 |
6. 本章案例复盘
本章没有直接完成一个 Edge Impulse 项目,但通过几个典型例子帮助理解机器学习。
| 案例 / 例子 | 说明 | 对 TinyML 入门的启发 |
|---|---|---|
| 垃圾邮件识别 | 判断邮件是 spam 还是 legitimate | 是典型分类任务 |
| 房价或数值预测 | 根据输入特征预测连续结果 | 是典型回归任务 |
| 手写数字识别 | 用神经网络识别信封或包裹上的数字 | 说明神经网络很早就用于模式识别 |
| 数据聚类 | 在无标签数据中发现分组 | 可用于未标注传感器数据探索 |
| 传统算法 vs 机器学习 | 人写规则 vs 数据学习规则 | 解释为什么 ML 适合复杂传感器任务 |
如果迁移到 Edge Impulse 中,可以这样对应:
采集数据
→ 给数据打标签
→ 选择 Processing block 提取特征
→ 选择 Learning block 训练分类 / 回归 / 异常检测模型
→ 测试模型泛化能力
→ 部署到 MCU 端实时推理
Edge Impulse 的 Processing blocks 用于从原始数据中提取特征,Learning blocks 用于训练分类、回归、异常检测等模型,这正好对应本章讲的"数据 → 特征 → 模型 → 预测"的机器学习流程。
7. 与生理信号监测 TinyML 项目的联系
7.1 共性:生理信号识别本质上也是机器学习问题
本章虽然讲的是 AI / ML 基础概念,但它与 EEG、ECG、EMG、PPG、HRV、GSR / EDA 生理信号项目关系非常大。
因为生理信号监测也可以被看作:
输入:一段生理信号时间序列
输出:某种状态、类别或数值
例如:
| 生理信号任务 | 常见生理信号 | 机器学习类型 | 常见机器学习模型 | 任务说明 / 典型输出 |
|---|---|---|---|---|
| 判断是否疼痛 | GSR / EDA、HRV、PPG、ECG、EMG | 分类 | Logistic Regression、SVM、Random Forest、XGBoost、MLP、1D CNN | 输出"疼痛/不疼痛"或"有明显疼痛反应/无明显疼痛反应" |
| 预测疼痛评分 0~10 | GSR / EDA、PPG、HRV、ECG、EMG | 回归 | Linear Regression、SVR、Random Forest Regressor、XGBoost Regressor、MLP、1D CNN | 输出连续数值,如 NRS/VAS 疼痛评分 |
| 判断是否疲劳 | EEG、HRV、PPG、EMG、IMU | 分类 | SVM、KNN、Random Forest、XGBoost、MLP、CNN、LSTM | 输出"疲劳/不疲劳"或"轻度/中度/重度疲劳" |
| 估计心率 | PPG、ECG | 回归 | Linear Regression、SVR、Kalman Filter + Regression、1D CNN、LSTM | 输出心率值,单位 bpm |
| 检测异常 ECG 波形 | ECG | 异常检测 / 分类 | One-Class SVM、Isolation Forest、Autoencoder、CNN、LSTM、Random Forest | 输出"正常/异常"或异常类型 |
| 自动发现不同压力状态 | GSR / EDA、HRV、PPG、ECG | 无监督聚类 | K-means、DBSCAN、Gaussian Mixture Model、Hierarchical Clustering | 在无明确标签时发现不同状态簇 |
| 情绪状态识别 | GSR / EDA、PPG、HRV、EEG、ECG | 分类 | SVM、Random Forest、XGBoost、MLP、CNN、LSTM | 输出"平静/紧张/兴奋"等情绪状态 |
| 压力检测 | GSR / EDA、HRV、PPG、ECG | 分类 / 回归 | Logistic Regression、SVM、Random Forest、XGBoost、MLP、LSTM | 输出"有压力/无压力"或压力评分 |
| 睡眠阶段识别 | EEG、ECG、PPG、HRV、呼吸信号 | 分类 | Random Forest、XGBoost、CNN、LSTM、CNN-LSTM | 输出清醒、浅睡、深睡、REM 等阶段 |
| 注意力 / 专注度识别 | EEG、PPG、HRV | 分类 / 回归 | SVM、Random Forest、MLP、CNN、LSTM | 输出"专注/分心"或注意力分值 |
| 癫痫 / 异常脑电检测 | EEG | 分类 / 异常检测 | SVM、Random Forest、CNN、LSTM、Autoencoder | 输出"正常脑电/异常脑电" |
| 心律失常识别 | ECG | 分类 | SVM、Random Forest、XGBoost、CNN、LSTM | 输出正常窦律、房颤、室早等类别 |
| HRV 状态评估 | ECG、PPG | 分类 / 回归 | Logistic Regression、SVM、Random Forest、XGBoost、MLP | 输出压力、疲劳或自主神经状态 |
| 血氧估计 | PPG | 回归 | Linear Regression、SVR、Random Forest Regressor、MLP、1D CNN | 输出 SpO2 数值 |
| 呼吸频率估计 | PPG、ECG、呼吸带、胸阻抗 | 回归 | Linear Regression、Kalman Filter、SVR、LSTM | 输出呼吸频率 |
| 跌倒检测 / 运动异常检测 | IMU、EMG、PPG | 分类 / 异常检测 | Decision Tree、Random Forest、SVM、CNN、LSTM | 输出"跌倒/未跌倒"或异常活动告警 |
| 手势 / 动作识别 | EMG、IMU | 分类 | KNN、SVM、Random Forest、XGBoost、MLP、CNN | 输出握拳、张手、屈腕等动作类别 |
| 肌肉疲劳识别 | EMG | 分类 / 回归 | SVM、Random Forest、XGBoost、CNN、LSTM | 输出"疲劳/不疲劳"或疲劳程度 |
| 康复动作评估 | EMG、IMU、PPG | 分类 / 回归 | Random Forest、XGBoost、MLP、CNN、LSTM | 输出动作是否标准、恢复程度 |
| 异常皮肤电反应检测 | GSR / EDA | 异常检测 / 分类 | One-Class SVM、Isolation Forest、Autoencoder、Random Forest | 输出"正常反应/异常反应" |
| 个体身份识别 / 生物特征识别 | ECG、EEG、EMG | 分类 | SVM、Random Forest、CNN、Siamese Network | 输出受试者身份类别 |
| 多模态健康状态识别 | ECG、PPG、HRV、GSR / EDA、EMG、EEG | 分类 / 回归 | Random Forest、XGBoost、MLP、CNN、LSTM、Transformer | 输出压力、疲劳、疼痛、情绪等综合状态 |
这说明本章的监督学习、分类、回归、无监督学习,不是抽象概念,而是后续生理信号 TinyML 项目的任务选择依据。
7.2 不同生理信号的共同开发流程
无论是 EEG、ECG、EMG、PPG、HRV 还是 GSR / EDA,都可以统一放到 TinyML 流程中理解:
传感器采集
→ 原始信号预处理
→ 数据分段 / 窗口化
→ 标注标签
→ 构建 Dataset
→ 特征提取
→ 模型训练
→ 模型评估
→ 量化与压缩
→ 部署到 MCU
→ 端侧实时推理
不同生理信号虽然来源不同,但在 TinyML 项目中都可以按照"采集 → 预处理 → 窗口化 → 标注 → 特征提取 → 模型训练 → MCU 部署 → 实时推理"的思路设计。下面分别以 EEG、ECG、EMG、PPG、HRV 和 GSR / EDA 为例说明。可以参考下列设计:
EEG 脑电信号项目:
EEG 电极采集脑电信号
→ 模拟前端放大与滤波
→ MCU / 采集模块读取多通道脑电数据
→ 去除工频干扰、眼电伪迹、肌电伪迹
→ 按 1s / 2s / 5s 切成时间窗口
→ 标注清醒、疲劳、注意力集中、睡眠阶段等状态
→ 提取 Delta、Theta、Alpha、Beta、Gamma 频带能量等特征
→ 训练分类模型
→ 部署到 MCU 或边缘设备
→ 实时判断注意力、疲劳或睡眠状态
ECG 心电信号项目:
ECG 电极采集心电信号
→ 模拟前端 AFE 放大、滤波、保护
→ MCU ADC / SPI / I2C 读取心电波形
→ 去除基线漂移、工频干扰和高频噪声
→ 检测 R 峰、QRS 波群等关键波形
→ 按心搏或固定时间窗口切片
→ 标注正常心律、异常心律、运动前后状态等标签
→ 提取 RR 间期、心率、QRS 宽度、波形形态等特征
→ 训练分类或异常检测模型
→ 部署到 MCU
→ 实时判断心率、心律状态或异常 ECG 波形
EMG 肌电信号项目:
EMG 电极采集肌肉电活动
→ 模拟前端放大、带通滤波
→ MCU ADC 读取肌电信号
→ 整流、平滑、去除工频干扰
→ 按 100ms / 200ms / 500ms / 1s 切成窗口
→ 标注握拳、张手、屈腕、伸腕、肌肉疲劳等状态
→ 提取 RMS、MAV、ZC、SSC、频域能量等特征
→ 训练动作分类或疲劳识别模型
→ 部署到 MCU
→ 实时识别手势动作、肌肉活动或疲劳程度
PPG 光电容积脉搏波项目:
PPG 传感器采集脉搏波信号
→ MCU 通过 I2C / SPI 读取红光、红外光或绿光通道数据
→ 去除运动伪迹、环境光干扰和高频噪声
→ 检测脉搏波峰值和峰间距
→ 按 5s / 10s / 30s 切成窗口
→ 标注静息、运动、疲劳、压力等实验状态
→ 提取心率、峰间距、波形幅值、脉搏波形态等特征
→ 训练分类或回归模型
→ 部署到 MCU
→ 实时估计心率、血氧趋势、疲劳或压力状态
HRV 心率变异性项目:
ECG 或 PPG 采集心搏信息
→ 检测 R 峰或脉搏峰
→ 计算 RR 间期或 NN 间期
→ 去除异常心搏和错误峰值
→ 按 30s / 1min / 5min 切成分析窗口
→ 标注放松、压力、疲劳、疼痛前后等状态
→ 提取 SDNN、RMSSD、pNN50、LF、HF、LF/HF 等 HRV 特征
→ 训练分类或回归模型
→ 部署到 MCU 或边缘设备
→ 实时评估自主神经状态、压力或疲劳程度
GSR / EDA 皮肤电项目:
GSR / EDA 传感器采集皮肤电信号
→ MCU ADC 读取电压或电导变化
→ 滤波、平滑、去除明显异常值
→ 分离 SCL 皮肤电水平和 SCR 皮肤电反应
→ 按 5s / 10s / 30s 切成窗口
→ 标注无痛、轻度疼痛、中度疼痛、压力或情绪唤醒状态
→ 提取均值、斜率、峰值、SCR 次数、上升时间、恢复时间等特征
→ 训练分类或回归模型
→ 部署到 ESP32 / Nordic / STM32 等主控
→ 实时判断疼痛、压力或情绪唤醒状态
Biomedical TinyML 领域已经有面向低功耗可穿戴设备的基准研究,例如 BiomedBench 提出了一套面向实时患者监测的端到端 TinyML 生物医学应用,用于评估不同低功耗平台在采集、处理和空闲阶段的表现。
7.3 不同生理信号之间的差异
| 信号 | 信号来源 | 常见采集方式 | 采样率要求 | 常见预处理 | 常见特征 | 适合的 TinyML 任务 | 嵌入式部署难点 |
|---|---|---|---|---|---|---|---|
| EEG | 大脑电活动 | 头皮电极 | 通常较高 | 去工频、带通滤波、伪迹去除 | 频带能量、节律特征 | 注意力、疲劳、睡眠、脑机接口 | 信号弱、噪声大、电极要求高 |
| ECG | 心脏电活动 | 心电电极、AFE | 中等到较高 | 基线漂移去除、QRS 检测 | RR 间期、心率、波形形态 | 心率、心律异常、HRV | 医学标签要求高,误判风险大 |
| HRV | 心搏间期变化 | ECG 或 PPG 推导 | 依赖心搏检测质量 | 异常 RR 间期剔除 | SDNN、RMSSD、频域指标 | 压力、疲劳、自主神经状态 | 需要较稳定心搏检测和较长窗口 |
| EMG | 肌肉电活动 | 表面肌电电极 | 通常较高 | 整流、包络、带通滤波 | RMS、MAV、ZC、频域特征 | 手势识别、肌肉疲劳、康复评估 | 电极位置和肌肉状态影响大 |
| PPG | 脉搏波 / 血容量变化 | 光电传感器 | 中等 | 去运动伪迹、平滑滤波 | 峰间距、心率、脉搏波形 | 心率、血氧、疲劳检测 | 运动干扰明显 |
| GSR / EDA | 皮肤电活动 | 皮肤电电极 | 较低到中等 | 平滑、去趋势、分离 SCL / SCR | 均值、峰值、上升时间、恢复时间 | 情绪唤醒、压力、疼痛反应 | 个体差异大,受汗液和接触影响 |
这张表的重点不是死记每个信号,而是理解:不同生理信号虽然采样方式和特征不同,但在 TinyML 中都要经历"采集、预处理、窗口化、特征提取、训练、部署"的共同流程。
7.4 VOFA+ 与 CSV 数据在 TinyML 项目中的作用
在 TinyML 项目中,CSV 不是普通表格,而是 Dataset 数据集的原始形态。如果通过 VOFA+ 采集 EEG、ECG、EMG、PPG、HRV、GSR / EDA 等生理信号并保存为 CSV 文件,这些数据后续就可以用于窗口化、特征提取、模型训练和 MCU 部署。不同生理信号的 CSV 列名会因采集设备、软件平台和采样方式不同而变化,例如 EEG 可能包含多个 EXG 通道,ECG 可能包含心电电压或 R 峰信息,PPG 可能包含 BVP、红光、红外光或绿光通道,EDA 可能包含皮肤电导、ADC 原始值或 SCR / SCL 特征,HRV 则可能由 IBI 或 RR 间期进一步计算得到。但从 TinyML 项目的角度看,这些 CSV 通常都可以统一整理成"时间戳 + 一个或多个信号通道 + 标签 + 实验信息"的结构。Edge Impulse 支持 CSV / TXT / Parquet 等数据导入方式,并可以通过 CSV Wizard 配置复杂数据的解析规则;OpenBCI / BrainFlow 等 EEG 采集工具也支持保存 CSV 或类 CSV 文本数据,其中 BrainFlow 的 EXG 通道通常以 μV 表示,时间戳可使用 Unix timestamp;Empatica E4 等可穿戴设备则常把 BVP / PPG、EDA、HR、IBI 等信号分别保存为多个 CSV 文件。因此,在生理信号 TinyML 项目中,合理设计 CSV 格式相当于提前规范数据集结构,是后续完成模型训练、评估和嵌入式部署的基础。(Edge Impulse Documentation)
7.5不同生理信号常见 CSV 格式示例
7.5.1. EEG 脑电信号 CSV
EEG 通常是多通道数据,列名常用电极位置命名,例如 Fp1、Fp2、C3、C4、O1、O2 等。OpenBCI 等设备会记录原始 EEG / EXG 数据,后续可用于离线处理、训练和实验分析。(OpenBCI)
timestamp_s,eeg_fp1_uV,eeg_fp2_uV,eeg_c3_uV,eeg_c4_uV,eeg_o1_uV,eeg_o2_uV,marker,label
0.000,12.4,10.8,-5.2,-4.9,8.1,7.6,baseline,relaxed
0.004,13.1,11.0,-5.0,-4.7,8.5,7.8,baseline,relaxed
0.008,12.8,10.5,-5.4,-5.1,8.0,7.4,baseline,relaxed
...
常见列含义:
| 列名 | 含义 |
|---|---|
| timestamp_s | 时间戳,单位秒 |
| eeg_fp1_uV、eeg_c3_uV 等 | 不同 EEG 电极通道,单位通常为 μV |
| marker | 实验事件标记,例如 baseline、stimulus、rest |
| label | 标签,例如 relaxed、focused、fatigue、sleep_stage |
7.5.2. ECG 心电信号 CSV
ECG 可以是单导联,也可以是多导联。TinyML 入门项目中常见的是单导联 ECG,用于心率估计、心律异常识别或 HRV 计算。PhysioNet 是常用的生理信号数据库平台,长期提供 ECG 等多种生理信号数据和分析工具。(美国心脏协会期刊)
timestamp_s,ecg_mV,r_peak,rr_interval_ms,heart_rate_bpm,label
0.000,0.12,0,,,
0.004,0.15,0,,,
0.008,0.21,0,,,
0.412,1.05,1,812,74,normal
0.416,0.72,0,,,
...
常见列含义:
| 列名 | 含义 |
|---|---|
| timestamp_s | 时间戳 |
| ecg_mV | ECG 电压值,单位 mV |
| r_peak | 是否检测到 R 峰,1 表示检测到 |
| rr_interval_ms | 相邻 R 峰间隔,单位 ms |
| heart_rate_bpm | 由 RR 间期计算得到的心率 |
| label | 标签,例如 normal、arrhythmia、exercise、rest |
多导联 ECG 也可以写成:
timestamp_s,lead_I_mV,lead_II_mV,lead_III_mV,V1_mV,V2_mV,label
0.000,0.12,0.18,0.06,-0.03,0.04,normal
0.004,0.14,0.20,0.07,-0.02,0.05,normal
0.008,0.20,0.31,0.11,0.01,0.08,normal
...
7.5.3. EMG 肌电信号 CSV
EMG 通常用于动作识别、肌肉疲劳识别、康复训练评估等任务。NeuroKit2 等工具也把 EMG 与 ECG、PPG、EDA 一起作为常见生理信号处理对象。(neuropsychology.github.io)
timestamp_s,emg_ch1_uV,emg_ch2_uV,emg_ch3_uV,emg_ch4_uV,motion_label,fatigue_label
0.000,15.2,18.5,12.4,10.1,rest,no_fatigue
0.001,22.8,25.1,16.9,14.3,rest,no_fatigue
0.002,35.6,39.2,28.5,22.7,grip,no_fatigue
0.003,48.1,52.4,35.9,31.2,grip,no_fatigue
...
常见列含义:
| 列名 | 含义 |
|---|---|
| timestamp_s | 时间戳 |
| emg_ch1_uV、emg_ch2_uV | 不同肌电通道 |
| motion_label | 动作标签,例如 rest、grip、open_hand、wrist_flexion |
| fatigue_label | 疲劳标签,例如 no_fatigue、fatigue |
如果是做 TinyML 动作识别,可以只保留:
timestamp_s,emg_ch1_uV,emg_ch2_uV,label
0.000,15.2,18.5,rest
0.001,22.8,25.1,rest
0.002,35.6,39.2,grip
...
7.5.4. PPG 光电容积脉搏波 CSV
PPG 常用于心率、血氧、疲劳、压力等任务。Empatica E4 的 BVP 信号就是由 PPG 传感器获得的血容量脉搏信号,相关数据常以 CSV 文件导出;一些公开可穿戴数据集也说明 PPG / BVP 采样率可为 64 Hz,EDA 可为 4 Hz。(empatica.com)
timestamp_s,ppg_ir,ppg_red,ppg_green,acc_x,acc_y,acc_z,label
0.000,52341,42156,38520,0.01,0.02,0.98,rest
0.016,52388,42190,38560,0.01,0.02,0.98,rest
0.032,52410,42221,38605,0.02,0.01,0.97,rest
...
常见列含义:
| 列名 | 含义 |
|---|---|
| timestamp_s | 时间戳 |
| ppg_ir | 红外光 PPG 通道 |
| ppg_red | 红光 PPG 通道 |
| ppg_green | 绿光 PPG 通道 |
| acc_x、acc_y、acc_z | 三轴加速度,用于判断运动干扰 |
| label | 标签,例如 rest、walking、exercise、stress |
如果是单通道 BVP / PPG,也可以写成:
timestamp_s,bvp,heart_rate_bpm,label
0.000,0.014,72,rest
0.016,0.018,72,rest
0.032,0.025,73,rest
...
7.5.5. HRV 心率变异性 CSV
HRV 不是直接由一个独立传感器采集出来的原始信号,而是通常从 ECG 的 R-R 间期或 PPG / BVP 的 IBI 间期计算出来的特征。Empatica E4 数据中常见的 IBI.csv 就是心搏间期文件,资料中说明 IBI 文件通常包含检测到的心搏时间以及与前一次心搏之间的时间间隔。(Nature)
7.5.5.1 逐心搏 IBI / RR 间期格式
beat_time_s,ibi_s,rr_interval_ms,heart_rate_bpm,label
1.024,0.812,812,74,rest
1.836,0.798,798,75,rest
2.634,0.805,805,75,rest
3.439,0.780,780,77,stress
...
常见列含义:
| 列名 | 含义 |
|---|---|
| beat_time_s | 当前心搏出现的时间 |
| ibi_s | Inter-Beat Interval,心搏间期,单位秒 |
| rr_interval_ms | RR 间期,单位 ms |
| heart_rate_bpm | 心率 |
| label | 标签,例如 rest、stress、fatigue、pain |
7.5.5.2 窗口级 HRV 特征格式
TinyML 训练时,更常见的是把 HRV 整理成窗口级特征:
window_start_s,window_end_s,mean_hr_bpm,sdnn_ms,rmssd_ms,pnn50,lf_power,hf_power,lf_hf_ratio,label
0,60,72,48.2,35.6,0.18,530.2,420.5,1.26,rest
60,120,81,32.4,22.1,0.08,610.8,260.4,2.35,stress
120,180,78,36.7,25.9,0.11,580.1,310.7,1.87,fatigue
...
这种格式更适合传统机器学习模型,例如 SVM、Random Forest、XGBoost、MLP,也更容易用于疼痛、压力、疲劳状态分类。
7.5.6. GSR / EDA 皮肤电 CSV
GSR / EDA 常用于压力、情绪唤醒、疼痛反应等任务。Empatica E4 等设备会把 EDA 单独保存为 CSV 文件;公开数据集也常把 EDA 与 PPG / BVP、HR、IBI 等一起保存。(MindWare Technologies Support)
timestamp_s,eda_uS,gsr_adc,gsr_voltage,scl_uS,scr_amplitude_uS,label
0.000,1.24,1234,1.21,1.20,0.00,no_pain
0.250,1.25,1238,1.22,1.21,0.00,no_pain
0.500,1.31,1245,1.25,1.22,0.08,mild_pain
0.750,1.42,1260,1.30,1.25,0.17,mild_pain
...
常见列含义:
| 列名 | 含义 |
|---|---|
| timestamp_s | 时间戳 |
| eda_uS | 皮肤电导,单位 μS |
| gsr_adc | MCU ADC 读取到的原始数值 |
| gsr_voltage | 传感器输出电压 |
| scl_uS | Skin Conductance Level,皮肤电水平,偏慢变化 |
| scr_amplitude_uS | Skin Conductance Response,皮肤电反应幅值 |
| label | 标签,例如 no_pain、mild_pain、stress、relaxed |
如果你现在是 VOFA+ + MCU 采集,最简单可以先保存成:
timestamp_s,gsr_adc,label
0.00,1234,no_pain
0.01,1238,no_pain
0.02,1245,no_pain
...
后续再逐步增加:
timestamp_s,gsr_adc,gsr_voltage,filtered_gsr,slope,label
0.00,1234,1.21,1.20,0.00,no_pain
0.01,1238,1.22,1.21,0.01,no_pain
0.02,1245,1.25,1.23,0.02,mild_pain
...
7.5.8汇总表:不同生理信号 CSV 常见列设计
| 生理信号 | 原始数据常见列 | 特征数据常见列 | 常见标签 |
|---|---|---|---|
| EEG | timestamp、Fp1、Fp2、C3、C4、O1、O2 | delta、theta、alpha、beta、gamma 频带能量 | relaxed、focused、fatigue、sleep |
| ECG | timestamp、ecg_mV、lead_I、lead_II | R 峰、RR 间期、心率、QRS 宽度 | normal、arrhythmia、rest、exercise |
| EMG | timestamp、emg_ch1、emg_ch2 | RMS、MAV、ZC、SSC、频域能量 | rest、grip、open_hand、fatigue |
| PPG | timestamp、ppg_ir、ppg_red、ppg_green、bvp | 峰间距、心率、脉搏波幅值、SpO2 相关特征 | rest、walking、stress、fatigue |
| HRV | beat_time、IBI、RR interval | SDNN、RMSSD、pNN50、LF、HF、LF/HF | rest、stress、fatigue、pain |
| GSR / EDA | timestamp、eda_uS、gsr_adc、gsr_voltage | SCL、SCR 幅值、SCR 次数、上升时间、恢复时间 | no_pain、mild_pain、stress、relaxed |
在 Edge Impulse 或 Python 训练流程中,这些 CSV 可以继续被整理成:
训练集 Training set
验证集 Validation set
测试集 Test set
如果数据已经有标签,可以做监督学习;如果暂时没有可靠标签,可以先做数据可视化、聚类或异常检测。
7.6 Edge Impulse 在生理信号项目中的作用
结合本章机器学习流程,Edge Impulse 可以承担以下角色:
| 环节 | Edge Impulse 的作用 |
|---|---|
| 数据管理 | 上传、管理不同类别或不同实验阶段的数据 |
| 数据标注 | 给窗口或样本添加标签 |
| 信号切片 | 按固定窗口长度切分时间序列 |
| 特征提取 | 使用 Raw Data、Spectral Analysis、Flatten、自定义 DSP 等处理块 |
| 模型训练 | 训练分类、回归或异常检测模型 |
| 模型评估 | 查看准确率、混淆矩阵、测试结果 |
| 模型部署 | 导出 Arduino / C++ / TFLite Micro 等部署格式 |
但要注意,Edge Impulse 不能替代医学验证。它可以帮助你快速完成原型验证,但不能证明模型已经具备临床诊断能力。
7.7 主控平台迁移分析
本章讲机器学习基础时没有重点讲硬件,但后续 TinyML 项目一定会回到 MCU 选型问题。
| 主控平台 | 适合方向 | 与本章 ML 概念的关系 |
|---|---|---|
| Arduino Nano 33 BLE Sense | TinyML 入门、IMU、语音案例 | 适合快速理解分类、训练、部署流程 |
| ESP32 / ESP32-S3 | Wi-Fi / BLE、生理信号原型、边缘推理 | 适合把模型结果通过无线传输到上位机或 App |
| Nordic nRF52 / nRF53 | BLE 低功耗可穿戴设备 | 适合长时间采集 ECG、PPG、EDA、HRV |
| STM32 | 工业和低功耗嵌入式部署 | 适合对 ADC、实时性和低功耗要求更高的项目 |
| RP2040 / Raspberry Pi Pico | 低成本实验和基础部署 | 适合学习基础 TinyML 流程 |
| Edge Impulse 支持的其他开发板 | 快速验证不同任务 | 适合比较不同硬件上的模型推理性能 |
选择主控时,不要只看"能不能跑模型",还要看:
ADC 精度
采样率
RAM
Flash
主频
功耗
BLE / Wi-Fi
开发环境
Edge Impulse 部署便利性
外设接口
电池供电能力
8. 本章内容对未来项目的启发
8.1 疼痛监测
本章说明,疼痛监测既可以做分类,也可以做回归。分类可以输出"无痛 / 轻度 / 中度 / 重度",回归可以输出 0~10 疼痛评分。但无论哪种方式,都需要可靠标签和足够数据,不能只靠少量样本得出结论。
8.2 情绪识别
GSR / EDA、HRV、PPG 等信号可以反映自主神经相关变化,但模型输出只能理解为"状态估计",不能简单等同于真实情绪本身。
8.3 疲劳检测
疲劳检测可以使用 EEG、HRV、PPG、EMG、IMU 等多种信号。监督学习适合已有疲劳标签的数据,无监督学习适合早期探索不同状态下的数据分布。
8.4 运动状态识别
运动状态识别和课程后续手势识别非常接近。IMU、EMG、PPG 运动干扰等数据都可以按照时间序列分类任务处理。
8.5 可穿戴生理信号监测
TinyML 的优势在于低功耗、本地推理和低延迟。对于可穿戴设备来说,这可以减少原始数据上传,提升隐私性,并延长电池续航。
8.6 多模态生理信号融合
未来可以把 GSR / EDA、PPG、HRV、EMG、IMU 等信号融合。多模态可以提高鲁棒性,但也会增加同步、功耗、模型大小和标签设计难度。
9. 本章还不能解决的问题
本章是 AI / ML 基础概念介绍,还不能直接解决以下问题:
-
生理信号采集电路如何设计。
-
模拟前端 AFE 如何选择。
-
电极与人体接触噪声如何处理。
-
ADC 精度和采样率如何设置。
-
EEG / ECG / EMG / PPG / GSR 的滤波算法如何实现。
-
疼痛、压力、疲劳等标签如何可靠标注。
-
小样本数据如何避免过拟合。
-
个体差异如何处理。
-
TinyML 模型如何在不同 MCU 上优化推理速度和内存占用。
-
医疗安全性、伦理和临床验证如何开展。
10. 本章总结
本章最重要的收获是:机器学习不是神秘的黑箱,而是一种让模型从数据中学习规则的方法。AI 是更大的概念,机器学习是 AI 的一个子集,深度学习又是机器学习中的一个重要方向。传统算法依赖人写规则,而机器学习通过训练数据学习规则,并希望对新数据具有良好的泛化能力。对于 TinyML 项目来说,这些基础概念非常关键:后续无论是语音识别、手势识别,还是 EEG、ECG、EMG、PPG、HRV、GSR / EDA 生理信号监测,本质上都离不开数据、标签、特征、模型训练、模型评估和端侧推理。
11. 参考资料
| 序号 | 资料名称 | 类型 | 链接 | 与本章内容的关系 |
|---|---|---|---|---|
| 1 | Introduction to Embedded Machine Learning | 官方课程页面 | [Introduction to Embedded Machine Learning | Coursera](https://www.coursera.org/learn/introduction-to-embedded-machine-learning "Introduction to Embedded Machine Learning | Coursera") |
| 2 | Alexander Fred-Ojala, Instructor | 官方讲师资料 | [Alexander Fred-Ojala, Instructor | Coursera](https://www.coursera.org/instructor/~23954429 "Alexander Fred-Ojala, Instructor | Coursera") |
| 3 | Artificial Intelligence: A Modern Approach | 教材 / 权威定义 | Artificial Intelligence: A Modern Approach, 4th US ed. | 用于解释 AI 中"智能体"的正式定义,也是人工智能领域常用教材。(aima.cs.berkeley.edu) |
| 4 | Artificial Intelligence Coined at Dartmouth | 官方历史资料 | [Artificial Intelligence (AI) Coined at Dartmouth | Dartmouth](https://home.dartmouth.edu/about/artificial-intelligence-ai-coined-dartmouth "Artificial Intelligence (AI) Coined at Dartmouth | Dartmouth") |
| 5 | Rosenblatt's Perceptron | 大学历史资料 | [Professor's perceptron paved the way for AI -- 60 years too soon | Cornell Chronicle](https://news.cornell.edu/stories/2019/09/professors-perceptron-paved-way-ai-60-years-too-soon "Professor’s perceptron paved the way for AI – 60 years too soon | Cornell Chronicle") |
| 6 | Moore's Law --- Intel | 官方资料 | https://www.intel.com/content/www/us/en/history/virtual-vault/articles/moores-law.html | 支持本章关于计算能力提升推动 AI 发展的解释。(英特尔) |
| 7 | AI Index --- Stanford HAI | 权威报告 | [AI Index | Stanford HAI](https://hai.stanford.edu/ai-index "AI Index | Stanford HAI") |
| 8 | What Are Machine Learning Algorithms? --- IBM | 权威定义 | https://www.ibm.com/think/topics/machine-learning-algorithms | 用于解释机器学习算法的主要类别、训练过程和泛化目标。(IBM) |
| 9 | What Is Supervised Learning? --- IBM | 权威定义 | https://www.ibm.com/think/topics/supervised-learning | 用于解释监督学习、标签和预测输出。(IBM) |
| 10 | What Is Unsupervised Learning? --- IBM | 权威定义 | https://www.ibm.com/think/topics/unsupervised-learning | 用于解释无监督学习、聚类和隐藏模式发现。(IBM) |
| 11 | Edge Impulse Processing Blocks | 官方文档 | Processing blocks - Edge Impulse Documentation | 对应 Edge Impulse 中特征提取和数据预处理流程。(Edge Impulse Documentation) |
| 12 | Edge Impulse Learning Blocks | 官方文档 | Learning blocks - Edge Impulse Documentation | 对应 Edge Impulse 中分类、回归和模型训练流程。(Edge Impulse Documentation) |
| 13 | Edge Impulse: An MLOps Platform for Tiny Machine Learning | 学术论文 | 2212.03332 Edge Impulse: An MLOps Platform for Tiny Machine Learning | 说明 Edge Impulse 作为 TinyML MLOps 平台的作用。(arXiv) |
| 14 | BiomedBench: A benchmark suite of TinyML biomedical applications for low-power wearables | 学术论文 | 2406.03886 BiomedBench: A benchmark suite of TinyML biomedical applications for low-power wearables | 支持生理信号与低功耗可穿戴 TinyML 项目的迁移分析。(arXiv) |