-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsplit_train_val_test.py
More file actions
42 lines (33 loc) · 1.23 KB
/
split_train_val_test.py
File metadata and controls
42 lines (33 loc) · 1.23 KB
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
import os
import random
import shutil
data_path = "data/"
# path to destination folders
train_folder = os.path.join(data_path, 'train')
val_folder = os.path.join(data_path, 'eval')
test_folder = os.path.join(data_path, 'test')
# Define a list of image extensions
image_extensions = ['.jpg', '.jpeg', '.png', '.bmp']
# Create a list of image filenames in 'data_path'
imgs_list = [filename for filename in os.listdir(data_path) if os.path.splitext(filename)[-1] in image_extensions]
# Sets the random seed
random.seed(42)
# Shuffle the list of image filenames
random.shuffle(imgs_list)
# determine the number of images for each set
train_size = int(len(imgs_list) * 0.7)
val_size = int(len(imgs_list) * 0.15)
test_size = int(len(imgs_list) * 0.15)
# Create destination folders if they don't exist
for folder_path in [train_folder, val_folder, test_folder]:
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# Copy image files to destination folders
for i, f in enumerate(imgs_list):
if i < train_size:
dest_folder = train_folder
elif i < train_size + val_size:
dest_folder = val_folder
else:
dest_folder = test_folder
shutil.copy(os.path.join(data_path, f), os.path.join(dest_folder, f))