当前位置: 首页 > news >正文

数据集格式转化 xml转换txt xml转换txt 转换代码示例参考 VOC(xml)格式如何转换yolo(txt )格式 (1)

如何三图 一套代码 来进行xml转换txt 转换代码示例参考。VOC(xml)格式如何转换yolo(txt )格式 的转换?

首先你得有数据集吧。

然后先进行数据集的标注,在分类到训练集 测试集 ,验证集。最起码要搞个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,一定要改!!!

PATH=r'C:\Users\87018\Desktop\xml2txt'

训练集占比80% 训练集:验证集=8:2 这里划分数据集 不用改

TRAIN_RATIO=80def clear_hidden_files(path): dir_list=os.listdir(path)foriindir_list: abspath=os.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): dw=1. / size[0]dh=1. / size[1]x=(box[0]+ box[1])/2.0y=(box[2]+ box[3])/2.0w=box[1]- box[0]h=box[3]- box[2]x=x * dw w=w * dw y=y * dh h=h * dhreturn(x, y, w, h)def convert_annotation(image_id):# Assuming the image format is jpgimage_path=os.path.join(image_dir, f"{image_id}.jpg")img=Image.open(image_path)w, h=img.size in_file=open(PATH+'/Annotations/%s.xml'% image_id,encoding='utf-8')out_file=open(PATH+'/YOLOLabels/%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)difficult=0forobjinroot.iter('object'):ifobj.find('difficult'): difficult=obj.find('difficult').text cls=obj.find('name').textifcls notinCLASSES 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))bb=convert((w,h),b)out_file.write(str(cls_id)+" "+" ".join([str(a)for a in bb])+'\n')in_file.close()out_file.close()wd=os.getcwd()wd=os.getcwd()work_sapce_dir=os.path.join(wd,PATH+"/")annotation_dir=os.path.join(work_sapce_dir,"Annotations/")if not os.path.isdir(annotation_dir):os.mkdir(annotation_dir)clear_hidden_files(annotation_dir)image_dir=os.path.join(work_sapce_dir,"JPEGImages/")if not os.path.isdir(image_dir):os.mkdir(image_dir)clear_hidden_files(image_dir)yolo_labels_dir=os.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_dir=os.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_dir=os.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_dir=os.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_dir=os.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_dir=os.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_dir=os.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_file=open(os.path.join(wd,"yolov5_train.txt"),'w',encoding='utf-8')test_file=open(os.path.join(wd,"yolov5_valid.txt"),'w',encoding='utf-8')train_file.close()test_file.close()train_file=open(os.path.join(wd,"yolov5_train.txt"),'a',encoding='utf-8')test_file=open(os.path.join(wd,"yolov5_valid.txt"),'a',encoding='utf-8')list_imgs=os.listdir(image_dir)# list image files prob=random.randint(1,100)print("数据集:%d个"%len(list_imgs))foriinrange(0, len(list_imgs)): path=os.path.join(image_dir, list_imgs[i])ifos.path.isfile(path): image_path=image_dir + list_imgs[i]voc_path=list_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_name=nameWithoutExtention +'.xml'annotation_path=os.path.join(annotation_dir, annotation_name)label_name=nameWithoutExtention +'.txt'label_path=os.path.join(yolo_labels_dir, label_name)prob=random.randint(1,100)print("Probability: %d"% prob, i, list_imgs[i])if(prob<TRAIN_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()
http://www.jsqmd.com/news/1344851/

相关文章:

  • Java开发环境搭建指南:从JDK到IntelliJ IDEA的完整配置
  • 气体放电管(GDT)原理、选型与电路防护设计实战指南
  • 缓存穿透、缓存击穿和缓存雪崩详解
  • 【Web安全】API安全测试实战指南(OWASP API Top 10全覆盖,保姆级教程)
  • 北京工商代办服务怎么选?2026年注册公司、税务解异常及代理记账机构实务评测 - 优质品牌商家
  • Android分区存储下外置存储设备(U盘/SD卡)的发现、监听与安全访问实战
  • Hugging Face Diffusers惊现高危漏洞:加载一个模型就能让攻击者接管你的服务器
  • 高效开发必备:Linux与开发工具核心指令大全
  • 长沙代理记账推荐|正规财税服务机构甄选参考 - 行业深度分析
  • 三明刑事上诉律师事务所怎么选更稳妥结合福建熹龙律师事务所 - 热点品牌推荐
  • DeepSeek V4 Flash接入Codex教程
  • 基于大模型的代码库理解与AI编程助手构建实践
  • YOLO[多种场景下的铅笔]目标检测数据集
  • URP自定义光照Shader实战:完整光照与阴影实现
  • 具身智能协同机制研究:TVA与VLA的统一建模(3)
  • 2026年六西格玛DOE实验设计怎么入门——众智商学院张明老师制造业工艺优化多因子分析实操 - 众智商学院cppm官方
  • CSS box-shadow 盒阴影完全指南:从参数顺序到多层立体投影
  • 基于Coze平台构建短视频自动化生成工作流:从文案到发布的完整实践
  • 青岛厂房空气能热泵销售安装哪家好认准青岛岳峰制冷工程 - 热点品牌推荐
  • C语言编程思维:从语法到实战,构建健壮程序的系统方法
  • Unity PlayerPrefs编辑器:原理、应用与高效调试指南
  • 从AI玩具到工程化:用“配方”思维构建可复现的生成式AI工作流
  • 动图怎么变成视频 2026亲测可用的免费方法 - 图片处理研究员
  • Unity Inspector变量显示控制:public、private与特性Attribute实战指南
  • 2026亲测有效教程:不下载软件怎么把视频转成GIF - 图片处理研究员
  • 腾讯云跨账号服务器迁移实战:镜像共享与零停机部署指南
  • 哈尔滨网站建设制作哪家好:揭秘本地优质服务商的选择逻辑与避坑指南
  • Python读取Chrome历史记录SQLite数据库并导出Excel完整教程
  • Spring Cloud Gateway构建系统边界防护:拦截遗留系统数据污染与能量渗透
  • 数据格式转换工具部署与API集成实践指南