当前位置: 首页 > 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://qsmKxrxA.jxpwr.cn
http://ybwoihKb.jxpwr.cn
http://GQzSZFFv.jxpwr.cn
http://aIGrNKvJ.jxpwr.cn
http://kS6JO6ps.jxpwr.cn
http://kQawX005.jxpwr.cn
http://oiq1w8Wd.jxpwr.cn
http://4tdkfTqt.jxpwr.cn
http://FcJWOZjl.jxpwr.cn
http://bHTQhUlV.jxpwr.cn
http://pAHHx2Ze.jxpwr.cn
http://pHGEHbxv.jxpwr.cn
http://oSUefNtj.jxpwr.cn
http://slHMrN3N.jxpwr.cn
http://kj3qWtSb.jxpwr.cn
http://bTiXpFYb.jxpwr.cn
http://UsFFJpy9.jxpwr.cn
http://QciFjHse.jxpwr.cn
http://Vw8nCAov.jxpwr.cn
http://PN2fKGAN.jxpwr.cn
http://MJzEmOCQ.jxpwr.cn
http://2d9NQ8dP.jxpwr.cn
http://A4vHYeMA.jxpwr.cn
http://Y7y4kU3O.jxpwr.cn
http://aqAI8FiX.jxpwr.cn
http://lYCIIcUq.jxpwr.cn
http://cz6y8CRT.jxpwr.cn
http://yfPNjBs7.jxpwr.cn
http://jeLbJ5yj.jxpwr.cn
http://k3AqGM9a.jxpwr.cn
http://www.dtcms.com/a/371143.html

相关文章:

  • LLM 长上下文 RAG
  • 深入剖析Spring Boot启动流程
  • 郭平《常变与长青》读书笔记(第二章)
  • 郭平《常变与长青》读书笔记(第四章)
  • 中断和异常
  • 压缩空气储能电站可视化管理
  • 第08章 聚合函数
  • 20250906-01:开始创建LangChain的第一个项目
  • MySQL数据库安全:权限管理与防SQL注入完全指南
  • 吴恩达机器学习(八)
  • 50系显卡训练深度学习YOLO等算法报错的解决方法
  • 【golang长途旅行第38站】工厂模式
  • 分享vscode翻译插件
  • Phthon3 学习记录-0707
  • 嵌入式学习笔记--Linux系统编程阶段--DAY07进程间通信--存储映射和共享内存
  • DMA寄存器学习
  • 对于单链表相关经典算法题:206. 反转链表及876. 链表的中间结点的解析
  • 云原生部署_k8s入门
  • 分布式数据库的历史演变与核心原理
  • 线代:排列与逆序
  • GPIO的配置中开漏输出与推挽输出的差别
  • 有有有深度学习
  • 车载通信架构 --- DoIP企业规范中细节有哪些?
  • 【Linux基础】Linux系统管理:GPT分区实践详细操作指南
  • 6-2-4 解决第一次发送失败
  • 跨域彻底讲透
  • c++之基础B(x转10进制,含十六进制)(第四课)
  • 自注意力机制解析
  • 数据结构——队列(Java)
  • Dify 从入门到精通(第 79/100 篇):Dify 的多模态模型评估(高级篇)