|
|
| import importlib.abc
|
| import importlib.util
|
| from pathlib import Path
|
|
|
| __all__ = []
|
|
|
| _PROJECTS = {
|
| "point_rend": "PointRend",
|
| "deeplab": "DeepLab",
|
| "panoptic_deeplab": "Panoptic-DeepLab",
|
| }
|
| _PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent / "projects"
|
|
|
| if _PROJECT_ROOT.is_dir():
|
|
|
|
|
|
|
| class _D2ProjectsFinder(importlib.abc.MetaPathFinder):
|
| def find_spec(self, name, path, target=None):
|
| if not name.startswith("detectron2.projects."):
|
| return
|
| project_name = name.split(".")[-1]
|
| project_dir = _PROJECTS.get(project_name)
|
| if not project_dir:
|
| return
|
| target_file = _PROJECT_ROOT / f"{project_dir}/{project_name}/__init__.py"
|
| if not target_file.is_file():
|
| return
|
| return importlib.util.spec_from_file_location(name, target_file)
|
|
|
| import sys
|
|
|
| sys.meta_path.append(_D2ProjectsFinder())
|
|
|