常见的数据集格式

news2024/11/25 6:56:37

常见的数据集格式有三种,分别为voc(xml)、coco(json)、yolo(txt)。

1 VOC

VOC数据集由五个部分构成:JPEGImages,Annotations,ImageSets,SegmentationClass以及SegmentationObject.
在这里插入图片描述

.
└── VOC             #根目录
    └── VOC2012           #不同年份的数据集
        ├── Annotations   #存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等
        ├── ImageSets     #该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称,末尾会加上±1表示正负样本
        │   ├── Action
        │   ├── Layout
        │   ├── Main
        │   └── Segmentation
        ├── JPEGImages         #存放源图片
        ├── SegmentationClass  #存放的是图片,语义分割相关
        └── SegmentationObject #存放的是图片,实例分割相关
  • Annotations(注释):**数据集标签的存储路径,通过XML文件格式,为图像数据存储各类任务的标签。**每张图片对应一个.xml文件
<annotation>
	<folder>VOC2012</folder>  # 图片所处文件夹
	<filename>2007_000027.jpg</filename> # 图片名称
	<source> # 图片来源信息
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
	</source>
	<size> # 图片大小信息
		<width>486</width>
		<height>500</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented> # 是否有分割label
	<object> # 图片所包含的物体(每个物体一个object)
		<name>person</name> # 物体名称
		<pose>Unspecified</pose> # 物体姿态
		<truncated>0</truncated> #物体是否被部分遮挡
		<difficult>0</difficult> # 是否为难以辨识的物体, 主要指要结体背景才能判断出类别的物体。
		<bndbox> #物体的bound box(矩形)
			<xmin>174</xmin> # 左
			<ymin>101</ymin> # 上
			<xmax>349</xmax># 右
			<ymax>351</ymax># 下
		</bndbox>
		<part> # 物体的部分
			<name>head</name> # 部分名称
			<bndbox># 部分的bound box(矩形)
				<xmin>169</xmin>
				<ymin>104</ymin>
				<xmax>209</xmax>
				<ymax>146</ymax>
			</bndbox>
		</part>
	</object>
</annotation>
  • ImageSets:主要讨论Main文件夹,此文件夹中存放的多个文本文件,分别存放的是各图片的文件名及正负样本
person.txt
2008_000078 -1
2008_000080 -1
2008_000082 -1
2008_000084 -1
2008_000090  1    # 图片2008_000090  含有person
2008_000107 -1
2008_000115 -1
2008_000116 -1
2008_000119 -1
2008_000120 -1
2008_000123 -1
2008_000133  1  # 图片2008_000133  含有person
  • JPEGImages:存放的是训练与测试的所有图片。
  • SegmentationClass与SegmentationObject:存放的都是图片,且都是图像分割结果图。class segmentation 标注出每一个像素的类别,以类为分割条件。object segmentation 标注出每一个像素属于哪一个物体,以物体为分割条件。

2 COCO

COCO是一个大规模的目标检测、分割和标注数据集,其格式更加丰富和复杂,COCO数据集的主要标注文件是JSON格式。

COCO数据集现在有3种标注类型,分别是:
object instances(目标实例)
object keypoints(目标上的关键点)
image captions(看图说话)
这3种类型共享这些基本类型:info、image、license,使用JSON文件存储。

COCO #根目录
├── annotations # 存放json格式的标注
│ ├── instances_train2017.json
│ └── instances_val2017.json
└── train2017 # 存放图片文件
│ ├── 00000006584.jpg
│ ├── 00000002424.jpg
│ └── 00000008534.jpg
└── val2017
├── 000000007741.jpg
└── 000000002595.jpg

与VOC一个文件一个xml标准不同的是,COCO所有的目标框标注都是在同一个json里。

