开发板官网(www.edevkit.com)
SKAB异常检测模型
下载模型训练数据
下载地址:https://opendatalab.com/OpenDataLab/SKAB/explore/main
解压之后,打开“data”->“value”文件夹,
有15个实验数据,打开文件,可以看到数据用“;”处理,并没有形成表格,接下来通过Python代码把文件输出成表格形式。
python转换代码:
import pandas as pd import os # 处理 1.csv 到 14.csv for i in range(1, 15): input_file = f"{i}.csv" output_file = f"out{i}.csv" try: # 检查输入文件是否存在 if not os.path.exists(input_file): print(f"警告:文件 {input_file} 不存在,跳过") continue # 读取原始 CSV 文件(分号分隔) df = pd.read_csv(input_file, sep=';') # 输出为新的 CSV 文件(默认逗号分隔) df.to_csv(output_file, index=False, encoding='utf-8-sig') print(f"✓ 已处理:{input_file} -> {output_file}") except Exception as e: print(f"✗ 处理文件 {input_file} 时出错:{e}") print("\n所有文件处理完成!")新建tocsv.py文件,复制代码,在CMD执行“python tocsv.py”。所有文件都会转为表格。
数据说明
数据采集自一个专门搭建的水循环泵试验台,通过控制阀门的开关来模拟真实工业过程中的各种异常状况 。
传感器数据:每个时间点都记录了8个不同传感器的读数,包括:加速度计 (2个)、电流、压力、温度、热电偶、电压和体积流量。
包含34个独立的CSV实验文件,每个文件代表一次实验,并且至少包含一次异常 。总数据点约37,401个,其中异常数据占比少于5%,高度符合现实场景中“异常稀疏”的特点。
数据字段:
| datetime | 日期时间 |
|---|---|
| Accelerometer1RMS | 加速度计1均方根 |
| Accelerometer2RMS | 加速度计2均方根 |
| Current | 电流 |
| Pressure | 压力 |
| Temperature | 温度 |
| Thermocouple | 热电偶 |
| Voltage | 电压 |
| Volume Flow RateRMS | 体积流量均方根 |
| anomaly | 异常 |
| changepoint | 变化点 |
根据数据,接下来通过“Reality AI Tools”训练一个异常检测模型,时间字段和变化点字段不需要,结合传感器数据和异常状态准备训练数据。
导入数据
准备csv数据文件
前面转换好了表格文件,接下来需要筛选数据,选取out1~out4四个文件,然后把“datatime”和“changepoint”两列删除,把“anomaly”异常状态为1的数据筛选出来保存到新表格。
如:out1~~out4是正常数据,out1_1~out4_1是异常数据。
准备metadata描述文件
复制一个之前的“metadata.csv”文件,修改描述给上面的文件添加标签。
正常数据添加“Normal”标签,异常数据添加“Abnormal”标签。
导入数据文件
进入“Reality AI Tools”添加一个工程“SKAB”。
进入“Data”->“Source”->“External Data”,上传准备的数据文件。
上传完,填写采样频率,表格数据是1s一组数据,所以填写1hz。
导入metadata.csv文件
进入“Data”->“Curate”点击②“Add Metadata”,添加准备的“metadata.csv”文件。
添加文件后,点击③打开配置侧栏,点击④选择“Target Class”分类,可以看到⑤文件都被添加了标签分类。
接下来就可以添加数据集训练。
训练模型
添加数据集
全选所有文件,点击“Add to Data Set”,创建数据集。
2.添加采样列表
进入“Data Sets”选择刚添加的数据集,点击“Create Sample list”->“Single list”创建采样列表。
窗口值设置为1,每次输入一组数据。
进入“AI Explore”->“Classes”,选择添加的采样列表。点击下方的Start exploring”开始训练模型。
等待模型生成完成。
生成完成,选择模型,点击“Create Base Tool”添加生成代码。
进入“Deploy”->“Embedded”,选择模型,点击“+New Package”配置部署,
点击“Generate Package”开始生成代码。
等待生成完成,点击“Download”下载代码,也可以直接在e2 Studio工程中下载。
模型使用
生成模型代码下载后放到工程项目“src”文件夹下。
下载方式具体参考6.3章节,如果是新工程还需要添加库路径,具体参考5.1章节。
打开“example.c”修改示例函数,使用训练测试数据,不使用随机数。输入数据是一组9个数据,从训练数据表格赋值10组数据,放入数组中。
修改代码,按顺序输入10组数据打印结果。
编译下载,查看串口打印结果。