目前object detection这块主流的数据集主要就是COCO和Pascal VOC格式的。github上现成的检测算法基本都是自带VOC格式数据集的输入接口的,所以想要跑起来一个算法,我们需要准备好Pascal VOC格式的数据集就可以了。但是之前网上没有对小白很友好的准备Pascal VOC格式数据集的教程。

所以我写了这篇文章,让新手也可以马上学会的教程。这样大家就不用为准备数据集浪费太多时间。如果看完这篇文章还有不清楚的可以评论区问我。

以我从零准备自己的数据集为例子,首先准备好所有的图像和 用标注工具labelme 标注好的 .xml格式文件。如何组织文件夹和文件位置我录了个视频给大家看清楚。

文件夹结构组织https://www.zhihu.com/video/1060191108994383872

在一个文件夹 image 里创建两个子文件夹 train 和 test 分别存放所有的训练和测试图像。

同样在文件夹 label 里创建两个子文件夹 train 和 test 分别存放所有的训练和测试标注文件。

以上是准备原始的数据,然后我们要分别提取文件夹image和label里的文件路径,为接下来制作Pascal VOC格式数据集做准备。

注:本文的脚本代码是基于python2.7环境的,python3环境的用户可以用anaconda自行创建一个python2.7的环境,具体方法请百度。

创建sortpath1.sh文件,文件里就一行代码,复制进去保存以后关闭。

find /data/dataset/THIGH -name '*.xml' |sort -n > lb.txt

再创建sortpath2.sh文件,文件里也就一行代码,复制进去保存以后关闭。

find /data/dataset/THIGH -name '*.jpg' |sort -n > fullpath.txt

然后打开终端,输入

./ sortpath1.sh

按回车,即准备好了标注文件的所有路径 lb.txt。

再输入

./ sortpath2.sh

按回车,就准备好了所有图像的路径 fullpath.txt。

打开 fullpath.txt 和 lb.txt 看一下,会是下面这样的。

fullpath.txt
lb.txt

然后创建 prepare.py脚本,完整代码如下,直接复制即可。

import shutil
import osimg_path = 'VOC2007/JPEGImages'
lb_path = 'VOC2007/Annotations'
txt_path = 'VOC2007/ImageSets/Main/'
os.makedirs(img_path)
os.makedirs(lb_path)
os.makedirs(txt_path)fg = dict()types = ['humerus', 'elbow', 'forearm']fimg = open('fullpath.txt')
for line in fimg:path = line.strip()flag = path.split('/')[-1].split('.')[0]for typ in types:if path.find(typ) == -1:continueelse:flag = typ + '@' + flagfg[flag] = path
flb = open('lb.txt')
for line in flb:path = line.strip()flag = path.split('/')[-1].split('.')[0]for typ in types:if path.find(typ) == -1:continueelse:flag = typ + '@' + flagtemp = path.split('/')[-2]extend = path.split('/')[-3]#print tempif fg.has_key(flag):shutil.copy(fg[flag], img_path)flag = flag.split('@')[-1]os.rename(img_path + '/' + flag + '.jpg', img_path + '/' + extend + '_' + flag + '.jpg')# print img_path, img_path.replace(flag, extend + '_' + flag)shutil.copy(path, lb_path)os.rename(lb_path + '/' + flag + '.xml', lb_path + '/' + extend + '_' + flag + '.xml')if temp == 'train':t1 = open(txt_path + 'train.txt', 'a')t1.write(extend + '_' + flag + 'n')t1.close()t2 = open(txt_path + 'trainval.txt', 'a')t2.write(extend + '_' + flag + 'n')t2.close()if temp == 'test':t3 = open(txt_path + 'test.txt', 'a')t3.write(extend + '_' + flag + 'n')t3.close()if temp == 'val':print tempt4 = open(txt_path + 'val.txt', 'a')t4.write(extend + '_' + flag + 'n')t4.close()t5 = open(txt_path + 'trainval.txt', 'a')t5.write(extend + '_' + flag + 'n')t5.close()

保存,打开终端输入 运行

python prepare.py 

到这里所有工作就结束了!已经直接制作好了Pascal VOC格式的数据集!最后制作好的的数据集是这样的!


如果本文对你有所帮助,欢迎点赞关注~谢谢

