Files
Seg_Data_Server_Net/docs/DATASET_PREPARATION.md

2.7 KiB
Raw Blame History

数据集、Label、Mask 处理流程

本项目保留 Seg/ 里的原始处理逻辑,并在网页端把上传数据集统一组织成:

var/uploads/datasets/<dataset_name>/
  images/   原始图片或待推理图片
  labels/   YOLO txt/json/yaml 标注
  masks/    语义分割灰度 mask 或彩色 label/mask

现有数据集样例

可以参考两个现有路径:

  • Seg/DataSet_Own/A_OriSeg/DataSet_Own/A_Label_Ori
  • Seg/Seg_All_In_One_YoloModel/Yolo数据集构建/ORILabel

它们的核心要求是:原图和标注图用同一个文件 stem 配对。比如:

images/sample_001.png
masks/sample_001.png
labels/sample_001.txt

如果彩色 label 带 _label 后缀,原脚本会在配对或转换时剥离这个后缀。

彩色 label 到训练 mask

Seg/DataSet_Own/1. 图片预处理(内含使用手册)/4_deal_labels.py 的流程是:

  1. 从人工彩色 label 读取 RGB。
  2. 用边缘检测、连通域检测、分水岭填充清理标注区域,输出 *_label.png*_pro_label_fold
  3. Annotate_CLASSESAnnotate_PALETTE 精确匹配颜色。
  4. 背景写成 0,第一个类别从 1 开始写入灰度 GT mask。
  5. 输出训练用 mask 到 *_GT_label_fold,默认后缀是 _gtFine_labelTrainIds.png

因此,新数据如果是 MMSeg/SegModel 语义分割训练,推荐准备:

images/*.png
masks/*.png   # 单通道灰度0 是背景1..N 是类别 id

如果手里只有彩色 label需要先按调色板转换成灰度 mask。新增类别时要同步维护

  • Annotate_CLASSES
  • Annotate_PALETTE
  • bg_PALETTE

彩色 label 或 GT mask 到 YOLO txt

YOLO 分割训练使用 polygon txt。现有脚本路径

Seg/Seg_All_In_One_YoloModel/Yolo数据集构建/2_Check_and_Gen_Txt_Label_sort_label.py

该脚本会读取 ORI_GT_label_fold 中的灰度 GT mask

  • 0 是背景;
  • 非背景灰度值代表类别;
  • 每个类别区域提取轮廓;
  • 坐标按图片宽高归一化;
  • 输出 class_id x1 y1 x2 y2 ...Data/labels/trainData/labels/val

网页端的上传数据集如果要直接训练 YOLO需要

images/sample_001.png
labels/sample_001.txt

然后在数据集页生成 dataset.yaml,再启动 yolo.train_custom

新图片推理

如果只是对新图片做推理,不需要 mask 或 label

  1. 在网页数据集页创建一个新数据集。
  2. 把新图片上传到 images
  3. 进入推理页,选择一个已经训练好的权重,例如 best.pt
  4. 图片来源选择这个数据集,启动预测或热度图任务。

如果要把新图片加入训练,则必须额外提供同名的 masklabel txt,否则只能用于推理或人工复核。