【深度学习小工具】手动划分训练集与验证集

前言

在研究深度学习时,经常会遇到一些未划分验证集的数据集,如果用训练集进行网络的验证,有可能会掩盖模型过拟合的现象,结果无说服力。

代码

import os
import shutil
import random

# train_ratio代表分割后训练集占原数据集的比率
def split_data(image_folder, label_folder, train_ratio=0.8):
    # 获取所有图片和标签文件的路径列表
    image_files = os.listdir(image_folder)
    label_files = os.listdir(label_folder)

    # 随机打乱文件列表
    random.shuffle(image_files)

    # 计算划分的训练集和验证集的边界索引
    split_index = int(len(image_files) * train_ratio)

    # 分割训练集和验证集
    train_images = image_files[:split_index]
    val_images = image_files[split_index:]

    # 创建训练集和验证集文件夹
    train_folder = 'train_data'
    val_folder = 'val_data'
    os.makedirs(train_folder, exist_ok=True)
    os.makedirs(val_folder, exist_ok=True)

    # 将训练集的图片和标签移动到训练集文件夹
    for image_file in train_images:
        shutil.move(os.path.join(image_folder, image_file), os.path.join(train_folder, image_file))
        corresponding_label = image_file.split('.')[0] + '.txt'
        shutil.move(os.path.join(label_folder, corresponding_label), os.path.join(train_folder, corresponding_label))

    # 将验证集的图片和标签移动到验证集文件夹
    for image_file in val_images:
        shutil.move(os.path.join(image_folder, image_file), os.path.join(val_folder, image_file))
        corresponding_label = image_file.split('.')[0] + '.txt'
        shutil.move(os.path.join(label_folder, corresponding_label), os.path.join(val_folder, corresponding_label))

# 用法示例
image_folder_path = 'path/to/your/image_folder'
label_folder_path = 'path/to/your/label_folder'
split_data(image_folder_path, label_folder_path, train_ratio=0.8)

使用时只需按需调整train_ratio的数字即可实现训练集与验证集的划分。
划分后的训练集(验证集)的图片和标签在同一个文件夹,可以在终端用命令快速移动到所需的文件夹,以ubuntu为例:

mv *.txt /path/
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值