当前位置:   article > 正文

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

voc数据集

数据集介绍

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文件。

  • 这里我们需要借助工具: 
      • 根据自己的情况选择下载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文件:

  1. import os
  2. import random
  3. trainval_percent = 0.5
  4. train_percent = 0.5
  5. xmlfilepath = 'Annotations'
  6. txtsavepath = 'ImageSets/Main'
  7. total_xml = os.listdir(xmlfilepath)
  8. num=len(total_xml)
  9. list=range(num)
  10. tv=int(num*trainval_percent)
  11. tr=int(tv*train_percent)
  12. trainval= random.sample(list,tv)
  13. train=random.sample(trainval,tr)
  14. ftrainval = open(txtsavepath+'/trainval.txt', 'w')
  15. ftest = open(txtsavepath+'/test.txt', 'w')
  16. ftrain = open(txtsavepath+'/train.txt', 'w')
  17. fval = open(txtsavepath+'/val.txt', 'w')
  18. for i in list:
  19. name=total_xml[i][:-4]+'\n'
  20. if i in trainval:
  21. ftrainval.write(name)
  22. if i in train:
  23. ftrain.write(name)
  24. else:
  25. fval.write(name)
  26. else:
  27. ftest.write(name)
  28. ftrainval.close()
  29. ftrain.close()
  30. fval.close()
  31. ftest .close()
  32. #注意:上述代码中涉及到的路径要写全
  33. #另外各个数据集所占比例根据实际数据集的大小调整比例。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/780597
推荐阅读
相关标签
  

闽ICP备14008679号