图片数据集划分为训练集、测试集、验证集
原博文:link.
# -*- coding: utf-8 -*-
"""
将数据集划分为训练集,验证集,测试集
"""import os
import random
import shutil
# 创建保存图像的文件夹
def makedir(new_dir):if not os.path.exists(new_dir):os.makedirs(new_dir)
random.seed(1) # 随机种子# 1.确定原图像数据集路径
dataset_dir = "D:/test2021/train_val_test0811/" ##原始数据集路径
# 2.确定数据集划分后保存的路径
split_dir = "D:/test2021/after0811/" ##划分后保存路径
train_dir = os.path.join(split_dir, "train")
valid_dir = os.path.join(split_dir, "val")
test_dir = os.path.join(split_dir, "test")
# 3.确定将数据集划分为训练集,验证集,测试集的比例
train_pct = 0.9
valid_pct = 0.1
test_pct = 0
# 4.划分
for root, dirs, files in os.walk(dataset_dir):for sub_dir in dirs: # 遍历0,1,2,3,4,5...9文件夹imgs = os.listdir(os.path.join(root, sub_dir)) # 展示目标文件夹下所有的文件名imgs = list(filter(lambda x: x.endswith('.png'), imgs)) # 取到所有以.png结尾的文件,如果改了图片格式,这里需要修改random.shuffle(imgs) # 乱序图片路径img_count = len(imgs) # 计算图片数量train_point = int(img_count * train_pct) # 0:train_pctvalid_point = int(img_count * (train_pct + valid_pct)) # train_pct:valid_pctfor i in range(img_count):if i < train_point: # 保存0-train_point的图片到训练集out_dir = os.path.join(train_dir, sub_dir)elif i < valid_point: # 保存train_point-valid_point的图片到验证集out_dir = os.path.join(valid_dir, sub_dir)else: # 保存valid_point-结束的图片到测试集out_dir = os.path.join(test_dir, sub_dir)makedir(out_dir) # 创建文件夹target_path = os.path.join(out_dir, imgs[i]) # 指定目标保存路径src_path = os.path.join(dataset_dir, sub_dir, imgs[i]) #指定目标原图像路径shutil.copy(src_path, target_path) # 复制图片print('Class:{}, train:{}, valid:{}, test:{}'.format(sub_dir, train_point, valid_point-train_point,img_count-valid_point))
结果截图:
Jupyter Notebook 程序执行结果:
图片数据集划分为训练集、测试集、验证集相关推荐
- 深度学习之数据处理——如何将图片和标签打乱并划分为训练集和测试集
深度学习之数据处理--如何将图片和标签打乱并划分为训练集和测试集 记录我的第一篇CSDN博客 最近我在网上找到Office31数据集,这个数据集中包含了三个子数据集,分别为:Amazon.dslr.w ...
- 【目标检测】将目标检测数据集划分为训练集、验证集与测试集 python代码
文件结构 数据集data_dir文件结构: ├── data_dir: 数据集图片所在目录(可包含其他合适文件,本脚本只对图片进行统计)├── 1.jpg: 图片1├── 2.jpg: 图片2└── ...
- ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略
ML之FE:数据处理-特征工程之数据集划分成训练集.验证集.测试集三部分简介.代码实现.案例应用之详细攻略 目录 数据集划分成训练.验证.测试三种数据的简介 1.训练集.验证集的作用 2.验证数据集 ...
- 第5章【思考与练习2】将数据集划分为训练集与测试集,查看决策树分类器的性能。 将例5-3中的分类器保存到文件中,然后重新加载预测给出的新数据。
P101思考与练习2 1.将数据集划分为训练集与测试集,查看决策树分类器的性能. #1. #划分为测试集与训练集 import pandas as pd data = pd.read_csv('dat ...
- YOLOv5将自己数据集划分为训练集、验证集和测试集
在用自己数据集跑YOLOv5代码时候,需要将自己的VOC标签格式数据集转为yolo格式. 首先是要获取自己的数据集,然后再对数据集进行标注,保存为VOC(xml格式).然后再把标注完的数据集划分为训练 ...
- python制作训练集_利用Tensorflow简单实现VGGNet,从数据集制作到训练完成测试
VGGNet_TF 利用Tensorflow简单实现VGGNet,从数据集制作到训练完成测试 参考:<Tensorflow实战><Tensorflow 实战Google深度学习框架& ...
- 【YOLOv5 数据集划分】训练和验证、训练验证和测试(train、val)(train、val、test)
[YOLOv5 数据集划分]训练和验证.训练验证和测试(train.val),(train.val.test) ①在已有测试集的情况下划分训练集和验证集 # 将图片和标注数据按比例切分为 训练集和测试 ...
- 训练集(train set) 验证集(validation set) 测试集(test set)
在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train set) 验证集(validation set) 测试集(test set). http://blog.si ...
- [机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)
在有监督(supervise)的机器学习中,数据集常被分成2~3个即: 训练集(train set) 验证集(validation set) 测试集(test set) 一般需要将样本分成独立的三部分 ...
最新文章
- Java 匿名类也能使用构造函数
- SQL Server 审核(Audit)-- 审核组件
- 如果你不喜欢让大人说你祝酒祝福
- 无极绳连续牵引绞车_可视化无极绳绞车保护控制装置
- java 开发规范 下载_java后端开发规范 PDF 下载
- fortran95 文件读写等操作的字段参数总结
- 基于Linux下的Nand (Nor) Flash读写速度测试
- bilibilidown 生成证书_哔哩哔哩(bilibili)助手
- 怎么调用计算机任务管理器,任务管理器怎么打开
- java正则表达式 手机_Java正则表达式
- 一、一个月有多少天(Biweekly4)
- 什么是线程安全 什么是线程不安全
- html制作简单框架网页 实现自己的音乐驿站 操作步骤及源文件下载 (播放功能限mp3文件)...
- Linux上wget: 无法解析主机地址
- [转]个性化推荐--能否造就下一代霸主?
- 汇川AM401非标准协议通讯socket_client
- java sca_SCA java编码入门
- 机密,爬虫技术挣钱方法来了
- 修改本地连接IP地址的脚本包括修改备用dns的方法(批处理命令)
- 线性粘弹性UMATabaqus子程序&VUMAT子程序实例源码Fortran/DISP/材料损伤弹塑性