【yolov5】将标注好的数据集进行划分(附完整可运行python代码)

warning: 这篇文章距离上次修改已过204天,其中的内容可能已经有所变动。

在YOLOv5中,我们通常需要将数据集划分为训练集、验证集和测试集。以下是一个简单的Python脚本,用于将标注好的数据集进行划分。




import os
import random
import shutil
 
def split_dataset(data_dir, train_ratio, val_ratio, test_ratio):
    assert sum([train_ratio, val_ratio, test_ratio]) == 1  # 确保划分比例之和为1
    train_dir = os.path.join(data_dir, 'train')
    val_dir = os.path.join(data_dir, 'val')
    test_dir = os.path.join(data_dir, 'test')
    
    os.makedirs(train_dir, exist_ok=True)
    os.makedirs(val_dir, exist_ok=True)
    os.makedirs(test_dir, exist_ok=True)
    
    images = os.listdir(os.path.join(data_dir, 'images'))
    annotations = os.listdir(os.path.join(data_dir, 'labels'))
    
    for image, annotation in zip(images, annotations):
        random.seed(image)
        if random.random() < train_ratio:
            shutil.copy(os.path.join(data_dir, 'images', image), train_dir)
            shutil.copy(os.path.join(data_dir, 'labels', annotation), train_dir)
        elif random.random() < train_ratio + val_ratio:
            shutil.copy(os.path.join(data_dir, 'images', image), val_dir)
            shutil.copy(os.path.join(data_dir, 'labels', annotation), val_dir)
        else:
            shutil.copy(os.path.join(data_dir, 'images', image), test_dir)
            shutil.copy(os.path.join(data_dir, 'labels', annotation), test_dir)
 
if __name__ == '__main__':
    data_dir = 'path/to/your/dataset'  # 指定数据集目录
    split_dataset(data_dir, 0.8, 0.1, 0.1)  # 设置训练集:验证集:测试集的比例

请确保将 data_dir 变量设置为您的数据集的路径,并根据需要调整 train_ratioval_ratiotest_ratio 以反映您希望的数据集划分比例。这个脚本会将图像和对应的标注文件按照指定的比例复制到相应的 train, val, 和 test 目录中。

最后修改于:2024年08月08日 19:17

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日