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

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

来源:花匠小妙招 时间:2024-11-03 13:32

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

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

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

在这里插入图片描述

下载上图的145,1解压后可得到一个包含8189张.jpg格式的图片(放在jpg文件夹中)以及imagelabels.mat和setid.mat。数据集结构:
-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 123456 3.2 获取label

labels = scipy.io.loadmat('imagelabels.mat')#该地址为imagelabels.mat的相对地址 labels = np.array(labels['labels'][0]) - 1 print("labels:", labels) 123 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) 12345678910 3.4 把数据导进flower_dir

flower_dir = list() for img in os.listdir("..flower_datajpg"):#该地址为源数据图片的相对地址 flower_dir.append(os.path.join("..flower_datajpg", img)) flower_dir.sort() 123456 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)

12345678910111213141516171819202122 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)

123456789101112131415161718192021 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)

123456789101112131415161718192021

4、最终结果

在这里插入图片描述

相关知识

102类花卉分类数据集(已划分,有训练集、测试集、验证集标签)
5种 flowerdata数据集
pytorch——AlexNet——训练花分类数据集
细粒度分类数据集汇总
flower花朵识别数据集
细粒度分类常用数据集介绍及下载
棉花叶片病害虫害检测数据集
实验一:鸢尾花数据集分类
各种病虫害的高清数据集
植物病害识别数据集

网址: 数据集划分,Oxford Flower102花卉分类数据集,分为训练集、测试集、验证集 https://www.huajiangbk.com/newsview343175.html

所属分类:花卉
上一篇: [tensorflow]图片新类
下一篇: YOLOv11改进策略【小目标改

推荐分享