{
	"info":{                           # 数据集信息描述
	    "year": 2017,                # 数据集年份
	    "version": "1.0",             # 数据集版本
	    "description": "coco 2017 Dataset",         # 数据集描述
	    "contributor": "coco",         # 数据集提供者
	    "url": "http://cocodataset.org",                 # 数据集下载链接
	    "date_created": "2017/09/01",   # 数据集创建日期
	}
	"licenses":[
			{
		    "id": 4,
		    "name": Attribution License,
		    "url": "http://.....",
		} 
	]	
	"images":[ # 所有图片列表
		# 图片242287信息
		{     
		    "id": 242287,                  # 图片的ID编号(每张图片ID唯一)
		    "width": 426,               # 图片宽
		    "height": 640,              # 图片高
		    "file_name": "242287.jpg",           # 图片名字
		    "license": int,             # 协议
		    "flickr_url": str,          # flickr链接地址
		    "coco_url": str,            # 网络连接地址
		    "date_captured": datetime,  # 数据集获取日期
		}
		# 图片242288信息
		{     
		    "id": 242288,                  # 图片的ID编号(每张图片ID唯一)
		    "width": 450,               # 图片宽
		    "height": 550,              # 图片高
		    "file_name": "242288.jpg",           # 图片名字
		    "license": int,             # 协议
		    "flickr_url": str,          # flickr链接地址
		    "coco_url": str,            # 网络连接地址
		    "date_captured": datetime,  # 数据集获取日期
		}
		...
	]



	"annotations":[ # 所有图片的标注信息
		# 标注125686
		{ 
		    "id": 125686,               # 目标对象ID(每个对象ID唯一),每张图片可能有多个目标
		    "image_id": 242287,            # 对应图片ID
		    "category_id": 2,         # 对应类别ID,与categories中的ID对应
		    "segmentation": RLE or [polygon],   # 实例分割,对象的边界点坐标[x1,y1,x2,y2,....,xn,yn]
		    "area": 5322,              # 对象区域面积
		    "bbox": [xmin,ymin,width,height], # 目标检测,对象定位边框[x,y,w,h]
		    "iscrowd": 0 or 1,          # 表示是否多个物体
		}
		# 标注125688
		{ 
		    "id": 125688,               # 目标对象ID(每个对象ID唯一),每张图片可能有多个目标
		    "image_id": 242288,            # 对应图片ID
		    "category_id": 2,         # 对应类别ID,与categories中的ID对应
		    "segmentation": [[20,1,12,10,...]],   # 解释见下
		    "area": 5322,              # 对象区域面积
		    "bbox": [xmin,ymin,width,height], # 目标检测,对象定位边框[x,y,w,h]
		    "iscrowd": 0 or 1,          # 表示是否多个物体
		}
	]



		"categories":[# 类别描述
			# 类别2
			{                     
			    "id": 2,                  # 类别对应的ID0默认为背景)
			    "name": "bicycle",                # 子类别名字
			    "supercategory": "vehicle",       # 主类别名字
			}
			# 类别3
			{                     
			    "id": 3,                  # 类别对应的ID0默认为背景)
			    "name": "animal",                # 子类别名字
			    "supercategory": "cat",       # 主类别名字
			}
	]


}

segmentation的另一种表示方法的解释
“segmentation”: [
size:[46,46],
count:[138,3,1,…]
]
把一张图分为若干像素点,则count:[138,3,1,...] 表示[非物体像素点数,物体像素点个数,非物体像素点数,...] 非物体像素点计数与物体像素点计数交叉时清空重算
在这里插入图片描述

3 YOLO

yolo数据集标注格式主要是 yolov5 项目需要用到,标签使用txt文本进行保存。

dataset
├─images
│  ├─train
│  │    ├─ flip_mirror_himg0026393.jpg
│  │    ├─ flip_mirror_himg0026394.jpg
│  │    ├─ flip_mirror_himg0026395.jpg
│  │    ├─ flip_mirror_himg0027314.jpg
│  │    ├─ flip_mirror_himg0027315.jpg
│  │    └─flip_mirror_himg0027316.jpg
│  │
│  └─val
│     ├─ flip_mirror_himg0027317.jpg
│     └─flip_mirror_himg0027318.jpg
│
└─labels
    ├─train
    │    ├─ flip_mirror_aimg0025023.txt
    │    ├─ flip_mirror_aimg0025024.txt
    │    ├─ flip_mirror_aimg0025025.txt
    │    ├─ flip_mirror_aimg0025026.txt
    │    ├─ flip_mirror_aimg0025027.txt
    │    └─ flip_mirror_aimg0025028.txt
    │
    └─val 
         ├─ flip_mirror_aimg0025029.txt
         └─flip_mirror_aimg0025030.txt

yolo标注格式

<object-class> <x> <y> <width> <height>

0 0.412500 0.318981 0.358333 0.636111
object-class:类别
x,y:目标的中心坐标,相对于图片的H和W做归一化。即x/W,y/H。
width,height:目标(bbox)的宽和高,相对于图像的H和W做归一化。

