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 等系列模型训练。

相关推荐
草莓熊Lotso11 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
Coder_Boy_12 小时前
技术发展的核心规律是「加法打底,减法优化,重构平衡」
人工智能·spring boot·spring·重构
会飞的老朱14 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
聆风吟º15 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
Codebee17 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
聆风吟º18 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys18 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_567818 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子18 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能19 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算