COCO 数据集介绍

news2025/1/11 8:12:15

COCO(Common Objects in Context)数据集是一个广泛使用的计算机视觉数据集,尤其在目标检测、语义分割、实例分割、关键点检测等任务中具有重要的应用。COCO 数据集的结构和格式较为复杂,主要包括图像数据和多种注释类型(如目标类别、位置、分割掩膜等)。

1. COCO 数据集的整体结构

COCO 数据集通常包括以下几个主要部分:

  1. images:存储所有图像的信息(图像文件路径、图像大小等)。
  2. annotations:存储与图像相关的各种注释信息(如目标边界框、类别标签、分割掩膜、关键点等)。
  3. categories:存储类别标签的定义。
  4. licenses:存储数据集图像的版权信息。
  5. info:包含关于数据集的元信息,如版本号、描述等。

COCO 数据集的主要文件是一个 JSON 文件,这个文件存储了所有这些信息,通常有以下几种格式:

  • instances_train2017.json:用于目标检测、实例分割任务,包含图像、标注的目标边界框、类别等信息。
  • panoptic_train2017.json:用于全景分割任务,包含分割区域的信息。
  • captions_train2017.json:用于图像描述任务,包含图像的文字描述。

2. COCO 数据集 JSON 文件结构

下面是 COCO 数据集的 JSON 文件结构,它包含了关于图像、注释和类别等信息。

{
    "images": [
        {
            "id": 1,
            "width": 640,
            "height": 480,
            "file_name": "000000000001.jpg",
            "license": 1,
            "coco_url": "http://images.cocodataset.org/train2017/000000000001.jpg",
            "date_captured": "2013-11-14 17:02:12"
        },
        ...
    ],
    "annotations": [
        {
            "id": 1,
            "image_id": 1,
            "category_id": 1,
            "bbox": [x, y, width, height],
            "area": width * height,
            "segmentation": [[x1, y1, x2, y2, ..., xn, yn]],
            "iscrowd": 0
        },
        ...
    ],
    "categories": [
        {
            "id": 1,
            "name": "person",
            "supercategory": "human"
        },
        ...
    ],
    "licenses": [
        {
            "id": 1,
            "name": "Attribution-NonCommercial 4.0 International",
            "url": "http://creativecommons.org/licenses/by-nc/4.0/"
        },
        ...
    ],
    "info": {
        "description": "COCO 2017 Dataset",
        "url": "http://cocodataset.org",
        "version": "1.0",
        "year": 2017,
        "contributor": "COCO Consortium",
        "date_created": "2017/06/23"
    }
}

3. JSON 文件中的关键部分

  • images:一个列表,每个元素代表一张图片的元数据。

    • id: 图片的唯一标识符。
    • width: 图片的宽度。
    • height: 图片的高度。
    • file_name: 图片文件的名称。
    • license: 图像版权的 ID(参考 licenses 部分)。
    • coco_url: 图像的 URL 地址。
    • date_captured: 图像的采集时间。
  • annotations:一个列表,包含所有注释信息。每个元素代表一个对象的注释。

    • id: 注释的唯一标识符。
    • image_id: 该注释对应的图像 ID。
    • category_id: 该注释对应的物体类别 ID。
    • bbox: 包围盒(Bounding Box),格式为 [x, y, width, height],表示目标的位置和大小。
    • area: 目标的面积(可以通过 bbox 计算得到)。
    • segmentation: 分割掩膜的信息。如果是多边形分割,格式是一个坐标列表;如果是 RLE(Run-Length Encoding)格式的掩膜,格式是一个字符串。
    • iscrowd: 如果该目标是聚集体(例如一群人),则标记为 1;否则为 0。
  • categories:包含类别的信息。

    • id: 类别的唯一标识符。
    • name: 类别的名称,例如 “person”、“car” 等。
    • supercategory: 类别的上层类别(例如 “human”、“vehicle”)。
  • licenses:存储图像的版权信息。

    • id: 版权的唯一标识符。
    • name: 版权的名称。
    • url: 版权的链接。
  • info:数据集的元信息,包括数据集的描述、版本、创建者、创建时间等。

