一、数据集文件夹

新建一个文件夹,用来存放整个数据集,或者和voc2007一样的名字:VOC2007

然后在文件夹里面新建如下文件夹:

二、将训练图片放到JPEGImages

将所有的训练图片放到该文件夹里,然后将图片重命名为VOC2007的“000005.jpg”形式

重命名的python代码为:

import os

path= r"D:\VOC2007\JPEGImages"filelist=os.listdir(path) #该文件夹下所有的文件(包括文件夹)

count=0

for file infilelist:

print(file)for file infilelist: #遍历所有文件

Olddir=os.path.join(path,file) #原来的文件路径ifos.path.isdir(Olddir): #如果是文件夹则跳过continuefilename=os.path.splitext(file)[0] #文件名

filetype=‘.jpg’ #文件扩展名

Newdir=os.path.join(path,str(count).zfill(6)+filetype) #用字符串函数zfill 以0补全所需位数

os.rename(Olddir,Newdir)#重命名

count+=1

重命名

三、标注图片,标注文件保存到Annotations

使用Github上的labelimg:https://github.com/tzutalin/labelImg

这一步需要安装Pyqt and lxml 下载地址:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#PyQt4

https://www.lfd.uci.edu/~gohlke/pythonlibs/#Lxml

然后在labelImage 的目录下 shift+右键打开PowerShell 运行一下命令:

pyrcc4 -py3 -o resources.py resources.qrc

python labelImg.py

这个时候,就会出现labelimage的窗口

labelimg窗口的使用方法:

• 源码文件夹中使用notepad++打开data/predefined_classes.txt,可以修改默认类别,比如改成bus、car、building三个类别。 先修改,再打开labelimage

• 修改默认的XML文件保存位置,可以用“Ctrl+R”,改为自定义位置(D:\VOC2007\Annotations 数据集的Annotations 文件夹),这里的路径不能包含中文,否则无法保存。

•“Open Dir”打开需要标注的样本图片文件夹,会自动打开第一张图片,开始进行标注

• 使用“Create RectBox”开始画框

• 完成一张图片后点击“Save”,此时XML文件已经保存到本地了。

• 点击“Next Image”转到下一张图片。

• 标注过程中可随时返回进行修改,后保存的文件会覆盖之前的。

• 完成标注后打开XML文件,发现确实和PASCAL VOC所用格式一样。

PS:

每个图片和标注得到的xml文件,JPEGImages文件夹里面的一个训练图片,对应Annotations里面的一个同名XML文件,一 一 对应,命名一致

标注自己的图片的时候,类别名称请用小写字母,比如汽车使用car,不要用Car

pascal.py中读取.xml文件的类别标签的代码:

cls = self._class_to_ind[obj.find('name').text.lower().strip()]

写的只识别小写字母,如果你的标签含有大写字母,可能会出现KeyError的错误。

四、ImageSets\Main里的四个txt文件

在ImageSets里再新建文件夹,命名为Main,在Main文件夹中生成四个txt文件,即:

test.txt是测试集

train.txt是训练集

val.txt是验证集

trainval.txt是训练和验证集

VOC2007中,trainval大概是整个数据集的50%,test也大概是整个数据集的50%;train大概是trainval的50%,val大概是trainval的50%。

txt文件中的内容为样本图片的名字(不带后缀),格式如下:

根据已生成的xml,制作VOC2007数据集中的trainval.txt ; train.txt ; test.txt ; val.txt

trainval占总数据集的50%,test占总数据集的50%;train占trainval的50%,val占trainval的50%;

上面所占百分比可根据自己的数据集修改,如果数据集比较少,test和val可少一些

在自己的VOC2007文件夹下创建.py文件,运行以下程序

importosimportrandom

trainval_percent= 0.66train_percent= 0.5xmlfilepath= '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('ImageSets/Main/trainval.txt', 'w')

ftest= open('ImageSets/Main/test.txt', 'w')

ftrain= open('ImageSets/Main/train.txt', 'w')

fval= open('ImageSets/Main/val.txt', 'w')for i inlist:

name=total_xml[i][:-4]+'\n'

if i intrainval:

ftrainval.write(name)if i intrain:

ftrain.write(name)else:

fval.write(name)else:

ftest.write(name)

ftrainval.close()

ftrain.close()

fval.close()

ftest .close()-------------------

Main

或者

xmlfilepath='E:\Annotations';

txtsavepath='E:\ImageSets\Main\';

trainval_percent=0.5; #trainval占整个数据集的百分比,剩下部分就是test所占百分比

train_percent=0.5; #train占trainval的百分比,剩下部分就是val所占百分比

xmlfile=dir(xmlfilepath);

numOfxml=length(xmlfile)-2;#减去.和.. 总的数据集大小

trainval=sort(randperm(numOfxml,floor(numOfxml*trainval_percent)));

test=sort(setdiff(1:numOfxml,trainval));

trainvalsize=length(trainval); #trainval的大小

train=sort(trainval(randperm(trainvalsize,floor(trainvalsize*train_percent))));

val=sort(setdiff(trainval,train));

ftrainval=fopen([txtsavepath 'trainval.txt'],'w');

ftest=fopen([txtsavepath 'test.txt'],'w');

ftrain=fopen([txtsavepath 'train.txt'],'w');

