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

将标签格式为xml的数据集按照8:2的比例划分为训练集和验证集

  • D:\experiment2\dataset\M3FD_Detection\Ir 里的图片D:\experiment2\dataset\M3FD_Detection\Annotation 里的同名 xml
  • 8 : 2 随机划分成 train / val
  • 目录结构自动建为:
M3FD_split/
├─ train/
│  ├─ images/
│  └─ labels/
└─ val/├─ images/└─ labels/

复制保存为 split_xml_dataset.py 后改路径运行

import os
import random
import shutil
from pathlib import Path# 1. 原始路径 -----------------------------------------------------------
IMG_DIR  = Path(r'D:\experiment2\dataset\M3FD_Detection\Ir')
LBL_DIR  = Path(r'D:\experiment2\dataset\M3FD_Detection\Annotation')# 2. 划分比例 ------------------------------------------------------------
TRAIN_RATIO = 0.8
VAL_RATIO   = 1 - TRAIN_RATIO# 3. 输出根目录 ----------------------------------------------------------
OUT_ROOT = Path(r'D:\experiment2\dataset\M3FD_split')
TRAIN_IMG = OUT_ROOT / 'train' / 'images'
TRAIN_LBL = OUT_ROOT / 'train' / 'labels'
VAL_IMG   = OUT_ROOT / 'val'   / 'images'
VAL_LBL   = OUT_ROOT / 'val'   / 'labels'for p in (TRAIN_IMG, TRAIN_LBL, VAL_IMG, VAL_LBL):p.mkdir(parents=True, exist_ok=True)# 4. 收集所有样本 --------------------------------------------------------
images = sorted([f for f in IMG_DIR.iterdir()  if f.suffix.lower() in {'.jpg','.jpeg','.png','.bmp'}])
xmls   = {f.stem: f for f in LBL_DIR.iterdir() if f.suffix.lower() == '.xml'}# 只保留“图片&xml 成对”的样本
pairs = [(img, xmls[img.stem]) for img in images if img.stem in xmls]
random.shuffle(pairs)# 5. 划分 ---------------------------------------------------------------
train_n = int(len(pairs) * TRAIN_RATIO)
train_pairs = pairs[:train_n]
val_pairs   = pairs[train_n:]# 6. 复制文件 -----------------------------------------------------------
def copy_batch(pairs, img_dst, lbl_dst):for img_path, lbl_path in pairs:shutil.copy(img_path, img_dst / img_path.name)shutil.copy(lbl_path, lbl_dst / lbl_path.name)copy_batch(train_pairs, TRAIN_IMG, TRAIN_LBL)
copy_batch(val_pairs,   VAL_IMG,   VAL_LBL)print(f'Total samples: {len(pairs)}')
print(f'Train: {len(train_pairs)}  Val: {len(val_pairs)}')
print('✅ 划分完成!')

运行后终端示例:

Total samples: 2500
Train: 2000  Val: 500
✅ 划分完成!

接下来即可用 M3FD_split/ 作为训练/验证数据根目录送入 YOLOv5、v8 或任何需要 xml 格式检测框的框架。

http://www.dtcms.com/a/601002.html

相关文章:

  • 实战派 JMeter 指南:核心功能、并发压测实操与常见问题解决方案
  • 宁晋网站建设地址信息采集平台
  • 17网站一起做网店如何下单下载站用什么网站系统
  • VMware替代 | ZStack ZSphere虚拟化平台金融级高可用能力解析
  • Go语言编译器源码 | 深入解析Go编译器的设计与实现原理
  • Bootstrap4 文字排版
  • 第13节 93年高能所被入侵,开启中国网络安全发展进程
  • [学习笔记] An Introduction to Flow Matching and Diffusion Models
  • 从零开始的Qt开发指南:(三)信号与槽的概念与使用
  • 视频网站怎么搭建wordpress站点标题图片
  • 加强学校网站建设的要求小说网站建设教程
  • 软考 系统架构设计师历年真题集萃(199)—— 2025年11月系统架构设计师真题2
  • 零门槛部署:在AMD MI300X上极速部署运行GPT-OSS 120B全流程实践
  • 视觉学习——理清机器学习:分类、流程与技术家族的关系
  • 建设网站为什么要备案只有一个页面的网站
  • 分布式专题——54 ElasticSearch集群架构生产最佳实践
  • python+django/flask的宠物用品系统vue
  • 网泰网站建设哪里可以引流到精准客户呢
  • 自相关和互相关、卷积计算流程演示
  • 淮安网站建设制作国精产品w灬源码1688说明
  • 探索K8s与AI的结合:PyTorch训练任务在k8s上调度实践
  • Linux操作系统学习之---初识网络
  • 怎么破解别人做的付费网站网络营销的应用研究论文
  • phpMyAdmin Docker 容器化部署指南
  • 集成技术如何支撑“双十一零售高峰?”
  • 如何正确下载安装官方.NET Framework 4.6?3种方法详解(附4.6.1、4.6.2版本对比)
  • 串流经验:云玩加、 Parsec、Zerotier
  • F045 vue+flask棉花病虫害CNN识别+AI问答知识neo4j 图谱可视化系统深度学习神经网络
  • 某东电商平台的MySQL面试知识点分析
  • wordpress自适应站点网站建设 甲方欠款 如何处理