一、数据集文件夹

新建一个文件夹,用来存放整个数据集,或者和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. [工具向]__androidstudio签名打包apk及配置自动签名
  2. 为什么我写的c++程序在windows下比linux下要快,linux比windows快很多倍除了算法的优势 有没C比C++快的原因?...
  3. Composer 常用命令总结(三)
  4. python自带模块连接数据库_Python使用sqlalchemy模块连接数据库操作示例
  5. 编译安装Gearman、python简单测试
  6. Atitit 深入理解软件的本质 attilax总结 软件三原则三次原则是DRY原则和YAGNI原则的折
  7. 如何在RedHat 5.4上使用免费的YUM源
  8. 量子计算机美国华裔科学家,量子计算机很神?18岁华裔少年用经典计算机算得一样快...
  9. Word文件怎么快速查找关键词
  10. [Android/Icon] 分享一个图标/Icon制作网站
  11. 今天咱们用 Python 整一个 俄罗斯方块 小游戏吧(附源代码)
  12. HTML5学堂,感谢您一年的陪伴(上)
  13. uni-app 微信小程序启用组件按需注入
  14. Rational Rose2007的安装
  15. 3*3 三行三列的圈叉棋
  16. android 动态权限aop,Android — AOP 动态权限申请
  17. 洗扑克牌(乱数排列)(c/python略)
  18. CentOS7配置supervisor开机自启[队列监听,Horizon服务启动]
  19. Push failed: Unable to access ‘https://github.com........
  20. AltiumDesigner中plane和layer区别

热门文章

  1. Springboot打包后台运行及注册成Windows服务
  2. 和AI一起玩儿剧本杀:居然比我还入戏
  3. <script></script> 、 <script defer ></script> 、 <script async></script> 三者的区别
  4. 朋友圈可以定时发送了?
  5. 猎豹wifi有linux,最全猎豹免费wifi手机连上了但上不了网的解决方法介绍
  6. 电脑城国庆中秋装机版V16.0.iso
  7. 什么是UA?常见蜘蛛UA?怎么查询UA?
  8. 考研英语语法---简单句和句子成分
  9. 【一些实用的学习与资源网站,白(学)嫖(习)使人快乐】
  10. “经营为什么需要哲学”(首都机场集团公司 讲演(2011年6月8日))