Voc数据集简述

article/2025/10/30 3:03:58

文章目录

  • 一、了解VOC
    • 1.1 voc数据集下载
  • 二、VOC文件结构
    • 2.1 Annotations
    • 2.2 ImageSets
    • 2.3 JPEGImages
    • 2.4 SegmentationClass
    • 2.5 SegmentationObject
  • 三、目标检测任务
  • 四、语义分割任务
  • 五、实例分割任务
  • 六、类别索引与名称对应关系

一、了解VOC

是一种数据集的格式——VOC格式的数据集

PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛,
PASCAL VOC挑战赛主要包括以下几类:

  • 图像分类(Object Classification)
  • 目标检测(Object Detection)
  • 目标分割(Object Segmentation)
  • 行为识别(Action Classification) 等。

1.1 voc数据集下载

现在主要使用两个版本的voc,为2007和2012
链接地址:voc官网
voc2007数据集下载
voc2012数据集下载
浏览器或者迅雷(最快)下载。

二、VOC文件结构

在文件夹下按住shift+鼠标右键,打开shell(VOC2012为例)

VOCdevkit└── VOC2012├── Annotations               所有的图像标注信息(XML文件)├── ImageSets    │   ├── Action                人的行为动作图像信息│   ├── Layout                人的各个部位图像信息│   ││   ├── Main                  目标检测分类图像信息│   │     ├── train.txt       训练集(5717)│   │     ├── val.txt         验证集(5823)│   │     └── trainval.txt    训练集+验证集(11540)│   ││   └── Segmentation          目标分割图像信息│         ├── train.txt       训练集(1464)│         ├── val.txt         验证集(1449)│         └── trainval.txt    训练集+验证集(2913)│ ├── JPEGImages                所有图像文件├── SegmentationClass         语义分割png图(基于类别)└── SegmentationObject        实例分割png图(基于目标)

2.1 Annotations

存放xml格式的标签文件,每个xml对应JPEGImage中的一张图片。并且每个xml中存放的是标记的各个目标的位置和类别(C=20)信息,命名通常与对应的原始图像一样,以(x,y)的格式保存坐标点。可使用labelImg进行标注和查看。
xml文件解析:

<annotation>  <folder>VOC2012</folder>                             <filename>2007_000392.jpg</filename> //文件名  <source>                             //图像来源(不重要)  <database>The VOC2007 Database</database>  <annotation>PASCAL VOC2007</annotation>  <image>flickr</image>  </source>  <size>                              //图像尺寸(长宽以及通道数)                        <width>500</width>  <height>332</height>  <depth>3</depth>  </size>  <segmented>1</segmented>            //是否用于分割(在图像物体识别中01无所谓)  <object>                            //检测到的物体  <name>horse</name>              //物体类别  <pose>Right</pose>              //拍摄角度  <truncated>0</truncated>        //是否被截断(0表示完整)  <difficult>0</difficult>        //目标是否难以识别(0表示容易识别)  <bndbox>                        //bounding-box(包含左下角和右上角xy坐标)  <xmin>100</xmin>  <ymin>96</ymin>  <xmax>355</xmax>  <ymax>324</ymax>  </bndbox>  </object>  <object>              //检测到多个物体  <name>person</name>  <pose>Unspecified</pose>  <truncated>0</truncated>  <difficult>0</difficult>  <bndbox>  <xmin>198</xmin>  <ymin>58</ymin>  <xmax>286</xmax>  <ymax>197</ymax>  </bndbox>  </object>  
</annotation> 

2.2 ImageSets

  • Action 存放人的动作
  • Layout 存放的是具有人体部位的数据(head、feet等)
  • Main 图像物体识别的数据
  • Segmentation 可用于分割的数据

训练集与测试集

  • train.txt 训练集
    均为图片名,没有后缀。以train.txt为例,分为两列,第一列为图像名如00012;第二列为-1和1,-1表示目标在对应的图像没有出现,1则表示出现。
  • val.txt 验证集
  • trainval.txt 训练和验证集

2.3 JPEGImages

所有的图片,包括训练和测试的图片
共17125张图片
在这里插入图片描述

2.4 SegmentationClass

2.5 SegmentationObject

三、目标检测任务

如何使用数据集中的数据进行目标检测呢?

  1. 首先在VOC2012\ImageSets\Main中,读取txt文件
  • xxx_train xxx类的训练集
  • xxx_val xxx类的验证集
  • xxx_trainval xxx类的训练和验证集
  1. 在VOC2012\Annotations
    接着通过索引在Annotations文件夹下找到对应的标注文件(.xml)。
  2. 接着通过在标注文件中的filename字段在JPEGImages 文件夹中找到对应的图片。比如在2007_000323.xml文件中的filename字段为2007_000323.jpg,那么在JPEGImages 文件夹中能够找到2007_000323.jpg文件。

