Skip to content

自制数据集 ​

SSCMA 支持多种不同格式的数据集,您可以按照一定规则,自己制作或将其它数据集转换为支持的格式,以便在 SSCMA 中使用,一般来说,制作一个数据集通常包含以下几个部分:

首先是确定目标和需求,然后进行数据收集与清洗,这一步骤涉及从不同来源获取数据,并对其进行清洗,以去除重复项、处理缺失值和纠正错误。

随后,需要通过特征工程与数据预处理,包括从原始数据中提取有用特征、创建新特征以及对数据进行归一化、标准化和编码等预处理操作。进一步,我们进行数据标注与分割,这一步不仅包括对需要的数据进行标注,还包括将数据集划分为训练集、验证集和测试集(如果需要)。

最后是数据增强与探索性数据分析,这一阶段旨在通过数据增强提高数据多样性,并通过探索性数据分析来理解数据的分布和特征间的关系。

在所有这些步骤完成后,还需要进行数据存储,并确保整个数据集的创建和使用都符合法律法规和伦理标准。这些步骤共同确保了数据集的质量和适用性,为训练有效的机器学习模型打下了坚实的基础。在本节中,我们主要介绍数据集的标注方式。

标注基础 ​

对于传统的由监督学习算法训练的模型来说,标注数据集的过程是非常关键的,它决定了训练出的模型的质量,常见的标注方法有以下几种:

  • 手动标注: 通过手工对数据集进行标注的方式,对每个样本进行标注,可以确保标注的准确性,但是速度较慢。
  • 半自动标注: 将人工标注的结果应用到其他数据集中,减少标注时间,但标注的准确性可能有所降低。
  • 自动标注: 使用一些算法模型对数据进行自动标注,例如关键字提取、文本分类等。虽然可以提高标注效率,但标注的准确性也可能会受到影响。

边界框标注 ​

在目标检测任务中,边界框是一种常见的标注方式,用于标记图像中的目标位置,通常由左上角和右下角的坐标表示。边界框标注的格式通常为 (x1, y1, x2, y2),其中 (x1, y1) 是左上角坐标,(x2, y2) 是右下角坐标。在进行边界框标注时,需要注意以下几个关键点:

  • 标注框大小合适:标注框应该刚好将目标物体包围,间隙不能太大也不能太小。太大或太小都可能导致模型在推理时目标框得不准,或者在视频图像检测中目标抖动严重,不能锁定。
  • 标注框位置合适:标注框的位置需要准确,不能偏太远。位置不准确会影响模型的训练效果。
  • 多视角素材:需要丰富多视角的素材,涵盖各种摄像机视角,以提高模型的通用性。
  • 遮挡目标也要标注:即使目标物体被其他物体遮挡,也需要进行标注。
  • 贴边规则:标注框需紧贴目标物体的边缘进行画框标注,不可框小或框大。
  • 重叠规则:当两个目标物体有重叠时,只要不是遮挡超过一半的就可以框,允许两个框有重叠的部分。
  • 独立规则:每一个目标物体都需要单独拉框,不能将多个目标合并在一个框内。
  • 不框规则:图像模糊不清、太暗、曝光过度或不符合项目特殊规则的不框。
  • 边界检查:确保框坐标不在图像边界上,防止载入数据或数据扩展时出现越界报错。
  • 小目标规则:对于小目标,只要人眼能分清,都应该标出来。根据算法的需求,决定是否启用这些样本参与训练。

关键点标注 ​

在指针 Meter 等与 Pose 相关的任务中,关键点标注是一种常见的标注方式,用于标记图像中的关键点位置。关键点标注的格式通常为 (x, y),其中 (x, y) 是关键点的坐标。在进行关键点标注时,需要注意以下几个细节:

  • 数据准备:确保图像清晰无遮挡,关键点可见,以便于后续的标注工作。
  • 标注规范制定:定义关键点的类型和位置,明确标注标准,如关键点的命名规则、坐标系选择等,以保持标注的一致性和准确性。
  • 标注顺序和一致性:关键点可以不用固定的顺序,但每张图像中相同部位的关键点标注顺序应保持一致。
  • 处理遮挡点:被遮挡的点也应标注出来,以便在模型训练时能够考虑到这种情况。
  • 关键点的可见性:标注工具可能无法直接标注关键点是否可见,需要在后续处理中调整,以符合特定算法的格式要求。
  • 避免重叠:每一个关键点必须且只能落入一个框中,不落入第二个框中。
  • 质量检查:完成初步标注后,进行质量检查,确保所有关键点都被正确标注,且无遗漏或错误。

异常检测数据制作 ​

在振动或音频异常检测任务中,数据集不需要进行特殊标注,但仍然需要我们手动确定参数,以保证能够训练出有效的模型。

N 轴加速度计 ​

  • 首先需要确定设备的采样频率,通常为 100Hz,然后根据采样频率和数据长度确定时间长度,即 sample_rate,该参数代表一条数据中包含多少数据点,注意该参数对异常检测的效果是决定性的。
  • 离散的加速度计采样数据首先会经过前处理,用于减少高采样率下的信号毛刺,其中 factor 参数比较关键,调整它的 factor 参数对模型敏感性起到重要作用,该参数可以理解为抛去小数点后几位的不精确误差,数值越大则抛掉的小数点越少,越小则抛掉的小数点越多。
    • 风扇异常检测(对挡位的变动也需要检测):由于风扇运动规律,产生的波形较为简单,运动状态空间小,因此不应该舍去误差,数据集制作工具的前处理 factor 需要调大,否则会出现挡位变化无法判断的现象。
    • 机械臂异常检测:由于机械臂的运动过程自带一定机误差扰动,运动的状态空间过多,数据集制作工具的前处理中 factor 应当调小,否则会出现对轻微的抖动干扰不识别的现象。
  • 而后需要根据数据的可视化界面,依次调整 cutoff_freq、resize、scales 相关的参数,得到清晰且稳定的图像,在此不展开讨论。

