一、VOC数据集

PASCAL VOC 挑战赛主要有 Object Classification 、Object Detection、Object Segmentation、Human Layout、Action Classification 这几类子任务。每年都有新的数据集供参赛者进行训练。公布了2007和2012两年的数据集,分别称之为VOC2007和VOC2012,

VOC2012数据集下载地址:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar

VOC数据集下载地址:https://pjreddie.com/projects/pascal-voc-dataset-mirror/

所有的标注图片都有Detection需要的label, 但只有部分数据有Segmentation Label。
VOC2007中包含9963张标注过的图片, 由train/val/test三部分组成, 共标注出24,640个物体。
VOC2007的test数据label已经公布, 之后的没有公布(只有图片,没有label)。
对于检测任务,VOC2012的trainval/test包含08-11年的所有对应图片。 trainval有11540张图片共27450个物体。
对于分割任务, VOC2012的trainval包含07-11年的所有对应图片, test只包含08-11。trainval有 2913张图片共6929个物体。

二、VOC格式数据集

因为标签不再是唯一的(因为VOC数据集需要进行很多任务,对每个任务都需要有至少一个标签来进行标注),因此VOC数据集有自己固定的组织格式,以 VOC 2007 为例,解压后的文件为:

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

在大家进行目标检测的时候,可能需要针对某一特定任务进行训练和检测,因此可能需要重构成自己的VOC格式数据集,即在保证组织形式不变的前提下,更换成自己的数据集。文件格式和组织形式的统一,是为了后序代码处理的统一性。

三、制作自己的数据集

解压VOC2007数据集后可以看到VOC2007文件夹下有以下5个文件夹:

Annotations文件夹
该文件下存放的是xml格式的标签文件,每个xml文件都对应于JPEGImages文件夹的一张图片。
JPEGImages文件夹
改文件夹下存放的是数据集图片,包括训练和测试图片。
ImageSets文件夹
该文件夹下存放了三个文件,分别是Layout、Main、Segmentation。在这里我们只用存放图像数据的Main文件,其他两个暂且不管。
SegmentationClass文件和SegmentationObject文件。
这两个文件都是与图像分割相关。

我们只关注三个文件夹(目标检测)

annotation 和 JPEGImages 一一对应。

开始制作:
制作自己的VOC2007格式数据集其实不需要上述那么多内容,我们只要做三个部分即可:Annotations文件夹、JPEGImages文件夹、ImageSets文件夹下的Main文件。

第一步:我们参照原始VOC2007数据集的文件层次创建上述四个文件夹,也就是创建一个VOCdevkit文件夹,下面再创建Annotations、JPEGImages、ImageSets三个文件夹,最后在ImageSets文件夹下再创建一个Main文件夹。
创建好所有文件夹后,我们将自己的数据集图片都放到JPEGImages文件夹下。按照习惯,我们将图片的名字修改为000001.jpg这种格式的(参照原始数据集图片命名规则),统一命名方法网络上有很多,网上很多,这里就不多赘述了。
另外强调两点:第一点是图片的格式,图片需是JPEG或者JPG格式,其他格式需要转换一下。第二点是图片的长宽比,图片长宽比不能太大或太小,这个参考原始VOC2007数据集图片即可。

第二步:我们来制作Annotations文件夹下所需要存放的xml文件。这里我们需要借助大神带给我们的福利了:LabelImg工具,可以按照上面的说明进行安装和使用。看到满篇的英文是不是很晕,那这里有个简单的方法可以帮助到大家!当然lxml 库文件还是要装的,但如果你用的是Anaconda环境,那么你什么都不用做,只需要点击这里:LabelImg标注工具,根据自己的情况选择下载window版本还是linux版本,然后解压使用就行了!
关于如何使用,这里以window版本的为例说明。下载解压后会得到一个exe可执行文件,另一个是data文件夹,这里面有个txt文件,内容是预定义的分类标签名,里面的标签可以根据自己的需要进行修改。执行exe文件打开标注界面就可以进行操作了,操作方法可以参考这篇文章:使用方法
这里给张标注工具的参考图:

下面就进行漫长的标注工作吧。。。
说明:每标注完一张图片后进行保存,保存的xml文件名要与对应图片名一致,大家可以参考原始VOC2007数据集中JPEGImages文件夹下图片的命名和Annotations文件夹中的xml文件命名规则。
备注:这里还有个制作工具  VOC2007数据格式制作工具 也很好用,大家也可以试一试。

第三步:我们来制作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()

注意:上述代码中涉及到的路径要写全,另外各个数据集所占比例根据实际数据集的大小调整比例。

至此,我们自己的VOC2007格式数据集就全部制作完成了。

参考资料:

https://blog.csdn.net/qq_41185868/article/details/79927556

https://blog.csdn.net/weixin_35653315/article/details/71028523

https://blog.csdn.net/mzpmzk/article/details/88065416

