CV04_PASCAL VOC2012数据集介绍

news2024/11/17 14:40:53

1.1 简介

PASCAL Visual Object Classes (VOC) 2012 数据集是计算机视觉领域中一个广泛使用的标准数据集,用于评估和促进对象识别、分类、目标检测、图像分割以及其他视觉理解任务的算法性能。PASCAL VOC项目起始于2005年,并且每年都会更新数据集,直到2012年最后一次正式更新。PASCAL VOC2012是这一系列数据集中最著名的一个版本,它提供了丰富的标注图像资源,对于推动机器学习和深度学习领域的发展起到了重要作用。

数据集特点

  1. 多样性:PASCAL VOC2012包含20类常见的日常物体,如人、猫、狗、车、自行车等,这些类别覆盖了动物、交通工具和室内物品等多种类型,能够很好地反映实际应用场景的多样性。

  2. 标注详细:每张图片都经过精心标注,包括了物体的边界框(Bounding Box)信息用于目标检测任务,以及像素级标注(Segmentation Mask)用于语义分割任务,这使得该数据集适用于多种不同的视觉任务研究。

  3. 数据划分:数据集被划分为训练集、验证集和测试集。训练集和验证集的图像及其详细的标注信息是公开的,而测试集的完整标注在挑战赛期间不公开,以确保公正的性能评估。这种划分有助于算法的开发和调优。

  4. 规模适中:相比于后来的一些大规模数据集如COCO(Common Objects in Context),PASCAL VOC2012的规模较小,大约有数千张图像,这使得它成为一个入门级数据集,适合快速原型设计和初步算法测试。

  5. 社区支持:由于其历史地位和广泛的应用,PASCAL VOC2012拥有强大的社区支持,许多开源工具和框架(如TensorFlow, PyTorch)都直接或间接支持该数据集的加载和处理。

数据集结构

PASCAL VOC2012的数据通常以以下结构组织:

  • JPEGImages:存放所有图像文件。
  • Annotations:存放每张图像对应的XML文件,记录了图像中每个物体的类别、位置(边界框坐标)等信息。
  • ImageSets:包含分割好的数据集索引文件,如train.txtval.txttest.txt,分别对应训练集、验证集和测试集的图像列表。
  • SegmentationClass 和 SegmentationObject:存储语义分割任务的像素级标注图。

应用与挑战

PASCAL VOC2012常被用于评估目标检测和语义分割算法的性能基准。尽管随着时间的推移,更大、更复杂的数据集如MS COCO已经出现,但PASCAL VOC2012依然是初学者学习目标检测和图像分割技术的经典起点,也是算法初步测试的有效平台。

获取数据集

数据集可以从官方网站下载,地址为:The PASCAL Visual Object Classes Challenge 2012 (VOC2012)。请注意,访问时应查看网站的具体条款和条件,以及最新的数据集获取方式。

1.2 类别分布

数据集一共有4个大类,20个类别。

1.3 文件结构

概览

下图右半部分是train.txt的内容,左边是xml文件,是每张图片的标注信息。

XML

随便打开两张看看:变量也很好理解就不多解释了,目标是人,里面蕴含了目标的行为,boundingbox的坐标,检测是否困难(difficult)。

<annotation>
	<filename>2012_002143.jpg</filename>
	<folder>VOC2012</folder>
	<object>
		<name>person</name>
		<actions>
			<jumping>0</jumping>
			<other>0</other>
			<phoning>0</phoning>
			<playinginstrument>0</playinginstrument>
			<reading>0</reading>
			<ridingbike>0</ridingbike>
			<ridinghorse>0</ridinghorse>
			<running>0</running>
			<takingphoto>0</takingphoto>
			<usingcomputer>1</usingcomputer>
			<walking>0</walking>
		</actions>
		<bndbox>
			<xmax>288</xmax>
			<xmin>88</xmin>
			<ymax>375</ymax>
			<ymin>98</ymin>
		</bndbox>
		<difficult>0</difficult>
		<pose>Unspecified</pose>
		<point>
			<x>151</x>
			<y>227</y>
		</point>
	</object>
	<segmented>0</segmented>
	<size>
		<depth>3</depth>
		<height>375</height>
		<width>500</width>
	</size>
	<source>
		<annotation>PASCAL VOC2012</annotation>
		<database>The VOC2012 Database</database>
		<image>flickr</image>
	</source>
