coco dataset标签数据结构(json文件)

COCO数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的关键点), 和image captions(看图说话),使用json文件存储。

NameImagesLabels
train linkhttp://images.cocodataset.org/zips/train2017.ziphttp://images.cocodataset.org/annotations/annotations_trainval2017.zip
val linkhttp://images.cocodataset.org/zips/val2017.ziphttp://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip

我现在需要做目标检测,所以选取object instances(目标实例),打开的标签名称为:annotations/stuff_annotations_trainval2017中的stuff_train2017.json,整体是一个字典:

{
"info": {"description": null,"url": null, "version": null, "year": 2023, "contributor": null, "date_created": "2023-05-27 10:34:38.709025"},
"licenses": [{"url": null, "id": 0, "name": null}],
"images": [{"license": 0,"url": null,"file_name": "....jpg","height": 800, "width": 800,"date_captured": null, "id": 0},{...},...,{...}]
"type": "instances",
"annotations": [{"id": 0, "image_id": 0, "category_id": 1,"segmentation": [[polygon]], "area": 57142.0, "bbox": [246.0, 165.0, 310.0, 239.0]([x,y,width,height],即左上角的坐标+宽高), "iscrowd": 0},{"id": 1, "image_id": 0, "category_id": 1, "segmentation": [[polygon]], "area": 59602.0, "bbox": [248.0, 164.0, 311.0, 238.0], "iscrowd": 0},{...},...,{...}],
"categories": [{"supercategory": null, "id": 0, "name": "_background_"},{"supercategory": null, "id": 1, "name": "cell"}] 
}

以上是大致的结构,接下来我会逐个拆解:

  • 文件以字典的形式储存,该字典含有五个键值对以囊括所有信息:
{ "info" : info,"licenses" : [license],"images" : [image],"categories" : [category],"annotations" : [annataton]}

我们需要的key分别是"images" 和 “categories"和"annotations”

  • "images"结构
    "images"对应的value以嵌套列表的形式存储,其列表嵌套的每一个字典,都对应唯一的一个图片信息。
"images": [                                            
{"id": 0,                                                # int 图像id,可从0开始"file_name": "0.jpg",                                   # str 文件名"width": 512,                                           # int 图像的宽"height": 512,                                          # int 图像的高"date_captured": "2020-04-14 01:45:07.508146",          # datatime 获取日期"license": 1,                                           # int 遵循哪个协议"coco_url": "",                                         # str coco图片链接url"flickr_url": ""                                        # str flick图片链接url
}]
  • "categories"结构
    "categories"对应的value以嵌套列表的形式存储,其列表嵌套的每一个字典,都对应唯一的一个图片信息。
"categories":[
{"id": 1,                                 # int 类别id编号"name": "rectangle",                     # str 类别名字"supercategory": "None"                  # str 类别所属的大类,如卡车和轿车都属于机动车这个class
}]
  • "annotations"结构
    "annotations"对应的value以嵌套列表的形式存储,其列表嵌套的每一个字典,都对应唯一的一个标签信息。
    每个字典里有7个键值对。
"annotations": [ 
{"id": 0,                                   # int 图片中每个被标记物体的id编号"image_id": 0,                             # int 该物体所在图片的编号"category_id": 2,                          # int 被标记物体的类别id编号"iscrowd": 0,                              # 0 or 1 目标是否被遮盖,默认为0"area": 4095.9999999999986,                # float 被检测物体的面积(64 * 64 = 4096)"bbox": [200.0, 416.0, 64.0, 64.0],        # [x, y, width, height] 目标检测框的坐标信息"segmentation": [[200.0, 416.0, 264.0, 416.0, 264.0, 480.0, 200.0, 480.0]]  
}]
# "bbox"里[x, y, width, height]x, y代表的是物体的左上角的x, y的坐标值。
#"segmentation"里[x1, y1, x2, y2, x3, y3, x4, y4]是以左上角坐标为起始,顺时针依次选取的另外三个坐标点。及[左上x, 左上y, 右上x,右上y,右下x,右下y,左下x,左下y]。
  • "segmentation"结构
"segmentation":{"counts":xxxx"size": [426, 640]}

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

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

相关文章

Golang基础问题

Go基础 文章目录 Go基础● Go有那些关键字?● Go方法与函数的区别?● Go函数返回局部变量的指针是否安全?● Go函数参数传递是值传递还是引用传递?● defer关键字的实现原理?● 内置函数make和new的区别?●…

Yarn的安装方法

Yarn是由Facebook开发的一款快速、可靠、安全的JavaScript包管理工具,它是npm的替代品,提供了更快速的安装速度和更稳定的依赖版本管理。Yarn的安装与配置主要包括以下几个步骤: 一、安装Yarn Yarn的安装方法多种多样,以下是几种…

SVM的代码实现

生成假数据集:创建一个简单的二分类数据集。数据标准化:标准化特征。定义线性核函数:选择一个简单的线性核。定义优化问题:使用对偶问题进行求解。求解对偶问题:通过简单的梯度上升法求解对偶问题。确定支持向量&#…

kotlin协程的理解

伴生对象:companion object 其实质等同于Java中的单例模式 协程:通常实现是用户态的任务协作式调度 一段可执行代码可挂起/可恢复执行概念上与语言无关,协程这个概念于1958年提出 依赖框架: 协程的启动: 1.协程体&a…

