python打乱数据集并确保图片与标签仍然对应
将图片和标签重命名为随机字符,适用于YOLO格式的数据集。
import os
import random
import string
import shutil
# 图片文件夹路径
image_dir = r'D:\YOLO\dataset\葡萄\GDS2\images\val'
# 标签文件夹路径
label_dir = r'D:\YOLO\dataset\葡萄\GDS2\labels\val'
# 获取图片和标签文件夹中的文件列表
image_files = os.listdir(image_dir)
label_files = os.listdir(label_dir)
# 创建打乱后的文件夹
shuffled_image_dir = r'D:\YOLO\dataset\葡萄\GDS3\images\val'
shuffled_label_dir = r'D:\YOLO\dataset\葡萄\GDS3\labels\val'
os.makedirs(shuffled_image_dir, exist_ok=True)
os.makedirs(shuffled_label_dir, exist_ok=True)
# 生成随机文件名函数
def generate_random_filename():
return ''.join(random.choices(string.ascii_letters + string.digits, k=10))
# 重命名并复制文件到新文件夹中,保持对应关系
for image_file, label_file in zip(image_files, label_files):
random_filename = generate_random_filename()
image_src = os.path.join(image_dir, image_file)
label_src = os.path.join(label_dir, label_file)
image_dst = os.path.join(shuffled_image_dir, random_filename + os.path.splitext(image_file)[1])
label_dst = os.path.join(shuffled_label_dir, random_filename + os.path.splitext(label_file)[1])
shutil.copyfile(image_src, image_dst)
shutil.copyfile(label_src, label_dst)
print("数据集已成功重命名为随机字符并保持对应关系。")
对应的路径修改为自己的就好。会保留原来的数据集,再生成一个新的打乱之后的数据集。
成功之后可到文件夹进行查看