文章目录

  • 制作自己的VOC数据集
  • 生成数据集名称文件
  • .xml文件转.txt文件
  • 完善自己的YOLO数据集

制作自己的VOC数据集

首先,把VOC数据集里的图片和.xml文件按照如下文件夹格式存放

我的数据集各级文件夹如图所示:



生成数据集名称文件

train.txt里面存的是所有数据集图片的名称(注意,是不含后缀名的名称!!!)

如图,我的images文件夹里有这样几张.jpg文件,在这个images文件夹里建一个.txt文件,内容如图所示:

 DIR  *.*/B>train.txt

修改该.txt文件后缀为.bat,如图:

双击这个.bat文件,会看到生成了一个train.txt文件

打开train.txt,可以看到里面的内容是images这个文件夹里所有文件的名称。

删除list.bat和train.txt这两行,只留下图片的名称
注意:由于最终train.txt里只能保留图片名称,不含后缀,所以需要把train.txt文件里每一行的”.jpg“删掉,可以手动删除,但如果数据集过大,可使用如下python脚本删除:

import os
filename = r"train.txt"
new_filename = r"train1.txt"
with open(filename,encoding="utf-8") as f1, open(new_filename,"w",encoding="utf-8") as f2:for line in f1:new_line = line[:-5]f2.write(new_line)f2.write('\n')
f1.close()
f2.close()

运行效果如图所示:

打开新生成的train1.txt可以看到,后缀名都被删掉了

这个时候把train1.txt里的内容复制到\data\ImageSets\Main\train.txt中去。

.xml文件转.txt文件

.xml转.txt文件yolo模型官方有提供转换代码,使用方法下文所示:

创建一个.py文件,内容如下:

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import os
from os import getcwdsets = ['train', 'val', 'test']
classes = ['red', 'yellow','green', 'turn_left',  'turn_right', 'stop']   # 改成自己的类别
abs_path = os.getcwd()
print(abs_path)def convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, hdef convert_annotation(image_id):in_file = open('C:/Users/Lenovo/Desktop/data/Annotations/%s.xml' % (image_id),encoding='utf-8')out_file = open('C:/Users/Lenovo/Desktop/data/labels/%s.txt' % (image_id), 'w',encoding='utf-8')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):# difficult = obj.find('difficult').textdifficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))b1, b2, b3, b4 = b# 标注越界修正if b2 > w:b2 = wif b4 > h:b4 = hb = (b1, b2, b3, b4)bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd()
for image_set in sets:if not os.path.exists('C:/Users/Lenovo/Desktop/data/labels/'):os.makedirs('C:/Users/Lenovo/Desktop/data/labels/')image_ids = open('C:/Users/Lenovo/Desktop/data/ImageSets/Main/%s.txt' % (image_set)).read().strip().split()list_file = open('%s.txt' % (image_set), mode='w', encoding='utf-8')for image_id in image_ids:list_file.write('C:/Users/Lenovo/Desktop/data/images/%s.jpg\n' % (image_id))convert_annotation(image_id)list_file.close()

转换代码使用注意事项:

  1. 把第六行改为’train’, ‘val’, ‘test’
  2. 第七行classes里的内容改为自己数据集里的类别名称
  3. 注意各个地址的写法,一定要使用反斜杠

之后运行这段脚本,会发现data里面生成了一个新的lables文件夹,这样便是数据转化成功了

完善自己的YOLO数据集

最后,将labels这个文件夹复制进yolo数据集里即可