4 数据集使用(COCO为例)

官方文档coco使用方法

  • root(str或pathlib.Path):
    这个参数指定了图像下载或访问的根目录。数据集加载器将从这里查找图像。
  • annFile(string):
    这个参数提供了与数据集相关的JSON注释文件的路径。在COCO数据集中,这个JSON文件包含了每个图像的详细注释,包括边界框、类别和其他元数据。
  • transform(callable,可选):
    这个参数定义了一个函数或变换,用于在将图像加载为PIL(Python Imaging Library)图像后应用于它。常见的变换包括调整大小、归一化或转换为张量。例如,transforms.PILToTensor 表示将PIL图像转换为张量,这在许多深度学习框架中很常见。
  • target_transform(callable,可选):
    这个参数指定了一个函数或变换,用于在加载目标(注释或标签)后应用于它们。这在需要对注释进行处理或转换为不同格式的任务中非常有用。
  • transforms(callable,可选):
    这个参数定义了一个函数或变换,接受输入样本(图像)及其对应的目标(注释),并返回它们的转换版本。当需要同时对输入图像和其注释进行联合转换或增强时,这非常有用。
import torchvision
from PIL import ImageDraw
coco_dataset = torchvision.datasets.CocoDetection(root="/val2017",
                                                  annFile="instances_val2017.json")
# 读取json各信息,绘制矩形框
image,info = coco_dataset[0]
image_handler = ImageDraw(image)
for box in info:
    x_min, y_min, x_max, y_max = box['bbox']
    image_handler.rectangle(((x_min, y_min), (x_max, y_max)), outline='red')
image.show()

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

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

相关文章

基于微信小程序+SpringBoot+Vue的微信平台签到系统(带1w+文档)

基于微信小程序SpringBootVue的微信平台签到系统(带1w文档) 基于微信小程序SpringBootVue的微信平台签到系统(带1w文档) 微信平台签到系统使用Java语言进行编码&#xff0c;使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务&#xff0c;其管理微信平台…

使用Diffusion Models进行街景视频生成

Diffusion Models专栏文章汇总&#xff1a;入门与实战 前言&#xff1a;街景图生成相当有挑战性&#xff0c;目前的文本到视频的方法仅限于生成有限范围的场景的短视频&#xff0c;文本到3D的方法可以生成单独的对象但不是整个城市。除此之外街景图对一致性的要求相当高&#x…

IDEA新建module后变为普通文件夹

问题描述&#xff1a; 在父项目中创建module并构建子父关系&#xff0c;但在创建module并配置后出现未生效问题 在父项目中的pom.xml文件中添加 <modules><module>***</module></modules>在新建Module中添加 <parent><groupId>com.***&l…

UFO:革新Windows操作系统交互的UI聚焦代理

人工智能咨询培训老师叶梓 转载标明出处 人机交互的便捷性和效率直接影响着我们的工作和生活质量。尽管现代操作系统如Windows提供了丰富的图形用户界面&#xff08;GUI&#xff09;&#xff0c;使得用户能够通过视觉和简单的点击操作来控制计算机&#xff0c;但随着应用程序功…

3.Fabric系统架构、网络拓扑图、交易流程

Hyperledger Fabric系统架构 Fabric网络拓扑图 Fabric交易流程 多通道

硅谷裸机云大宽带服务器连接不上是怎么回事?该如何处理

硅谷裸机云大宽带服务器连接不上的常见原因主要有网络设置、网络设备、服务端、软件和服务、物理层等&#xff0c;出现以上问题&#xff0c;RAK部落小编建议大家可以通过以下一系列的方法进行排查和解决。具体分析如下&#xff1a; 1.检查网络设置   核对配置信息&#xff1a…

017、Vue动态tag标签

文章目录 1、先看效果2、代码 1、先看效果 2、代码 <template><div class "tags"><el-tag size"medium"closable v-for"item,index in tags":key"item.path":effect"item.title$route.name?dark:plain"cl…

centos/Ubuntu安装Java/Maven

上图就是今天在Linux环境下安装好Java和Maven后&#xff0c;打包Spring Boot项目的截图&#xff01; 安装Java centos # 安装 yum install -y java-1.8.0-openjdk*# 查看版本检测是否成功安装 java -versionUbuntu # 更新软件包 sudo apt-get update# 安装 sudo apt-get in…

