CV04_PASCAL VOC2012数据集介绍

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文件夹获取图片名称来划分训练集和验证集。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值