转载:VOC2007数据集制作

转载自:https://blog.csdn.net/gaohuazhao/article/details/60871886

另外,可参考:https://blog.csdn.net/dcxhun3/article/details/52923310

相信看这篇文章的人都在做深度学习吧,此数据集是为目标检测做的数据集,有错误处请海涵

代码见我的github上:https://github.com/EddyGao/make_VOC2007
第一步:首先了解VOC2007数据集的格式

1)JPEGImages文件夹

文件夹里包含了训练图片和测试图片,混放在一起

2)Annatations文件夹

文件夹存放的是xml格式的标签文件,每个xml文件都对应于JPEGImages文件夹的一张图片

3)ImageSets文件夹

Action存放的是人的动作,我们暂时不用

Layout存放的人体部位的数据。我们暂时不用

Main存放的是图像物体识别的数据,分为20类,当然我们自己制作就呵呵呵不一定了,如果你有精力,Main里面有test.txt , train.txt, val.txt ,trainval.txt.这四个文件我们后面会生成

Segmentation存放的是可用于分割的数据

4)其他的文件夹不解释了,分割XXX等用的

如果你下载了VOC2007数据集,那么把它解压,把各个文件夹里面的东西删除,保留文件夹名字。如果没下载,那么就仿照他的文件夹格式,自己建好空文件夹就行。

第二步:搞定JPEGSImages文件夹

1)把你的图片放到JPEGSImages里面,在VOC2007里面,人家的图片文件名都是000001.jpg类似这样的,我们也统一格式,把我们的图片名字重命名成这样的,如果你的文件太多怎么办,请看我的另一篇文章http://blog.csdn.net/gaohuazhao/article/details/60324715 能批量重命名文件

第三步:搞定Annatations文件夹

网上很多教程,但是我觉得都很麻烦,直到我遇到了一位大神做的软件,手动标注,会自动生成图片信息的xml文件

1)在这里下载:https://github.com/tzutalin/labelImg,至于怎么用相信你打开就知道了。(https://github.com/puzzledqs/BBox-Label-Tool

2)保存的路径就是我们的Annatations文件夹,别保存别的地方去了,,,

3)一张张的慢慢画框。。。。。。。。。大约过了几个小时,好继续下一步

第四步:搞定ImageSets文件夹中的Main文件夹中的四个文件

直接上一个代码给你:

[python] view plain copy
  1. import os  
  2. import random  
  3.   
  4. trainval_percent = 0.66  
  5. train_percent = 0.5  
  6. xmlfilepath = 'Annotations'  
  7. txtsavepath = 'ImageSetsMain'  
  8. total_xml = os.listdir(xmlfilepath)  
  9.   
  10. num=len(total_xml)  
  11. list=range(num)  
  12. tv=int(num*trainval_percent)  
  13. tr=int(tv*train_percent)  
  14. trainval= random.sample(list,tv)  
  15. train=random.sample(trainval,tr)  
  16.   
  17. ftrainval = open('ImageSets/Main/trainval.txt', 'w')  
  18. ftest = open('ImageSets/Main/test.txt', 'w')  
  19. ftrain = open('ImageSets/Main/train.txt', 'w')  
  20. fval = open('ImageSets/Main/val.txt', 'w')  
  21.   
  22. for i  in list:  
  23.     name=total_xml[i][:-4]+' '  
  24.     if i in trainval:  
  25.         ftrainval.write(name)  
  26.         if i in train:  
  27.             ftrain.write(name)  
  28.         else:  
  29.             fval.write(name)  
  30.     else:  
  31.         ftest.write(name)  
  32.   
  33. ftrainval.close()  
  34. ftrain.close()  
  35. fval.close()  
  36. ftest .close()  


OK,制作完成,就是这么简单,那么解释一下这四个txt文档是干嘛的,看名字就知道,就是分分多少图片作为训练,多少图片作为测试,,,,

原文地址:https://www.cnblogs.com/harvey888/p/8682833.html