</annotation>

 truncated代表目标是否被截断。

<annotation>
	<folder>VOC2012</folder>
	<filename>2007_000123.jpg</filename>
	<source>
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
	</source>
	<size>
		<width>500</width>
		<height>375</height>
		<depth>3</depth>
	</size>
	<segmented>1</segmented>
	<object>
		<name>train</name>
		<pose>Unspecified</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>1</xmin>
			<ymin>26</ymin>
			<xmax>358</xmax>
			<ymax>340</ymax>
		</bndbox>
	</object>
</annotation>

有的图片有多个目标。

有一点需要注意:VOC12的test测试集未公开,但是voc07的测试集公开了。

TXT

现在我们再点开一个txt文件,比如boat_train.txt,这里只截取的一小部分

2008_000008 -1
2008_000015 -1
2008_000019 -1
2008_000023 -1
2008_000028 -1
2008_000033 -1
2008_000036  1
2008_000037 -1
2008_000041 -1
2008_000045 -1
2008_000053 -1
2008_000060 -1
2008_000066 -1
2008_000070 -1
2008_000074 -1
2008_000085 -1
2008_000089 -1
2008_000093 -1
2008_000095 -1
2008_000096 -1
2008_000097 -1
2008_000099 -1
2008_000103 -1
2008_000105 -1
2008_000109 -1
2008_000112 -1
2008_000128 -1
2008_000131 -1
2008_000132 -1
2008_000141 -1
2008_000142 -1
2008_000143 -1
2008_000144 -1
2008_000148  1
2008_000151 -1
2008_000154 -1
2008_000162 -1
2008_000176 -1
2008_000181 -1
2008_000185 -1
2008_000187 -1
2008_000188 -1
2008_000189 -1
2008_000191  0

第一列是图片的名称,第二列的1表示在这行代表的图片中有船这个目标,-1代表没有船这个目标,0代表检测该目标有困难。

我们现在以:2008_000036、2008_000008 -1、2008_000191  0、为例看看这三张图片。

可以看到,分别代表:有、没有、有困难。

1.4 如何利用文件载入图像信息

先在train.txt文件找到图片名称,然后找到对应的xml和jpg图片载入内存。

1.5 如何标注图片整合自己的数据集

在目标检测领域,有几款广泛推荐的图像标注软件,它们支持创建和管理用于训练目标检测模型的数据集。以下是一些常用的图像标注工具:

  1. LabelImg: 这是一个开源的图像标注工具,特别适合于目标检测任务。用户可以通过简单的界面绘制边界框来标注图像中的对象。它支持多种标注格式,包括Pascal VOC、YOLO和COCO。LabelImg具有跨平台性,可在Windows、Linux和macOS上运行。

  2. LabelMe: 另一款开源工具,不仅支持目标检测的边界框标注,还适用于图像分割任务。它源自MIT的一个项目,提供了丰富的交互功能,允许用户在图像上进行细致的标注。

  3. Labelbox: 虽然不是完全免费的工具,Labelbox提供了一个功能全面的平台,支持图像分类、分割、文本、音频和视频注释。它适用于需要大规模标注工作的团队,提供了云服务和团队协作功能。

  4. RectLabel: 这是一个带有图形用户界面的图像标注工具,适用于目标检测和图像分割。它提供了一种直观的方式来添加边界框和多边形分割,并可以直接导出为多种流行的标注格式。

  5. CVAT (Computer Vision Annotation Tool): 开源的基于Web的视频和图像标注工具,由OpenCV团队维护。CVAT设计用于处理大规模数据集,支持多种标注任务,包括目标检测、跟踪、分割等。它的用户界面友好,适合团队协作,并能处理复杂的标注需求。

  6. yolo_mark: 特别为YOLO系列目标检测模型设计的标注工具。它简化了为YOLO训练集创建标注的过程,适用于Linux和Windows环境,依赖于OpenCV库。

  7. LC's Finder: 一个高效图像标注与目标检测工具,适合于需要高效处理图像标注任务的用户。它提供了便捷的界面和功能来加速标注过程。

