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

article/2025/10/30 5:46:20

数据集介绍

VOC数据集是目标检测领域最常用的标准数据集之一,在类别上可以分为4大类,20小类

  • Annotations 进行 detection 任务时的标签文件,xml 形式,文件名与图片名一一对应
  • ImageSets 包含三个子文件夹 Layout、Main、Segmentation,其中 Main 存放的是分类和检测的数据集分割文件
    • Main
      • train.txt 写着用于训练的图片名称
      • val.txt 写着用于验证的图片名称
      • trainval.txt train与val的合集
      • test.txt 写着用于测试的图片名称
  • JPEGImages 存放 .jpg 格式的图片文件
  • SegmentationClass 存放按照 class 分割的图片
  • SegmentationObject 存放按照 object 分割的图片

制作自己的VOC格式数据集

参考博客:【机器学习】 - 目标检测 - VOC格式数据集介绍与自己制作_51CTO博客_制作voc数据集

【目标检测】三个文件夹:

  • Annotation:保存xml格式的label信息
  • ImageSet:Main目录存放不同图片列表文件
    • train.txt:训练图片文件名列表
    • val.txt:验证图片文件名列表
    • trianval.txt:训练和验证的图片文件名列表
    • test.txt:测试图片文件名列表
  • JPEGImages:目录下存放所有的图片集

1、第一步:我们参照原始VOC2007数据集的文件层次创建上述四个文件夹,也就是创建一个VOCdevkit文件夹,下面再创建Annotations、JPEGImages、ImageSets三个文件夹,最后在ImageSets文件夹下再创建一个Main文件夹

创建好所有文件夹后,我们将自己的数据集图片都放到JPEGImages文件夹下。按照习惯,我们将图片的名字修改为000001.jpg这种格式的(参照原始数据集图片命名规则)。

另外强调两点:

  • 第一点是图片的格式,图片需是JPEG或者JPG格式,其他格式需要转换一下。
  • 第二点是图片的长宽比,图片长宽比不能太大或太小,这个参考原始VOC2007数据集图片即可。

2、第二步:我们来制作Annotations文件夹下所需要存放的xml文件。

  • 这里我们需要借助工具: 
    • LabelImg工具GitHub - heartexlabs/labelImg: LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data.
    • LabelImg标注工具Releases · heartexlabs/labelImg · GitHub
      • 根据自己的情况选择下载window版本还是linux版本,然后解压使用就行了!
      • 关于如何使用,这里以window版本的为例说明:
        • 下载解压后会得到一个exe可执行文件,另一个是data文件夹,这里面有个txt文件,内容是预定义的分类标签名,里面的标签可以根据自己的需要进行修改。

说明:每标注完一张图片后进行保存,保存的xml文件名要与对应图片名一致,大家可以参考原始VOC2007数据集中JPEGImages文件夹下图片的命名和Annotations文件夹中的xml文件命名规则。

备注:这里还有个制作工具   VOC2007数据格式制作工具 也很好用,大家也可以试一试VOC2007样本制作工具.zip_免费高速下载|百度网盘-分享无限制

3、第三步:我们来制作ImageSets文件夹下Main文件夹中的4个文件(test.txt、train.txt、trainval.txt、val.txt)。

  • test.txt:测试集
  • train.txt:训练集
  • val.txt:验证集
  • trainval.txt:训练和验证集

在原始VOC2007数据集中,trainval大约占整个数据集的50%,test大约为整个数据集的50%;train大约是trainval的50%,val大约为trainval的50%。所以我们可参考以下代码来生成这4个txt文件:

import os  
import random  trainval_percent = 0.5  
train_percent = 0.5  
xmlfilepath = 'Annotations'  
txtsavepath = 'ImageSets/Main'  
total_xml = os.listdir(xmlfilepath)  num=len(total_xml)  
list=range(num)  
tv=int(num*trainval_percent)  
tr=int(tv*train_percent)  
trainval= random.sample(list,tv)  
train=random.sample(trainval,tr)  ftrainval = open(txtsavepath+'/trainval.txt', 'w')  
ftest = open(txtsavepath+'/test.txt', 'w')  
ftrain = open(txtsavepath+'/train.txt', 'w')  
fval = open(txtsavepath+'/val.txt', 'w')  for i  in list:  name=total_xml[i][:-4]+'\n'  if i in trainval:  ftrainval.write(name)  if i in train:  ftrain.write(name)  else:  fval.write(name)  else:  ftest.write(name)  ftrainval.close()  
ftrain.close()  
fval.close()  
ftest .close()#注意:上述代码中涉及到的路径要写全
#另外各个数据集所占比例根据实际数据集的大小调整比例。

 


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

相关文章

VOC数据集简介与制作

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

详解 VOC 数据集

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

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

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

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

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

稳定性测试-几点总结

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

测试总结报告模板

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

性能测试结果分析结果

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

主观评价测试

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

测试总结的重要性

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

测试总结该怎么写...

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

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

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

测试报告怎么写?

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

评测报告的结论如何写?

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

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

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

Syscall的实现

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

system call——系统调用

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

syscall 系统调用

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

linux下syscall函数

NAME syscall - 间接系统调用 SYNOPSIS #define _GNU_SOURCE #include <unistd.h> #include <sys/syscall.h> /* For SYS_xxx definitions */ int syscall(int number, ...); DESCRIPTION …

#Java干货分享:这五个网站能打通你的任督二脉,让你技术大增

现如今的程序员可是一个需要时刻学习的职业&#xff0c;尤其是目前非常火热的Java&#xff0c;作为应用最为广泛的语言&#xff0c;在这一点上体现得尤其强烈。今天分享一些网站资源给大家学习&#xff0c;希望能够为你提供帮助&#xff01; 1、GitHub 这个网站不用多说&…