如何按比例划分数据集标签 - Python 代码示例
使用Python的os和shutil库可以实现将数据集标签划分出来的操作。以下是一个示例代码:
import os
import random
import shutil
# 数据集路径
dataset_path = 'dataset/'
# 标签文件夹路径
labels_path = os.path.join(dataset_path, 'labels')
# 划分比例
train_ratio = 0.8
val_ratio = 0.1
detect_ratio = 0.1
# 新建划分后的标签文件夹路径
train_labels_path = os.path.join(dataset_path, 'train_labels')
val_labels_path = os.path.join(dataset_path, 'val_labels')
detect_labels_path = os.path.join(dataset_path, 'detect_labels')
# 如果划分后的标签文件夹不存在,则创建
if not os.path.exists(train_labels_path):
os.makedirs(train_labels_path)
if not os.path.exists(val_labels_path):
os.makedirs(val_labels_path)
if not os.path.exists(detect_labels_path):
os.makedirs(detect_labels_path)
# 获取所有标签文件
label_files = os.listdir(labels_path)
# 随机打乱标签文件列表
random.shuffle(label_files)
# 计算划分数量
num_train = int(len(label_files) * train_ratio)
num_val = int(len(label_files) * val_ratio)
num_detect = int(len(label_files) * detect_ratio)
# 将标签文件按比例划分到相应的文件夹中
for i, label_file in enumerate(label_files):
if i < num_train:
shutil.copyfile(os.path.join(labels_path, label_file), os.path.join(train_labels_path, label_file))
elif i < num_train + num_val:
shutil.copyfile(os.path.join(labels_path, label_file), os.path.join(val_labels_path, label_file))
else:
shutil.copyfile(os.path.join(labels_path, label_file), os.path.join(detect_labels_path, label_file))
请注意,上述代码假设标签文件的格式为txt文件,并且文件名与对应的数据文件名一致。你可以根据实际情况进行修改。
原文地址: https://www.cveoy.top/t/topic/phXm 著作权归作者所有。请勿转载和采集!