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 43 44 45
| import os import random import shutil
source_image_dir = "images" source_label_dir = "labels"
train_image_dir = "train/images" train_label_dir = "train/labels" val_image_dir = "val/images" val_label_dir = "val/labels"
os.makedirs(train_image_dir, exist_ok=True) os.makedirs(train_label_dir, exist_ok=True) os.makedirs(val_image_dir, exist_ok=True) os.makedirs(val_label_dir, exist_ok=True)
image_files = os.listdir(source_image_dir)
random.shuffle(image_files)
split_index = int(0.8 * len(image_files))
train_files = image_files[:split_index] val_files = image_files[split_index:]
def move_files(files, source_image_dir, source_label_dir, target_image_dir, target_label_dir): for file in files: image_path = os.path.join(source_image_dir, file) label_path = os.path.join(source_label_dir, os.path.splitext(file)[0] + ".txt") shutil.move(image_path, os.path.join(target_image_dir, file)) shutil.move(label_path, os.path.join(target_label_dir, os.path.splitext(file)[0] + ".txt"))
move_files(train_files, source_image_dir, source_label_dir, train_image_dir, train_label_dir) move_files(val_files, source_image_dir, source_label_dir, val_image_dir, val_label_dir)
print("数据集划分完成!")
|