麦克风 ​

  • 和 N 轴加速度计类似,首先需要确定设备的采样频率,通常为 16kHz,然后根据采样频率和数据长度确定时间长度,即 sample_rate,该参数代表一条数据中包含多少数据点,注意该参数对异常检测的效果是决定性的。
  • 窗口长度(n_fft)决定了 STFT 的窗口大小,影响频率分辨率。较大的窗口可以提供更好的频率分辨率,但会降低时间分辨率,因此需要结合采样频率和数据长度来确定窗口长度。
  • 重叠长度(hop_length)决定了窗口之间的重叠程度。较小的重叠可以提高时间分辨率,但可能会在窗口边界处引入伪影。
  • n_mels 参数决定了梅尔滤波器组的数量,这将影响频谱图的垂直分辨率。增加 n_mels 可以提供更细致的频率信息,但也会增加计算复杂度。
  • 通过调整以上参数,得到清晰且稳定的频谱图,以用于异常检测任务。

数据集标注工具 ​

常用的数据标注工具包括:

  • Labelme: 一个用于图像标注的开源工具,支持多种标注格式,如 COCO、PASCAL VOC 等。
  • LabelImg: 适用于图像标注的工具,支持多种标注格式,如 PASCAL VOC、YOLO 等。
  • Labelbox: 一个在线标注工具,支持图像、文本、视频等格式的标注,具有多种标注模板和自定义标注模板功能。
  • Doccano: 一款用于文本分类和序列标注的开源标注工具,支持多种标注格式,如 NER、POS 等。
  • Annotator: 一个轻量级的在线标注工具,支持图像、文本、音频等格式的标注。
  • VGG Image Annotator (VIA): 一个用于图像标注的开源工具,支持多种标注格式,如 PASCAL VOC、YOLO 等。
  • COCO Annotator: 一个基于 Web 的图像和视频注释工具,可用于目标检测、分割、关键点标注等任务。

在目标检测、关键点检测等任务中,我们建议使用 Roboflow、Labelme 等专业的标注工具,以提高标注效率和标注质量。

Roboflow 标注 ​

  1. 首先,您需要注册 Roboflow 账号,然后登录 Roboflow 平台。

  2. 登陆到 Roboflow 后,点击右上角的 New Project 创建一个新项目,选择对应的标注模式,如 Object Detection、Keypoint Detection 等。然后进入 Project 页面,点击 Upload Data 上传图像文件。

  3. 在 Project 页面中,点击 Annotate,进入标注界面,选择 Unannotated 图像,然后在图像上拖动鼠标绘制矩形框或标记关键点,然后在左侧的属性栏中输入标签信息。(以 FOMO 为例)

    FOMO 标注

  4. 标注完成后,在 Project 页面中,点击 Versions,然后点击 Create New Version 生成版本,在生成版本的过程中,需要选择合适的 Source Images,Train/Test Split,Preprocessing 和 Augmentation 等参数,最后点击 Create 创建版本。

    Roboflow 生成版本

  5. 完成版本创建后,在对应的版本页面中,您可以点击 Download Dataset 下载数据集,在弹出的对话框中选择合适的数据集格式,然后选择恰当的下载方式,将数据集下载到本地。

    Roboflow 下载数据集

TIP

在生成版本前,您可以先在 Project 页面中,点击 Analyze 分析数据集,查看数据集的统计信息,以便更好地了解数据集的特点,并针对性地调整标注和训练参数,以获得更好的训练效果。在完成以上步骤后,您也可以继续上传更多的图像文件,扩充数据集,生成新的版本,用于训练更加复杂的模型。

Labelme 标注 ​

  1. 首先,您需要安装 Labelme,可以通过以下命令进行安装:
sh
pip install labelme
  1. 然后,您可以通过以下命令启动 Labelme:
sh
labelme
  1. 在 Labelme 中,选择 OpenDir 打开图像文件夹,然后在 Edit 选择对应的标注模式,对于目标检测任务,选择 Create Rectangle,对于关键点检测任务,选择 Create Point。 如图所示,对于 PFLD 单点关键点检测任务,在图像指针的末端标注关键点。

    PFLD 标注

  2. 在标注过程中,您可以使用鼠标拖动来绘制矩形框或标记关键点,然后在右侧的属性栏中输入标签信息。

  3. 标注完成后,选择 Save 保存标注结果,Labelme 会生成一个 JSON 文件,其中包含了图像的标注信息。

    TIP

    在标注过程中 Labelme 会自动记住上次使用的标注类型,因此可以使用快捷键 Ctrl + N 快速信件标注。开启 File -> Save Automatically 自动保存,对于每张图片,Labelme 会在设定的文件夹下生成对应文件名的 JSON 文件。我们建议关闭 File -> Save With Image Data,以减少 JSON 文件的大小。

  4. 如果事先未划分训练集、验证集和测试集,您可以手动将标注结果按照一定比例划分为训练集、验证集和测试集,然后将 JSON 文件和图像文件分别放入对应的文件夹中。

在 Apache 2.0 授权下发布