54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding:utf-8 -*-
|
|
# Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
|
|
|
|
import importlib
|
|
import os
|
|
import sys
|
|
|
|
|
|
def get_exp_by_file(exp_file):
|
|
try:
|
|
sys.path.append(os.path.dirname(exp_file))
|
|
current_exp = importlib.import_module(os.path.basename(exp_file).split(".")[0])
|
|
exp = current_exp.Exp()
|
|
except Exception:
|
|
raise ImportError("{} doesn't contains class named 'Exp'".format(exp_file))
|
|
return exp
|
|
|
|
|
|
def get_exp_by_name(exp_name):
|
|
import yolox
|
|
|
|
yolox_path = os.path.dirname(os.path.dirname(yolox.__file__))
|
|
filedict = {
|
|
"yolox-s": "yolox_s.py",
|
|
"yolox-m": "yolox_m.py",
|
|
"yolox-l": "yolox_l.py",
|
|
"yolox-x": "yolox_x.py",
|
|
"yolox-tiny": "yolox_tiny.py",
|
|
"yolox-nano": "nano.py",
|
|
"yolov3": "yolov3.py",
|
|
}
|
|
filename = filedict[exp_name]
|
|
exp_path = os.path.join(yolox_path, "exps", "default", filename)
|
|
return get_exp_by_file(exp_path)
|
|
|
|
|
|
def get_exp(exp_file, exp_name):
|
|
"""
|
|
get Exp object by file or name. If exp_file and exp_name
|
|
are both provided, get Exp by exp_file.
|
|
|
|
Args:
|
|
exp_file (str): file path of experiment.
|
|
exp_name (str): name of experiment. "yolo-s",
|
|
"""
|
|
assert (
|
|
exp_file is not None or exp_name is not None
|
|
), "plz provide exp file or exp name."
|
|
if exp_file is not None:
|
|
return get_exp_by_file(exp_file)
|
|
else:
|
|
return get_exp_by_name(exp_name)
|