分割训练集和验证集

本文介绍了一个Python函数,用于从给定的图片和标签文件夹中随机选择一定比例的文件,并将它们移动到新的训练集和验证集文件夹中,以便在机器学习项目中进行数据预处理。
摘要由CSDN通过智能技术生成

7:3分割训练集和验证集

import os
import shutil
import random

def move_random_files_with_labels(img_folder, label_folder, output_img_folder, output_label_folder, percentage=0.3):
    """
    随机移动指定百分比的图片及其对应的标签文件到新文件夹。
    :param img_folder: 包含原始图片的文件夹路径
    :param label_folder: 包含标签文件的文件夹路径
    :param output_img_folder: 保存剪切图片的目标文件夹路径
    :param output_label_folder: 保存剪切标签文件的目标文件夹路径
    :param percentage: 要移动的文件占总文件的百分比
    """
    # 确保输出文件夹存在,不存在则创建
    os.makedirs(output_img_folder, exist_ok=True)
    os.makedirs(output_label_folder, exist_ok=True)

    # 获取所有jpg文件
    all_images = [f for f in os.listdir(img_folder) if f.endswith('.jpg')]
    # 随机选择指定百分比的图片
    num_files_to_move = int(len(all_images) * percentage)
    selected_files = random.sample(all_images, num_files_to_move)

    # 移动选定的图片和对应的标签文件
    for img_filename in selected_files:
        base_name = os.path.splitext(img_filename)[0]  # 去除扩展名,获取基本文件名
        img_path = os.path.join(img_folder, img_filename)
        label_path = os.path.join(label_folder, base_name + '.txt')

        # 移动图片
        shutil.move(img_path, os.path.join(output_img_folder, img_filename))
        # 移动标签文件
        shutil.move(label_path, os.path.join(output_label_folder, base_name + '.txt'))
        
        print(f'Moved {img_filename} and {base_name}.txt')

# 使用函数
source_img_folder = 'path_to_your_images'
source_label_folder = 'path_to_your_labels'
destination_img_folder = 'path_to_destination_images'
destination_label_folder = 'path_to_destination_labels'
move_random_files_with_labels(source_img_folder, source_label_folder, destination_img_folder, destination_label_folder)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值