数据集格式转化 xml转换txt xml转换txt 转换代码示例参考 VOC(xml)格式如何转换yolo(txt )格式
如何三图 一套代码 来进行xml转换txt 转换代码示例参考。VOCxml格式如何转换yolotxt 格式 的转换首先你得有数据集吧。然后先进行数据集的标注在分类到训练集 测试集 验证集。最起码要搞个yaml,里面路径和yaml搞好对不。然后训练不会出现路径报错类似于这样的问题对不对答疑解惑同学经常问的问题另外VOC格式XML和YOLO(txt)格式可以互转,不要忘记了还有YOLO数据集通用YOLOV5-YOLOV12都可以。另外呢附一个代码让你知道如何XML格式转换TXT的yolo格式。这里以 帽子和人 CLASSES [“hat”, “person”] 两类数据集作为示例如何转换格式**第一步**第二步这里假设hat person 是smoke 和 fire第三步修改路径importxml.etree.ElementTree as ETimportpickleimportos from osimportlistdir, getcwd from os.pathimportjoinimportrandom from shutilimportcopyfile from PILimportImage只要改下面的CLASSES和PATH就可以了其他的不用改这个脚本会自动划分数据集生成YOLO格式的标签文件分类名称 这里改成数据集的分类名称一定要改请查看数据集目录下的txt文件CLASSES[hat,person]数据集目录 这里改成数据集的根目录根目录下有两个文件夹Annotations和JPEGImages一定要改PATHrC:\Users\87018\Desktop\xml2txt训练集占比80% 训练集:验证集8:2 这里划分数据集 不用改TRAIN_RATIO80def clear_hidden_files(path): dir_listos.listdir(path)foriindir_list: abspathos.path.join(os.path.abspath(path), i)ifos.path.isfile(abspath):ifi.startswith(._): os.remove(abspath)else: clear_hidden_files(abspath)def convert(size, box): dw1. / size[0]dh1. / size[1]x(box[0] box[1])/2.0y(box[2] box[3])/2.0wbox[1]- box[0]hbox[3]- box[2]xx * dw ww * dw yy * dh hh * dhreturn(x, y, w, h)def convert_annotation(image_id):# Assuming the image format is jpgimage_pathos.path.join(image_dir, f{image_id}.jpg)imgImage.open(image_path)w, himg.size in_fileopen(PATH/Annotations/%s.xml% image_id,encodingutf-8)out_fileopen(PATH/YOLOLabels/%s.txt% image_id,w,encodingutf-8)treeET.parse(in_file)roottree.getroot()sizeroot.find(size)# w int(size.find(width).text)# h int(size.find(height).text)difficult0forobjinroot.iter(object):ifobj.find(difficult): difficultobj.find(difficult).text clsobj.find(name).textifcls notinCLASSES or int(difficult)1:continuecls_idCLASSES.index(cls)xmlboxobj.find(bndbox)b(float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text), float(xmlbox.find(ymax).text))bbconvert((w,h),b)out_file.write(str(cls_id) .join([str(a)for a in bb])\n)in_file.close()out_file.close()wdos.getcwd()wdos.getcwd()work_sapce_diros.path.join(wd,PATH/)annotation_diros.path.join(work_sapce_dir,Annotations/)if not os.path.isdir(annotation_dir):os.mkdir(annotation_dir)clear_hidden_files(annotation_dir)image_diros.path.join(work_sapce_dir,JPEGImages/)if not os.path.isdir(image_dir):os.mkdir(image_dir)clear_hidden_files(image_dir)yolo_labels_diros.path.join(work_sapce_dir,YOLOLabels/)if not os.path.isdir(yolo_labels_dir):os.mkdir(yolo_labels_dir)clear_hidden_files(yolo_labels_dir)yolov5_train_diros.path.join(work_sapce_dir,train/)if not os.path.isdir(yolov5_train_dir):os.mkdir(yolov5_train_dir)clear_hidden_files(yolov5_train_dir)yolov5_images_train_diros.path.join(yolov5_train_dir,images/)if not os.path.isdir(yolov5_images_train_dir):os.mkdir(yolov5_images_train_dir)clear_hidden_files(yolov5_images_train_dir)yolov5_labels_train_diros.path.join(yolov5_train_dir,labels/)if not os.path.isdir(yolov5_labels_train_dir):os.mkdir(yolov5_labels_train_dir)clear_hidden_files(yolov5_labels_train_dir)yolov5_test_diros.path.join(work_sapce_dir,val/)if not os.path.isdir(yolov5_test_dir):os.mkdir(yolov5_test_dir)clear_hidden_files(yolov5_test_dir)yolov5_images_test_diros.path.join(yolov5_test_dir,images/)if not os.path.isdir(yolov5_images_test_dir):os.mkdir(yolov5_images_test_dir)clear_hidden_files(yolov5_images_test_dir)yolov5_labels_test_diros.path.join(yolov5_test_dir,labels/)if not os.path.isdir(yolov5_labels_test_dir):os.mkdir(yolov5_labels_test_dir)clear_hidden_files(yolov5_labels_test_dir)train_fileopen(os.path.join(wd,yolov5_train.txt),w,encodingutf-8)test_fileopen(os.path.join(wd,yolov5_valid.txt),w,encodingutf-8)train_file.close()test_file.close()train_fileopen(os.path.join(wd,yolov5_train.txt),a,encodingutf-8)test_fileopen(os.path.join(wd,yolov5_valid.txt),a,encodingutf-8)list_imgsos.listdir(image_dir)# list image files probrandom.randint(1,100)print(数据集:%d个%len(list_imgs))foriinrange(0, len(list_imgs)): pathos.path.join(image_dir, list_imgs[i])ifos.path.isfile(path): image_pathimage_dir list_imgs[i]voc_pathlist_imgs[i](nameWithoutExtention, extention)os.path.splitext(os.path.basename(image_path))(voc_nameWithoutExtention, voc_extention)os.path.splitext(os.path.basename(voc_path))annotation_namenameWithoutExtention .xmlannotation_pathos.path.join(annotation_dir, annotation_name)label_namenameWithoutExtention .txtlabel_pathos.path.join(yolo_labels_dir, label_name)probrandom.randint(1,100)print(Probability: %d% prob, i, list_imgs[i])if(probTRAIN_RATIO):# train datasetifos.path.exists(annotation_path): train_file.write(image_path \n)convert_annotation(nameWithoutExtention)# convert labelcopyfile(image_path, yolov5_images_train_dir voc_path)copyfile(label_path, yolov5_labels_train_dir label_name)else:# test datasetifos.path.exists(annotation_path): test_file.write(image_path \n)convert_annotation(nameWithoutExtention)# convert labelcopyfile(image_path, yolov5_images_test_dir voc_path)copyfile(label_path, yolov5_labels_test_dir label_name)train_file.close()test_file.close()