LabelImg下载地址:https://github.com/HumanSignal/labelImg

LabelImg标注图片流程:

详细流程请从15分钟观看:PASCAL VOC2012数据集讲解与制作自己的数据集_哔哩哔哩_bilibili

标记完毕后,设置val.txt和train.txt。可以遍历annotations和image文件夹获取图片名称来划分训练集和验证集。

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

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

相关文章

【前端项目笔记】7 商品管理

商品管理 效果展示&#xff1a; 在功能开发之前&#xff0c;创建商品列表的子分支 git branch 查看所有分支 git checkout -b goods_list 创建并切换到新分支goods_list git push -u origin goods_list 将新分支goods_list推送到云端仓库origin并命名为goods_list保存 通过…

景色短视频:成都柏煜文化传媒有限公司

景色短视频&#xff1a;定格自然之美&#xff0c;邂逅心灵之旅 在这个被数字洪流包围的时代&#xff0c;短视频以其独特的魅力&#xff0c;为我们打开了一扇通往无限可能的大门。而在众多短视频类型中&#xff0c;景色短视频以其无与伦比的视觉冲击力&#xff0c;成为了许多人…

大模型周报|15 篇必读的大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.谷歌推出风格感知拖放新方法 Magic Insert 来自谷歌的研究团队提出了 Magic Insert&#xff0c;用于以物理上可信的方式将用户提供的图像中的对象拖放到不同风格的目标图像中&#xff0c;同时与目标图像的风格相匹…

利用C语言实现三子棋游戏

文章目录 1.游戏界面2.游戏内容2.1 棋盘类型2.2棋盘的初始化2.3 打印棋盘的界面展示 3.游戏操作3.1 玩家操作3.2 电脑操作3.3 胜负判定 4.代码整合 1.游戏界面 无论写任何程序&#xff0c;我们都需要先去了解它的大概框架&#xff0c;这里我们先把它的初始界面写出来。一个游戏…

使用maven搭建一个SpingBoot项目

1.首先创建一个maven项目 注意选择合适的jdk版本 2.添加依赖 2.在pom.xml中至少添加依赖 spring-boot-starter-web 依赖&#xff0c;目的是引入Tomcat&#xff0c;以及SpringMVC等&#xff0c;使项目具有web功能。 <!-- 引入 包含tomcat&#xff0c;SpringMVC&#xff0c…

广州星启帆:点亮自闭症儿童康复之路的璀璨星辰

在广州这座充满温情的城市中&#xff0c;广州星启帆自闭症康复中心如同一颗璀璨的星辰&#xff0c;照亮了无数自闭症儿童及其家庭的前行之路。这家机构以“点亮希望&#xff0c;启航未来”为使命&#xff0c;向所有踏入这里的家庭承诺&#xff1a;我们将携手并肩&#xff0c;共…

springcloud分布式架构网上商城 LW +PPT+源码+讲解

3系统分析 3.1可行性分析 在开发系统之前要进行系统可行性分析&#xff0c;目的是在用最简单的方法去解决最大的问题&#xff0c;程序一旦开发出来满足了用户的需要&#xff0c;所带来的利益也很多。下面我们将从技术、操作、经济等方面来选择这个系统最终是否开发。 3.1.1技术…

el-scrollbar组件使用踩坑记录

一、el-scrollbar和浏览器原生滚动条一起出现 问题描述 el-scrollbar组件主要用于替换浏览器原生导航条。如下图所示&#xff0c;使用el-scrollbar组件后&#xff0c;发现未能成功替换掉浏览器原生导航条&#xff0c;二者同时出现。 引发原因 el-scrollbar的height属性如果…

怎样把自己电脑ip改成动态ip:步骤与解析

