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

下载数据集用于图像分类并自动分为训练集和测试集方法

下面代码的目的是为图像分类任务生成训练集和测试集的标签文件。具体来说:

  1. 自动创建标签文件:根据输入的根目录和数据集类型(如"train"或"test"),在指定位置生成对应的文本文件(如train.txt)。

  2. 构建图片与标签的映射关系:通过遍历目录结构,将每个图片的完整路径与其所属类别建立对应关系。类别标签由父目录的子目录顺序决定(第一个子目录为0,第二个为1,依此类推)。

  3. 格式输出:将结果写入文本文件,每行格式为<图片路径> <标签>(例如:"八宝粥/image1.jpg 0"),便于后续用于机器学习模型的训练数据加载。

代码实现:

import os  # 导入操作系统相关模块,用于路径操作def train_test_file(root, dir):  # 定义生成标签文件的函数,接收根目录和数据集类型(train/test)file_txt = open(dir+'.txt','w')  # 创建以dir命名的文本文件(如train.txt),用于写入标签path = os.path.join(root, dir)  # 组合根目录和数据集类型形成完整路径(如食物分类/food_dataset/train)for roots, directories, files in os.walk(path):  # 遍历指定路径下的所有目录和文件if len(directories) != 0 :  # 如果当前目录有子目录(非叶子节点)dirs = directories  # 保存当前目录的子目录列表else:  # 如果当前目录是叶子节点(无子目录)now_dir = roots.split('\\')  # 将当前目录路径按反斜杠分割成列表(如['食物分类', 'food_dataset', '八宝粥'])for file in files:  # 遍历当前目录下的所有文件path_1 = os.path.join(roots, file)  # 组合出完整文件路径(如食物分类/food_dataset/八宝粥/image1.jpg)print(path_1)  # 打印文件路径(调试用)file_txt.write(path_1+' '+str(dirs.index(now_dir[-1]))+'\n')  # 写入文件路径和对应标签# 示例:八宝粥目录的文件会被标记为0,哈密瓜为1等file_txt.close()  # 关闭文件流root = r'.\食物分类\food_dataset'  # 图片存储根目录(相对路径)
train_dir = 'train'  # 训练集目录名
test_dir = 'test'    # 测试集目录名
train_test_file(root, train_dir)  # 生成训练集标签文件(train.txt)
train_test_file(root, test_dir)   # 生成测试集标签文件(test.txt)

关键点说明:

  1. 路径处理

    • os.path.join 自动适配不同操作系统的路径分隔符(Windows用\,Linux用/
    • roots.split('\\') 将路径转换为层级列表,便于获取当前目录名称(now_dir[-1]
  2. 标签生成逻辑

    • 当遇到叶子节点(无子目录)时,通过dirs.index(now_dir[-1])确定标签
    • dirs 是父级目录的子目录列表,索引值对应分类编号(如第一个子目录为0)
  3. 数据结构

    • 生成的.txt文件每行格式:<文件路径> <标签>(如八宝粥/image1.jpg 0
    • 标签体系基于目录层级顺序自动分配,无需手动维护映射关系
  4. 适用场景

    • 适合图像分类任务的数据预处理,尤其适用于多类别、多子目录存储的图片数据集
http://www.xdnf.cn/news/1477675.html

相关文章:

  • Python零基础速成指南:12周从小白到项目实战
  • uniapp | 解决组件样式不生效问题
  • uniapp新增页面及跳转配置方法
  • 【最新版】超级好用的软件卸载工具IObit Uninstaller v15.0.0.8 中文解压即用版 告别残留烦恼
  • 力扣p2009 使数组连续的最少操作数 详解
  • ELFK:企业级日志管理的完整解决方案——从入门到精通
  • 尚硅谷宋红康JVM全套教程(详解java虚拟机)
  • 苍穹外卖项目实战(day-5完整版)-记录实战教程及问题的解决方法
  • 2025高教社国赛数学建模C题参考论文(含模型和代码)
  • 【面试向】人工智能机器学习介绍
  • 【51单片机-B030】【protues仿真】基于51单片机万年历系统
  • 心路历程-passwdusermod命令补充
  • 嵌入式学习——ARM 体系架构1
  • [光学原理与应用-422]:非线性光学 - 计算机中的线性与非线性运算
  • PHP - pack/unpack「字符串/二进制字符串」- 学习/实践
  • Week 15: 深度学习补遗:集成学习初步
  • C++算法学习——链表
  • 基于Scikit-learn集成学习模型的情感分析研究与实现
  • Day12--HOT100--23. 合并 K 个升序链表,146. LRU 缓存,94. 二叉树的中序遍历
  • 腾讯混元翻译模型Hunyuan-MT-7B开源,先前拿了30个冠军
  • Go基础(③Cobra)
  • STM32——Flash闪存
  • 自动化运维,ansible综合测试练习题
  • Ceph分布式存储全解析:从了解到使用
  • 新能源研发,用新型实验记录本:ELN
  • 006-Dephi 表达式 选择语句 循环语句其他语句
  • k8s网络原理
  • Qt自定义列表项与QListWidget学习
  • PID控制技术深度剖析:从基础原理到高级应用(六)
  • LeetCode 刷题【66. 加一、67. 二进制求和】