-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstart.py
executable file
·119 lines (98 loc) · 5.68 KB
/
start.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import time
import argparse
from argparse import RawTextHelpFormatter
from datetime import datetime
import sys
from MosaicController.MosaicController import MosaicController
from Constants.datatype_constants import YOLO, XVIEW, METU
from Constants.start_settings import REQUIRED_ARGS
if __name__ == "__main__":
# --help - help and manual
# -t <TYPE> - type of input data, can be YOLO, METU, xVIEW datasets -
# -s <start number> <end number> - number of the first of mosaic that will be create
# -e <start number> <end number> - number of the last of mosaic that will be create
# Count of mosaic = <end number> - <start number>
# -inputImagesFolder <input images folder> - folder of images for mosaic
# -inputAnnotationsFolder <input annotations folder> - folder/file of annotations for mosaic
# -outputImagesFolder <output images folder> - folder of images of mosaic
# -outputAnnotationsFolder <output annotations folder> - folder of annotations of mosaic
start = time.time()
now = datetime.now()
dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
print(f"Current time: {dt_string}")
parser = argparse.ArgumentParser(description="Mosaic data generator", formatter_class=RawTextHelpFormatter,
epilog=('''
Usage
python3 start.py -t <TYPE> -s <start number> -e <end number>
-imputImagesFolder <imputImagesFolder>
-inputAnnotationsFolder <inputAnnotationsFolder>
-outputImagesFolder <outputImagesFolder>
-outputAnnotationsFolder <outputAnnotationsFolder>
Generator now supports datasets in YOLO format.
Also it supports METU and xView datasets. But using any other datasets in
json-format annotations requires writing new datareader
because of differences in annotations' format and structures.
Also now generator support only rectangle bounding boxes. WIP.
'''))
dataType_group = parser.add_argument_group()
dataType_group.add_argument("-t", dest="TYPE", default="YOLO", type=str, \
help="Type of input data, can be YOLO, METU, xVIEW datasets", required=REQUIRED_ARGS)
mosaicNumber_group = parser.add_argument_group()
mosaicNumber_group.add_argument("-s", dest="start_number", default="0", type=int, \
help="Number of the first of mosaic that will be create", required=REQUIRED_ARGS)
mosaicNumber_group.add_argument("-e", dest="end_number", default="10", type=int, \
help="Number of the last of mosaic that will be create", required=REQUIRED_ARGS)
inputPaths_group = parser.add_argument_group()
inputPaths_group.add_argument("-imputImagesFolder", dest="imputImagesFolder", type=str, \
help="Folder of images for mosaic", required=REQUIRED_ARGS)
inputPaths_group.add_argument("-inputAnnotationsFolder", dest="inputAnnotationsFolder", type=str, \
help="Folder/file of annotations for mosaic", required=REQUIRED_ARGS)
outputPaths_group = parser.add_argument_group()
outputPaths_group.add_argument("-outputImagesFolder", dest="outputImagesFolder", type=str, \
help="Folder of images of mosaic", required=REQUIRED_ARGS)
outputPaths_group.add_argument("-outputAnnotationsFolder", dest="outputAnnotationsFolder", type=str, \
help="Folder of annotations of mosaic", required=REQUIRED_ARGS)
args = parser.parse_args()
if args.TYPE == "YOLO":
data_type = YOLO
elif args.TYPE == "METU":
data_type = METU
elif args.TYPE == "xVIEW":
data_type = XVIEW
else:
print ("ERROR! Wrong dataset type was given!")
sys.exit()
"""
images = "/media/nikita/HDD/datasets/METU-ALET/ALET/trainv4"
json_file = "/media/nikita/HDD/datasets/METU-ALET/ALET/trainv4.json"
img_folder = '/media/nikita/HDD/datasets/METU-ALET/ALET/trainv4'
txt_folder = '/media/nikita/HDD/datasets/METU-ALET/ALET/trainv4.json'
out_img_folder = "/media/nikita/HDD/test/new_test/img"
out_txt_folder = "/media/nikita/HDD/test/new_test/txt"
Img_mosaic = MosaicController(img_folder, txt_folder, \
out_img_folder, out_txt_folder, METU)
Img_mosaic.set_start_count(0)
Img_mosaic.set_end_count(2000)
Img_mosaic.make_mosaic()
"""
"""
/usr/bin/python3 /home/balin/Desktop/Mosaic_develop/start.py
-t YOLO -s 0 -e 100 -imputImagesFolder
'/home/balin/Downloads/archive(1)/aerial-cars-dataset/images/train/'
-inputAnnotationsFolder
'/home/balin/Downloads/archive(1)/aerial-cars-dataset/labels/train'
-outputImagesFolder
/mnt/HDD/mosaics/img -outputAnnotationsFolder /mnt/HDD/mosaics/txt
/bin/python3 /home/nikita/Desktop/Mosaic_develop/start.py -t xVIEW -s 0 -e 100 -imputImagesFolder /media/nikita/HDD/datasets/xView/train_images/train_images -inputAnnotationsFolder /media/nikita/HDD/datasets/xView/train_labels/xView_train.geojson -outputImagesFolder /media/nikita/HDD/test/new_test/img -outputAnnotationsFolder /media/nikita/HDD/test/new_test/txt
/bin/python3 /home/nikita/Desktop/Mosaic_develop/start.py -t xVIEW -s 0 -e 100
-imputImagesFolder /media/nikita/HDD/datasets/xView/train_images/train_images
-inputAnnotationsFolder /media/nikita/HDD/datasets/xView/train_labels/xView_train.geojson
-outputImagesFolder /media/nikita/HDD/test/new_test/img -outputAnnotationsFolder /media/nikita/HDD/test/new_test/txt
"""
Img_mosaic = MosaicController(args.imputImagesFolder, args.inputAnnotationsFolder, \
args.outputImagesFolder, args.outputAnnotationsFolder, data_type)
Img_mosaic.set_start_count(args.start_number)
Img_mosaic.set_end_count(args.end_number)
Img_mosaic.make_mosaic()
end = time.time()
print(f"Times taken: {end - start}")