You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ultralytics YOLOv8训练自定义数据集时触发无标签错误

YOLOv8实例分割训练报错:所有标签为空,无法启动训练

问题描述

使用Ultralytics YOLOv8进行自定义数据集实例分割训练时,触发错误提示labels.cache中所有标签为空,无法启动训练,推测是标签未被正确检测导致。

报错信息

ValueError: All labels empty in F:\Miscellaneous Datasets\DACL10K_v2\dacl10k_v2_devphase\datasets\dacl10k\train\labels.cache,
can not start training without labels. See
https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data

训练代码

model = YOLO("yolov8n-seg.pt")
results = model.train(
    batch=8,
    device="cpu",
    data="./data.yaml",
    epochs=7
)

工作目录结构

root
|
|--datasets
|   |
|   |--dacl10k
|      |
|      |--test
|      |     |--images
|      |          |--<test images>
|      |--train
|      |     |
|      |     |--images
|      |     |    |--<train images>
|      |     |
|      |     |--labels
|      |          |--<train labels>
|      |       
|      |--val
|         |
|         |--images
|         |     |--<validation images>
|         |
|         |--labels
|               |--<validation labels>
|
|--data.yaml
|
|--yolo_train.ipynb

标签格式说明

标签文件名与对应图像文件名一致(图像为.jpg,标签为.txt),每个标签文件每行格式为:

<class index> <x1> <y1> <x2> <y2> .... <x> <y>

其中<class index>为类别索引,x、y为目标多边形顶点坐标。

data.yaml配置

# Train/val/test sets 
path: F:/Miscellaneous Datasets/DACL10K_v2/dacl10k_v2_devphase/datasets/dacl10k  # dataset root dir
train: F:/Miscellaneous Datasets/DACL10K_v2/dacl10k_v2_devphase/datasets/dacl10k/train/images
val: F:/Miscellaneous Datasets/DACL10K_v2/dacl10k_v2_devphase/datasets/dacl10k/val/images
test: F:/Miscellaneous Datasets/DACL10K_v2/dacl10k_v2_devphase/datasets/dacl10k/test/images

# Directories
train_label_dir: F:/Miscellaneous Datasets/DACL10K_v2/dacl10k_v2_devphase/datasets/dacl10k/train/labels
val_label_dir: F:/Miscellaneous Datasets/DACL10K_v2/dacl10k_v2_devphase/datasets/dacl10k/val/trains

# Classes (19)
nc: 19  # number of classes
names: ['Graffiti',' Drainage', 'Wetspot', 'Weathering', 'Crack', 'Rockpocket', 'Spalling', 'WConccor', 'Cavity', 'Efflorescence', 'Rust', 'PEquipment', 'ExposedRebars', 'Bearing', 'Hollowareas', 'JTape', 'Restformwork', 'ACrack', 'EJoint']
# class names

已尝试使用相对路径替代绝对路径,问题仍未解决。


解决方法
  • 修复data.yaml路径笔误:val_label_dir配置错误,写成了val/trains,实际应为val/labels,修正后如下:

    val_label_dir: F:/Miscellaneous Datasets/DACL10K_v2/dacl10k_v2_devphase/datasets/dacl10k/val/labels
    
  • 验证标签坐标是否归一化:YOLO要求分割标签的x、y坐标必须是相对于图像宽高的归一化值(范围0-1),如果是原始像素值,模型会判定为空标签。可通过图像宽高计算验证,例如图像宽度为1920,某点x像素值为960,归一化后应为0.5,若标签中是原始像素值,需批量转换为归一化值。

  • 删除旧缓存文件:删除train/labels.cache和val/labels.cache,重新启动训练,让模型重新读取标签生成正确的缓存文件。

  • 简化数据集路径:当前路径包含空格(如Miscellaneous Datasets),可能存在兼容性问题,建议将数据集移至无空格、无特殊字符的路径(如F:/Datasets/DACL10K),并同步修改data.yaml中的所有路径。

  • 检查标签文件合法性:随机打开几个标签文件,确认:

    • 无空行或无效字符
    • 类别索引在0-18之间(因nc=19,索引从0开始)
    • 每个目标的多边形顶点数量不少于3个(至少3个点才能构成有效区域)

内容的提问来源于stack exchange,提问作者Chinmay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:13:10