四、语义分割任务

如何领用数据集进行语义分割任务呢?

  1. VOC2012\ImageSets\Segmentation中读取对应的txt文件
  └── Segmentation          目标分割图像信息├── train.txt       训练集(1464)├── val.txt         验证集(1449)└── trainval.txt    训练集+验证集(2913)
  1. 在VOC2012\JPEGImages 找到对应的图片
  2. 在VOC2012\SegmentationClass找到对应的标注图像(png)

注意,在语义分割中对应的标注图像(.png)用PIL的Image.open()函数读取时,默认是P模式,即一个单通道的图像。在背景处的像素值为0,目标边缘处用的像素值为255(训练时一般会忽略像素值为255的区域),目标区域内根据目标的类别索引信息进行填充,例如人对应的目标索引是15,所以目标区域的像素值用15填充。

五、实例分割任务

注意,在实例分割中对应的标注图像(.png)用PIL的Image.open()函数读取时,默认是P模式,即一个单通道的图像。在背景处的像素值为0,目标边缘处或需要忽略的区域用的像素值为255(训练时一般会忽略像素值为255的区域)。然后在Annotations文件夹中找到对应的xml文件,解析xml文件后会得到每个目标的信息,而对应的标注文件(.png)的每个目标处的像素值是按照xml文件中目标顺序排列的。如下图所示,xml文件中每个目标的序号是与标注文件(.png)中目标像素值是对应的。

六、类别索引与名称对应关系

{"background": 0,"aeroplane": 1,"bicycle": 2,"bird": 3,"boat": 4,"bottle": 5,"bus": 6,"car": 7,"cat": 8,"chair": 9,"cow": 10,"diningtable": 11,"dog": 12,"horse": 13,"motorbike": 14,"person": 15,"pottedplant": 16,"sheep": 17,"sofa": 18,"train": 19,"tvmonitor": 20
}

参考博客:链接: 参考


http://chatgpt.dhexx.cn/article/Qy5T6XMF.shtml

相关文章

【DataWhale Obj Dec Task01】目标检测基础

目标检测的基本概念 报名参加datawhale的目标检测组队学习&#xff0c;虽然做objdec有一段时间了&#xff0c;但是还没有系统的记录过自己的学习历程&#xff0c;就借此机会记录一下自己的感想和经历吧&#xff0c;就当是记笔记了。 理解 目标检测实际上也是一种分类算法&am…

【目标检测】VOC数据集介绍

数据集介绍 VOC数据集是目标检测领域最常用的标准数据集之一&#xff0c;在类别上可以分为4大类&#xff0c;20小类 Annotations 进行 detection 任务时的标签文件&#xff0c;xml 形式&#xff0c;文件名与图片名一一对应ImageSets 包含三个子文件夹 Layout、Main、Segmentat…

VOC数据集简介与制作

一、VOC数据集简介 1.1 VOC的任务 PASCAL VOC 挑战赛主要有 Object Classification &#xff08;分类&#xff09;、Object Detection&#xff08;检测&#xff09;、Object Segmentation&#xff08;分割&#xff09;、Human Layout、Action Classification 这几类子任务。 …

详解 VOC 数据集

本视频配套视频链接&#xff1a;https://www.bilibili.com/video/BV1ZL4y1p7Cz/ 我们先来介绍一个经典的数据集&#xff1a;VOC 数据集。Visual Object Class 的首字母缩写&#xff0c;它的官方地址为 http://host.robots.ox.ac.uk/pascal/VOC/。 虽然现在大家更倾向于使用我…

测试报告编写,测试结果编写

测试报告&#xff0c;就是向整个团队告诉你的测试情况&#xff0c;以及发现一些问题说明。 所以&#xff1a; 第一步&#xff0c;先告诉别人&#xff0c;你的测试结果&#xff0c;测试结果只有两种&#xff0c;测试通过/测试未通过。 第二步&#xff0c;写出这个需求的提测的…

软件测试项目测试报告总结

测试计划概念&#xff1a;就在软件测试工作实施之前明确测试对象&#xff0c;并且通过资源、时间、风险、测试范围和预算等方面的综合分析和规划&#xff0c;保证有效的实施软件测试。 需求挖掘的6个方面&#xff1a; 1、输入方面 2、处理方面 3、结果输出方面 4、性能需求…

稳定性测试-几点总结

