Split UI pages and add inference workflow
This commit is contained in:
86
docs/DATASET_PREPARATION.md
Normal file
86
docs/DATASET_PREPARATION.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# 数据集、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`,否则只能用于推理或人工复核。
|
||||
Reference in New Issue
Block a user