2020-06-28 12:37:21 +00:00
|
|
|
import yaml
|
|
|
|
|
|
|
|
|
|
|
|
class Args:
|
|
|
|
|
|
|
|
def get_args_string(self) -> str:
|
|
|
|
string = ''
|
|
|
|
for key, value in self.__dict__.items():
|
2020-06-28 12:45:35 +00:00
|
|
|
if not isinstance(value, Configuration.Train.OtherHyps) and value is not None:
|
2020-06-28 12:37:21 +00:00
|
|
|
if key == 'img-size':
|
|
|
|
string += f' --{key} {value.split(" ")[0]} {value.split(" ")[1]}'
|
|
|
|
elif type(value) == bool:
|
|
|
|
if value:
|
|
|
|
string += f" --{key}"
|
|
|
|
else:
|
|
|
|
continue
|
|
|
|
elif type(value) in [int, str] and value != '':
|
|
|
|
string += f' --{key} {value}'
|
|
|
|
else:
|
|
|
|
raise Exception(f"Cannot parse argument {key} {value}")
|
|
|
|
|
|
|
|
return string
|
|
|
|
|
2020-06-28 12:45:35 +00:00
|
|
|
|
2020-06-28 12:37:21 +00:00
|
|
|
class Configuration:
|
|
|
|
class Train(Args):
|
|
|
|
|
|
|
|
class OtherHyps:
|
|
|
|
def __init__(self, config_file) -> None:
|
|
|
|
for key, value in config_file['train']['other-hyps'].items():
|
|
|
|
self.__dict__[key] = value
|
|
|
|
|
|
|
|
def __init__(self, config_file) -> None:
|
|
|
|
self.other_hyps = Configuration.Train.OtherHyps(config_file)
|
|
|
|
for key, value in config_file['train'].items():
|
|
|
|
if key != 'other-hyps':
|
|
|
|
self.__dict__[key] = value
|
|
|
|
|
|
|
|
class Experiments(Args):
|
|
|
|
def __init__(self, config_file) -> None:
|
|
|
|
for key, value in config_file['experiments'].items():
|
|
|
|
self.__dict__[key] = value
|
|
|
|
|
|
|
|
class Detect(Args):
|
|
|
|
def __init__(self, config_file) -> None:
|
|
|
|
for key, value in config_file['detect'].items():
|
|
|
|
self.__dict__[key] = value
|
|
|
|
|
|
|
|
class ConfussionMatrix(Args):
|
|
|
|
def __init__(self, config_file) -> None:
|
|
|
|
for key, value in config_file['confussion-matrix'].items():
|
|
|
|
self.__dict__[key] = value
|
|
|
|
|
|
|
|
class Bayes(Args):
|
|
|
|
def __init__(self, config_file) -> None:
|
|
|
|
for key, value in config_file['bayes'].items():
|
|
|
|
self.__dict__[key] = value
|
|
|
|
|
|
|
|
def __init__(self, config_path='/home/tomekb/yolov3/our_scripts/config.yml') -> None:
|
|
|
|
self.config_path = config_path
|
|
|
|
file = yaml.load(open(config_path, 'r'), Loader=yaml.Loader)
|
|
|
|
self.train = self.Train(file)
|
|
|
|
self.experiments = self.Experiments(file)
|
|
|
|
self.detect = self.Detect(file)
|
|
|
|
self.confussion_matrix = self.ConfussionMatrix(file)
|
|
|
|
self.bayes = self.Bayes(file)
|