You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

compose.py 1.5 kB

2 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # Copyright (c) OpenMMLab. All rights reserved.
  2. import collections
  3. from mmcv.utils import build_from_cfg
  4. from ..builder import PIPELINES
  5. @PIPELINES.register_module()
  6. class Compose:
  7. """Compose multiple transforms sequentially.
  8. Args:
  9. transforms (Sequence[dict | callable]): Sequence of transform object or
  10. config dict to be composed.
  11. """
  12. def __init__(self, transforms):
  13. assert isinstance(transforms, collections.abc.Sequence)
  14. self.transforms = []
  15. for transform in transforms:
  16. if isinstance(transform, dict):
  17. transform = build_from_cfg(transform, PIPELINES)
  18. self.transforms.append(transform)
  19. elif callable(transform):
  20. self.transforms.append(transform)
  21. else:
  22. raise TypeError('transform must be callable or a dict')
  23. def __call__(self, data):
  24. """Call function to apply transforms sequentially.
  25. Args:
  26. data (dict): A result dict contains the data to transform.
  27. Returns:
  28. dict: Transformed data.
  29. """
  30. for t in self.transforms:
  31. data = t(data)
  32. if data is None:
  33. return None
  34. return data
  35. def __repr__(self):
  36. format_string = self.__class__.__name__ + '('
  37. for t in self.transforms:
  38. format_string += '\n'
  39. format_string += f' {t}'
  40. format_string += '\n)'
  41. return format_string

No Description

Contributors (1)