数据集划分,Oxford Flower102花卉分类数据集,分为训练集、测试集、验证集

2023-11-13

数据集划分,Oxford Flower102花卉分类数据集,分为训练集、测试集

Oxford Flower102数据集链接:https://www.robots.ox.ac.uk/~vgg/data/flowers/102/
参考:https://www.jianshu.com/p/71d4a8c1b68b

1、Flower102鲜花分类数据集概览及下载

在这里插入图片描述

  1. 下载上图的145,1解压后可得到一个包含8189张.jpg格式的图片(放在jpg文件夹中)以及imagelabels.mat和setid.mat。
  2. 数据集结构:
    -imagelabels.mat:总共有8189列,每列上的数字代表类别号。
    -setid.mat:
    trnid.mat:总共有1020列,每10列为一类花卉的图片,每列上的数字代表图片号。
    valid.mat:总共有1020列,每10列为一类花卉的图片,每列上的数字代表图片号。
    tstid.mat:总共有6149列,每一类花卉的列数不定,每列上的数字代表图片

2、准备工作

在项目中新建文件夹prepare_pic,再在prepare_pic下新建文件夹test、train、validation。之后会把数据分进这三个文件夹中。把jpg文件夹(包含8189张.jpg格式图片)、imagelabels.mat和setid.mat如图所示放好。data_prepare.ipynb用来数据集处理。
在这里插入图片描述

3、实现数据集划分

3.1 引入所需库

# encoding:utf-8
import scipy.io
import numpy as np
import os
from PIL import Image
import shutil

3.2 获取label

labels = scipy.io.loadmat('imagelabels.mat')#该地址为imagelabels.mat的相对地址
labels = np.array(labels['labels'][0]) - 1
print("labels:", labels)

3.3 用data split的setid,分出validation、train、test

setid = scipy.io.loadmat('setid.mat')#该地址为setid.mat的相对地址

validation = np.array(setid['valid'][0]) - 1
np.random.shuffle(validation)

train = np.array(setid['trnid'][0]) - 1
np.random.shuffle(train)

test = np.array(setid['tstid'][0]) - 1
np.random.shuffle(test)

3.4 把数据导进flower_dir

flower_dir = list()

for img in os.listdir("..\\flower_data\\jpg"):#该地址为源数据图片的相对地址         
    flower_dir.append(os.path.join("..\\flower_data\\jpg", img))

flower_dir.sort()

3.5 根据setid分出的train,把训练数据放进train文件夹

des_folder_train = "train"#该地址可为新建的训练数据集文件夹的相对地址
for tid in train:
    #打开图片并获取标签
    img = Image.open(flower_dir[tid])
    print(img)
    # print(flower_dir[tid])
    img = img.resize((256, 256), Image.ANTIALIAS)
    lable = labels[tid]
    # print(lable)
    path = flower_dir[tid]
    print("path:", path)
    base_path = os.path.basename(path)
    print("base_path:", base_path)
    classes = "c" + str(lable)
    class_path = os.path.join(des_folder_train, classes)
    # 判断结果
    if not os.path.exists(class_path):
        os.makedirs(class_path)
    print("class_path:", class_path)
    despath = os.path.join(class_path, base_path)
    print("despath:", despath)
    img.save(despath)

3.6 根据setid分出的validation,把验证数据放进validation文件夹

des_folder_validation = "validation"#该地址为新建的验证数据集文件夹的相对地址

for tid in validation:
    img = Image.open(flower_dir[tid])
    # print(flower_dir[tid])
    img = img.resize((256, 256), Image.ANTIALIAS)
    lable = labels[tid]
    # print(lable)
    path = flower_dir[tid]
    print("path:", path)
    base_path = os.path.basename(path)
    print("base_path:", base_path)
    classes = "c" + str(lable)
    class_path = os.path.join(des_folder_validation, classes)
    # 判断结果
    if not os.path.exists(class_path):
        os.makedirs(class_path)
    print("class_path:", class_path)
    despath = os.path.join(class_path, base_path)
    print("despath:", despath)
    img.save(despath)

