φ-OTDR 事件开源数据集与两种分类模型

简介

本项目提供了一个包含六种常见 φ-OTDR 事件的开源数据集,以及两种基于 SVM 和 CNN 的事件分类模型。该数据集包含超过15,000个样本,可用于训练和评估 φ-OTDR 事件识别算法。

数据集

  • 事件类型: * 背景噪声 (3094 samples) * 挖掘 (2512 samples) * 敲击 (2530 samples) * 震动 (2298 samples) * 浇水 (2728 samples) * 行走 (2450 samples)* 样本总数: 15,612 * 数据格式: .mat 文件 (可使用 scipy.io.loadmat 加载)* 训练集/测试集: 8:2* 数据存储: 由于文件大小限制,数据集存储于 Google Drive 和百度网盘,链接可在项目代码仓库的 rawdata 文件中找到。

基线模型

我们提供了两种常见分类模型的代码,作为基线:

  • SVM (支持向量机): * 文件: das_data_svm.py, get_das_data.py, feature_extraction.py * 方法: 一维特征提取 + SVM 分类* CNN (卷积神经网络): * 文件: das_data_cnn.py, models.py, mydataset.py * 方法: 二维卷积神经网络

此外,我们还提供了一个 feature_visualization.py 文件,用于可视化事件特征,方便观察其区分度。

代码示例pythonimport numpy as npimport osimport scipy.io as sciofrom torch.utils.data import Dataset

def normalize(data): # 归一化到0-255 rawdata_max = max(map(max, data)) rawdata_min = min(map(min, data)) for i in range(data.shape[0]): for j in range(data.shape[1]): data[i][j] = round(((255 - 0) * (data[i][j] - rawdata_min) / (rawdata_max - rawdata_min)) + 0) return data

class MyDataset(Dataset):

def __init__(self, root_dir, names_file, transform=None):        self.root_dir = root_dir        self.names_file = names_file        self.transform = transform        self.size = 0        self.names_list = []        if not os.path.isfile(self.names_file):            print(self.names_file + 'does not exist!')        file = open(self.names_file)        for f in file:            self.names_list.append(f)            self.size += 1

def __len__(self):        return self.size

def __getitem__(self, idx):        data_path = self.root_dir + self.names_list[idx].split(' ')[0]        if not os.path.isfile(data_path):            print(data_path + 'does not exist!')            return None        rawdata = scio.loadmat(data_path)['data']  # 10000,12 uint16        rawdata = rawdata.astype(int)  # int32        data = normalize(rawdata)        label = int(self.names_list[idx].split(' ')[1])        sample = {'data': data, 'label': label}        if self.transform:            sample = self.transform(sample)        return sample

引用

如果您使用了我们的代码或数据集,请引用以下论文:

Cao, X., Su, Y., Jin, Z., & Yu, K. (2023). An open dataset of φ-OTDR events with two classification models as baselines. Results in Optics, 100372.

许可

本数据集和代码仅供非商业科研用途使用。如有商业应用需求,请联系我们。

φ-OTDR 事件开源数据集与两种分类模型

原文地址: https://www.cveoy.top/t/topic/fPIr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录