一、原始数据集【未划分,包含全部图片、标签】
在yolo系列的根目录下(ultralytics_main)创建datasets文件夹,在datasets文件夹中放入coco128数据集,coco128文件夹下创建image文件夹:存放数据集的全部图片和标签文件。
二、数据集分割
在datasets文件夹下创建DatasetProduction.py文件,用来将images中的图片和标签进行分割,DatasetProduction.py代码如下:(!该代码一定放在datasets文件夹下,不要放在images里)
import os
import random
import shutil
def split_dataset(data_dir, train_val_test_dir, train_ratio, val_ratio, test_ratio):
# 创建目标文件夹
train_dir = os.path.join(train_val_test_dir, 'train')
val_dir = os.path.join(train_val_test_dir, 'val')
test_dir = os.path.join(train_val_test_dir, 'test')
os.makedirs(train_dir, exist_ok=True)
os.makedirs(val_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)
# 获取数据集中的所有文件
files = os.listdir(data_dir)
# 过滤掉非图片文件
image_files = [f for f in files if f.endswith('.jpg') or f.endswith('.png')]
# 随机打乱文件列表
random.shuffle(image_files)
# 计算切分数据集的索引
num_files = len(image_files)
num_train = int(num_files * train_ratio)
num_val = int(num_files * val_ratio)
num_test = num_files - num_train - num_val
# 分离训练集
train_files = image_files[:num_train]
for file in train_files:
src_image_path = os.path.join(data_dir, file)
src_label_path = os.path.join(data_dir, file.re