当前位置:   article > 正文

YOLOV5 数据集的划分的详细流程(超详细)_yolov5数据集划分

yolov5数据集划分

1 数据划分
标注好后的数据集分为两个文件夹,一个文件夹中放置图片另一个文件夹中放置了txt文件。将数据集按照一定的比例进行划分为训练集,测试集,验证集(train、test、val),下述的代码中我按照了 8:1:1 的比例去划分,若想根据自己的需要去划分数据集,修改下述代码中的
在这里插入图片描述
代码如下:

import os
import random
from shutil import copyfile
 
def split_dataset(image_folder, txt_folder, output_folder, split_ratio=(0.8, 0.1, 0.1)):
    # Ensure output folders exist
    for dataset in ['train', 'val', 'test']:
        if not os.path.exists(os.path.join(output_folder, dataset, 'images')):
            os.makedirs(os.path.join(output_folder, dataset, 'images'))
        if not os.path.exists(os.path.join(output_folder, dataset, 'txt')):
            os.makedirs(os.path.join(output_folder, dataset, 'txt'))
 
    # Get list of image files
    image_files = [f for f in os.listdir(image_folder) if f.endswith(('.jpg', '.jpeg', '.png'))]
    random.shuffle(image_files)
 
    num_images = len(image_files)
    num_train = int(split_ratio[0] * num_images)
    num_val = int(split_ratio[1] * num_images)
 
    train_images = image_files[:num_train]
    val_images = image_files[num_train:num_train + num_val]
    test_images = image_files[num_train + num_val:]
 
    # Copy images to respective folders
    for dataset, images_list in zip(['train', 'val', 'test'], [train_images, val_images, test_images]):
        for image_file in images_list:
            image_path = os.path.join(image_folder, image_file)
            copyfile(image_path, os.path.join(output_folder, dataset, 'images', image_file))
            txt_file = os.path.splitext(image_file)[0] + '.txt'
            txt_path = os.path.join(txt_folder, txt_file)
 
            # Copy corresponding txt file if exists
            if os.path.exists(txt_path):
                copyfile(txt_path, os.path.join(output_folder, dataset, 'txt', txt_file))
 
if __name__ == "__main__":
    image_folder_path = "D:\PycharmProjects\VOCdevkit\VOC2007\JPEGImages"
    txt_folder_path = "D:\PycharmProjects\VOCdevkit\VOC2007\YOLOLabels"
    output_dataset_path = "D:\PycharmProjects\VOCdevkit"
 
    split_dataset(image_folder_path, txt_folder_path, output_dataset_path)
  • 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

上面代码只需要改三个地方:

image_folder_path = "D:\PycharmProjects\VOCdevkit\VOC2007\JPEGImages"
  • 1
txt_folder_path = "D:\PycharmProjects\VOCdevkit\VOC2007\YOLOLabels"
  • 1
output_dataset_path = "D:\PycharmProjects\VOCdevkit"
  • 1

image_folder_path为你保存的图片的文件夹的路径

txt_folder_path 为你保存的txt文件夹的路径

output_dataset_path 为你保存的数据集的文件夹的路径,代码会在改路径下自动生成子文件夹,分别进行测试集,训练集,验证集的存储。
若出现错误可以参考这个网站

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/611038
推荐阅读
相关标签
  

闽ICP备14008679号