fval=fopen([txtsavepath 'val.txt'],'w');for i=1:numOfxmlifismember(i,trainval)

fprintf(ftrainval,'%s\n',xmlfile(i+2).name(1:end-4));ifismember(i,train)

fprintf(ftrain,'%s\n',xmlfile(i+2).name(1:end-4));elsefprintf(fval,'%s\n',xmlfile(i+2).name(1:end-4));

endelsefprintf(ftest,'%s\n',xmlfile(i+2).name(1:end-4));

end

end

fclose(ftrainval);

fclose(ftrain);

fclose(fval);

fclose(ftest);

Main

至此,VOC2007数据集制作完成,后续会将此数据集用于tensorflow faster rcnn中使用。

参考文章:https://blog.csdn.net/u011574296/article/details/78953681

https://blog.csdn.net/weixin_38124357/article/details/78425890

建立自己的voc数据集_制作自己的数据集(VOC2007格式)用于Faster-RCNN训练相关推荐

  1. voc2007数据集_【目标检测数据集】PASCAL VOC制作

    [VOC2007+2012] 数据集地址:https://pjreddie.com/projects/pascal-voc-dataset-mirror/ PASCAL VOC为图像识别和分类提供了一 ...

  2. celeba数据集_人脸识别常用数据集介绍(附下载链接)及常用评估指标

    为什么要聊到数据集这个话题..因为数据集的noise对训练效果的影响很大!很长一段时间MegaFace的效果都上不去,就是因为数据集噪声的原因.而且自己在训练人脸的时候,如果不对数据集的噪声和属性有一 ...

  3. python从date目录导入数据集_使用python划分数据集

    无论是训练机器学习或是深度学习,第一步当然是先划分数据集啦,今天小白整理了一些划分数据集的方法,希望大佬们多多指教啊,嘻嘻~ 首先看一下数据集的样子,flower_data文件夹下有四个文件夹,每个文 ...

  4. coco 数据集_如何用 coco 数据集训练 Detectron2 模型?

    随着最新的 Pythorc1.3 版本的发布,下一代完全重写了它以前的目标检测框架,新的目标检测框架被称为 Detectron2.本教程将通过使用自定义 coco 数据集训练实例分割模型,帮助你开始使 ...

  5. 将数据集做成VOC2007格式用于Faster-RCNN训练

    0.文件夹名 首先,确定你的数据集所放的文件夹名字,例如我的叫logos. (或者和voc2007一样的名字:VOC2007) 1.图片命名 虽然说图片名对训练没什么影响,但建议还是按VOC2007那 ...

  6. 目标检测simple Faster R-CNN训练自己的数据集

    一.复现 刚开始接触目标检测,自己动手复现的第一个开源项目是github上chenyuntc的simple faster rcnn.历经千辛万苦最后貌似因为服务器显卡内存不够,在训练时一直出现一个错误 ...

  7. Faster RCNN训练自己数据集报错记录及解决

    Faster R-CNN源码网址:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5点击打开链接 环境:python3.6 tenso ...

  8. python制作图片数据集_制作图片数据集

    在学习卷积神经网络的时候,遇到了cifar10图像数据集,用着挺好,但不想局限于固定的几种图像的识别,所以就有了自己制作数据集来识别的想法. 一.cifar10数据集. 据原网站介绍,数据集为二进制. ...

  9. 多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...

    原文: Label-Specific Document Representation for Multi-Label Text Classification(EMNLP 2019) 多标签文本分类 摘要: ...

最新文章

  1. GPU深度发掘(一)::GPGPU数学基础教程
  2. 深入理解建造者模式 ——组装复杂的实例
  3. Leetcode--41. 缺失的第一个正数
  4. 文件I/O实践(3) --文件共享与fcntl
  5. php设置http请求头信息和响应头信息
  6. 高速计算机的应用领域是什么,计算机的应用领域
  7. 【智能制造】推进智能制造,他山之石可以攻玉!
  8. Qt软件的发展历史及优势特点
  9. 关于app 元素定位
  10. 谁偷了我的1天,JSON格式化时区问题
  11. 报表工具(报表设计器)使用的开发历程
  12. 淘宝2011春季校园招聘笔试试题(回忆版)(附个人简历)
  13. sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  14. 微软技术探究之FASTER
  15. 一文详解PPTC自恢复保险丝的设计应用
  16. html5水涟漪动画,CSS3水波涟漪动画定位样式制作教程
  17. 第二届BJD CTF做题总结与题目复现-MISCCrypto
  18. Codeblocks-20.03下载及安装教程(面向小白的保姆级教程)
  19. Git runner安装
  20. 谷歌SEO优化入门:Google SEO优化方法(2022最新)

热门文章

  1. iOS 动画专题(UIView二维形变动画与CAAnimation核心动画)
  2. 10款老式英文复古字体
  3. 读书笔记 | 国富论(卷二)
  4. Oracle 动态监听和静态监听非1521端口配置
  5. 景美成立GPU SIG,推动openKylin社区图形处理系统创新发展!
  6. linux执行.sh文件时,报错:XXX.sh: Permission denied(没有权限)
  7. Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
  8. matlab的xcorr函数,Matlab_xcorr_互相关函数的讨论
  9. keil中Device添加所需芯片型号
  10. 裴健加入京东是“数据AI”之战,也是新零售的内核之战