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

Ultralytics YOLOv8训练与Label Studio导出数据集格式不匹配问题咨询

针对YOLOv8微调Label Studio导出数据集的问题解答

问题1:YOLOv8是否支持其他格式数据微调?Label Studio的YOLO/YOLOv8 OBB导出有什么问题?

  • YOLOv8支持多种标注格式(COCO JSON、YOLO txt、VOC XML等),但不能直接将标注文件(比如JSON)传给model.train()的data参数——这个参数要求的是数据集配置YAML文件,而非单纯的标注数据。
  • Label Studio的「YOLO」格式导出并非YOLO官方要求的结构:它输出的是封装了标注信息的JSON文件,不是每个图片对应一个txt标注的标准YOLO格式,无法被YOLOv8直接识别。
  • 「YOLOv8 OBB」是针对**定向边界框(斜框)**的导出选项,如果你做的是普通轴对齐目标检测,这个格式完全不匹配;且它同样是Label Studio封装的JSON格式,不是训练可用的标准格式。

问题2:Label Studio能否导出COCO8格式的YAML文件?

Label Studio无法直接导出COCO8格式的YAML配置文件。COCO8的YAML是Ultralytics定义的数据集配置模板,包含数据集路径、类别数、类别名称等核心训练配置,Label Studio的导出功能仅负责生成标注数据,不会自动生成这类配置文件。

补充问题:Label Studio导出数据集的使用方法及格式不匹配原因

格式不匹配的核心原因

YOLOv8的model.train(data=...)要求的YAML文件必须包含以下关键信息:

path: ../datasets/coco8  # 数据集根目录
train: images/train  # 训练集图片路径
val: images/val  # 验证集图片路径
nc: 8  # 类别总数
names: ['person', 'bicycle', 'car', ...]  # 类别名称列表

你传入的Label Studio导出JSON仅包含单张图片的标注细节,没有数据集路径、类别映射等训练必需的配置项,因此YOLOv8无法解析,导致运行失败。

Label Studio导出数据集的使用步骤

以导出的YOLO格式JSON为例,需转换成YOLO标准txt标注格式,再配合手动编写的YAML配置文件训练:

  1. 解析JSON生成YOLO txt标注
    遍历JSON中的标注项,将每个目标的bbox转换成「类别索引 归一化x_center 归一化y_center 归一化宽度 归一化高度」的格式,每个图片对应一个同名txt文件,示例代码如下:
    import json
    import os
    
    # 创建labels文件夹存放标注文件
    os.makedirs('labels', exist_ok=True)
    
    with open('result.json', 'r', encoding='utf-8') as f:
        ann_data = json.load(f)
    
    for item in ann_data:
        img_name = os.path.splitext(item['file_name'])[0]
        img_w, img_h = item['width'], item['height']
        label_file = f'labels/{img_name}.txt'
        
        with open(label_file, 'w', encoding='utf-8') as lf:
            for ann in item['annotations']:
                # 假设bbox格式为[x1, y1, x2, y2],需根据你的JSON结构调整
                x1, y1, x2, y2 = ann['bbox']
                # 计算归一化参数
                x_center = (x1 + x2) / 2 / img_w
                y_center = (y1 + y2) / 2 / img_h
                w = (x2 - x1) / img_w
                h = (y2 - y1) / img_h
                # 替换为你的类别索引(需和后续YAML的names顺序对应)
                cls_idx = ann['category_id']
                lf.write(f"{cls_idx} {x_center:.6f} {y_center:.6f} {w:.6f} {h:.6f}\n")
    
  2. 编写数据集YAML配置文件
    参考coco8.yaml结构,填写你的数据集信息,示例如下:
    path: ./my_dataset  # 数据集根目录,需包含images(存图片)和labels(存txt标注)文件夹
    train: images/train  # 训练集图片子目录
    val: images/val  # 验证集图片子目录
    nc: 2  # 你的数据集类别总数
    names: ['cat', 'dog']  # 类别名称列表,顺序需和类别索引对应
    
  3. 启动训练
    将编写好的YAML文件传入model.train()即可:
    from ultralytics import YOLO
    
    model = YOLO('yolov8n.pt')
    model.train(data='my_dataset.yaml', epochs=100, imgsz=640)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:33:18