VOC数据集转YOLO数据集相关推荐

  1. Pytorch机器学习(三)——VOC数据集转换为YOLO数据集

    Pytorch机器学习(三)--VOC数据集转换为YOLO数据集 目录 Pytorch机器学习(三)--VOC数据集转换为YOLO数据集 前言 一.yolo格式 二.代码 总结 前言 本文为利用pyt ...

  2. [数据集][VOC][目标检测]西瓜数据集目标检测可用yolo训练-1702张介绍

    数据集名称:高质量西瓜目标检测数据集 数据集地址:数据集VOC格式目标检测数据集西瓜数据集-1702张-数据集文档类资源-CSDN下载 数据集介绍: 数据集格式:Pascal VOC格式(不包含分割路 ...

  3. yolov5之voc数据集转yolo标准数据集

    yolov5之voc数据集转yolo标准数据集 需要yolo转voc格式的看这里Yolo标准数据集格式转Voc数据集 在之前的文章中介绍过yolo标准数据集转voc数据集,因为最近在学习yolov5, ...

  4. yolo数据集txt标注转voc数据集xml标注格式

    yolo数据集txt标注格式为: 0 0.159375 0.552083 0.121875 0.381944 0 0.776953 0.747222 0.099219 0.361111 代码如下: i ...

  5. yolo数据集剪裁:切割目标框并将该框内的其他目标一并提取并转为可用数据集

    如上图所示,我们的目标是切割出所有的盘子,没个盘子单独储存为一张图片,并且里面的水果也还在该盘子的对应位置. 类似于这样 因为都标注了,有位置信息了,通过大目标框和小目标框的相对位置完全可以切出来.若 ...

  6. BDD100K数据集转YOLO格式

    前言 BDD100K由伯克利大学AI实验室(BAIR)发布,是目前最大规模.内容最具多样性的公开驾驶数据集.BDD100K 数据集包含10万段高清视频,每个视频约40秒,720p,30 fps .每个 ...

  7. yolo人脸检测数据集_自定义数据集上的Yolo-V5对象检测

    yolo人脸检测数据集 计算机视觉 (Computer Vision) Step by step instructions to train Yolo-v5 & do Inference(fr ...

  8. 【数据集转换】VOC数据集转COCO数据集·代码实现+操作步骤

    在自己的数据集上实验时,往往需要将VOC数据集转化为coco数据集,因为这种需求所以才记录这篇文章,代码出处未知,感谢开源. 在远程服务器上测试目标检测算法需要用到测试集,最常用的是coco2014/ ...

  9. Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等

    [Python学习笔记] 使用PIL,批量合成jpg+png图片,用于水印.合并图片,生成YOLO数据集+标注数据等等 起因:在了解很多关于YOLOv5的相关内容,于是尝试着去训练自己的游戏目标检测模 ...

最新文章

  1. 怎么重启网站mysql数据库_如何重启MySQL数据库服务
  2. 使用who.is查域名DNS信息以及用sameip.org查其他网站
  3. Git远程仓库地址变更
  4. 中国人民大学_《组织行为学》_20 如何避免办公室政治的负面影响?
  5. Python多个版本指定如何指定
  6. jackson驼峰转下划线注解_jackson序列化与反序列化的应用实践
  7. server sql 无法从long转为int_MySQL中,21个写SQL的好习惯(修正版)
  8. php 获取css值,如何通过JS获取CSS属性值
  9. 调用函数的ALV、面向对象的ALV设置带选择列
  10. vue的v-for循环普通数组、对象数组、对象、数字
  11. 美元反弹外汇分析,黄金外汇买卖近期将有怎样的行情_小豹科技
  12. 计算机网络电子邮件的格式,电子邮件的格式是什么
  13. 基于matlab测量物体直径,基于MATLAB的不规则面积图像测量
  14. Android 编译速度优化方案
  15. 半导体产业行业手持式粒子计数器工作原理
  16. 江苏计算机学业水平测试多少分过关,江苏学业水平测试的相关问题整理
  17. 脸萌~基于SVG绘制
  18. 我们公司放弃了微服务,重回单体架构
  19. 慕容复的故事告诉我们:应试教育害死人
  20. 电商直通车主图设计教程

热门文章

  1. python——turtle
  2. 结构体排序(sort)
  3. gitlab删除一个项目
  4. 美国CS PhD找工作经验总结
  5. 适合小白的Python入门课程目录
  6. MathType 右编号从任意编号开始
  7. 刚刚入门,还请各路大神多多关照
  8. 抓取某话题下指定时间内的微博数据,包括博文数据、评论信息等(可通过高级搜索筛选时间)
  9. 职称考试计算机基础知识,中级职称计算机考试题「附答案」
  10. python如何画矩形_python怎么画矩形