-
Notifications
You must be signed in to change notification settings - Fork 0
/
functions.py
43 lines (28 loc) · 1.38 KB
/
functions.py
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
def create_train_valid_dirs(doggo_types, data_dir):
"""
:param doggo_types: A list holding all the subdirectories to be made for each breed
:param data_dir: The directory that the images are held in
:return: Nothing. Creates train/validation directories for each breed
"""
import os
from os.path import join
import pandas as pd
from shutil import copyfile
os.chdir(join(data_dir, 'train'))
for doggo in doggo_types:
subset = df_train.loc[df_train['breed'] == doggo, :]
print('Creating folder for %s' % (doggo))
print('Number of %s: %s' % (doggo, subset.shape[0]))
train_files = subset['file'].sample(frac=0.7)
valid_files = subset['file'][~subset['file'].isin(train_files)]
train_folder_path = data_dir + '/' + 'train/' + doggo
valid_folder_path = data_dir + '/' + 'validation/' + doggo
for f_path in [train_folder_path, valid_folder_path]:
if not os.path.exists(f_path):
os.makedirs(f_path)
print('Moving images to train directory..')
for i, file in enumerate(train_files):
copyfile(file, join(train_folder_path, doggo + '_' + str(i) + '.jpg'))
print('Moving images to validation directory..')
for i, file in enumerate(valid_files):
copyfile(file, join(valid_folder_path, doggo + '_' + str(i) + '.jpg'))