混合场景业务比例&#xff1a; 稳定性测试一般基于混合场景进行压测&#xff0c;业务比例由项目组人员给出。&#xff08;最好基于线上业务调用量情况进行统计&#xff0c;但大部分系统没有该数据&#xff0c;那就由他们自己拍脑袋吧&#xff09; PS: JMeter控制业务比例用 th…

测试总结报告模板

1. 编写目的 [简述本报告的目的。例如&#xff1a;本测试报告为XX项目的测试总结报告&#xff0c;目的在于总结测试阶段的测试及分析测试结果&#xff0c;描述系统是否符合需求&#xff08;或达到XX功能目标&#xff09;&#xff0c;同时对软件质量进行相关的评估&#xff0c;…

性能测试结果分析结果

在做性能测试的时候&#xff0c;在使用LR或者jmeter等一些性能测试工具测试执行结束后&#xff0c;首先要做的是判断采集到的结果数据是否真实有效。多数的性能测试场景都要迭代的进行测试&#xff0c;因此很多测试结果本身就不能反应问题&#xff0c;深入分析这样的结果没啥意…

主观评价测试

一、静物测试 1.测试目的&#xff1a;测试IPC在室内正常照度场景下的效果 2.测试设备&#xff1a;色温照度计&#xff0c;激光红外测距仪 3.测试环境&#xff1a;在不同色温环境下A,TL84 CWF D65对静物场景测试图卡和人物进行拍摄&#xff0c;观察图像和人物效果&#xff08…

测试总结的重要性

测试总结很重要&#xff0c;包括项目整理的总结、个人的总结、小组的总结;做项目总结&#xff0c;是为了梳理整个过程&#xff0c;明确问题和找到原因&#xff0c;改进整个流程和推进项目状态越来越好。 自己目前所做的是项目的总结&#xff0c;会针对三方做一个总结&#xff0…

测试总结该怎么写...

最近参与了几次面试&#xff0c;面试者的简历中都会提及&#xff1a;需求或者版本测试结束后会进行版本总结&#xff0c;而不仅仅是提供一份测试报告。 于是特意追问了一下&#xff0c;总结中都包含什么内容&#xff0c;答复上基本都是围绕此次测试过程中发现的BUG数量以及修复…

如何分析测试结果和评估测试工作的质量

软件测试中每一项测试活动都会产生测试结果&#xff0c;通过测试结果来评估产品的质量体现了测试的目的和价值。而通过测试结果评估测试工作本身的质量也非常重要&#xff0c;能让我们及时发现测试中存在的问题&#xff0c;并及时改正&#xff0c;是测试工作进行持续改进的基础…

测试报告怎么写?

测试报告是一份描述软件的测试过程、测试环境、测试范围、测试结果的文档&#xff0c;用来分析总结系统存在的风险以及测试结论。 &#xff08;1&#xff09;测试过程测试过程需要对测试人员、测试时间、测试地点、测试版本等信息进行描述。其他测试过程中发生的关键信息均可在…

评测报告的结论如何写?

背景 最近组内同学开始编写评测报告&#xff0c;报告中的结论中存在以下几种情况&#xff1a; 1.结论是一大段文字&#xff0c;像散文一样 2.评测数据结果中存在多个数据维度&#xff0c;将所有的数据结果都罗列到结论中&#xff0c;主要信息不突出 3.只是将评测数据罗列到…

【Linux】syscall系统调用原理及实现

一、什么是系统调用 系统调用 跟用户自定义函数一样也是一个函数&#xff0c;不同的是 系统调用 运行在内核态&#xff0c;而用户自定义函数运行在用户态。由于某些指令&#xff08;如设置时钟、关闭/打开中断和I/O操作等&#xff09;只能运行在内核态&#xff0c;所以操作系统…

Syscall的实现

1. How does syscall works 2. Kernel定义一个系统调用的表sys_call_table,这个表定义了每个系统调用的: 系统调用号NR_xxx 及其对应的系统调用的处理函数, 系统调用号对应sys_call_table[]数组的下标, 数组项的值保存系统调用的处理函数, 如下: 3. 如下,…

system call——系统调用

1. 系统调用 系统调用是操作系统提供的有效服务界面&#xff0c;一般使用高级语言编写&#xff0c;如c和c&#xff0c;对于特定的较为底层的任务&#xff0c;则使用汇编语言指令。 2. API和系统调用 API&#xff0c;应用程序接口&#xff0c;提供应用程序与开发人员基于某软件…

syscall 系统调用

转自&#xff1a;http://blog.csdn.net/b02042236/article/details/6136598 5.1.5 如何使用系统调用 如图5.2所示&#xff0c;用户应用可以通过两种方式使用系统调用。第一种方式是通过C库函数&#xff0c;包括系统调用在C库中的封装函数和其他普通函数。 图5.2 使用系统调用…