forked from AntonMu/TrainYourOwnYOLO
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDownload_and_Convert_YOLO_weights.py
72 lines (60 loc) · 2.19 KB
/
Download_and_Convert_YOLO_weights.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
import os
import subprocess
import time
import sys
import argparse
import requests
import progressbar
FLAGS = None
root_folder = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
download_folder = os.path.join(root_folder, "2_Training", "src", "keras_yolo3")
data_folder = os.path.join(root_folder, "Data")
model_folder = os.path.join(data_folder, "Model_Weights")
download_script = os.path.join(model_folder, "Download_Weights.py")
if __name__ == "__main__":
# Delete all default flags
parser = argparse.ArgumentParser(argument_default=argparse.SUPPRESS)
"""
Command line options
"""
parser.add_argument(
"--download_folder",
type=str,
default=download_folder,
help="Folder to download weights to. Default is " + download_folder,
)
parser.add_argument(
"--is_tiny",
default=False,
action="store_true",
help="Use the tiny Yolo version for better performance and less accuracy. Default is False.",
)
FLAGS = parser.parse_args()
if not FLAGS.is_tiny:
weights_file = "yolov3.weights"
h5_file = "yolo.h5"
cfg_file = "yolov3.cfg"
# Original URL: https://pjreddie.com/media/files/yolov3.weights
gdrive_id = "1ENKguLZbkgvM8unU3Hq1BoFzoLeGWvE_"
else:
weights_file = "yolov3-tiny.weights"
h5_file = "yolo-tiny.h5"
cfg_file = "yolov3-tiny.cfg"
# Original URL: https://pjreddie.com/media/files/yolov3-tiny.weights
gdrive_id = "1mIEZthXBcEguMvuVAHKLXQX3mA1oZUuC"
if not os.path.isfile(os.path.join(download_folder, weights_file)):
print(f"\nDownloading Raw {weights_file}\n")
start = time.time()
call_string = " ".join(
[
"python",
download_script,
gdrive_id,
os.path.join(download_folder, weights_file),
]
)
subprocess.call(call_string, shell=True)
end = time.time()
print(f"Downloaded Raw {weights_file} in {end - start:.1f} seconds\n")
call_string = f"python convert.py {cfg_file} {weights_file} {h5_file}"
subprocess.call(call_string, shell=True, cwd=download_folder)