4. 分割掩膜和 RLE(Run-Length Encoding)

  • 在 COCO 数据集中,分割掩膜可以有两种形式:
    1. 多边形格式:通过一组坐标点表示多边形的轮廓,适用于大多数目标。
      • 例如:"segmentation": [[x1, y1, x2, y2, ..., xn, yn]]
    2. RLE 格式:对于一些密集的物体,COCO 采用 RLE(Run-Length Encoding)来编码分割掩膜。
      • 例如:"segmentation": {"counts": "5 3 2 1 6 2", "size": [height, width]}
      • counts 是一个压缩后的序列,表示连续的像素值。
      • size 是图像的大小 [height, width]

5. 使用示例

假设我们有一个图像 000000000001.jpg,其在 annotations 中的一个注释可能如下所示:

{
    "id": 1,
    "image_id": 1,
    "category_id": 1,
    "bbox": [100, 50, 200, 150],
    "area": 30000,
    "segmentation": [[100, 50, 100, 200, 300, 200, 300, 50]],
    "iscrowd": 0
}
  • image_id 指的是图像的 ID。
  • category_id 代表该目标的类别 ID。
  • bbox 描述了目标的位置(x, y, width, height)。
  • segmentation 是该目标的多边形分割坐标。
  • iscrowd 表示是否为拥挤的目标(例如一群人)。

6. 数据集的目录结构

COCO 数据集的文件夹结构通常如下:

COCO/
├── annotations/
│   ├── instances_train2017.json
│   ├── instances_val2017.json
│   ├── captions_train2017.json
│   └── panoptic_train2017.json
├── train2017/
│   ├── 000000000001.jpg
│   ├── 000000000002.jpg
│   └── ...
├── val2017/
│   ├── 000000000001.jpg
│   ├── 000000000002.jpg
│   └── ...
└── test2017/
    ├── 000000000001.jpg
    ├── 000000000002.jpg
    └── ...
  • annotations 文件夹包含了所有标注的 JSON 文件
  • train2017val2017test2017 文件夹分别存放训练集、验证集和测试集的图像。

总结:

COCO 数据集的结构和格式通过 JSON 文件进行定义,包含了图像信息、注释(包括目标类别、边界框、分割掩膜、关键点等),以及类别和版权信息。COCO 数据集为计算机视觉任务提供了丰富的标注信息,广泛应用于目标检测、语义分割、实例分割等领域。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2274807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web前端基础知识(七)

要在JS中获取元素节点&#xff0c;需要使用DOM API提供的方法。 innerHTML&#xff1a;不仅会返回一个纯文本&#xff0c;还可以解析一下这个文本中的语意。 innerText: 忽略HTML标记。 举例&#xff1a; <body> <div id"box1">这是一个ID选择器标签…

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

欧拉公式和傅里叶变换

注&#xff1a;英文引文机翻&#xff0c;未校。 中文引文未整理去重&#xff0c;如有异常&#xff0c;请看原文。 Euler’s Formula and Fourier Transform Posted byczxttkl October 7, 2018 Euler’s formula states that e i x cos ⁡ x i sin ⁡ x e^{ix} \cos{x} i …

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…

Python 模块 Uvicorn 实战指南

文章目录 1. 介绍和安装1.1 介绍1.2 安装 2. 创建基础应用2.1 简单的 HTTP 应用2.2 添加日志 3. 实现高级功能3.1 支持 WebSocket3.2 优化运行性能 4. Nginx 配置反向代理4.1 安装与配置 Nginx4.2 启用 SSL 支持4.3 性能优化建议 5. 常见问题与解决方案5.1 高并发问题5.2 WebSo…

音频数据增强:提升音频信号质量的多种技术

在音频处理和机器学习领域&#xff0c;音频数据增强是一种常用的技术&#xff0c;旨在通过对原始音频信号进行各种变换和处理&#xff0c;生成更多样化的训练数据。   这不仅可以提高模型的鲁棒性&#xff0c;还能改善其在真实世界应用中的表现。本文将介绍几种常用的音频数据…

uniapp vue2版本如何设置i18n

如何设置i18n在该软件设置过语言的情况下优先选择所设置语言&#xff0c;在没有设置的情况下&#xff0c;获取本系统默认语言就&#xff0c;将系统默认语言设置为当前选择语言。 1、下载依赖&#xff1a; npm install vue-i18n --save 2、创建相关文件&#xff08;在最外层&…