3.7 根据setid分出的test,把测试数据放进test文件夹

des_folder_test = "test"#该地址为新建的测试数据集文件夹的绝对地址

for tid in test:
    img = Image.open(flower_dir[tid])
    # print(flower_dir[tid])
    img = img.resize((256, 256), Image.ANTIALIAS)
    lable = labels[tid]
    # print(lable)
    path = flower_dir[tid]
    print("path:", path)
    base_path = os.path.basename(path)
    print("base_path:", base_path)
    classes = "c" + str(lable)
    class_path = os.path.join(des_folder_test, classes)
    # 判断结果
    if not os.path.exists(class_path):
        os.makedirs(class_path)
    print("class_path:", class_path)
    despath = os.path.join(class_path, base_path)
    print("despath:", despath)
    img.save(despath)

4、最终结果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据集划分,Oxford Flower102花卉分类数据集,分为训练集、测试集、验证集 的相关文章

随机推荐

  • #bat 利用bat脚本添加/删除环境变量

    目录 添加到Path 从Path中删除 操作环境变量有风险 目标文件夹 current path bin 添加到Path echo path gt gt log txt echo off set pathStr path set mingw
  • 从周赛中学算法-2023上

    从周赛中学算法 2023上 https leetcode cn circle discuss v2RXSN 文章目录 从周赛中学算法 2023上 一 技巧类 2730 找到最长的半重复子字符串 https leetcode cn probl
  • SpringCloudAlibaba之Sentinel 自定义熔断逻辑处理

    Sentinel服务熔断环境搭建 服务熔断 应对微服务雪崩效应的一种链路保护机制 类似保险丝 需要完成Sentinel整合Ribbon openFeign 所以我们先要搭建环境 那么先从整合Ribbon开始 环境搭建 为了演示操作 所以在这
  • 手把手教你上手Apache DolphinScheduler机器学习工作流

    摘要 Apache DolphinScheduler 3 1 0发版后 添加了诸多AI组件 帮助用户在Apache DolphinScheduler上更方便地构建机器学习工作流 本文介绍如何建立DolphinScheduler与一些机器学习
  • Windows中如何查看日志(如查看远程登陆的IP地址)以及常用日志ID

    时间 2018 12 12 题目 Windows中如何查看日志 如查看远程登陆的IP地址 以及常用日志ID 概述 在Windows中可以使用 事件查看器 来查看相关日志 并结合日志ID进行日志筛选 常见的日志有 4634 帐户被注销 464
  • 将SSE指令转换为ARM NEON指令

    相关资料 sse指令集 sse指令解释 sse2neon仓库 可以在sse2neon h中寻找对应的neon指令转换方法 注意事项 将sse指令转换为arm neon指令往往很难起到优化作用 甚至可能产生负优化 因此该部分优化仅供参考 mm
  • 12.计算机网络---iptables防火墙管理工具

    文章目录 一 防火墙基础知识 1 1 防火墙是什么 1 2 iptables基础知识 1 3 netfilter和iptables的关系 1 4 新型防火墙工具 firewalld 二 iptables的四表五链 2 1 规则表 2 2 规
  • Python爬虫之使用MongoDB存储数据

    1 MongoDB的安装 MongoDB是一种非关系型数据库 MongoDB官网 选择你的系统对应的版本下载安装即可 2 MongoDB配置 a 在C盘或者D盘建一个文件夹如图mongodb b 安装成功后里面会有bin文件然后再文件夹里面
  • sudo配置文件/etc/sudoers深入介绍

    简介 sudo命令对应的用户权限授权配置文件为 etc sudoers 我们可以使用专用工具visudo来完成有关sudo的授权管理配置 使用visudo工具的好处是在添加规则之后 保存退出时会检查授权配置的语法 这一点很重要 曾经有人直接
  • 理解矩阵 from孟岩--流星小屋

    理解矩阵 from孟岩 前不久chensh出于不可告人的目的 要充当老师 教别人线性代数 于是我被揪住就线性代数中一些务虚性的问题与他讨论了几次 很明显 chensh觉得 要让自己在讲线性代数的时候不被那位强势的学生认为是神经病 还是比较难
  • vscode 用git 拉取代码,提示:在签出前,请清理存储库工作树。请问是什么问题,如何解决

    问题主要是git仓库上的代码和本地代码存在冲突 解决办法 1 新建一个文件夹重新从git拉取最新的代码 使用beyond compare对比合并自己修改的代码到新拉的代码里 提交 2 放弃本地修改 直接覆盖 git reset hard g
  • Hadoop分布式文件系统(HDFS)Java接口(HDFS Java API)详细版

    误用聪明 何若一生守拙 滥交朋友 不如终日读书 相关连接 HDFS相关知识 Hadoop分布式文件系统 HDFS 快速入门 Hadoop分布式文件系统 HDFS 知识梳理 超详细 Hadoop集群连接 Eclipse连接Hadoop集群 I
  • Vant UI使用iconfont自定义图标

    在使用Vant UI做h5页面时 不可避免的会使用到各种小图标 但是Vant 官方提供的图标是有限的 考虑到这种情况 vant也提供了一种方法去自定义图标 自定义图标 可能有些同学看到这里也是一头雾水 下面有详细的教程 iconfont 让
  • 栈的逆序

    题目描述 实现一个栈的逆序 但是只能用递归函数和这个栈本身的pop操作来实现 而不能自己申请另外的数据结构 给定一个整数数组A即为给定的栈 同时给定它的大小n 请返回逆序后的栈 测试用例 输入 4 3 2 1 4 输出 1 2 3 4 解题
  • 伯德图 matlab,Matlab/Simulink中bode图的画法

    在Matlab中 大多时候 我们都是用M语言 输入系统的传递函数后 用bode函数绘制bode图对系统进行频率分析 这样做 本人觉得效率远不如Simulink建模高 如何在Matlab Simulink中画bode图 以前也在网上查过些资料
  • 《数据库系统概论(第5版)》课后习题答案 王珊、萨师煊编著版 课后题解析 高等教育出版社出版 答案与解析第二篇 第1章 课后答案与解析

    数据库系统概论 第5版 课后答案 数据库系统概论 第5版 课后习答案 王珊 萨师煊编著版 课后题解析 高等教育出版社出版 答案与解析 数据库系统概论 第5版 王珊 萨师煊编著版 第二篇 第1章 课后答案与解析 完整答案在页面最下方 前言 第
  • unity3D期末作业 开车游戏

    unity3D期末作业 开车游戏 文末附下载链接 游戏如下动态图 点我下载 https download csdn net download weixin 43474701 75857348
  • 代码运行时 CPU占用率100%的解决方法

    原因 建立连接后启动新的线程 如果线程中有简单粗暴的不含阻塞的while 1 循环 会持续占用CPU 导致CPU占用率极高 解决 在while 1 的大循环中插入一句sleep 1 即阻塞1毫秒 java线程内则使用Thread sleep
  • LeetCode【541】反转字符串 II

    题目 给定一个字符串和一个整数 k 你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转 如果剩余少于 k 个字符 则将剩余的所有全部反转 如果有小于 2k 但大于或等于 k 个字符 则反转前 k 个字符 并将剩余的字符保持原样
  • 数据集划分,Oxford Flower102花卉分类数据集,分为训练集、测试集、验证集

    数据集划分 Oxford Flower102花卉分类数据集 分为训练集 测试集 Oxford Flower102数据集链接 https www robots ox ac uk vgg data flowers 102 参考 https ww