当前位置: 首页 > news >正文

COCO 数据集

COCO 数据集

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

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

  2. 标注类型

    • 目标检测边界框:$ (x,y,width,height) $
    • 实例分割:多边形点集或 RLE 编码
    • 关键点检测:人体 17 个关键点坐标
    • 图像描述:每张图配有 5 句文字描述
  3. 数据结构
    采用 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. 转换脚本示例

importjson# 加载 COCO 标注文件withopen('annotations.json')asf:coco_data=json.load(f)# 创建类别映射字典cat_map={cat['id']:idxforidx,catinenumerate(coco_data['categories'])}# 处理每张图像forimgincoco_data['images']:img_id=img['id']W,H=img['width'],img['height']# 收集当前图像的所有标注annotations=[aforaincoco_data['annotations']ifa['image_id']==img_id]# 生成 YOLO 格式文本withopen(f'labels/{img["file_name"].replace(".jpg",".txt")}','w')asf:foranninannotations: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 等系列模型训练。

http://www.gsyq.cn/news/122835.html

相关文章:

  • 《Nature Communications》新研究:基于光致发光电极的彩色可拉伸显示技术实现
  • 如何为超宽屏显示器选择 KVM 切换器?
  • 零基础入门学网络安全(详细),看这篇就够了
  • 喷砂除锈设备工艺流程是什么?| 广东鑫百通喷砂机厂家
  • 高通跃龙QCS6490平台视频录制与上传(1): 系统环境搭建指南
  • 票价冲击200元!《阿凡达3》点映价格全解析——观众到底买不买?
  • 在家开泰拉瑞亚私服,搭载cpolar让外地朋友也能玩!
  • 可持续测试实践探索
  • 多路定制化电源模块测试解决方案案例-纳米软件
  • 小程序毕设选题推荐:基于小程序的高校学生公寓道闸管理平台的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 数据库的索引知识以及常见相关面试题
  • 基于SSA-LSTM-DCNN的光伏故障诊断:探索更优之路
  • 大模型3年工作经验,为何不如校招的一张白纸?
  • 全面解析Halar®涂层在化工设备中的应用与优势
  • 六自由度机械臂的 RRT 避障算法仿真之旅
  • AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agents
  • BGP实验
  • 欧拉法仿真铺粉元素偏移:从模型到代码
  • ⚛️ React 17 vs React 18:Lanes 是同一个模型,但跑法不一样
  • 【珍藏】大模型入门指南:揭开LLM神秘面纱,掌握核心参数、范式与应用技巧
  • 【滑模控制二阶系统固定时间一致性】多智能体系统中基于固定时间收敛滑模面的鲁棒二阶共识研究附Matlab代码
  • 破局者胜:2025年中国法律科技市场案件管理系统深度测评——以“案件云”为例
  • [机器学习] 类别变量编码库category_encoders使用指南
  • 这段代码,为什么不能加if(mOnKeyListener == null)
  • 可编程逻辑器件学习(day29):Verilog HDL可综合代码设计规范与实践指南 - 详解
  • 运维系列数据库系列【仅供参考】:达梦数据库:DM8锁等待和死锁
  • 深入理解MyBatis缓存机制:一二级缓存全解析
  • 解决 IntelliJ IDEA 中 Tomcat 日志乱码障碍的详细指南
  • VMware ESXI 8.0安装vCenter 8.0
  • Xiaomi mimo大模型API接入Claude code