COCO 数据集

COCO 数据集

COCO(Common Objects in Context)是计算机视觉领域广泛使用的目标检测、实例分割和关键点检测数据集,由微软发布。其特点包括:

  1. 数据规模

    包含超过 33 万张图像,标注对象超过 250 万个,涵盖 80 个常见物体类别(如人、车、动物等)。

  2. 标注类型

    • 目标检测边界框: (x,y,width,height)
    • 实例分割:多边形点集或 RLE 编码
    • 关键点检测:人体 17 个关键点坐标
    • 图像描述:每张图配有 5 句文字描述
  3. 数据结构

    采用 JSON 格式组织,核心字段包括:

    json 复制代码
    {
      "images": [{"id": 1, "file_name": "0001.jpg", "width": 640, "height": 480}],
      "annotations": [{
        "id": 1,
        "image_id": 1,
        "category_id": 1,
        "bbox": [x,y,w,h],
        "segmentation": [[x1,y1,x2,y2,...]]
      }],
      "categories": [{"id": 1, "name": "person"}]
    }

转换为 YOLO 训练数据格式

YOLO 要求的数据格式为:

复制代码
<类别索引> <中心点_x> <中心点_y> <宽度> <高度>

其中所有坐标值需归一化到 \[0,1\] 区间。

转换步骤:
  1. 数据归一化

    对于每个边界框 (x,y,w,h)
    xcenter=x+w/2Wycenter=y+h/2Hwnorm=wWhnorm=hH \begin{aligned} x_{\text{center}} &= \frac{x + w/2}{W} \\ y_{\text{center}} &= \frac{y + h/2}{H} \\ w_{\text{norm}} &= \frac{w}{W} \\ h_{\text{norm}} &= \frac{h}{H} \end{aligned} xcenterycenterwnormhnorm=Wx+w/2=Hy+h/2=Ww=Hh

    其中 W H 为图像宽高。

  2. 文件结构

    • 每张图像对应一个 .txt 标注文件

    • 文件内容示例:

      复制代码
      0 0.35 0.48 0.12 0.23
      2 0.62 0.31 0.08 0.15
  3. 转换脚本示例

python 复制代码
import json

# 加载 COCO 标注文件
with open('annotations.json') as f:
    coco_data = json.load(f)

# 创建类别映射字典
cat_map = {cat['id']: idx for idx, cat in enumerate(coco_data['categories'])}

# 处理每张图像
for img in coco_data['images']:
    img_id = img['id']
    W, H = img['width'], img['height']
    
    # 收集当前图像的所有标注
    annotations = [a for a in coco_data['annotations'] if a['image_id'] == img_id]
    
    # 生成 YOLO 格式文本
    with open(f'labels/{img["file_name"].replace(".jpg", ".txt")}', 'w') as f:
        for ann in annotations:
            x, y, w, h = ann['bbox']
            x_center = (x + w/2) / W
            y_center = (y + h/2) / H
            w_norm = w / W
            h_norm = h / H
            
            # 写入归一化坐标
            f.write(f"{cat_map[ann['category_id']]} {x_center} {y_center} {w_norm} {h_norm}\n")
注意事项:
  1. 确保图像路径与标注文件路径匹配
  2. 类别索引需从 0 开始连续编号
  3. 对于分割任务需额外处理掩码数据
  4. 坐标值保留 6 位小数防止精度丢失

此转换适用于 YOLOv3/v4/v5/v6/v7/v8 等系列模型训练。

相关推荐
神奇小汤圆10 小时前
面试官:Agent意图识别怎么做?95%的人一句话就把自己送走了
人工智能
兜客互动10 小时前
2026年AI关键词拓展挖掘软件,高效助力内容创作精准获流
人工智能·python
AI的探索之旅10 小时前
AI辅助原理图评审:电源去耦、BOOT引脚、VCAP——19项逐一核查,遗漏?不存在的
人工智能·vscode·嵌入式硬件
武子康10 小时前
Kimi K3 2.8T:开放权重不等于本地可跑 超稀疏 MoE、百万上下文与真实部署边界
人工智能
老刘说AI10 小时前
AI服务核心: 高并发原理与性能监控调优
人工智能·神经网络·langchain·llama·持续部署
GeekArch10 小时前
第24讲:Vibe模式代码风格控制——适配Keil/STM32工程规范
人工智能·stm32·单片机·嵌入式硬件·mcu·决策树·ai编程
二川bro11 小时前
从提示工程→Loop循环→Graph图架构,2026AI开发者终极演进路线
人工智能
汤姆yu11 小时前
CodeGeeX 4完整安装与实操使用全指南
人工智能·windows·ai·智能体·视频模型
乐鑫科技 Espressif11 小时前
用 AI 开发 Zephyr-IoT 应用
人工智能·物联网·esp32·乐鑫科技·zephyr