# 数据集、Label、Mask 处理流程 本项目保留 `Seg/` 里的原始处理逻辑,并在网页端把上传数据集统一组织成: ```text var/uploads/datasets// images/ 原始图片或待推理图片 labels/ YOLO txt/json/yaml 标注 masks/ 语义分割灰度 mask 或彩色 label/mask ``` ## 现有数据集样例 可以参考两个现有路径: - `Seg/DataSet_Own/A_Ori` 与 `Seg/DataSet_Own/A_Label_Ori` - `Seg/Seg_All_In_One_YoloModel/Yolo数据集构建/ORI` 与 `Label` 它们的核心要求是:原图和标注图用同一个文件 stem 配对。比如: ```text 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_CLASSES` 和 `Annotate_PALETTE` 精确匹配颜色。 4. 背景写成 `0`,第一个类别从 `1` 开始写入灰度 GT mask。 5. 输出训练用 mask 到 `*_GT_label_fold`,默认后缀是 `_gtFine_labelTrainIds.png`。 因此,新数据如果是 MMSeg/SegModel 语义分割训练,推荐准备: ```text images/*.png masks/*.png # 单通道灰度,0 是背景,1..N 是类别 id ``` 如果手里只有彩色 label,需要先按调色板转换成灰度 mask。新增类别时要同步维护: - `Annotate_CLASSES` - `Annotate_PALETTE` - `bg_PALETTE` ## 彩色 label 或 GT mask 到 YOLO txt YOLO 分割训练使用 polygon txt。现有脚本路径: ```text 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/train` 和 `Data/labels/val`。 网页端的上传数据集如果要直接训练 YOLO,需要: ```text images/sample_001.png labels/sample_001.txt ``` 然后在数据集页生成 `dataset.yaml`,再启动 `yolo.train_custom`。 ## 新图片推理 如果只是对新图片做推理,不需要 mask 或 label: 1. 在网页数据集页创建一个新数据集。 2. 把新图片上传到 `images`。 3. 进入推理页,选择一个已经训练好的权重,例如 `best.pt`。 4. 图片来源选择这个数据集,启动预测或热度图任务。 如果要把新图片加入训练,则必须额外提供同名的 `mask` 或 `label txt`,否则只能用于推理或人工复核。