相关新闻

基于YOLOv8与PyQt5的深度学习密集人群检测与计数系统研究

基于YOLOv8与PyQt5的深度学习密集人群检测与计数系统研究

基于深度学习YOLOv8PyQt5的密集人群人体检测识别计数系统 文章目录1. 环境搭建安装依赖2. 数据准备数据集结构3. 模型训练训练配置文件训练模型4. 界面设计与结果展示设计界面主程序代码5. 运行与测试推理代码配置超参数模型推理性能评估代码mAP计算自定义评估脚本技术栈&#…

2026/8/6 8:39:06 阅读更多 →
SaToken集成Redis实现分布式会话管理:原理、配置与生产实践

SaToken集成Redis实现分布式会话管理:原理、配置与生产实践

1. 项目概述:当SaToken遇上Redis 在构建现代Web应用时,会话管理和权限控制是绕不开的核心组件。传统的基于服务器内存的Session方案,在单机时代尚可应付,但一旦应用需要横向扩展,部署到多台服务器上,就会立…

2026/8/6 8:39:06 阅读更多 →
Kubernetes权限控制:Role与ClusterRole详解

Kubernetes权限控制:Role与ClusterRole详解

1. Kubernetes权限控制基础:Role与ClusterRole深度解析 在Kubernetes集群中管理权限就像给不同部门的员工发放门禁卡——财务部不需要研发实验室的权限,而运维团队则需要全局通行证。这正是Role和ClusterRole的设计哲学,它们构成了K8s RBAC&a…

2026/8/6 8:39:06 阅读更多 →

最新新闻

分布式系统故障放大效应(EM问题)的成因、排查与弹性设计实战

分布式系统故障放大效应(EM问题)的成因、排查与弹性设计实战

1. 从一次深夜告警说起:EM问题到底是什么? 凌晨两点,手机突然震动,监控大屏上一个服务接口的P99延迟曲线像坐了火箭一样直线飙升,紧接着就是一连串的“服务不可用”告警。相信很多负责线上稳定性的同学都经历过这种惊心…

2026/8/6 9:44:41 阅读更多 →
Wand-Enhancer:完全免费解锁WeMod高级功能的终极解决方案

Wand-Enhancer:完全免费解锁WeMod高级功能的终极解决方案

Wand-Enhancer:完全免费解锁WeMod高级功能的终极解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为游戏修改器的付费功能而…

2026/8/6 9:44:41 阅读更多 →
禅道项目管理软件:从安装部署到敏捷开发实战全解析

禅道项目管理软件:从安装部署到敏捷开发实战全解析

1. 为什么我们需要一个“禅道”? 如果你在软件公司待过,或者参与过任何需要多人协作的项目,大概率听过这样的对话:“那个需求文档放哪儿了?”“上周说的bug修复了没,谁在跟?”“下个版本什么时候…

2026/8/6 9:44:41 阅读更多 →
MBD与AUTOSAR:汽车电子高价值开发者的核心技能与求职指南

MBD与AUTOSAR:汽车电子高价值开发者的核心技能与求职指南

最近在技术社区和线下交流中,一个高频问题反复被提及:“现在学 MBD 和 AUTOSAR 还有前途吗?投入这么多时间,到底能不能找到好工作?” 这背后反映的,是许多嵌入式、汽车电子领域开发者面对技术浪潮时的普遍焦…

2026/8/6 9:44:41 阅读更多 →
模拟电路复合三极管(达林顿管)原理、小信号模型与变量分析详解

模拟电路复合三极管(达林顿管)原理、小信号模型与变量分析详解

最近在整理模拟电路笔记时,翻到了当年学习“复合三极管”的作业,其中一道关于“天域复合三极管”的变量分析题(对应教材第136页)让我印象深刻。这类题目不仅是考试重点,更是理解多级放大、电流镜、差分对等复杂电路的基…

2026/8/6 9:44:41 阅读更多 →
芯天下 3.3V 4Gbit 并行 NAND Flash (XT27G04ABFIGA)

芯天下 3.3V 4Gbit 并行 NAND Flash (XT27G04ABFIGA)

型号:XT27G04ABFIGA | 品牌:芯天下(XTX) 关键词:4Gbit、x16位宽、VFBGA67、工业级-40~85℃、SLC一、为什么关注这颗料在嵌入式存储选型中,容量、封装、接口带宽和功耗这几项指标往往互相制约。想要大带宽就…

2026/8/6 9:43:41 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →