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


    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    4.注意事项

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

    实现效果

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

  • 相关阅读:
    微服务开发平台 Spring Cloud Blade 部署实践
    【企业数字化】企业数字化技术应用5大技术趋势
    elasticsearch-.yml(中文配置详解)
    markdown语法整理
    【C语言】.c源文件从编译到链接生成可.exe执行程序的过程
    后端接口返回base64编码图片前端如何接收(图形验证码)
    Centos7下glusterfs分布式存储集群安装与使用测试
    在微服务架构架构中父工程中的`<dependencyManagement>`和 `<dependencies>`的区别
    docker基础命令操作---镜像操作
    Linux下通过bonding技术实现网络负载均衡
  • 原文地址:https://blog.csdn.net/weixin_46371813/article/details/134257423