https://blog.csdn.net/gulingfengze/article/details/79639111

【机器学习】 - 目标检测 - VOC格式数据集介绍与自己制作相关推荐

  1. 【自制数据集自动标注】yolo目标检测 voc格式 单调无遮挡背景单个物体自制数据集自动标注

    垃圾分类目标检测数据集准备 数据集背景: 参加全国大学生工程训练综合能力竞赛智能生活垃圾分类赛道时深感采集制作数据集过分彰显"有多少人工,就有多少智能"的惨痛,为了不辛苦麻烦身边小 ...

  2. python实现目标检测voc格式标签数据增强

    文章目录 前言 一.显示图片(可关闭) 二.创建图像变换的类 1.增强数据代码 2.图像加噪声 3.调整图像亮度 4.添加黑色像素块 5.旋转图像 6.图像裁剪 7.平移图像 8.图像镜像 9.图像随 ...

  3. 【3D目标检测】KITTI数据集介绍

    目录 概述 数据集下载 激光雷达数据(`data_ object_velodyne`) 图像数据(`data_ object_image_ 2`) 标注数据(`data_ object_label 2 ...

  4. 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——④转换成PASCAL VOC格式数据集

    文章目录 关于PASCAL VOC数据集 目录结构 ①创建VOC数据集的几个相关目录 XML文件的形式 ②读取dcm文件与xml文件的配对关系 ③创建VOC格式数据集 ④创建训练.验证集 本文所用代码 ...

  5. Citypersons数据集转VOC标准格式(YOLO 目标检测txt格式)

    CItyscapes城市数据集包含一组不同的立体视频序列中记录来自50个不同城市的街景,高质量的进行像素级的注释.数据集下载地址(需要申请注册,通过申请才能下载)[https://www.citysc ...

  6. 深度学习和目标检测系列教程 3-300:了解常见的目标检测的开源数据集

    @Author:Runsen 计算机视觉中具有挑战性的主题之一,对象检测,可帮助组织借助数字图片作为输入来理解和识别实时对象.大量的论文基于常见的目标检测的开源数据集而来,因此需要了解常见的目标检测的 ...

  7. 目标检测系列(preface) 数据集DataSets

    目标检测系列(Preface) - 数据集 公开数据集(PASCAL VOC // COCO)介绍 一.PASCAL VOC格式数据集 官网 标注工具 1.数据集一般格式 VOC2007 Annota ...

  8. YOLO v5 实现目标检测(参考数据集自制数据集)

    YOLO v5 实现目标检测(参考数据集&自制数据集) Author: Labyrinthine Leo   Init_time: 2020.10.26 GitHub: https://git ...

  9. VOC格式数据集操作类构建-2.统计数据集各类别标签数目和剪裁图像中标注框并保存图片

    总目标:建立VOC格式数据集类以及操作内置函数 github项目地址(附有使用说明书): https://github.com/A-mockingbird/VOCtype-datasetOperati ...

最新文章

  1. php xml 动态添加数据,php向xml中添加数据一例
  2. java中间件_Java技术分享:一致性更强的分布式数据库中间件
  3. org.codehaus.janino.CompilerFactory cannot be cast to org.codehaus.commons.compiler.ICompilerFactory
  4. maven项目,httpclient jar包冲突
  5. struts2官方 中文教程 系列六:表单验证
  6. 复杂网络研究:让世界变得简单
  7. idea 亮度 调整_工业设计 | 2019优秀产品设计——IDEA金奖作品
  8. VS2010编译器经常遇到的小问题
  9. 最佳10大开源项目管理系统
  10. 云台测试软件,三轴云台校准工具
  11. linux opendir路径_Linux C - opendir 和 readdir 和 closedir - 目录文件打开
  12. Fiddler抓包(Android app)
  13. 从数码宝贝看spring bean的生命周期
  14. 【Android】软件开发中遇到的LUT
  15. word-break 换行
  16. 深度学习需要的电脑配置
  17. 飞腾国产处理器FT-2000/4在麒麟Kylin系统下I2C-Tools工具使用
  18. matlab pwm整流仿真
  19. Linux系统重启和停止Mysql服务教程
  20. gap,margin和padding的区别

热门文章

  1. Mysql数据库的几大优势
  2. [转]宝文!Apple Push Notification Service (APNS)原理与实现方案
  3. 85. Maximal Rectangle
  4. 【数据结构与算法】广度优先遍历(BFS) 深度优先遍历(DFS)
  5. [Leedcode][JAVA][第466题][统计重复个数][数组]
  6. 【匈牙利算法】【二分图匹配】【转载】趣写算法系列之--匈牙利算法
  7. php 显示当前年月日时分秒,php 获取当前前后年、月、星期、日、时分秒的时间...
  8. python3导入模块原理_Python模块导入机制与规范
  9. ubuntu下安装opensips
  10. numpy读取csv_Numpy——IO操作与数据处理