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