数据集划分:手动划分文件夹中的图片数据集为训练集、验证集和测试集

1.需求

手动划分文件夹中的图片数据集为训练集、验证集和测试集,即进行文件夹中的数据集(都是图片)进行划分。

2.步骤

  1. 使用文件处理库(如os)遍历读取文件夹中的图片文件。
  2. 将读取到的图片文件路径存储到列表中。
  3. 打乱图片文件列表。
  4. 根据指定的比例或数量计算划分的样本数量。
  5. 利用切片操作将图片文件列表分为训练集、验证集和测试集。
  6. 将划分后的图片文件移动到相应的文件夹中。

3.代码实现

import os
import random
import shutil

def split_dataset_folder(dataset_folder, output_folder, train_ratio, val_ratio, test_ratio):
    # 遍历读取文件夹中的图片文件
    image_files = []
    for root, dirs, files in os.walk(dataset_folder):
        for file in files:
            if file.endswith(".jpg") or file.endswith(".png"):
                image_files.append(os.path.join(root, file))
    
    # 打乱图片文件列表
    random.shuffle(image_files)
    
    # 计算划分的样本数量
    dataset_size = len(image_files)
    train_size = int(train_ratio * dataset_size)
    val_size = int(val_ratio * dataset_size)
    test_size = int(test_ratio * dataset_size)
    
    # 划分图片文件列表
    train_files = image_files[:train_size]
    val_files = image_files[train_size:train_size+val_size]
    test_files = image_files[train_size+val_size:train_size+val_size+test_size]
    
    # 创建输出文件夹
    os.makedirs(output_folder, exist_ok=True)
    
    # 移动训练集图片文件
    train_output_folder = os.path.join(output_folder, "train")
    os.makedirs(train_output_folder, exist_ok=True)
    for file in train_files:
        shutil.move(file, train_output_folder)
    
    # 移动验证集图片文件
    val_output_folder = os.path.join(output_folder, "validation")
    os.makedirs(val_output_folder, exist_ok=True)
    for file in val_files:
        shutil.move(file, val_output_folder)
    
    # 移动测试集图片文件
    test_output_folder = os.path.join(output_folder, "test")
    os.makedirs(test_output_folder, exist_ok=True)
    for file in test_files:
        shutil.move(file, test_output_folder)

# 示例用法
dataset_folder = "path/to/your/dataset_folder"  # 数据集文件夹路径
output_folder = "path/to/save/split_dataset"  # 划分后的数据集存储路径
train_ratio = 0.7  # 训练集所占比例
val_ratio = 0.2  # 验证集所占比例
test_ratio = 0.1  # 测试集所占比例

split_dataset_folder(dataset_folder, output_folder, train_ratio, val_ratio, test_ratio)

4.注意事项

ataset_folder表示原始图片数据集所在的文件夹路径,output_folder表示划分后的数据集存储的文件夹路径,train_ratio、val_ratio和test_ratio表示训练集、验证集和测试集所占比例。代码将会遍历读取文件夹中的图片文件,打乱后按照比例划分为训练集、验证集和测试集,并将划分后的图片文件移动到相应的文件夹中。

实现效果

在这里插入图片描述
经过查看,文件夹里面的图像符合比例数量要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/118691.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

后端工程化 | SpringBoot 知识点

文章目录 [SpringBoot] 后端工程化1 需求2 开发流程3 RequestController 类(操作类)3.1 简单参数(形参名和请求参数名一致)3.2 简单参数(形参名和请求参数名不一致)3.3 复杂实体参数3.4 数组参数3.5 集合参…

十大排序算法C++实现

分类 复杂度 排序稳定性定义: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,A1A2,且A1在A2之前,而在排序后的序…

【电路笔记】-串联RLC电路分析

串联RLC电路分析 文章目录 串联RLC电路分析1、概述2、瞬态响应3、AC响应4、RCL和CLR配置5、结论 电阻器 、电感器 (L) 和电容器 © 是电子器件中的三个基本无源元件。 它们的属性和行为已在交流电阻、交流电感和交流电容文章中详细介绍。 在本文中,我们将重点讨…

2010年408计网

下列选项中, 不属于网络体系结构所描述的内容是(C)A. 网络的层次B. 每层使用的协议C. 协议的内部实现细节D. 每层必须完成的功能 本题考查网络体系结构的相关概念 再来看当今世界最大的互联网,也就是因特网。它所采用的TCP/IP 4层网络体系结…

Django初窥门径-项目初始化

环境准备 切换pypi源 运行下面的脚本将pypi源切换为阿里云镜像,避免安装python库的过程中出现网络问题 #!/bin/bash# 定义配置内容 config_content"[global] index-url http://mirrors.aliyun.com/pypi/simple/[install] trusted-hostmirrors.aliyun.com &…

机组 硬件

典型的冯诺伊曼计算机是以运算器为中心 现代的计算机已转化为以存储器为中心 运算器:完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内存储器:存放数据和程序控制器:控制、指挥程序和数据的输入、运行以及处理运算结果输…

