目标检测常用的数据集格式

在目标检测领域,有三种常用的数据集:

数据集标注文件格式bbox格式
vocxmlxmin, ymin, xmax, ymax:
bbox左上角(xmin, ymin)和右下角(xmax, ymax)的坐标
cocojsonx, y, w, h:
bbox左上角坐标(x, y)以及宽(w)和高(h)
yolotxtxcenter, ycenter, w, h:
bbox的中心x坐标(xcenter)、y坐标(ycenter)以及宽度(w)和高度(h)
xcenter, w相对图片实际宽度W做了归一化,即:xcenter/W, w/W
ycenter, h相对图片图片高度H做了归一化,即:ycenter/H, h/H

1. voc格式

1.1 文件结构

该文件结构指的是从 voc 官网下载的数据的文件结构(不同年份的数据集略有不同,但结构大致相同)。

VOCdevkit # 根目录

  • VOCXXXX # 不同年份的数据集,目前有 2005 年到 2012 年的
    • Annotations # 存放 xml 格式的标注文件,与 JPEGImages 下的图片一一对应,每个 xml 文件都描述一张图片的信息
    • ImageSets # 存放的是 txt 文件,文件中每一行包含一张图片的名称以及 ±1 表示正负样本
      • Layout # 可用于检测人体部位的数据(train.txt 用于训练的图片、trainval.txt用于训练和验证的图片合集、val.txt 用于验证的图片,下同)
      • Main # 可用于目标检测的数据
      • Segmentation # 可用于图像分割的数据
    • JPEGImages # 存放图片
    • SegmentationClass # 存放按照类别分割的图片,可用于语义分割
    • SegmentationObject # 存放按照个体分割的图片,可用于实例分割

1.2 标注文件

voc格式的数据集使用 xml 文件标注图片及其bbox信息,一张图片对应个xml文件,以 Main 中其中一个xml文件的部分内容为例:

<annotation><folder>VOC2007</folder>  <!--图片所在文件夹(实际用不到)--><filename>000005.jpg</filename> <!--图片文件名--><source> <!--图片来源--><database>The VOC2007 Database</database><annotation>PASCAL VOC2007</annotation><image>flickr</image><flickrid>325991873</flickrid></source><owner> <!--图片拥有者--><flickrid>archintent louisville</flickrid><name>?</name></owner><size> <!--图片宽度、高度、通道数量--><width>500</width><height>375</height><depth>3</depth></size><segmented>0</segmented> <!--是否用于分割--><object> <!--标注目标1--><name>chair</name> <!--物体类别--><pose>Rear</pose> <!--拍摄角度: front, rear, left, right, unspecified--><truncated>0</truncated> <!--目标是否被截断--><difficult>0</difficult> <!--检测难易程度--><bndbox> <!--标注目标1的 bbox--><xmin>263</xmin><ymin>211</ymin><xmax>324</xmax><ymax>339</ymax></bndbox></object><object> <!--标注目标2的 bbox--><name>chair</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>165</xmin><ymin>264</ymin><xmax>253</xmax><ymax>372</ymax></bndbox></object><!--其余标注信息结构同上-->
</annotation>

2. coco格式

2.1 文件结构

该文件结构指的是从 coco 官网下载的数据的文件结构。

  • annotations_XXXX # 存放 json 格式的标注文件,一个 json 文件里面包含了多张图片的相关信息
    • annotations
      • caption_xxxx.json # 存储图像标注用于描述图像
      • instances_xxxx.json # 用于目标检测的标注信息
      • person_keypoints_xxxx.json # 目标上的关键点信息
  • trainXXX # 存放训练集图片
  • valXXXX # 存放验证集图片

2.2 标注文件

coco格式的数据集使用 json 文件标注图片及其 bbox 信息,与voc格式一张图片对应一个xml文件不同,coco格式中一个 json 文件里面存放了若干张图片的信息。以 instances_xxxx.json 中的部分内容为例:

{"info": { #数据集描述信息"description": "COCO 2017 Dataset", # 数据集描述"url": "http://cocodataset.org", # 数据集地址"version": "1.0", # 数据集版本"year": 2017, # 数据集年份"contributor": "COCO Consortium", # 数据集提供者"date_created": "2017/09/01" # 数据集创建日期},"licenses": [ # 许可协议{"url": "http://creativecommons.org/licenses/by-nc-sa/2.0/", # 协议链接"id": 1, # 协议 id ,下面将会用到"name": "Attribution-NonCommercial-ShareAlike License" # 协议名称}# 其他许可协议格式同上],"images": [ # 图片信息{"license": 4, # 使用的许可协议"file_name": "000000397133.jpg", # 图片文件名"coco_url": "http://images.cocodataset.org/val2017/000000397133.jpg", # 图片在 coco 上的url"height": 427, # 图片高度"width": 640, # 图片宽度"date_captured": "2013-11-14 17:02:52", # 图片获取日期"flickr_url": "http://farm7.staticflickr.com/6116/6255196340_da26cf2c9e_z.jpg", 图片在 flickr 上的url"id": 397133 # 图片 id}# 其他图片信息格式同上],"annotations": [ # 标注信息{"segmentation": [ # 实例分割时的边界点坐标[x1, y1, x2, y2 …… xn, yn][510.66,423.01,……,510.45,423.01]],"area": 702.1057499999998, # 区域面积"iscrowd": 0, # 目标是否被遮盖"image_id": 289343, # 标注所在的图片的 id 编号(与上面 images 中的对应)"bbox": [ # bbox框 [左上角x, 左上角y, 宽度, 高度]473.07,395.93,38.65,28.67],"category_id": 18, # 被标注物体对应的类别 id 编号(与下面 categories 中的对应)"id": 1768 # 该标注的 id 编号(唯一)}# 其他标注信息格式同上],"categories": [ # 类别描述{"supercategory": "person", # 该类别所属的大类"id": 1, # 类别 id 编号"name": "person" # 类别名字}# 其他标注信息格式同上]
}

3. yolo格式

3.1 文件结构

使用yolo时,默认的文件结构如下(不同数据集会略有不同,但结构大致相同):

XXXX # 根目录,视使用的数据集决定

  • images # 存放图片,已划分为训练集、验证集、测试集(部分数据集无测试集)
    • train
    • val
    • test
  • labels # 存放的是 txt 文件,每个txt文件对应一张图片,文件中每一行包含一个bbox的相关信息
    • train
    • val
    • test

3.2 标注文件

yolo格式的数据集使用 txt 文件标注图片bbox信息,一张图片对应一个txt文件,txt文件中的每一行都标注了一个bbox的相关信息。标注格式如下:

<类别索引> <bbox的中心x坐标> <bbox的中心y坐标> <bbox的宽度> <bbox的高度>

  • 信息之间以空格分割
  • bbox的中心xy坐标以及宽度、高度都相对于图片的实际宽度W和高度H做了归一化

以其中一个txt文件的部分内容为例:

45 0.479492 0.688771 0.955609 0.5955
# 标注目标1的 bbox的类别索引是45,中心x坐标是0.479492, 中心y坐标是0.688771, 宽度是0.955609, 高度是0.5955
45 0.736516 0.247188 0.498875 0.476417
# 标注目标2的 bbox
# 其余标注信息结构同上

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

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

相关文章

【阻止IE强制跳转到Edge浏览器】

由于微软开始限制用户使用Internet Explorer浏览网站&#xff0c;IE浏览器打开一些网页时会自动跳转到新版Edge浏览器&#xff0c;那应该怎么禁止跳转呢&#xff1f; 1、点击电脑左下角的“搜索框”或者按一下windows键。 2、输入“internet”&#xff0c;点击【Internet选项…

LabVIEW开发分段反射器测试台

LabVIEW开发分段反射器测试台 随着对太空的观察需求越来越远&#xff0c;而不是当前技术&#xff08;如哈勃望远镜&#xff09;所能达到的&#xff0c;有必要增加太空望远镜主镜的尺寸。但是&#xff0c;增加主镜像的大小时存在几个问题。随着反射镜尺寸的增加&#xff0c;制造…

【jvm】jvm发展历程

目录 一、Sun Classic VM二、Exact VM三、HotSpot VM四、JRockit五、J9六、KVM、CDC、CLDC七、Azul VM八、Liquid VM九、Apache Harmony十、Microsoft JVM十一、Taobao JVM十二、Dalvik VM 一、Sun Classic VM 1.1996年java1.0版本&#xff0c;sun公司发布了sun classic vm虚拟…

vue3官网文档学习、复习笔记(快速上手)

目录 2.Attribute 绑定&#xff08;v-bind&#xff09; 3.事件监听&#xff08;v-on&#xff09; 4.表单绑定&#xff08;v-model&#xff09; 5.条件渲染&#xff08;v-if&#xff09; 6.列表渲染&#xff08;v-for&#xff09; all.value all.value.filter&#xff08;…

【MySQL】表中的一条数据在磁盘上是如何存放的?

文章目录 1 InnoDB行格式2 COMPACT行格式2.1 记录的额外信息2.2 记录的真实数据 3 Dynamic & Compressed4 VarChar(n)中n的最大取值&#xff1f; 1 InnoDB行格式 不同的存储引擎一般是为实现不同的特性来开发的&#xff0c;真实数据在不同存储引擎中的存放格式一般是不同的…

机器学习基础

什么是机器学习&#xff1f;----本质就是寻找一个函数。 可以训练什么样的函数呢&#xff1f; 可以训练一个回归的函数&#xff0c;也可以训练一个分类的函数。 这个例子的需要分类的类别是19*19的选项。 在机器学习领域里面不止回归和分类。 举例&#xff1a;预测函数 利用已…

Nginx(3)

目录 1.Nginx虚拟主机1.1基于IP虚拟主机1.2基于端口虚拟主机1.3基于域名实现的虚拟主机 2.日志详解 1.Nginx虚拟主机 虚拟主机&#xff0c;Nginx配置中的多个server{}区域对应不同的业务(站点) 虚拟主机方式基于域名的虚拟主机不同的域名访问不同的站点基于IP的虚拟主机不同的…

MySQL—锁篇

这里写目录标题 MySQL有哪些锁全局锁表级锁行级锁意向锁 为什么需要加锁MySQL锁粒度乐观锁和悲观锁是什么?如何实现?InnoDB的行锁是如何实现的?什么是两阶段锁协议?什么是三级封锁协议&#xff1f;MySQL死锁了&#xff0c;怎么办&#xff1f;加了什么锁&#xff0c;导致死锁…

linux 防火墙经常使用的命令

# 开启防火墙服务 systemctl start firewalld # 关闭防火墙服务 systemctl stop firewalld # 重启防火墙服务 systemctl restart firewalld # 开发端口 firewall-cmd --zonepublic --add-port8080/tcp --permanent # 移除端口 firewall-cmd --zonepublic --remove-port8080/tc…

第一百二十五天学习记录:C++提高:STL-deque容器(下)(黑马教学视频)

deque插入和删除 功能描述&#xff1a; 向deque容器中插入和删除数据 函数原型&#xff1a; 两端插入操作&#xff1a; push_back(elem); //在容器尾部添加一个数据 push_front(elem); //在容器头部插入一个数据 pop_back(); //删除容器最后一个数据 pop_front(); //删除容器…

低成本NFC端口静电保护方案图及ESD二极管选型指南

Near Field Communication&#xff0c;简称&#xff1a;NFC&#xff0c;中文名称&#xff1a;近场通信&#xff0c;是一种短距离高频的无线电技术&#xff0c;能够实现近距离无线通讯和数据交换&#xff0c;是由非接触式射频识别&#xff08;RFID&#xff09;及互连互通技术整合…

浅析MySQL InnoDB的隔离级别

隔离性简介 隔离性主要是指数据库系统提供一定的隔离机制,意思就是多个事务并发执行时&#xff0c;一个事务的执行不应影响其它事务的执行。 数据库中并发一致性问题&#xff1f; 在并发环境下&#xff0c;事务的隔离性很难保证&#xff0c;因此会出现很多并发一致性问题。 …

git push origin master 长时间卡住,或者报错 Missing or invalid credentials 怎么办

这很可能是 vscode 的问题 按照这个资料解决即可&#xff1a;https://juejin.cn/post/7062237873570840589 打开VScode的设置界面。方法即&#xff1a;“Code > Preferences > Settings”&#xff08;我是Mac系统&#xff0c;Windows下应该是File > Preferences >…

微服务学习笔记-基本概念

微服务是一种经过良好架构设计的分布式架构方案。根据业务功能对系统做拆分&#xff0c;每个业务功能模块作为独立项目开发&#xff0c;称为一个服务。 微服务的架构特征&#xff1a; 单一职责&#xff1a;微服务拆分粒度更小&#xff0c;每一个服务都对应唯一的业务能力&…

考研C语言进阶题库——更新26-30题

目录 26.一个正整数&#xff0c;如果等于组成它的各个数字的阶数之和&#xff0c;该整数称为阶乘合数&#xff0c;例如1451阶加四阶加五阶&#xff0c;则145是一个三位阶乘合数&#xff0c;输入一个数&#xff0c;问共有多少个阶乘合数&#xff1f;(十万之内) 27.与2相关的数…

IM系统(一)-状态服务器设计

文章目录 文章概要需求分析技术栈准备工作封装日志框架封装Redis封装ETCD 业务逻辑开发定义模型定义服务实现服务接口服务端启动程序客户端测试程序 总结 文章概要 本篇文章分享在做一个IM(即时通讯)系统时&#xff0c;设计一个管理用户在线状态的服务。 该系列文章将从以下几…

数据标注对新零售的意义及人工智能在新零售领域的应用?

数据标签对于新零售至关重要&#xff0c;因为它构成了训练和部署人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;模型的基础。在新零售的背景下&#xff0c;数据标签涉及对数据进行分类、标记或注释以使其能够被机器理解的过程。然后&#xff0c;这些…

Qt应用开发(基础篇)——框架类 QFrame

一、前言 QFrame继承于QWidget&#xff0c;被QLCDNumber、QToolBox、QLabel、QListView等部件继承&#xff0c;是一个拥有矩形框架的基类。 QFrame可以直接创建成一个没有内容的的矩形框架&#xff0c;框架的样式由边框厚度(lineWidth)、框架形状(QFrame::Shape)和阴影样式(QFr…

浏览器多管闲事之跨域

年少时的梦想就是买一台小霸王游戏机 当时的宣传语就是小霸王其乐无穷~。 大些了&#xff0c;攒够了零花钱&#xff0c;在家长的带领下终于买到了 那一刻我感觉就是最幸福的人 风都是甜的&#xff01; 哪成想... 刚到家就被家长扣下了 “”禁止未成年人玩游戏机 (问过卖家了&a…

Transformer理论学习

Transformer出自于论文《attention is all you need》。 一些主流的序列模型主要依赖于复杂的循环结构或者CNN&#xff0c;这里面包含了编解码器等。而Transformer主要的结构是基于注意力机制&#xff0c;而且是用多头注意力机制去替换网络中的循环或者CNN(换言之就是transfor…