在今天的网络世界中&#xff0c;IP地址是计算机与互联网沟通的桥梁。而动态IP地址&#xff0c;作为其中的一种类型&#xff0c;由于其自动分配和管理的特性&#xff0c;为用户提供了更大的便利性和灵活性。那么&#xff0c;您是否想知道怎样将电脑IP改为动态呢&#xff1f;本文…

win11中配制了系统的环境变量mvn/java,但是mvn/java就是提示不存在的解决方法。

1、已经配制了环境变量&#xff0c;但是提示mvn不存在 2、然后我们在开始程序中查看到cmd&#xff0c;然后以管理员运行&#xff1a; 这样的话&#xff0c;是可以mvn这个命令的&#xff0c;而且只有这种方式是可以的&#xff0c;其它的方式&#xff0c;就算设置了以管理员身份运…

CSS 【详解】样式选择器(含ID、类、标签、通配、属性、伪类、伪元素、Content属性、子代、后代、兄弟、相邻兄弟、交集、并集等选择器)

CSS 样式选择器&#xff0c;用于选中页面中的 html 元素&#xff0c;以便添加 CSS 样式。 按渲染性能由高到低 依次是&#xff1a; ID 选择器 #id 通过元素的 id 属性选中元素&#xff0c;区分大小写 <p id"p1" >第一段</p>#p1{color: red; }但不推荐使…

mybatis-plus参数绑定异常

前言 最近要搞个发票保存的需求&#xff0c;当发票数据有id时说明是发票已经保存只需更新发票数据即可&#xff0c;没有id时说明没有发票数据需要新增发票&#xff1b;于是将原有的发票提交接口改造了下&#xff0c;将调用mybatis-plus的save方法改为saveOrUpdate方法&#xff…

Spring AOP、Spring MVC工作原理、发展演变、常用注解

Spring AOP 概念 AOP全称为Aspect Oriented Programming&#xff0c;表示面向切面编程。切面指的是将那些与业务无关&#xff0c;但业务模块都需要使用的功能封装起来的技术。 AOP基本术语 **连接点&#xff08;Joinpoint&#xff09;&#xff1a;**连接点就是被拦截到的程序执…

如何在Windows 11上复制文件和文件夹路径?这里提供几种方法

在Windows 11上复制文件或文件夹的路径就像在右键单击菜单中选择一个选项或按键盘快捷键一样简单。我们将向你展示如何在电脑上以各种方式进行操作。 从右键单击菜单 复制文件或文件夹路径的最简单方法是在该项目的右键单击菜单中选择一个选项。你也可以使用此方法复制多个项…

Golang | Leetcode Golang题解之第218题天际线问题

题目&#xff1a; 题解&#xff1a; type pair struct{ right, height int } type hp []pairfunc (h hp) Len() int { return len(h) } func (h hp) Less(i, j int) bool { return h[i].height > h[j].height } func (h hp) Swap(i, j int) { h[i], h[j]…

2024年【北京市安全员-B证】报名考试及北京市安全员-B证最新解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年北京市安全员-B证报名考试为正在备考北京市安全员-B证操作证的学员准备的理论考试专题&#xff0c;每个月更新的北京市安全员-B证最新解析祝您顺利通过北京市安全员-B证考试。 1、【多选题】《中华人民共和国安…

【HICE】dns正向解析

1.编辑仓库 2.挂载 3.下载软件包 4.编辑named.conf 5.编辑named.haha 6.重启服务 7.验证本地域名是否解析

一个pdf分割成多个pdf,一个pdf分成多个pdf

在数字化办公和学习中&#xff0c;pdf格式因其良好的兼容性和稳定性而受到广泛欢迎。但有时候&#xff0c;我们可能需要将一个大的pdf文件分割成多个小文件&#xff0c;以便于分享、打印或编辑。今天&#xff0c;我就来教大家几种简单有效的方法&#xff0c;让你轻松实现pdf文件…

Python应用开发——30天学习Streamlit Python包进行APP的构建(13)

st.chat_input 显示聊天输入窗口小部件。 Function signature[source]st.chat_input(placeholder="Your message", *, key=None, max_chars=None, disabled=False, on_submit=None, args=None, kwargs=None) Returns(str or None) The current (non-empty) value of…