|
|
|
# Ultralytics YOLO 🚀, GPL-3.0 license
|
|
|
|
|
|
|
|
from pathlib import Path
|
|
|
|
from typing import Dict, Union
|
|
|
|
|
|
|
|
from omegaconf import DictConfig, OmegaConf
|
|
|
|
|
|
|
|
from ultralytics.yolo.configs.hydra_patch import check_config_mismatch
|
|
|
|
|
|
|
|
|
|
|
|
def get_config(config: Union[str, Path, DictConfig], overrides: Union[str, Dict] = None):
|
|
|
|
"""
|
|
|
|
Load and merge configuration data from a file or dictionary.
|
|
|
|
|
|
|
|
Args:
|
|
|
|
config (str) or (Path) or (DictConfig): Configuration data in the form of a file name or a DictConfig object.
|
|
|
|
overrides (str) or(Dict), optional: Overrides in the form of a file name or a dictionary. Default is None.
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
OmegaConf.Namespace: Training arguments namespace.
|
|
|
|
"""
|
|
|
|
if overrides is None:
|
|
|
|
overrides = {}
|
|
|
|
if isinstance(config, (str, Path)):
|
|
|
|
config = OmegaConf.load(config)
|
|
|
|
elif isinstance(config, Dict):
|
|
|
|
config = OmegaConf.create(config)
|
|
|
|
# override
|
|
|
|
if isinstance(overrides, str):
|
|
|
|
overrides = OmegaConf.load(overrides)
|
|
|
|
elif isinstance(overrides, Dict):
|
|
|
|
overrides = OmegaConf.create(overrides)
|
|
|
|
|
|
|
|
check_config_mismatch(dict(overrides).keys(), dict(config).keys())
|
|
|
|
|
|
|
|
return OmegaConf.merge(config, overrides)
|