打造自行车监测边缘 AI 模型:从数据收集到模型测试
1. 设计与影响考量
在设计边缘 AI 产品时,有几个关键要点需要考虑:
-
用户与利益相关者
:明确产品的最终用户是谁,以及主要利益相关者有哪些。
-
恶意使用风险
:思考产品可能被恶意或不道德使用的方式。
-
数据存储与传输
:确定数据的存储位置,以及推理结果是否会发送到云平台。
-
用户知情权
:考虑如何让消费者或最终用户了解传感器数据在设备、云端或网络连接中的使用方式。
边缘 AI 在消费技术中的发展虽然让生活更便捷,但也存在一些问题,比如部分人群无法使用或使用受限。制造商正努力解决这些问题,例如制造更友好、更易使用的设备,像一些帮助减轻家务负担的设备,能协助老人或残疾人完成清洁、烹饪等困难任务,既让生活更轻松,又能预防事故和伤害。此外,企业还通过提前提醒客户设备可能出现的问题或维修需求,减少技术垃圾,保护儿童安全。
儿童与青少年优先清单
在构思新的边缘 AI 消费产品时,可参考以下清单(FIRST):
| 要点 | 说明 |
| ---- | ---- |
| 公平(Fair) | 关注伦理、偏见和责任问题 |
| 包容(Inclusive) | 考虑可访问性、神经差异,收集儿童或目标年龄群体的反馈 |
| 负责(Responsible) | 确保产品适合目标年龄和发展阶段,反映最新学习科学 |
| 安全(Safe) | 不造成伤害,注重网络安全和成瘾预防 |
| 透明(Transparent) | 能够向新手或普通受众解释 AI 的工作原理和用途 |
2. 自行车监测模型构建
2.1 机器学习类别定义
为创建自行车监测模型,我们将从边缘设备的加速度计传感器收集“空闲(idle)”、“突然停止(sudden stop)”和“正常(nominal)”这三个机器学习类别的样本。这三个类别能让分类机器学习模型实时识别自行车手的运动事件类型。边缘设备持续从加速度计获取原始样本,训练好的机器学习模型推断设备检测到的运动是空闲、转弯、突然停止(可能表示碰撞)还是在不平坦地形上行驶。如果设备判定异常分数高或出现突然停止,会通过音频输出通知或 LED 警告立即提醒用户,并将数据通过网络连接发送或存储在本地设备上,供人工或云端进一步处理。
以下是自行车安全用例的机器学习类别:
| 用例 | 训练数据 | 类别标签 |
| ---- | ---- | ---- |
| 检测自行车碰撞 | 加速度计 | 正常,异常(如果数据已存在,也可用指定的“碰撞”标签) |
| 监测迎面而来的交通 | 带边界框的摄像头 | 汽车、自行车、摩托车、其他交通对象 |
| 监测骑行者的盲区 | 雷达 | 正常,靠近骑行者的物体 |
| 监听汽车警报、碰撞和其他交通声音 | 音频 | 背景、噪音、汽车警报、汽车碰撞、汽车鸣笛、人声/呼喊 |
2.2 数据集收集
可以采用多种策略收集数据集:
- 结合公共研究数据集。
- 使用来自社区驱动的数据收集网站(如 Kaggle)的现有传感器数据集。
- 寻求同事帮助,为协作的 Edge Impulse 项目收集样本。
2.3 Edge Impulse 平台使用
需要创建一个免费的 Edge Impulse 账户。可以通过导航到本章的公共 Edge Impulse 项目,查看作者开发的最终数据和模型,还能点击页面右上角的“Clone”按钮直接克隆项目,包括所有原始训练和测试数据、中间模型信息、训练后的模型结果以及所有部署选项。
2.4 硬件与传感器选择
为简化项目和收集加速度计数据,我们将使用配备 Edge Impulse 移动客户端的手机和带有 nRF Edge Impulse 手机应用的 Nordic Semi Thingy:53 进行数据摄取和模型部署。如果没有这些硬件,可参考 Edge Impulse 文档选择其他合适的开发板和传感器,也可使用自己的开发平台和传感器组合,但需先创建运行的设备固件(最简单的方法是使用 Edge Impulse 数据转发器)。
以下是可考虑用于提高自行车监测模型准确性的其他传感器类型:
- 陀螺仪
- 红外、夜视或热成像相机
- 雷达
- 音频
2.5 数据收集
2.5.1 数据摄取固件
为从 Thingy:53 摄取数据,需按照文档说明将 Edge Impulse 固件刷入设备,然后使用 Edge Impulse CLI 或 nRF Edge Impulse 手机应用将设备连接到项目,并开始记录新的加速度计数据样本。
2.5.2 手机数据收集
将手机直接连接到 Edge Impulse 项目,从手机集成的 IMU 记录加速度计数据是上传新数据的简便方法,连接说明可在 Edge Impulse 文档中找到。
2.5.3 nRF Edge Impulse 手机应用
首先,为 iPhone 或 Android 手机下载并安装 Nordic nRF Edge Impulse 应用。然后,按照 Edge Impulse 文档的说明,使用 Edge Impulse 账户登录应用,并将 Thingy:53 连接到项目。要记录和上传新的数据样本,点击应用右上角的“+”按钮,选择传感器,输入样本标签,选择样本长度和频率,然后点击“Start Sampling”。
2.6 数据集清理
由于我们记录的气体传感器样本长度为 30 秒(30,000 毫秒),将把样本拆分为多个 10 秒(10,000 毫秒)的子样本。从“Data acquisition”标签中,选择样本的三点下拉菜单,然后点击“Split sample”。在拆分样本视图中,可能可以放入三个约 10,000 毫秒的子样本,点击“+ Add Segment”按钮添加更多分割段,然后点击“Split”。也可以通过选择样本名称旁边下拉菜单中的“Crop sample”选项裁剪样本。
2.7 数据集许可和法律义务
如果直接上传从手机或 Nordic Thingy:53 设备收集的数据,通常无需考虑数据集许可和法律问题。但如果使用公共数据源的加速度计数据或其他传感器数据,在上传到训练/测试数据集并使用训练后的模型之前,需仔细确定数据使用规则和归属要求。
3. DSP 和机器学习工作流程
3.1 脉冲设计
将加速度计运动样本上传到训练和测试数据集后,需要使用数字信号处理(DSP)方法提取原始数据的最重要特征,然后训练机器学习模型识别传感器数据提取特征中的模式。Edge Impulse 将 DSP 和 ML 训练工作流程称为“脉冲设计(Impulse design)”。
在 Edge Impulse 项目的“脉冲设计”标签中,可以查看和创建端到端机器学习管道的图形化简单概述。最左侧是原始数据块,Edge Impulse Studio 将摄取和预处理数据,并设置窗口增加和大小。如果上传了不同频率记录的加速度计数据,还可以对时间序列数据进行下采样或上采样。
接下来是 DSP 块,通过开源数字信号处理脚本“频谱分析(Spectral analysis)”提取加速度计数据的最重要特征。生成数据特征后,学习块将根据所需的架构和配置设置训练神经网络。最后,可以看到部署输出信息,包括希望训练好的机器学习模型分类的所需类别:空闲、突然停止和正常。
在 Edge Impulse 项目中,按以下设置配置“脉冲设计”标签,然后点击“Save Impulse”:
-
时间序列数据
:
- 窗口大小:5000 毫秒
- 窗口增加:250 毫秒
- 频率(Hz):62.5
- 零填充数据:勾选
-
处理块
:频谱分析
-
学习块
:分类(Keras)、异常检测(K-Means)
3.2 数字信号处理块
本项目将使用 Edge Impulse Studio 中默认包含的数字信号处理算法“频谱分析”处理块,该代码可在 Edge Impulse GitHub 存储库“processing-blocks”中找到。
设置频谱分析块的参数如下:
| 参数 | 设置 |
| ---- | ---- |
| 滤波器 | 缩放轴:1,类型:无 |
| 频谱功率 | FFT 长度:16,取频谱对数:勾选,重叠 FFT 帧:勾选 |
点击“Save parameters”保存参数。为使用 Edge Impulse 中的高级异常检测功能,在“Generate features”视图中勾选“Calculate feature importance”复选框,然后点击“Generate features”查看数据的特征浏览器和特征重要性列表。
3.3 机器学习块
3.3.1 可视化模式
配置机器学习训练设置和神经网络架构的最简单方法是通过 Edge Impulse 可视化模式。在导航栏的“脉冲设计”下选择“NN Classifier”标签,将以下设置复制到神经网络分类器的块配置中,然后点击“Start training”:
- 训练周期数:30
- 学习率:0.0005
- 验证集大小:20%
- 自动平衡数据集:不勾选
- 神经网络架构:
- 密集层(20 个神经元)
- 密集层(10 个神经元)
训练完成后,可以在“Model: Last training performance”视图中查看迁移学习结果。
3.3.2 异常检测
神经网络在模式识别方面表现出色,但对新的、未见过的数据处理有困难。选择导航栏中的“Anomaly detection”标签,点击“Select suggested axes”按钮自动选择我们用例的建议特征重要性轴,然后点击“Start training”查看“Anomaly explorer”。
3.4 模型测试
3.4.1 实时分类
从“Live classification”标签中,可以直接从连接的 Nordic Thingy:53 测试单个测试样本,连接说明可在“Data Ingestion Firmware”中找到。也可以在“Classify existing test sample”中加载现有测试数据集图像,查看样本的提取特征和训练好的模型的预测结果。
3.4.2 模型测试
导航到项目的“Model testing”标签,点击“Classify all”获取训练好的模型对测试数据集样本的推理结果矩阵。需要注意的是,由于目前只上传了几分钟的训练数据,模型测试结果在现实世界中的表现可能不太理想,但上传更多数据后,模型在现实世界和测试数据集上的表现会更好。
graph LR
A[数据收集] --> B[数据集清理]
B --> C[DSP 和机器学习工作流程]
C --> D[模型训练]
D --> E[模型测试]
E --> F[实时分类]
E --> G[模型测试]
通过以上步骤,我们可以构建一个自行车监测边缘 AI 模型,从数据收集、清理到模型训练和测试,逐步实现对自行车运动状态的准确识别和监测。
4. 总结与展望
4.1 项目回顾
整个自行车监测边缘 AI 模型的构建过程涵盖了多个关键步骤,从设计阶段对用户、利益相关者、数据安全等方面的考量,到数据集的收集、清理,再到 DSP 和机器学习工作流程的实施,最后进行模型测试。以下是对整个流程的简要回顾:
1.
设计与影响考量
:明确产品的目标用户和利益相关者,考虑产品可能面临的恶意使用风险,确定数据的存储和传输方式,以及保障用户对数据使用的知情权。同时,遵循“儿童与青少年优先清单”,确保产品的公平性、包容性、责任感、安全性和透明度。
2.
自行车监测模型构建
:定义了机器学习类别,如“空闲”“突然停止”和“正常”,并通过多种策略收集数据集。选择了合适的硬件和传感器,如手机和 Nordic Semi Thingy:53,使用 Edge Impulse 平台进行数据摄取和模型部署。
3.
DSP 和机器学习工作流程
:通过“脉冲设计”对数据进行预处理和特征提取,使用“频谱分析”进行数字信号处理,训练神经网络并进行异常检测。
4.
模型测试
:通过实时分类和模型测试验证模型的性能,虽然目前由于训练数据有限,模型在现实世界中的表现可能有待提高,但随着数据的增加,模型性能有望提升。
4.2 未来优化方向
为了进一步提高自行车监测模型的性能和实用性,可以从以下几个方面进行优化:
-
增加数据集多样性
:目前的数据集可能存在局限性,通过收集更多不同场景、不同用户的数据,可以提高模型的泛化能力,使其在各种复杂环境下都能准确识别自行车的运动状态。
-
优化传感器组合
:考虑使用更多类型的传感器,如陀螺仪、红外相机等,结合加速度计数据,提供更全面的信息,从而提高模型的准确性。
-
改进机器学习算法
:不断探索和尝试新的机器学习算法和技术,如深度学习中的卷积神经网络(CNN)、循环神经网络(RNN)等,以提高模型的性能和效率。
-
加强模型的实时性
:在保证模型准确性的前提下,优化模型的推理速度,确保能够及时、准确地向用户发出警报。
4.3 应用前景
自行车监测边缘 AI 模型具有广阔的应用前景,不仅可以用于个人自行车的安全监测,还可以应用于共享单车、自行车赛事等领域。例如,在共享单车领域,可以通过实时监测自行车的运动状态,及时发现车辆故障和异常情况,提高车辆的安全性和可靠性;在自行车赛事中,可以为运动员提供实时的运动数据和安全警报,保障比赛的顺利进行。
5. 常见问题解答
5.1 数据收集相关问题
-
问
:如果没有 Nordic Semi Thingy:53 设备,是否可以使用其他设备进行数据收集?
答 :可以。如果没有 Nordic Semi Thingy:53 设备,可以参考 Edge Impulse 文档选择其他合适的开发板和传感器,也可以使用自己的开发平台和传感器组合,但需要先创建运行的设备固件(最简单的方法是使用 Edge Impulse 数据转发器)。 -
问
:如何确保收集到的数据质量?
答 :在数据收集过程中,需要注意以下几点:选择合适的传感器和设备,确保其精度和稳定性;在不同的场景和条件下收集数据,以提高数据的多样性;对收集到的数据进行清理和预处理,去除噪声和异常值。
5.2 模型训练相关问题
-
问
:训练模型时,如何选择合适的神经网络架构?
答 :可以参考 Edge Impulse 文档中的相关建议,也可以通过实验和比较不同的架构,选择性能最佳的架构。同时,需要根据数据集的特点和模型的目标进行调整和优化。 -
问
:如果模型的训练效果不理想,应该如何解决?
答 :可以从以下几个方面进行排查和解决:检查数据集的质量和多样性,确保数据的准确性和代表性;调整机器学习算法和参数,如学习率、训练周期数等;尝试不同的神经网络架构;增加训练数据的数量。
5.3 模型测试相关问题
-
问
:模型测试结果不理想,是否意味着模型不可用?
答 :不一定。模型测试结果不理想可能是由于训练数据有限、模型架构不合适等原因导致的。可以通过增加训练数据、调整模型架构等方法进行优化,提高模型的性能。 -
问
:如何评估模型的性能?
答 :可以使用多种指标来评估模型的性能,如准确率、召回率、F1 值等。在实时分类和模型测试过程中,可以根据这些指标来判断模型的性能,并进行相应的调整和优化。
6. 附录
6.1 关键参数设置总结
| 参数分类 | 参数名称 | 参数设置 |
|---|---|---|
| 时间序列数据 | 窗口大小 | 5000 毫秒 |
| 时间序列数据 | 窗口增加 | 250 毫秒 |
| 时间序列数据 | 频率(Hz) | 62.5 |
| 时间序列数据 | 零填充数据 | 勾选 |
| 处理块 | 处理方法 | 频谱分析 |
| 学习块 | 分类算法 | 分类(Keras) |
| 学习块 | 异常检测算法 | 异常检测(K-Means) |
| 频谱分析参数 | 滤波器缩放轴 | 1 |
| 频谱分析参数 | 滤波器类型 | 无 |
| 频谱分析参数 | FFT 长度 | 16 |
| 频谱分析参数 | 取频谱对数 | 勾选 |
| 频谱分析参数 | 重叠 FFT 帧 | 勾选 |
| 神经网络训练参数 | 训练周期数 | 30 |
| 神经网络训练参数 | 学习率 | 0.0005 |
| 神经网络训练参数 | 验证集大小 | 20% |
| 神经网络训练参数 | 自动平衡数据集 | 不勾选 |
| 神经网络架构 | 第一层 | 密集层(20 个神经元) |
| 神经网络架构 | 第二层 | 密集层(10 个神经元) |
6.2 操作步骤流程图
graph LR
A[设计与影响考量] --> B[自行车监测模型构建]
B --> C[数据集收集]
C --> D[硬件与传感器选择]
D --> E[数据收集]
E --> F[数据集清理]
F --> G[DSP 和机器学习工作流程]
G --> H[模型训练]
H --> I[模型测试]
I --> J[实时分类]
I --> K[模型测试]
J --> L[优化与应用]
K --> L[优化与应用]
通过以上的总结、展望以及常见问题解答,我们对自行车监测边缘 AI 模型的构建有了更全面的了解。在实际应用中,我们可以根据具体需求和场景,对模型进行不断的优化和改进,以实现更好的监测效果和用户体验。
超级会员免费看
5470

被折叠的 条评论
为什么被折叠?



