87 lines
2.7 KiB
Markdown
87 lines
2.7 KiB
Markdown
# 数据集、Label、Mask 处理流程
|
||
|
||
本项目保留 `Seg/` 里的原始处理逻辑,并在网页端把上传数据集统一组织成:
|
||
|
||
```text
|
||
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_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`,否则只能用于推理或人工复核。
|