transform.py 923 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import abc
  2. import chainer
  3. from cvdatasets.dataset.image.size import Size
  4. from cvdatasets.dataset.mixins.base import BaseMixin
  5. class TransformMixin(BaseMixin):
  6. def __init__(self, size, part_size=None, *args, **kwargs):
  7. super(TransformMixin, self).__init__(*args, **kwargs)
  8. self.size = size
  9. self.part_size = size if part_size is None else part_size
  10. @abc.abstractmethod
  11. def transform(self, im_obj):
  12. pass
  13. def get_example(self, i):
  14. im_obj = super(TransformMixin, self).get_example(i)
  15. return self.transform(im_obj)
  16. @property
  17. def size(self):
  18. if chainer.config.train:
  19. return self._size // 0.875
  20. else:
  21. return self._size
  22. @size.setter
  23. def size(self, value):
  24. self._size = Size(value)
  25. @property
  26. def part_size(self):
  27. if chainer.config.train:
  28. return self._part_size // 0.875
  29. else:
  30. return self._part_size
  31. @part_size.setter
  32. def part_size(self, value):
  33. self._part_size = Size(value)