react-app-env.d.ts是什么?

react-app-env.d.ts这个文件是使用CRA脚手架生成react项目时自动生成的,在平时的开发过程中看到这个文件就会感觉很疑惑,出于好奇心,在网上查找资料,得出下文 前置知识 这个是一个类型声明文件 它的内容很短,就一行…

成集云 | 电商平台、ERP、WMS集成 | 解决方案

电商平台ERPWMS 方案介绍 电商平台即是一个为企业或个人提供网上交易洽谈的平台。企业电子商务平台是建立在Internet网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境;是协调、整合信息流、货物流、资金流有序、关联、高效流动的重要场所。企业、商家…

线性表(顺序表,单链表,双链表,循环链表,静态链表)

目录 1.线性表的定义1.几个重要的概念2.逻辑结构 2.线性表的基本操作3.顺序表(线性表的顺序存储)1.静态分配2.动态分配3.顺序表的特点4.顺序表的基本操作1.插入2.删除3.查找1.按位查找2.按值查找 4.链表(线性表的链式存储)1.单链表…

项目文章 | 总石油烃-重金属污染与土壤微生态系统:细菌多样性、组装和生态功能研究

大家好,这里是专注表观组学十余年,领跑多组许科研服务的易基因。 2023年9月30日,中南大学张杜博士为第一作者、李骞教授为通讯作者在《Chemosphere》杂志上发表题为“Effects of single and combined contamination of total petroleum hydr…

Single Image Haze Removal Using Dark Channel Prior(暗通道先验)

去雾算法都会依赖于很强的先验以及假设,并结合相应的物理模型,完成去雾过程。本文作者何凯明及其团队通过大量的无雾图像和有雾图像,归纳总结出无雾图像在其对应的暗通道图像上具有极低的强度值(趋近于0),并…

HDD最后的冲刺:大容量硬盘的奋力一搏

1.引言 在上一篇文章(微软Azure云数据中心工作负载分享:SSD与HDD,何去何从?)中,我们提到在应对SSD QLC/PLC大容量的挑战中,HDD也是在不断的努力,推出HAMR,SMR等新介质。…

【验证码系列】Google验证码从数据训练到机器自动识别算法构建

文章目录 1. 写在前面2. CSCI级设计决策2.1. Google验证码突防关联2.2. Google验证码突防行为设计决策 3. Google验证码突防体系结构设计3.1. Google验证码突防部件3.1.2. Google验证码突防组成 3.2. Google验证码突防软件3.2.1. Google验证码突防软件体系结构3.2.2. Google验证…

信道编码译码及MATLAB仿真

文章目录 前言一、什么是信道编码?二、信道编码的基本逻辑—冗余数据1、奇偶检验码2、重复码 三、编码率四、4G 和 5G 的信道编码1、卷积码2、维特比译码(Viterbi)—— 概率译码3、LTE 的咬尾卷积码4、LTE 的 turbo 码 五、MATLAB 仿真1、plo…

Amazon Fargate使用Seekable OCI 实现更快的容器启动速度

前言 虽然在部署和扩展应用程序时,使用容器进行开发的方式已日趋流行,但仍有一些领域可以改进。扩展容器化应用程序的主要问题之一是启动时间长,尤其是在纵向扩展期间,需要添加较新的实例。此问题可能会对客户体验(例如…

EfficientDet论文讲解

目录 EfficientDet 0、摘要 1、整体架构 1.1 BackBone:EfficientNet-B0 1.2 Neck:BiFPN特征加强提取网络 1.3 Head检测头 1.4 compound scaling 2、anchors先验框 3、loss组成 4、论文理解 5、参考资料 EfficientDet 影响网络的性能(或者说规…

Android Gldie复用只取之前decode过的缓存resource,Kotlin

Android Gldie复用只取之前decode过的缓存resource,Kotlin import android.graphics.Bitmap import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.life…

【Linux】服务器与磁盘补充知识,硬raid操作指南

服务器硬件 cpu 主板 内存 硬盘 网卡 电源 raid卡 风扇 远程管理卡 1.硬盘尺寸: 目前生产环境中主流的两种类型硬盘 3.5寸 和2.5寸硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器 但是3.5寸没法转换成2.5寸 2.如何在服务器上制作raid 华为服务器为例子做…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(一)

熟悉项目环境 1. 苍穹外卖项目介绍1.1 项目介绍1.2 技术选型 2. 开发环境搭建2.1 前端环境2.2 后端环境搭建2.3 Git版本控制2.4 nginx反向代理和负载均衡 3.登录功能4. Swagger4.1 介绍4.2 使用步骤4.3 常用注解 1. 苍穹外卖项目介绍 1.1 项目介绍 苍穹外卖是专门为餐饮企业&…

JAVA前端开发介绍

以一个网站为例包括网站设计、前端开发、程序开发等。网站设计就是网站的外观,平面的东西。程序开发也好理解就是功能实现。而前端开发,简单来说,就是把平面效果图转换成网页,把静态转换成动态。它的工作包括了:切图、写样式、做鼠…