vulnhub靶场【DC系列】之9 the final 结束篇

前言 靶机&#xff1a;DC-8&#xff0c;IP地址为192.168.10.11&#xff0c;后续因为靶机重装&#xff0c;IP地址变为192.168.10.13 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用VMWare&#xff0c;网卡为桥接模式 对于文章中涉及到的靶场以及工具&#xf…

网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法

网络安全 | 网络安全法规&#xff1a;GDPR、CCPA与中国网络安全法 一、前言二、欧盟《通用数据保护条例》&#xff08;GDPR&#xff09;2.1 背景2.2 主要内容2.3 特点2.4 实施效果与影响 三、美国《加利福尼亚州消费者隐私法案》&#xff08;CCPA&#xff09;3.1 背景3.2 主要内…

基于QT和C++的实时日期和时间显示

一、显示在右下角 1、timer.cpp #include "timer.h" #include "ui_timer.h" #include <QStatusBar> #include <QDateTime> #include <QMenuBar> Timer::Timer(QWidget *parent) :QMainWindow(parent),ui(new Ui::Timer) {ui->setup…

STM32小实验2

定时器实验 TIM介绍 TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断…

【软考】软件设计师

「学习路线」&#xff08;推荐该顺序学习&#xff0c;按照先易后难排序&#xff09; 1、上午题—计算机系统&#xff08;5~6分&#xff09;[1.8; ] 2、上午题—程序设计语言&#xff08;固定6分&#xff09;[1.9; ] 3、下午题—试题一&#xff08;15分&#xff09; 4、上午题—…

2030年中国AI人才缺口或达400万,近屿智能助力AI人才储备增长

在当今数字化浪潮下&#xff0c;人工智能&#xff08;AI&#xff09;已成为推动各行业发展的关键力量。然而&#xff0c;吸引和留住 AI 人才正成为全球性难题&#xff0c;中国亦不例外。据麦肯锡 2022 年全球人工智能商业高管调查&#xff0c;75% 的中国受访者在招聘数据科学家…

一块钱的RISC-V 32位芯片

‍‍ ‍‍之前跟一个朋友聊天&#xff0c;说以后的芯片一定是越来越趋向于定制化&#xff0c;比如我们需要一个ADC芯片&#xff0c;这颗ADC芯片需要有串口功能&#xff0c;那就只开发一颗这样的芯片就好了&#xff0c;其他的功能都可以裁剪掉。 ➵➵➵➵➵➵➵➵➵➵➵➵➵➵➵…

rk3568平台Buildroot编译实践:内核rootfs定制 及常见编译问题

目录 编译前准备常规编译流程定制内核修改内核 参数并增量 保存修改rootfs并增量 保存修改rootfs包下载源rootfs软件包增删refBuildroot 是一个用于自动化构建嵌入式 Linux 系统的工具。它通过使用简单的配置文件和 Makefile,能够从源代码开始交叉编译出一个完整的、可以运行在…

机器翻译优缺点

随着科技的飞速发展&#xff0c;机器翻译是近年来翻译行业的热门话题&#xff0c;在人们的生活和工作中日益普及&#xff0c;使用机器能够提高翻译效率&#xff0c;降低成本。尽管关于机器翻译为跨语言交流带来了诸多便利&#xff0c;但在译文的正确率和局限性方面存在一定争议…

R 语言科研绘图 --- 折线图-汇总

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

30天开发操作系统 第 12 天 -- 定时器 v1.0

前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单&#xff0c;只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器&#xff0c;CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…

自动化测试:6大关键脚本类型及使用要点

测试脚本在自动化测试中扮演着至关重要的角色&#xff0c;特别是常见的六种关键脚本类型及其使用范围和注意事项&#xff0c;它们能够确保系统在不同负载和环境下稳定运行&#xff0c;保障接口交互的准确性和安全性&#xff0c;从而节省时间和人力成本&#xff0c;推动项目高效…

算法题(31):两数之和-输入有序数组

审题&#xff1a; 在确定有唯一解的前提下&#xff0c;找出两个下标对应的元素值之和等于target的下标&#xff0c;并存入数组中返回 思路&#xff1a; 方法一&#xff1a;暴力搜索&#xff08;超时&#xff09; 利用两个循环进行所有情况的枚举&#xff0c;让每个元素依次与其…