-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpreprocess.py
More file actions
74 lines (58 loc) · 1.93 KB
/
preprocess.py
File metadata and controls
74 lines (58 loc) · 1.93 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""Preprocess image files from a source collection for Keras CNN training
Colin Dietrich 2019
"""
import os
import shutil
import config
def make_dir(directory):
if not os.path.isdir(directory):
os.mkdir(directory)
def build_folder_structure():
# folders for balanced images for training, validation and test
if not os.path.isdir(config.input_dir):
os.mkdir(config.input_dir)
for d in [config.train_dir, config.validation_dir, config.test_dir]:
make_dir(d)
make_dir(d + os.path.sep + 'CP')
make_dir(d + os.path.sep + 'UP')
# model checkpoints, output and weights
if not os.path.isdir(config.output_dir):
os.mkdir(config.output_dir)
def split_images(n0, n1, src, dst, verbose=False):
"""Split training data into two directories for
Keras flowfromdirectory method
Parameters
----------
n0 : int, index of first image in dir
n1 : int, index of last image in dir
src : source folder
dst : destination folder
verbose : bool, print debug statements
"""
files = os.listdir(src)
if verbose:
print(len(files), type(files))
for file in files[n0:n1]:
shutil.copyfile(src + file, dst + file)
def apply_splitter(source_dir=config.source_dir,
verbose=False):
"""Split data according to splitter definition
Parameters
----------
source_dir :
verbose : bool, print debug statements
"""
for n in config.splitter:
if verbose:
print(n[0])
print(n[1])
print(n[2], n[3])
for c in config.classes:
split_images(n[2], n[3],
source_dir + os.path.sep + c + os.path.sep,
n[1] + os.path.sep + c + os.path.sep,
verbose=verbose)
if __name__ == "__main__":
build_folder_structure()
apply_splitter()
print('Done creating folders and splitting image files!')