-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRandomlySelectFile_3types.py
75 lines (53 loc) · 2.29 KB
/
RandomlySelectFile_3types.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
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
#ランダムにallDataフォルダのファイルを
#TRAIN_DIR、TEST_DIR、VAL_DIRディレクトリに
#RATIO_TRAIN(60)、RATIO_TEST(20)、100-RATIO_TRAIN-RATIO_TESTの率で振り分ける
import os
import sys
import numpy.random as rd
ALL_DATA_DIR = "allData"
TRAIN_DIR = "selected_data/train"
TEST_DIR = "selected_data/test"
VAL_DIR = "selected_data/val"
IMAGE_FILE_EXT = "JPG"
JSON_FILE_EXT = "json"
RATIO_TRAIN = 60
RATIO_TEST = 20
SHUFFLE_TIMES = 10
CURR_PATH = "./"
#ディレクトの存在確認
if os.path.isdir(CURR_PATH + TRAIN_DIR):
print(TRAIN_DIR + "は既に存在しますので、処理せず終了しました")
sys.exit(1)
if os.path.isdir(CURR_PATH + TEST_DIR):
print(TEST_DIR +"は既に存在しますので、処理せず終了しました")
sys.exit(1)
if os.path.isdir(CURR_PATH + VAL_DIR):
print(VAL_DIR + "は既に存在しますので、処理せず終了しました")
sys.exit(1)
#ディレクトリ作成
os.makedirs(CURR_PATH + TRAIN_DIR)
os.makedirs(CURR_PATH + TEST_DIR)
os.makedirs(CURR_PATH + VAL_DIR)
#allDataフォルダのファイル一覧を取得
files = os.listdir(CURR_PATH + ALL_DATA_DIR)
file_name_list = [f for f in files if f[0-len(IMAGE_FILE_EXT):] == IMAGE_FILE_EXT]
num_of_files = len(file_name_list)
num_of_train_files = num_of_files * RATIO_TRAIN // 100
num_of_test_files = num_of_files * RATIO_TEST // 100
num_of_val_files = num_of_files - num_of_train_files - num_of_test_files
fold_list = [None] * num_of_files
for i in range(num_of_train_files):
fold_list[i] = TRAIN_DIR
for i in range(num_of_train_files, num_of_train_files + num_of_test_files):
fold_list[i] = TEST_DIR
for i in range(num_of_train_files + num_of_test_files, num_of_files):
fold_list[i] = VAL_DIR
for _ in range(SHUFFLE_TIMES):
rd.shuffle(fold_list)
for i in range(num_of_files):
file_path_before = CURR_PATH + ALL_DATA_DIR + "/" + file_name_list[i]
file_path_after = CURR_PATH + fold_list[i] + "/" + file_name_list[i]
os.replace(file_path_before, file_path_after)
file_path_before = CURR_PATH + ALL_DATA_DIR + "/" + file_name_list[i].rstrip(IMAGE_FILE_EXT) + JSON_FILE_EXT
file_path_after = CURR_PATH + fold_list[i] + "/" + file_name_list[i].rstrip(IMAGE_FILE_EXT) + JSON_FILE_EXT
os.replace(file_path_before, file_path_after)