1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #!/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)
|