1. 项目概述在嵌入式系统和物联网设备日益普及的今天如何在资源受限的微控制器(MCU)上实现高效的异常检测成为一个关键挑战。传统基于云计算的解决方案面临着延迟高、隐私风险大和网络依赖性强等问题。本文介绍的基于Z-Score的TinyML异常检测系统提供了一种完全在MCU上自主运行的解决方案。这个系统通过采集电器设备的电流消耗数据计算其RMS(均方根)值并利用轻量级的Z-Score统计方法进行异常检测。整个流程包括数据采集、特征提取、模型训练和异常检测全部在STM32微控制器上完成无需任何外部计算资源或网络连接。这种全自主的设计使其特别适合部署在网络条件不佳或对隐私要求高的环境中。2. 系统架构设计2.1 硬件组成系统采用STM32 NUCLEO-F446RE作为主控芯片这款基于ARM Cortex-M4内核的微控制器提供了足够的计算能力同时保持低功耗特性。电流测量使用ACS712霍尔效应电流传感器这种非侵入式传感器可以直接串联在电路中通过测量电流产生的磁场来获取电流值避免了传统分流电阻带来的功率损耗和隔离问题。为减少噪声干扰系统还包含一个简单的电阻网络用于稳定传感器输出。数据存储方面采用MicroSD卡模块用于记录运行日志和异常事件便于后续分析。整个硬件设计遵循够用就好的原则在满足功能需求的前提下尽可能简化以降低成本和功耗。2.2 软件工作流程系统软件采用模块化设计主要包含以下几个关键组件数据采集模块通过STM32的ADC以高频率采样电流传感器输出每1000个样本组成一个处理窗口。RMS计算模块对每个样本窗口计算RMS值公式为RMS √(1/N * Σ(x_i²))其中N1000x_i为第i个采样值。RMS值能有效反映交流电流的有效值是表征设备功耗的关键指标。状态分类模块根据RMS值将设备状态分为运行(ON)和停止(OFF)两种。通过实验确定冰箱压缩机运行时RMS值在0.86-0.88A之间停止时约为0.07A。训练与检测模块系统启动后先进入训练模式收集正常运行的统计数据之后自动切换至检测模式使用Z-Score方法识别异常。3. Z-Score异常检测模型3.1 模型原理Z-Score是一种经典的统计异常检测方法通过计算数据点与均值的偏差程度来识别异常。其计算公式为z (x - μ)/σ其中μ是均值σ是标准差。Z-Score的绝对值越大表示该数据点偏离正常范围越远。选择Z-Score作为基础算法主要基于以下考虑计算简单适合资源有限的MCU内存占用极小(只需存储均值和标准差)执行时间确定适合实时系统结果可解释性强便于调试3.2 特征工程为提高检测精度系统使用了五维特征向量当前RMS值滑动窗口内的RMS均值RMS值的标准差RMS变化斜率压缩机运行时长(ON duration)每个特征都独立计算Z-Score最终异常分数取五个Z-Score绝对值的平均值。这种多特征融合的方法比单特征更能全面捕捉异常模式同时保持了计算效率。3.3 训练阶段实现训练阶段持续收集正常运行的样本逐步计算各特征的均值和标准差。为节省内存采用增量式计算方式μ_new μ_old (x - μ_old)/n σ²_new σ²_old (x - μ_old)(x - μ_new)其中n为已收集的样本数。这种方法无需存储全部历史数据非常适合内存受限的MCU。训练时长需要根据具体应用确定。在冰箱监测案例中作者收集了足够多的正常周期(通常需要覆盖多个启停循环)来建立可靠的基线。3.4 检测阶段实现检测阶段对每个新样本计算五维特征的Z-Score当综合异常分数超过阈值(本系统设为2.5)时触发报警。阈值选择基于实验观察在正常和异常样本间提供了良好的区分度。为提高鲁棒性系统还实现了异常连续计数机制只有当异常持续一定时间才最终确认避免瞬时干扰导致的误报。4. 优化与实现细节4.1 内存优化策略在STM32F446RE上系统总内存占用仅约3.3KB SRAM和63KB Flash。这是通过以下优化实现的采样缓冲区复用ADC采样和RMS计算共用同一块内存避免重复缓冲。增量式统计计算训练阶段不存储历史数据只维护累加变量。精简数据结构使用最小够用的数据类型如32位浮点而非64位。模块化设计各功能模块按需加载减少同时驻留内存的代码量。4.2 实时性保障系统通过以下措施确保实时性中断驱动采样ADC采样使用定时器触发保证采样间隔精确。优先级调度关键任务(如采样)赋予更高中断优先级。计算负载均衡将RMS计算等耗时操作分散到多个采样间隔中完成。性能监测实时跟踪CPU利用率确保有余量处理突发负载。实测表明Z-Score推断仅需20-40μs完全满足实时性要求。4.3 日志与调试系统提供多种调试支持MicroSD日志记录时间戳、RMS值、Z-Score和异常标志。状态指示灯通过LED显示系统状态(训练/检测)和异常报警。串口调试接口可选地输出详细运行信息供开发阶段使用。日志采用CSV格式便于直接导入分析工具。为避免频繁写操作影响SD卡寿命采用缓冲写入策略。5. 实际应用与性能评估5.1 实验设置作者在家庭冰箱上进行了为期14天的连续监测收集了超过40,000个RMS样本。为评估系统性能人为引入了三类异常温控器调整调高设定温度导致压缩机长时间运行。开门事件保持冰箱门开启增加热负荷。电源干扰模拟断电情况观察系统恢复行为。5.2 检测性能在所有测试场景中系统表现出色准确率精确度(Precision)和召回率(Recall)均达到1.0即所有真实异常都被检出且没有误报。响应速度从异常出现到被检测到的延迟很短满足实时性要求。稳定性连续运行14天无故障资源使用保持稳定。特别值得注意的是系统成功检测到了温控器调整导致的压缩机长时间运行(约5小时)和开门事件导致的异常模式(约15分钟)。5.3 资源使用详细的资源占用情况如下内存约3.3KB SRAM (含1KB采样缓冲区)存储约63KB FlashCPU利用率平均10%峰值30%这样的资源占用使得系统可以在完成主要功能的同时留有足够余量处理其他任务或未来扩展。6. 应用扩展与改进方向6.1 适用场景扩展虽然本文以冰箱监测为例但该方案可广泛应用于工业设备监测电机、泵等设备的异常检测。智能家居空调、洗衣机等家电的故障预警。能源管理识别电路异常或能效问题。关键是根据具体应用调整特征选择和阈值设置。6.2 可能的改进自适应阈值根据环境变化动态调整检测阈值。多设备协同多个监测节点间的信息共享。模型融合结合其他轻量级算法如移动平均、变化点检测等。功耗优化进一步降低系统功耗延长电池供电时的使用时间。这些改进可以在保持MCU本地处理的前提下进一步提升系统性能。7. 开发经验与注意事项在实际开发中有几个关键点需要特别注意传感器校准ACS712传感器需要精确校准特别是零点和灵敏度。建议使用已知负载进行多点校准。采样同步对于交流信号采样率应与工频同步或为其整数倍避免频谱泄漏。状态判定设备ON/OFF状态的阈值需要根据实际测量确定不同设备差异可能很大。训练数据确保训练阶段收集的数据覆盖各种正常工况避免将正常变化误判为异常。异常处理设计完善的异常恢复机制防止系统因偶发错误而崩溃。在调试过程中建议先使用串口输出详细运行数据验证各模块功能正常后再优化为生产版本。
基于Z-Score的TinyML异常检测系统设计与实现
发布时间:2026/6/22 7:17:31
1. 项目概述在嵌入式系统和物联网设备日益普及的今天如何在资源受限的微控制器(MCU)上实现高效的异常检测成为一个关键挑战。传统基于云计算的解决方案面临着延迟高、隐私风险大和网络依赖性强等问题。本文介绍的基于Z-Score的TinyML异常检测系统提供了一种完全在MCU上自主运行的解决方案。这个系统通过采集电器设备的电流消耗数据计算其RMS(均方根)值并利用轻量级的Z-Score统计方法进行异常检测。整个流程包括数据采集、特征提取、模型训练和异常检测全部在STM32微控制器上完成无需任何外部计算资源或网络连接。这种全自主的设计使其特别适合部署在网络条件不佳或对隐私要求高的环境中。2. 系统架构设计2.1 硬件组成系统采用STM32 NUCLEO-F446RE作为主控芯片这款基于ARM Cortex-M4内核的微控制器提供了足够的计算能力同时保持低功耗特性。电流测量使用ACS712霍尔效应电流传感器这种非侵入式传感器可以直接串联在电路中通过测量电流产生的磁场来获取电流值避免了传统分流电阻带来的功率损耗和隔离问题。为减少噪声干扰系统还包含一个简单的电阻网络用于稳定传感器输出。数据存储方面采用MicroSD卡模块用于记录运行日志和异常事件便于后续分析。整个硬件设计遵循够用就好的原则在满足功能需求的前提下尽可能简化以降低成本和功耗。2.2 软件工作流程系统软件采用模块化设计主要包含以下几个关键组件数据采集模块通过STM32的ADC以高频率采样电流传感器输出每1000个样本组成一个处理窗口。RMS计算模块对每个样本窗口计算RMS值公式为RMS √(1/N * Σ(x_i²))其中N1000x_i为第i个采样值。RMS值能有效反映交流电流的有效值是表征设备功耗的关键指标。状态分类模块根据RMS值将设备状态分为运行(ON)和停止(OFF)两种。通过实验确定冰箱压缩机运行时RMS值在0.86-0.88A之间停止时约为0.07A。训练与检测模块系统启动后先进入训练模式收集正常运行的统计数据之后自动切换至检测模式使用Z-Score方法识别异常。3. Z-Score异常检测模型3.1 模型原理Z-Score是一种经典的统计异常检测方法通过计算数据点与均值的偏差程度来识别异常。其计算公式为z (x - μ)/σ其中μ是均值σ是标准差。Z-Score的绝对值越大表示该数据点偏离正常范围越远。选择Z-Score作为基础算法主要基于以下考虑计算简单适合资源有限的MCU内存占用极小(只需存储均值和标准差)执行时间确定适合实时系统结果可解释性强便于调试3.2 特征工程为提高检测精度系统使用了五维特征向量当前RMS值滑动窗口内的RMS均值RMS值的标准差RMS变化斜率压缩机运行时长(ON duration)每个特征都独立计算Z-Score最终异常分数取五个Z-Score绝对值的平均值。这种多特征融合的方法比单特征更能全面捕捉异常模式同时保持了计算效率。3.3 训练阶段实现训练阶段持续收集正常运行的样本逐步计算各特征的均值和标准差。为节省内存采用增量式计算方式μ_new μ_old (x - μ_old)/n σ²_new σ²_old (x - μ_old)(x - μ_new)其中n为已收集的样本数。这种方法无需存储全部历史数据非常适合内存受限的MCU。训练时长需要根据具体应用确定。在冰箱监测案例中作者收集了足够多的正常周期(通常需要覆盖多个启停循环)来建立可靠的基线。3.4 检测阶段实现检测阶段对每个新样本计算五维特征的Z-Score当综合异常分数超过阈值(本系统设为2.5)时触发报警。阈值选择基于实验观察在正常和异常样本间提供了良好的区分度。为提高鲁棒性系统还实现了异常连续计数机制只有当异常持续一定时间才最终确认避免瞬时干扰导致的误报。4. 优化与实现细节4.1 内存优化策略在STM32F446RE上系统总内存占用仅约3.3KB SRAM和63KB Flash。这是通过以下优化实现的采样缓冲区复用ADC采样和RMS计算共用同一块内存避免重复缓冲。增量式统计计算训练阶段不存储历史数据只维护累加变量。精简数据结构使用最小够用的数据类型如32位浮点而非64位。模块化设计各功能模块按需加载减少同时驻留内存的代码量。4.2 实时性保障系统通过以下措施确保实时性中断驱动采样ADC采样使用定时器触发保证采样间隔精确。优先级调度关键任务(如采样)赋予更高中断优先级。计算负载均衡将RMS计算等耗时操作分散到多个采样间隔中完成。性能监测实时跟踪CPU利用率确保有余量处理突发负载。实测表明Z-Score推断仅需20-40μs完全满足实时性要求。4.3 日志与调试系统提供多种调试支持MicroSD日志记录时间戳、RMS值、Z-Score和异常标志。状态指示灯通过LED显示系统状态(训练/检测)和异常报警。串口调试接口可选地输出详细运行信息供开发阶段使用。日志采用CSV格式便于直接导入分析工具。为避免频繁写操作影响SD卡寿命采用缓冲写入策略。5. 实际应用与性能评估5.1 实验设置作者在家庭冰箱上进行了为期14天的连续监测收集了超过40,000个RMS样本。为评估系统性能人为引入了三类异常温控器调整调高设定温度导致压缩机长时间运行。开门事件保持冰箱门开启增加热负荷。电源干扰模拟断电情况观察系统恢复行为。5.2 检测性能在所有测试场景中系统表现出色准确率精确度(Precision)和召回率(Recall)均达到1.0即所有真实异常都被检出且没有误报。响应速度从异常出现到被检测到的延迟很短满足实时性要求。稳定性连续运行14天无故障资源使用保持稳定。特别值得注意的是系统成功检测到了温控器调整导致的压缩机长时间运行(约5小时)和开门事件导致的异常模式(约15分钟)。5.3 资源使用详细的资源占用情况如下内存约3.3KB SRAM (含1KB采样缓冲区)存储约63KB FlashCPU利用率平均10%峰值30%这样的资源占用使得系统可以在完成主要功能的同时留有足够余量处理其他任务或未来扩展。6. 应用扩展与改进方向6.1 适用场景扩展虽然本文以冰箱监测为例但该方案可广泛应用于工业设备监测电机、泵等设备的异常检测。智能家居空调、洗衣机等家电的故障预警。能源管理识别电路异常或能效问题。关键是根据具体应用调整特征选择和阈值设置。6.2 可能的改进自适应阈值根据环境变化动态调整检测阈值。多设备协同多个监测节点间的信息共享。模型融合结合其他轻量级算法如移动平均、变化点检测等。功耗优化进一步降低系统功耗延长电池供电时的使用时间。这些改进可以在保持MCU本地处理的前提下进一步提升系统性能。7. 开发经验与注意事项在实际开发中有几个关键点需要特别注意传感器校准ACS712传感器需要精确校准特别是零点和灵敏度。建议使用已知负载进行多点校准。采样同步对于交流信号采样率应与工频同步或为其整数倍避免频谱泄漏。状态判定设备ON/OFF状态的阈值需要根据实际测量确定不同设备差异可能很大。训练数据确保训练阶段收集的数据覆盖各种正常工况避免将正常变化误判为异常。异常处理设计完善的异常恢复机制防止系统因偶发错误而崩溃。在调试过程中建议先使用串口输出详细运行数据验证各模块功能正常后再优化为生产版本。