常见的数据集格式

常见的数据集格式有三种,分别为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.mzph.cn/web/47812.shtml

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

相关文章

HAL库源码移植与使用之RTC时钟

实时时钟(Real Time Clock&#xff0c;RTC)&#xff0c;本质是一个计数器&#xff0c;计数频率常为秒&#xff0c;专门用来记录时间。 普通定时器无法掉电运行&#xff01;但RTC可由VBAT备用电源供电&#xff0c;断电不断时 这里讲F1系列的RTC 可以产生三个中断信号&#xff…

Kafka之存储设计

文章目录 1. 分区和副本的存储结构1. 分区和副本的分布2. 存储目录结构3. 文件描述 2. 相关配置3. 数据文件类型4. 数据定位原理LogSegment 类UnifiedLog 类 5. 副本数据同步HW水位线LEO末端偏移量HW更新原理 6. 数据清除 1. 分区和副本的存储结构 在一个多 broker 的 Kafka 集…

文心一言大模型

文心一言是百度基于其强大的“文心”大模型技术推出的生成式AI产品&#xff08;英文名&#xff1a;ERNIE Bot&#xff09;。以下是关于文心一言的详细介绍&#xff1a; 一、产品定位与功能 定位&#xff1a;文心一言被定位为人工智能基座型的赋能平台&#xff0c;旨在助力金融…

MFC:以消息为基础的事件驱动系统和消息映射机制

以消息为基础的事件驱动系统和消息映射机制 (1)消息 A.What&#xff08;什么是消息&#xff09; 本质是一个数据结构&#xff0c;用于应用程序不同部分之间进行通信和交互 typedef struct tagMSG {HWND hwnd; // 接收该消息的窗口句柄UINT message; // 消息标…

【C语言】 利用栈完成十进制转二进制(分文件编译,堆区申请空间malloc)

利用栈先进后出的特性&#xff0c;在函数内部&#xff0c;进行除二取余的操作&#xff0c;把每次的余数存入栈内&#xff0c;最后输出刚好就是逆序输出&#xff0c;为二进制数 学习过程中&#xff0c;对存储栈进行堆区的内存申请时候&#xff0c;并不是很熟练&#xff0c;一开始…

双边性:构建神经网络的新方法

正如承诺的那样&#xff0c;这是最近我遇到的最有趣的想法之一的第二部分。如果你错过了&#xff0c;请务必观看本系列的第一部分 - 神经科学家对改进神经网络的看法 - 我们讨论了双边性的生物学基础以及我们大脑的不对称性质如何带来更高的性能。 在这篇文章中&#xff0c;我…

v-for 进行列表的 增删改查

通过对象下标替换属性值 但是通过实践此方法是错误的&#xff0c;Vue监听的是students这个对象&#xff0c;而不是这个对象里面的数组信息&#xff0c;也就是说&#xff0c;改变里面的值&#xff0c;并不能在页面上实现更新的功能 <!DOCTYPE html> <html lang"en…

通俗地理解主动元数据管理

元数据管理&#xff0c;是企业开展数据管理的核心基础&#xff0c;内容涉及元数据的创建&#xff0c;确定需要捕获哪些元数据&#xff0c;通过哪些工具和流程进行创建&#xff0c;继而将元数据妥善存储&#xff0c;保障安全性和可访问性&#xff0c;并不断更新维护&#xff0c;…

[渗透测试] 反序列化漏洞

反序列化漏洞 ​ 序列化&#xff1a;将对象的状态信息转换为可以传输或存储的形式的过程。简单的来说&#xff0c;就是将一个抽象的对象转换成可以传输的字符串 &#xff0c;以特定的形式在进行之间实现跨平台的传输。 序列化大多以字节流、字符串、json串的形式来传输。将对…

linux/windows wps node.js插件对PPT状态监听并且通知其他应用

需求背景 公司要求对Window系统&#xff0c;和国产操作系统&#xff08;UOS&#xff09;的wps 软件在 PPT开始播放 结束播放&#xff0c;和播放中翻页 上一页 下一页 等状态进行监听&#xff0c;并通知到我们桌面应用。 技术方案 开发WPS插件&#xff0c;使用node.JS 插件开…

系统架构设计师①:计算机组成与体系结构

系统架构设计师①&#xff1a;计算机组成与体系结构 计算机结构 计算机的组成结构可以概括为以下几个主要部分&#xff1a;中央处理器&#xff08;CPU&#xff09;、存储器&#xff08;包括主存和外存&#xff09;、输入设备、输出设备&#xff0c;以及控制器、运算器、总线和…

如何查看jvm资源占用情况

如何设置jar的内存 java -XX:MetaspaceSize256M -XX:MaxMetaspaceSize256M -XX:AlwaysPreTouch -XX:ReservedCodeCacheSize128m -XX:InitialCodeCacheSize128m -Xss512k -Xmx2g -Xms2g -XX:UseG1GC -XX:G1HeapRegionSize4M -jar your-application.jar以上配置为堆内存4G jar项…

使用puma部署ruby on rails的记录

之前写过一篇《记录一下我的Ruby On Rails的systemd服务脚本》的记录&#xff0c;现在补上一个比较政治正确的Ruby On Rails的生产环境部署记录。使用Puma部署项目。 创建文件 /usr/lib/systemd/system/puma.service [Unit] DescriptionPuma HTTP Server DocumentationRuby O…

[AWS]MSK调用,报错Access denied

背景&#xff1a;首先MSK就是配置一个AWS的托管 kafka&#xff0c;创建完成之后就交给开发进行使用&#xff0c;开发通常是从代码中&#xff0c;编写AWS的access_key 和secret_key进行调用。 但是开发在进行调用的时候&#xff0c;一直报错连接失败&#xff0c;其实问题很简单&…

Electron 企业级开发通信与本地存储实用解决方案

背景 之前写了一篇Electron通信的方式&#xff0c;讲述了一下三者之间的通信机制&#xff0c;比较恶心&#xff0c;后来发现有个electron/remote&#xff0c; Electron 渲染进程直接调用主进程的API库electron/remote引用讲解-CSDN博客文章浏览阅读58次。remote是个老库&…

蓝队黑名单IP解封提取脚本

应用场景&#xff1a;公司给蓝队人员一个解封IP列表&#xff0c;假如某个IP满足属于某某C段&#xff0c;则对该IP进行解封。该脚本则是进行批量筛选出符合条件的白名单IP 实操如下&#xff1a;公司给了一个已经封禁了的黑名单IP列表如下&#xff08;black&#xff09; 公司要求…

高清视频,无损音频,LDR6023——打造极致视听与高效充电的双重享受!

Type-C PD&#xff08;Power Delivery&#xff09;芯片是一种支持USB Type-C接口规范的电源管理单元&#xff0c;其主要功能包括&#xff1a; 快速充电&#xff1a;Type-C PD芯片支持高功率传输&#xff0c;能够提供更快的充电速度&#xff0c;使电子设备在短时间内充满电&…

微信小程序:多图片显示及图片点击放大,多视频显示

微信小程序&#xff1a;多图片显示及图片点击放大&#xff0c;多视频显示 01 多图片显示及图片点击放大02 多视频03 全部代码 01 多图片显示及图片点击放大 <view><view class"title">图片&#xff1a;</view><block wx:if"{{photoUrlList…

源码搭建国内微短剧系统(APP+小程序)云存储配置流程

国内微短剧系统很多人不知道云存储和配置的操作流程&#xff0c;我整理了一份非常详细的操作文档流程&#xff0c;给大家介绍短剧系统云存储配置的详细操作流程。顺便推荐一下国内微短剧系统。 推荐下他们的开源地址&#xff1a;https://gitee.com/nymaite_com_2878868888/tjg…

CrowdStrike更新致850万Windows设备宕机,微软紧急救火!

7月18日&#xff0c;网络安全公司CrowdStrike发布了一次软件更新&#xff0c;导致全球大范围Windows系统宕机。 预估CrowdStrike的更新影响了将近850万台Windows设备&#xff0c;多行业服务因此停滞&#xff0c;全球打工人原地放假&#xff0c;坐等吃瓜&#xff0c;网络上爆梗…