英文数据集txt_如何用自己的数据制作 Pascal VOC 格式的数据集 详细教程(文中有所有代码)...相关推荐

  1. 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——④转换成PASCAL VOC格式数据集

    文章目录 关于PASCAL VOC数据集 目录结构 ①创建VOC数据集的几个相关目录 XML文件的形式 ②读取dcm文件与xml文件的配对关系 ③创建VOC格式数据集 ④创建训练.验证集 本文所用代码 ...

  2. 建立自己的voc数据集_一次将自己的数据集制作成PASCAL VOC格式的惨痛经历

    因为准备训练keras-yolo3,开源代码上给出了voc_annotation.py文件,只要将自己的数据格式处理成PASCAL VOC格式,那么运行voc_annotation.py就可以将自己的 ...

  3. 自制VOC格式图像分割数据集:使用python+PIL生成8位深的RGB图像

    最近在做图像分割任务的任务,使用的是DeepLabV3Plus框架,所以需要制作VOC格式的数据集.在制作的时候发现VOC数据集中的Mask尽管是彩色的,但是竟然是8位深的. 而一般情况下,图像的每个 ...

  4. yoloV4mosaic数据增强,同步Pascal VOC格式的XML标注信息

    yoloV4mosaic数据增强,同步Pascal VOC格式的XML标注信息 talk is cheap, show code. talk is cheap, show code. from PIL ...

  5. python数据可视化读取excell文件绘制图像详细教程

    python数据可视化读取excell文件绘制图像详细教程 python数据可视化 python库中的基本用法 import pandas as pd # 调用pandas库 来读取excell的文件 ...

  6. 处理VOC格式的数据集

    VOC格式是常用的分割数据集,主要存储在xml文件中 torch也实现了读取Voc文件的函数datasets.VOCDetection Voc格式 是需要在 打标签的文件夹中: cmd输入 label ...

  7. 【Python】随机划分数据集并生成VOC格式列表

    1.Introduction 做目标检测时,用LabelImg生成的 xml 文件需要和对应的图片文件名,生成VOC格式列表.同时需要按照一定比例划分为训练集.验证集和测试集. 2.Materials ...

  8. YOLOv2训练:制作VOC格式的数据集

    本文转载自: http://blog.csdn.net/ch_liu23/article/details/53558549 最近在用yolo来做视频中的人员检测,选择YOLO是从速度考虑,当然也可以用 ...

  9. 【目标检测】TT100K数据集使用,提取标注信息并转换成VOC格式的xml文件或yolo格式的txt文件

    1 TT100K 官网 TT100K官网 1.1 数据集介绍 本人下载的是2021的数据集,训练集 6105张图片, 测试集 3071 张图片,每张图片的分辨率为2048 * 2048,共有232 种 ...

最新文章

  1. pythonexe32位-如何使用pyinstaller打包32位的exe程序
  2. python下载教程pdf-Python教程PDF合集下载
  3. 自定义LocaleResolver实现页面中英文切换
  4. Android中最详细的焦点问题,从概念出发带你一点点分享(1)
  5. 如何设计数据库表实现完整的RBAC(基于角色权限控制)
  6. 请听一个故事------gt;百度员工离职总结:如何做个好员工
  7. AWS上的Cilium网络拓扑和流量路径
  8. java jndi tomcat_tomcat下jndi的三种配置方式
  9. SpringSecurity入门
  10. 系统设计---分层,分级,分块
  11. visio2016为图形添加和删除连接点
  12. HP M1136无法打印的解决方法
  13. 计算机excel上机实训指导,上机实训指导手册——利用Excel进行数据分组和制作统计图表...
  14. ACM常见问题之【三角形的外心】
  15. 在u盘运行linux系统软件,主编帮你xp系统利用U盘直接运行Linux软件 的步骤【图】...
  16. 32位操作系统和64位操作系统的区别
  17. 树莓派4b+mcp2515实现CAN总线通讯和系统编程(一.配置树莓派CAN总线接口)
  18. weka矿产分布文件_矿产资源国情调查项目组参加技术培训视频会议
  19. 对付手机短信骗子的方法(够恶搞)
  20. matlab画出衰减振荡曲线,matlab程序题复习程序.doc

热门文章

  1. aliyun 短信验证码
  2. js制作秒表计时器代码怎么写
  3. 单片机学习 6-矩阵按键实验
  4. 神经元网络基础概念简述
  5. Photoshop的图像修复与渐变填充
  6. Android4开发入门经典 之 第十二部分:最佳实践【私塾在线原创】
  7. aws ec2 linux 密码,演练:在 EC2 实例上重置密码和 SSH 密钥 - AWS Systems Manager
  8. 精选历年大厂高频Java面试真题集锦(含答案),助力面试一路开挂
  9. 这款软件可以将大脑活动实时呈现在网页上
  10. FILE c语言的使用