大模型LLMs概述:利用大模型 (LLMs) 解决信息抽取任务

论文标题:Large Language Models for Generative Information Extraction: A Survey 论文链接:https://arxiv.org/pdf/2312.17617.pdf 论文主要探讨了大型语言模型(LLMs)在生成式信息抽取(IE)任务中的应用…

属性描述符初探——Vue实现数据劫持的基础

目录 属性描述符——Vue实现数据劫持的基础 一、属性描述符是什么? ​编辑 1.1、属性描述符示例 1.2、用属性描述符定义属性及获取对象的属性描述符 1.3、带有读取器和设置器的属性描述符 二、使用属性描述符的情景 2.1、封装和数据隐藏 使用getter和setter…

Desktop docker 部署 WordPress

Desktop Docker 部署 WordPress 之前都是在Linux里面玩的,今天看到别人在windwos下安装docker,一时兴起装了一个试试,效果一般,很吃硬盘空间和内存。 首先在docker官方下载桌面版,安装下一步一直到完成。 安装完docker会自动加入到环境变量,而且docker-compose也会一并安…

sql业务场景分析思路参考

1、时间可以进行排序,也可以用聚合函数对时间求最大值max(时间) 例如下面的例子:取最晚入职的人,那就是将入职时间倒序排序,然后limit 1 表: 场景:查找最晚入职员工的所有信息 se…

第十四届蓝桥杯省赛C++B组F题【岛屿个数】题解(AC)

题目大意 给定一个 01 地图,分别表示陆地和海,问地图中一共有多少块岛屿?另外,若一个岛屿在另一个岛屿的内部,则不统计。如下图中的大岛屿包含着内部的小岛屿,故内部小岛屿不计算,最终输出 1。…

vue3自定义全局指令和局部指令

1.全局指令 el:指令绑定到的DOM元素,可以用于直接操作当前元素,默认传入钩子的就是el参数,例如我们开始实现的focus指令,就是直接操作的元素DOM binding:这是一个对象,包含以下属性:…

oracle中的nocache的用法和例子

在Oracle数据库中,NOCACHE是与序列(Sequence)对象相关的一个选项,用于控制序列值的生成方式。当在创建或修改序列时指定NOCACHE选项,Oracle数据库将不会预先在内存中缓存序列值,而是每次调用序列的NEXTVAL时…

【C#】ProgressBar进度条异步编程思想

1.控件介绍 进度条通常用于显示代码的执行进程进度,在一些复杂功能交互体验时告知用户进程还在继续。 在属性栏中,有三个值常用: Value表示当前值,Minimum表示进度条范围下限,Maximum表示进度条范围上限。 2.简单实…

简单的git pull fail Can‘t update has no tracked branch解决记录

简单的git pull fail Can‘t update has no tracked branch解决记录 1. 问题描述 上午同事使用idea拉取代码的时候,发现拉取不了,提示用户权限问题,之后修改了git用户信息,发现还是拉取不了分支代码,然后删除了git r…

对FPGA开发流程系统的学习

FPGA 开发流程: HDL(Hardware Design Language)和原理图是两种最常用的数字硬件电路描述方法,HDL 设计法具有更好的可移植性、通用性和模块划分与重用性的特点,在目前的工程设计中被广泛使用。所以,我们在…

WPF在.NET9中的重大更新:Windows 11 主题

在2023年的2月20日,在WPF的讨论区,WPF团队对路线的优先级发起了一次讨论。 对三个事项发起了投票。 第一个是Windows 11 主题 第二个是更新的控件 第三个是可空性注释 最终Windows 11 主题得票最高,WPF团队2023-2024的工作优先级就是Windows…

网安小贴士(8)IPv4与IPv6

一、前言 IPv4和IPv6都是互联网协议(IP)的版本,它们用于在互联网上标识和定位设备。 二、定义 IPv4(互联网协议第四版): IPv4是互联网协议的第一个广泛使用的版本,最初在1981年被标准化为RFC 7…

利用Java构建高可靠性的分布式系统

利用Java构建高可靠性的分布式系统 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 随着互联网应用的发展和用户规模的增长,构建高可靠性…

交换数字00

题目链接 交换数字 题目描述 注意点 numbers.length 2-2147483647 < numbers[i] < 2147483647 解答思路 不适用临时变量&#xff0c;可以先将numbers[0]和numbers[1]的信息都存到某个位置&#xff08;可以相加可以相减或其他位操作&#xff09;&#xff0c;然后另一…

SpringBoot 通过Knife4j集成API文档 在线调试

介绍 Knife4j 是一款基于 Swagger 构建的增强型 API 文档生成工具&#xff0c;它提供了更多的定制化功能和界面优化&#xff0c;使得生成的 API 文档更加美观和易用。它可以帮助开发者快速生成和管理 API 文档&#xff0c;支持在线调试和交互。 依赖 <!--knife4j--> &…

期末C语言易错知识点整理

1.在定义多维数组时&#xff0c;除了最左边的维度&#xff0c;其余的维度必须明确指定大小 2.int m[1][4]{4}; 定义的是一个 1 行 4 列的二维数组&#xff0c;初始化时提供了一个元素 4&#xff0c;其余元素默认初始化为 0&#xff0c;因此是正确的。 3.二维数组 a[3][6] 中的索…