React Native 与 Flutter:你的应用该如何选择?

Flutter 和 React Native 都被认为是混合应用程序开发中的热门技术。然而&#xff0c;当谈到为你的项目使用框架时&#xff0c;你必须考虑哪一个是最好的&#xff1a;Flutter 还是 React Native&#xff1f; 本篇文章包含 Flutter 和 React Native 在各个方面的差异。因此&…

【数据结构】顺序表(ArrayList的具体使用)

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 欢迎志同道合的朋友一起加油喔 &#x1f4aa;&#x1f4aa;&#x1f4aa; 谢谢你这么帅…

7 Vue3

相比 Vue2 1. 优点 vue3支持vue2的大多数特性&#xff0c;实现对vue2的兼容vue3对比vue2具有明显的性能提升 打包大小减少41%初次渲染快55%&#xff0c;更新快133%内存使用减少54% 更好的支持TypeScript使用Proxy代替defineProperty实现响应式数据 2. 性能提升的原因 静态标…

图解 HDFS 架构 |读写过程

HDFS HDFS 全称 Hadoop Distributed File System&#xff0c;是一个分布式文件系统。HDFS&#xff08;Hadoop Distributed File System&#xff09;是 Apache Hadoop 生态系统的一部分&#xff0c;它是一个分布式文件系统&#xff0c;用于存储和处理大规模数据集。HDFS 专门设…

微信小程序中Map组件Marker中把Label文字信息通过按钮显示或隐藏

wxml页面按钮 <button bindtap"toggleLabel">Toggle Label</button>js data:{labelMarkerId: null // 记录当前显示文本的标记的 id }, //按钮切换显示 toggleLabel() {// 判断当前是否有显示的文本标记if (this.data.labelMarkerId ! null) {// 如果…

springboot+vue+mybatis校园闲置品交换平台+PPT+论文+讲解+售后

校园闲置品交换平台是校园闲置品交换平台必不可少的一个部分。在校园闲置品交换平台的整个过程中&#xff0c;校园闲置品交换平台担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类校园闲置品交换平台管理程序也在不断改进。本课题所设计的校园闲置品交换平台…

思维+01背包,LeetCode LCP 47. 入场安检

一、题目 1、题目描述 「力扣挑战赛」 的入场仪式马上就要开始了&#xff0c;由于安保工作的需要&#xff0c;设置了可容纳人数总和为 M 的 N 个安检室&#xff0c;capacities[i] 记录第 i 个安检室可容纳人数。安检室拥有两种类型&#xff1a; 先进先出&#xff1a;在安检室中…

基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!

基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度&#xff08;通常是 float32&#xff0…

go语言Gin框架的学习路线(九)

GORM的CRUD教程 CRUD 是 "Create, Read, Update, Delete"&#xff08;创建、读取、更新、删除&#xff09;的缩写&#xff0c;代表了数据库操作的基本功能。在 GORM 的上下文中&#xff0c;CRUD 指的是使用 GORM 库来执行这些基本的数据库操作。 创建的 在 GORM 中…

第5讲:Sysmac Studio中的硬件拓扑

Sysmac Studio软件概述 一、创建项目 在打开的软件中选择新建工程 然后在工程属性中输入工程名称,作者,类型选择“标准工程”即可。 在选择设备处,类型选择“控制器”。 在版本处,可以在NJ控制器的硬件右侧标签处找到这样一个版本号。 我们今天用到的是1.40,所以在软…

DB-GPT:LLM应用的集大成者

整体架构 架构解读 可以看到&#xff0c;DB-GPT把架构抽象为7层&#xff0c;自下而上分别为&#xff1a; 运行环境&#xff1a;支持本地/云端&单机/分布式等部署方式。顺便一提&#xff0c;RAY是蚂蚁深度参与的一个开源项目&#xff0c;所以对RAY功能的支持应该非常完善。…

Hadoop、HDFS、MapReduce 大数据解决方案

本心、输入输出、结果 文章目录 Hadoop、HDFS、MapReduce 大数据解决方案前言HadoopHadoop 主要组件的Web UI端口和一些基本信息MapReduceMapReduce的核心思想MapReduce的工作流程MapReduce的优缺点Hadoop、HDFS、MapReduce 大数据解决方案 编辑 | 简简单单 Online zuozuo 地址…