建立自己的voc数据集_制作自己的数据集(VOC2007格式)用于Faster-RCNN训练
一、数据集文件夹
新建一个文件夹,用来存放整个数据集,或者和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训练相关推荐
- voc2007数据集_【目标检测数据集】PASCAL VOC制作
[VOC2007+2012] 数据集地址:https://pjreddie.com/projects/pascal-voc-dataset-mirror/ PASCAL VOC为图像识别和分类提供了一 ...
- celeba数据集_人脸识别常用数据集介绍(附下载链接)及常用评估指标
为什么要聊到数据集这个话题..因为数据集的noise对训练效果的影响很大!很长一段时间MegaFace的效果都上不去,就是因为数据集噪声的原因.而且自己在训练人脸的时候,如果不对数据集的噪声和属性有一 ...
- python从date目录导入数据集_使用python划分数据集
无论是训练机器学习或是深度学习,第一步当然是先划分数据集啦,今天小白整理了一些划分数据集的方法,希望大佬们多多指教啊,嘻嘻~ 首先看一下数据集的样子,flower_data文件夹下有四个文件夹,每个文 ...
- coco 数据集_如何用 coco 数据集训练 Detectron2 模型?
随着最新的 Pythorc1.3 版本的发布,下一代完全重写了它以前的目标检测框架,新的目标检测框架被称为 Detectron2.本教程将通过使用自定义 coco 数据集训练实例分割模型,帮助你开始使 ...
- 将数据集做成VOC2007格式用于Faster-RCNN训练
0.文件夹名 首先,确定你的数据集所放的文件夹名字,例如我的叫logos. (或者和voc2007一样的名字:VOC2007) 1.图片命名 虽然说图片名对训练没什么影响,但建议还是按VOC2007那 ...
- 目标检测simple Faster R-CNN训练自己的数据集
一.复现 刚开始接触目标检测,自己动手复现的第一个开源项目是github上chenyuntc的simple faster rcnn.历经千辛万苦最后貌似因为服务器显卡内存不够,在训练时一直出现一个错误 ...
- Faster RCNN训练自己数据集报错记录及解决
Faster R-CNN源码网址:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5点击打开链接 环境:python3.6 tenso ...
- python制作图片数据集_制作图片数据集
在学习卷积神经网络的时候,遇到了cifar10图像数据集,用着挺好,但不想局限于固定的几种图像的识别,所以就有了自己制作数据集来识别的想法. 一.cifar10数据集. 据原网站介绍,数据集为二进制. ...
- 多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...
原文: Label-Specific Document Representation for Multi-Label Text Classification(EMNLP 2019) 多标签文本分类 摘要: ...
最新文章
- GPU深度发掘(一)::GPGPU数学基础教程
- 深入理解建造者模式 ——组装复杂的实例
- Leetcode--41. 缺失的第一个正数
- 文件I/O实践(3) --文件共享与fcntl
- php设置http请求头信息和响应头信息
- 高速计算机的应用领域是什么,计算机的应用领域
- 【智能制造】推进智能制造,他山之石可以攻玉!
- Qt软件的发展历史及优势特点
- 关于app 元素定位
- 谁偷了我的1天,JSON格式化时区问题
- 报表工具(报表设计器)使用的开发历程
- 淘宝2011春季校园招聘笔试试题(回忆版)(附个人简历)
- sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- 微软技术探究之FASTER
- 一文详解PPTC自恢复保险丝的设计应用
- html5水涟漪动画,CSS3水波涟漪动画定位样式制作教程
- 第二届BJD CTF做题总结与题目复现-MISCCrypto
- Codeblocks-20.03下载及安装教程(面向小白的保姆级教程)
- Git runner安装
- 谷歌SEO优化入门:Google SEO优化方法(2022最新)
热门文章
- iOS 动画专题(UIView二维形变动画与CAAnimation核心动画)
- 10款老式英文复古字体
- 读书笔记 | 国富论(卷二)
- Oracle 动态监听和静态监听非1521端口配置
- 景美成立GPU SIG,推动openKylin社区图形处理系统创新发展!
- linux执行.sh文件时,报错:XXX.sh: Permission denied(没有权限)
- Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
- matlab的xcorr函数,Matlab_xcorr_互相关函数的讨论
- keil中Device添加所需芯片型号
- 裴健加入京东是“数据AI”之战,也是新零售的内核之战