TRAINING_DATASET.md 3.4 KB

桥梁安全隐患检测 — YOLO 训练数据集指南

本文说明如何在 检澜 → 模型训练 中准备符合 Ultralytics YOLOv8 规范的分割数据集。

一、目录结构

bridge_hazard_demo/          ← ZIP 解压后的根目录(名称可自定)
├── data.yaml                ← 必须存在
├── train/
│   ├── images/              ← 训练图片
│   │   ├── img001.jpg
│   │   └── img002.jpg
│   └── labels/              ← 训练标注(与图片同名 .txt)
│       ├── img001.txt
│       └── img002.txt
└── val/
    ├── images/              ← 验证图片(至少 1 张)
    └── labels/
        └── img003.txt

注意labelsimages 文件名一一对应(仅扩展名不同)。

二、data.yaml 模板

项目内提供可复制模板:

training_templates/data.yaml.example

最小可用示例:

path: .
train: train/images
val: val/images

nc: 1
names:
  0: hazard

三、分割标注格式(labels/*.txt

每一行表示一个隐患实例(多边形):

<class_id> <x1> <y1> <x2> <y2> ... <xn> <yn>
  • class_id:整数,对应 data.yamlnames 索引(从 0 开始)
  • x1 y1 ...:多边形顶点,归一化到 0~1(除以图像宽高)

示例 — 图像中心约 50% 区域的矩形(类别 0):

0 0.25 0.25 0.75 0.25 0.75 0.75 0.25 0.75

无隐患的图片:对应 空的 .txt 文件或不存在 label 文件(建议空文件)。

四、打包 ZIP 上传

  1. 在「模型训练」页点击 选择 ZIP,选中整个 bridge_hazard_demo 文件夹压缩为 bridge_hazard_demo.zip
  2. 确保解压后 第一层 能看到 data.yaml(不要多套一层无意义的父目录)
  3. 上传后平台会校验 data.yaml 并解压到 data/datasets/<id>/

五、一键生成演示数据集(试跑训练)

若尚无标注数据,可用脚本从项目内示例桥梁照片生成 占位标注 的迷你数据集(仅用于验证训练流程,不能代替真实标注):

cd BridgeDiseaseBackend-main
python scripts/create_demo_dataset.py

生成物:

  • 目录:training_templates/bridge_hazard_demo/
  • ZIP:training_templates/bridge_hazard_demo.zip(可直接在 Web 页上传)

六、训练参数建议

场景 基线模型 epochs imgsz batch
本机 CPU 试跑 yolov8n-seg.pt 5~10 640 2~4
有 GPU 正式训 yolov8s-seg.pt 50~100 640 8~16

七、标注工具推荐

导出时请选择 YOLOv8 Segmentation 格式。

八、常见问题

问题 处理
上传后提示找不到 data.yaml 检查 ZIP 根目录是否含 data.yaml,不要只压缩 train 子文件夹
训练立即失败 查看任务「日志」;常见为 labels 缺失、class_id 超出 names 范围
训练极慢 CPU 正常;减小 imgszbatch 或换 yolov8n-seg
检测效果差 演示集为占位框,需换真实桥梁隐患标注重新训练