跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何正确配置 YOLOv8 数据集的 labels 文件夹路径

本文详解 yolov8 训练时“no labels found”警告的根本原因与标准目录结构,指导用户按官方规范组织 train/val 下的 images 和 labels 子文件夹,并修正 dataset.yaml 配置,确保模型可正常读取标注文件并计算评估指标。 本文详解 yolov8 训练时“no labels found”警告的根本原因与标准目录结构,指导用户按官方规范组织 train/val 下的 images 和 labels 子文件夹,并修正 dataset.yaml 配置,确保模型可正常读取标注文件并计算评估指标。 YOLOv8 对数据集目录结构有严格约定——它 不会自动搜索 labels 文件夹 ,而是依据 dataset.yaml 中 train 和 val 字段指定的子路径, 在对应目录下固定查找 images/ 和 labels/ 两个同级子文件夹 。你当前的配置:
path: -CENCORED-/Masaüstü/CustomObjectDetection/data train: img val: img
意味着 YOLOv8 会去 data/img/ 目录下寻找 images/ 和 labels/,但实际你的图片和标签很可能混放在 img/ 下,或 labels/ 根本不在该路径内,因此触发 WARNING ⚠️ no labels found in detect set。 ✅ 正确做法是遵循 YOLOv8 官方推荐结构(支持自动划分与验证):
dataset/ ├── train/ │ ├── images/ # 所有训练图像(.jpg/.png) │ └── labels/ # 对应的YOLO格式txt标注文件(同名,如 fire_001.jpg → fire_001.txt) ├── val/ │ ├── images/ │ └── labels/ └── dataset.yaml # 指向此根目录
然后将 trainer.yaml(建议重命名为 dataset.yaml 以符合惯例)修正为:
# dataset.yaml path: ./dataset # 相对于运行脚本的相对路径,或使用绝对路径(如 /home/user/dataset) train: train val: val names: 0: fire 1: smoke
⚠️ 关键注意事项: train 和 val 的值是 子目录名 ,不是完整路径;YOLOv8 会自动拼接为 path/train/ 和 path/val/; train/ 和 val/ 下必须 同时存在 images/ 和 labels/ 两个文件夹 ,缺一不可; 标签文件需为 .txt 格式,每行形如 0 0.34 0.56 0.22 0.18(class_id + normalized xywh),且文件名须与对应图像 严格一致 (仅扩展名不同); 若原始数据未分区,可用 ultralytics 内置工具快速划分:
from ultralytics.utils import split_train_val split_train_val("path/to/all_images", "path/to/all_labels", train_ratio=0.8, seed=42)
最后,确保训练脚本中路径引用正确:
from ultralytics import YOLO model = YOLO("yolov8n.pt") results = model.train(data="dataset.yaml", epochs=100, imgsz=640) # ✅ 使用修正后的 YAML
完成上述结构调整与配置后,YOLOv8 即可成功加载标签、执行 mAP 计算,并在验证阶段输出精确的评估指标。

相关文章