PASCAL VOC 数据集的标注格式

news2024/11/25 12:30:31

PASCAL VOC 数据集的标注格式

PASCAL VOC 挑战赛 ( **The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛。 PASCAL的全称是Pattern Analysis, Statistical Modelling and Computational Learning,很多优秀的计算机视觉模型比如分类,定位,检测,分割,动作识别等模型都是基于PASCAL VOC挑战赛及其数据集上推出的。

VOC 的全称是Visual Object Classes

第一届PASCAL VOC举办于2005年,然后每年一届,于2012年终止。

做深度学习目标检测、语义分割方面的工作都会接触到PASCAL VOC这个数据集,也许很少用到整个数据集,但是公开代码基本都是基于VOC或COCO数据格式书写代码,一般都会按照它的格式准备自己的数据集。所以针对PASCAL VOC的格式,包括目录构成以及各个文件夹的内容格式,进行详细讲解。方便以后利用VOC的标准格式制作自己的数据集,加快项目推进进度。

1、文件总体概述

总文件夹名称VOCdevkit (使用2012,2007太旧)

.

└── VOCdevkit #根目录

└── VOC2012 #不同年份的数据集,这里只下载了2012的,还有2007等其它年份的

├── Annotations #存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等

├── ImageSets #该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称,末尾会加上±1表示正负样本

│ ├── Action #Action 动作识别,不牵扯

│ ├── Layout #Layout文件夹用于 person layout任务,不牵扯

│ ├── Main

└── train.txt #训练集

├── trainval.txt #训练集与验证集

├── val.txt #验证集

├── test.txt #测试集

│ └── Segmentation #语义分割

├── JPEGImages #存放源图片

├── SegmentationClass #存放的是图片,语义分割相关

└── SegmentationObject #存放的是图片,实例分割相关

2、文件的具体内容

※ Annotation文件夹存放的是xml文件,该文件是对图片的解释,每张图片都对于一个同名的xml文件。

※ ImageSets文件夹存放的是txt文件,这些txt将数据集的图片分成了各种集合。如Main下的train.txt中记录的是用于训练的图片集合。

※ JPEGImages文件夹存放的是数据集的原图片。

※ SegmentationClass以及SegmentationObject文件夹存放的都是图片,且都是图像分割结果图。

2.1、Annotation文件夹

Annotation文件夹的内容如下:

在这里插入图片描述

其中xml主要介绍了对应图片的基本信息,如来自那个文件夹、文件名、来源、图像尺寸以及图像中包含哪些目标以及目标的信息等等,内容如下:

  • filename :文件名

  • source,owner:图片来源,及拥有者

  • size:图片大小

  • segmented:是否分割

  • object:表明这是一个目标,里面的内容是目标的相关信息

    • name:object名称,20个类别
    • pose:拍摄角度:front, rear, left, right, unspecified
    • truncated:目标是否被截断(比如在图片之外),或者被遮挡(超过15%)
    • difficult:检测难易程度,这个主要是根据目标的大小,光照变化,图片质量来判断
  • bndbox:bounding box 的左上角点和右下角点的4个坐标值。


<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> #是否用于分割

<object> #包含的物体

<name>person</name> #物体类别

<pose>Unspecified</pose>

<truncated>0</truncated>

<difficult>0</difficult>

<bndbox> #物体的bbox

<xmin>174</xmin>

<ymin>101</ymin>

<xmax>349</xmax>

<ymax>351</ymax>

</bndbox>

<part> #物体的头

<name>head</name>

<bndbox>

<xmin>169</xmin>

<ymin>104</ymin>

<xmax>209</xmax>

<ymax>146</ymax>

</bndbox>

</part>

<part> #物体的手

<name>hand</name>

<bndbox>

<xmin>278</xmin>

<ymin>210</ymin>

<xmax>297</xmax>

<ymax>233</ymax>

</bndbox>

</part>

<part>

<name>foot</name>

<bndbox>

<xmin>273</xmin>

<ymin>333</ymin>

<xmax>297</xmax>

<ymax>354</ymax>

</bndbox>

</part>

<part>

<name>foot</name>

<bndbox>

<xmin>319</xmin>

<ymin>307</ymin>

<xmax>340</xmax>

<ymax>326</ymax>

</bndbox>

</part>

</object>

</annotation>


2.2、ImageSets文件夹

ImageSets包含如下四个子文件夹:

在这里插入图片描述

各个文件夹中存放的是各种用途的TXT文件。例如在Main文件夹下有名为aeroplane_train.txt的文件,顾名思义是用于飞机类别的训练数据。该txt的具体内容如下。


2008_000008

2008_000015

2008_000019

2008_000023

2008_000028


其中包含的train.txt以及trainval.txt等文件内容与上面类似,

train.txt和trainval.txt内容中光有图片的名字,不包含图片属性与路径信息。

2.3、JEPGImages文件夹

该文件夹存放的是数据集的所有源图片,内容如下:

在这里插入图片描述

2.4** 、 SegmentationClass 文件夹**

语义分割相关:

该文件夹存放的是数据集的所有源图片对应的标签图,注意的是标签是0,1,2,3……。

在这里插入图片描述

2.5、SegmentationObject文件夹

实例分割相关,注意的是标签是0,1,2,3…… :

在这里插入图片描述

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

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

相关文章

区块链知识系列 - 系统学习EVM(一)

EVM有一个基于栈的架构&#xff0c;在一个栈中保存了所有内存数值。EVM的数据处理单位被定义为256位的“字”&#xff08;这主要是为了方便处理哈希运算和椭圆曲线运算操作&#xff09; 这里所说的内存数值是指那些EVM字节码运行所需要的输入、输出参数数据和智能合约程序运行中…

拉伯证券|锂离子动力电池有哪些优缺点?锂离子电池的优缺点详解

锂离子动力电池是20世纪开发成功的新型高能电池。这种电池的负极是石墨等资料&#xff0c;正极用磷酸铁锂、钴酸锂、钛酸锂等。70年代进入实用化。因其具有能量高、电池电压高、工作温度规模宽、贮存寿命长等优点&#xff0c;已广泛应用于军事和民用小型电器中。 锂离子动力电池…

jvm垃圾回收笔记

JVM基础知识笔记 1. 垃圾回收相关算法 标记清除-标记整理-复制 这三个看上面的文章 1.1 分代收集算法 将不同生命周期的对象采用不同的收集方式&#xff0c;以便提高回收效率&#xff0c;一般是将Java堆分为新生代和老年代&#xff0c;这样可以根据各个年代的特点使用不同的…

拉伯证券|A股涨势趋缓,个股分化,北向资金继续“买买买”

今天上午&#xff0c;A股商场涨势趋缓&#xff0c;主要指数涨跌互现。 个股方面也现较大分解&#xff0c;接连涨停股和接连大幅跌落股同时呈现。 值得注意的是&#xff0c;作为近期最为坚定买入A股的力量之一&#xff0c;北向资金今天上午继续“买买买”&#xff0c;上午半个交…

Wider Face+YOLOV7人脸检测

1 Wider Face标注格式转成YOLO格式1.1 Wider Face标注介绍The format of txt ground truth. File name Number of bounding box x1, y1, w, h, blur, expression, illumination, invalid, occlusion, pose0--Parade/0_Parade_marchingband_1_849.jpg 1 449 330 122 149 0 0 0 0…

Java开发 - Spring Test知多少?

前言 在前文中&#xff0c;我们也使用了测试代码来进行简单的单元测试&#xff0c;但是我们会发现&#xff0c;里面有大量的重复代码&#xff0c;实际给我们的体验并不是太好&#xff0c;所以这篇&#xff0c;我们来学习Spring Test&#xff0c;Spring Test不仅仅限于在Mybati…

AUTOSAR RTE 总结

1. Interface和在Interface下面包含哪些data element在SWC创立之前就定义好了&#xff0c;存储在一个arxml文件里面&#xff0c; 它相当于一个库文件&#xff0c;在新建AUTOSAR project的第一步就应该被导入进来 2. port在SWC创建的阶段被create&#xff0c;因为Interface没有…

某博数据挖掘:使用Scrapy构建自定义数据采集提取洞察信息

想要深入了解某博上最新的动态和信息吗?那么学习如何使用Scrapy构建一个某博数据采集将是不二之选。Scrapy是一个强大的框架,能够快速地爬取网站上的数据。 新版API构建的某博数据采集拥有最丰富的字段信息,能够更好地深入挖掘某博上的数据。提供了多种采集模式,包括用户、…

邮件定时发送java实现

本文总结如何通过java实现邮件接口的定时发送任务。1、邮箱服务器地址和端口以139邮箱为例&#xff0c;获取服务器地址和端口。139邮箱的路径&#xff1a;设置-常见设置-邮箱协议设置2、客户端配置工具&#xff1a;springboot2.4.3使用maven&#xff0c;使用java11pom.xml引入m…

华为机试题:HJ14 字符串排序(python)

文章目录知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。2、print() &#xff1a;打印输出。3、int() &#xff1a;将一个字符串或数字转换为整型&#xff08;强转&#xff09;。4、range() &#xff1a;输出指定范围…

《Linux Shell脚本攻略》学习笔记-第十二章

12.1 简介 我们可以通过关闭无用的服务、调整内核参数或是添加新的硬件来改善系统性能。 12.2 识别服务 Linux系统可以同时运行数百个任务&#xff0c;其中可能也会有那么一两个你不需要的守护进程。 有三种可以用于启动守护进程和服务的工具&#xff0c;Linux发行版支持其中任…

LeetCode题解 贪心(一):455 分发饼干;376 摆动序列;53 最大子序和

随想录 && LeetCode 贪心算法 贪心之于算法&#xff0c;内核是一个最优解是由多个局部最优解组合而成的 比如&#xff0c;如何在一个月之内最有效的减肥&#xff0c;子问题就是每周如何减肥&#xff0c;再拆分就是每一天如何减肥 如果能找到令每一天都有效减肥的策…

vue实现购物车思想

vue实现购物车思想一、问题&#xff1a;二、解决步骤一、问题&#xff1a; 实现购物车功能&#xff0c;具体如下 在该界面显示所有物品的列表&#xff0c;点击开菜显示购物车 在该界面只显示订单的列表 如何实现购物车数据的同步呢&#xff1f; 二、解决步骤 具体思路如…

day21-反射枚举

day21_反射&枚举 课程目标 1. 【理解】类加载器 2. 【理解】什么是反射 3. 【掌握】获取Class对象的三种方式 4. 【掌握】反射获取构造方法并创建对象 5. 【掌握】反射获取成员变量并使用 6. 【掌握】反射获取成员方法并使用 7. 【掌握】反射综合案例 8. 【理解】枚举类加…

在Ubuntu上安装 Hadoop 3详细过程(验证+填坑总结)

在Ubuntu上安装 Hadoop 3 前提条件&#xff1a; Python 推荐3.8JDK 推荐1.8 解压安装 sudo tar -zxvf hadoop-3.3.0.tar.gz -C /usr/local cd /usr/local sudo mv hadoop-3.3.0 hadoop sudo chown -R hadoop ./hadoop 配置环境变量 vim ~/.bashrc # hadoop export…

5、数组的创建和操作

目录 一、创建空数组、行向量、列向量 二、访问数组 三、 子数组的赋值&#xff08;Assign&#xff09; 四、其他创建数组的方式 1. 通过冒号创建一维数组 2.通过logspace函数创建一维数组 3.通过linspace函数创建一维数组 在MATLAB中一般使用方括号“[ ]”、逗号“,”、…

Python FastAPI 框架入门(一)【用于后端API快捷开发】

FastAPI 框架&#xff0c;高性能&#xff0c;易于学习&#xff0c;高效编码&#xff0c;生产可用 官方中文文档&#xff1a;FastAPI 框架中文文档 官方介绍&#xff1a; FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;使用 Py…

【GD32F427开发板试用】-05-GD32F427移植Coremark

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;申小林 如何在GD32F427开发板上移植CoreMARK? 1 下载CoreMARK源码 CoreMark开源的代码可以在Gitbub上自己做下载。 下载地址&#xff1a;ht…

CSS设置元素字体、降级使用字体、引入外部字体

设置元素字体 通过font-family属性&#xff0c;可以设置元素里面的字体样式。 font-family 可以把设置多个字体名称。 降级使用字体 几乎所有浏览器都有支持几种通用字体。比如: monospace&#xff0c;serif和sans-serif&#xff0c;当字体不可用&#xff0c;浏览器可以 “…

通过Docker启动Solace,并在Spring Boot通过JMS整合Solace

1 简介 Solace是一个强大的实时性的事件驱动消息队列。本文将介绍如何在Spring中使用&#xff0c;虽然代码使用的是Spring Boot&#xff0c;但并没有使用相关starter&#xff0c;跟Spring的整合一样&#xff0c;可通用。JMS是通过的消息处理框架&#xff0c;可以深入学习一下&…