xdecoder.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from torch import Tensor
  2. from mmdet.models.detectors.single_stage import SingleStageDetector
  3. from mmdet.registry import MODELS
  4. from mmdet.structures import SampleList
  5. from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig
  6. @MODELS.register_module()
  7. class XDecoder(SingleStageDetector):
  8. def __init__(self,
  9. backbone: ConfigType,
  10. neck: OptConfigType = None,
  11. head: OptConfigType = None,
  12. test_cfg: OptConfigType = None,
  13. data_preprocessor: OptConfigType = None,
  14. init_cfg: OptMultiConfig = None):
  15. super(SingleStageDetector, self).__init__(
  16. data_preprocessor=data_preprocessor, init_cfg=init_cfg)
  17. self.backbone = MODELS.build(backbone)
  18. if neck is not None:
  19. self.neck = MODELS.build(neck)
  20. head_ = head.deepcopy()
  21. head_.update(test_cfg=test_cfg)
  22. self.sem_seg_head = MODELS.build(head_) # TODO: sem_seg_head -> head
  23. def predict(self,
  24. batch_inputs: Tensor,
  25. batch_data_samples: SampleList,
  26. rescale: bool = True) -> SampleList:
  27. visual_features = self.extract_feat(batch_inputs)
  28. outputs = self.sem_seg_head.predict(visual_features,
  29. batch_data_samples)
  30. return outputs