-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetDataset.py
67 lines (53 loc) · 2.57 KB
/
getDataset.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
from os import listdir, makedirs
from os.path import isfile, isdir, join
from shutil import copyfile
from scandir import scandir
import random as rnd
Modes = ["train", "validation"]
directory_dataset = []
dataset_reviewed = []
if not isdir("Verificato/"):
makedirs("Verificato/")
if not isdir("Dataset/"):
makedirs("Dataset/")
for directory in scandir("Verificato/"):
if isdir("Verificato/" + directory.name) and "Verificato" in directory.name:
dataset_reviewed.append(directory.name.split("_")[1])
for directory in scandir("Dataset/"):
if isdir("Dataset/" + directory.name) and "Dataset" in directory.name and directory.name.split("_")[1] not in dataset_reviewed:
directory_dataset.append(directory.name.split("_")[1])
for dirs in directory_dataset:
Dataset_origine = "Dataset/Dataset_" + dirs + "/"
Dataset_destinazione = "Verificato/Verificato_" + dirs + "/"
# Carico le classi dalle cartelle nel Dataset_origine
classes = []
for entry in scandir(Dataset_origine):
classes.append(entry.name)
# Creo le directory per Dataset_destinazione image e annotation
for current_mode in Modes:
directory_image = Dataset_destinazione + current_mode + '/image/'
directory_annotation = Dataset_destinazione + current_mode + '/annotation/'
if not isdir(directory_image):
makedirs(directory_image)
if not isdir(directory_annotation):
makedirs(directory_annotation)
# Copio i file che sono presenti in tutte le review in image e annotation
for current_class in classes:
path = Dataset_origine + current_class + "/review/"
nomi = [f for f in listdir(path) if isfile(join(path, f))]
rnd.seed(80)
rnd.shuffle(nomi)
train = nomi[:int(len(nomi) * 0.8)]
validation = nomi[int(len(nomi) * 0.8):]
for photo in train:
id = photo[:16]
copyfile(Dataset_origine + current_class + "/annotation/" + id + ".xml",
Dataset_destinazione + "train/annotation/" + id + ".xml")
copyfile(Dataset_origine + current_class + "/image/" + id + ".jpg",
Dataset_destinazione + "train/image/" + id + ".jpg")
for photo in validation:
id = photo[:16]
copyfile(Dataset_origine + current_class + "/annotation/" + id + ".xml",
Dataset_destinazione + "validation/annotation/" + id + ".xml")
copyfile(Dataset_origine + current_class + "/image/" + id + ".jpg",
Dataset_destinazione + "validation/image/" + id + ".jpg")