import abc import torch from typing import Union class AbstractBackbone(abc.ABC): """ All backbones for detectors should subclass this class. """ def __init__(self, config, load_param: Union[bool, str] = False): """ config: (dict) configurations for the model load_param: (False | True | Path(str)) False Do not read; True Read the default path; Path Read the required path """ pass @abc.abstractmethod def features(self, data_dict: dict) -> torch.tensor: """ """ @abc.abstractmethod def classifier(self, features: torch.tensor) -> torch.tensor: """ """ def init_weights(self, pretrained_path: Union[bool, str]): """ This method can be optionally implemented by subclasses. """ pass