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

利用Python高效整理猫狗数据集训练集与验证集(附源码讲解)

在进行目标检测或图像分类任务的准备过程中,我们常常需要将原始图片、标注文件(如 .json.xml)进行归类整理,分配到训练集(train)和验证集(val)中。
本文将分享两段实用的 Python 脚本,教你如何批量整理这些数据文件,让你专注于模型训练而非文件搬运。


✨ 脚本一:整理 JSON 标注的图像数据集

若你使用的是 JSON 格式标注(如 COCO 标准),这个脚本能帮你将图像与其对应的 JSON 文件分拣到统一的训练/验证路径下。

✅ 脚本功能概览

  • 支持 .jpg.jpeg.png 图像格式;
  • 将猫和狗的数据按“训练集”和“验证集”两类分别归档;
  • 同时整理图像与对应的 JSON 文件;
  • 自动创建目标路径,避免手动建目录的繁琐。

📜 示例代码

import os
import shutildef copy_files(src_dir, dst_dir, exts):if not os.path.exists(src_dir):returnos.makedirs(dst_dir, exist_ok=True)for fname in os.listdir(src_dir):if any(fname.lower().endswith(ext) for ext in exts):shutil.copy(os.path.join(src_dir, fname), os.path.join(dst_dir, fname))base_dir = r"你的数据集根目录路径/猫狗/挑出来的"target_base = r"你希望存放整理后训练json和图像的路径"for split in ["训练集", "验证集"]:for animal in ["cat", "dog"]:img_src = os.path.join(base_dir, animal, split, "images")json_src = os.path.join(base_dir, animal, split, "json")if split == "训练集":img_dst = os.path.join(target_base, "训练", "images")json_dst = os.path.join(target_base, "训练", "json")else:img_dst = os.path.join(target_base, "验证", "images")json_dst = os.path.join(target_base, "验证", "json")copy_files(img_src, img_dst, [".jpg", ".jpeg", ".png"])copy_files(json_src, json_dst, [".json"])print("图片和json已整理完成!")

📂 脚本二:整理 XML 标注的图像数据集

如果你使用的是 VOC 格式的 XML 标注文件,那么这段代码会非常适合你。

🚀 脚本功能概览

  • 同样支持猫/狗数据按“训练集”与“验证集”归档;
  • 将 XML 标注文件与图像配对搬运;
  • 简洁、直观,适合快速部署在任何图像分类项目中。

📜 示例代码

import os
import shutildef copy_files(src_dir, dst_dir, exts):if not os.path.exists(src_dir):returnos.makedirs(dst_dir, exist_ok=True)for fname in os.listdir(src_dir):if any(fname.lower().endswith(ext) for ext in exts):shutil.copy(os.path.join(src_dir, fname), os.path.join(dst_dir, fname))base_dir = r"你的数据集根目录路径/猫狗/挑出来的"target_train_base = r"你希望存放训练数据的路径"
target_val_base = r"你希望存放验证数据的路径"for split in ["训练集", "验证集"]:for animal in ["cat", "dog"]:img_src = os.path.join(base_dir, animal, split, "images")xml_src = os.path.join(base_dir, animal, split, "xml")if split == "训练集":img_dst = os.path.join(target_train_base, "images")xml_dst = os.path.join(target_train_base, "xml")else:img_dst = os.path.join(target_val_base, "images")xml_dst = os.path.join(target_val_base, "xml")copy_files(img_src, img_dst, [".jpg", ".jpeg", ".png"])copy_files(xml_src, xml_dst, [".xml"])print("训练集和验证集整理完成!")

💡 使用建议

  1. 路径问题:以上所有 base_dirtarget_base 等路径应替换为你本机或服务器上的真实路径;
  2. 目录结构要求
    • 你的原始数据目录应具备如下结构:
      猫/训练集/images
      猫/训练集/json 或 xml
      狗/验证集/images
      狗/验证集/json 或 xml
      
    • 若结构不同,请相应调整 os.path.join(...) 的拼接逻辑;
  3. 环境依赖:仅需 Python 原生库 osshutil,无需额外安装任何依赖,轻量实用。

📌 结语

数据的高效整理是深度学习项目成功的关键之一。与其手动搬运,不如写段小脚本让机器来干活!希望这两段代码能帮助你快速整理训练集数据,为接下来的模型训练扫清障碍。

如果你觉得有帮助,欢迎点赞、收藏,或者评论区交流你的优化思路!🚀

http://www.xdnf.cn/news/483895.html

相关文章:

  • 技术书籍推荐(001)
  • 硬件中的OID是什么?SNMP如何通过OID获取信息?——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无
  • makefile细节说明
  • 在 VSCode 中运行 Vue.js 项目
  • 抛物线运动路径动画实现
  • Android framework 中间件开发(三)
  • 高效管理嵌套Git仓库:三合一脚本解决方案
  • 【AI】CUDA 是如何成功的?(AI 计算的民主化,第 3 部分)
  • MOS管、三极管与IGBT管的原理与应用全面对比
  • 如何解决Move to iOS 不起作用的问题?
  • Yocto Project 快速构建
  • 将单链表反转【数据结构练习题】
  • 机器学习入门之KNN算法和交叉验证与超参数搜索(三)
  • 如何在一台环境中同时安装ragflow和ragflow-plus
  • PCL 绘制二次曲面
  • Golang基于反射的ioctl实现
  • 鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页2)
  • HarmonyOS 开发之 —— 合理使用动画与转场
  • userfaultfd内核线程D状态问题排查
  • 数学实验(Matlab编程基础)
  • Flutter - 集成三方库:日志(logger)
  • 【深度学习】#11 优化算法
  • 麒麟服务器操作系统安装 MySQL 8 实战指南
  • EC800X_DP-DTU-Q600R 系列开发板介绍
  • QML 动画控制、顺序动画与并行动画
  • 25考研经验贴(11408)
  • 智能呼叫系统中的NLP意图理解:核心技术解析与实战
  • 游戏引擎学习第286天:开始解耦实体行为
  • R1 快开门式压力容器操作证备考练习题及答案
  • 2025程序设计天梯赛补题报告