__init__.py 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. import torch
  2. from ._bounding_boxes import BoundingBoxes, BoundingBoxFormat
  3. from ._image import Image
  4. from ._mask import Mask
  5. from ._torch_function_helpers import set_return_type
  6. from ._tv_tensor import TVTensor
  7. from ._video import Video
  8. def wrap(wrappee, *, like, **kwargs):
  9. """[BETA] Convert a :class:`torch.Tensor` (``wrappee``) into the same :class:`~torchvision.tv_tensors.TVTensor` subclass as ``like``.
  10. If ``like`` is a :class:`~torchvision.tv_tensors.BoundingBoxes`, the ``format`` and ``canvas_size`` of
  11. ``like`` are assigned to ``wrappee``, unless they are passed as ``kwargs``.
  12. Args:
  13. wrappee (Tensor): The tensor to convert.
  14. like (:class:`~torchvision.tv_tensors.TVTensor`): The reference.
  15. ``wrappee`` will be converted into the same subclass as ``like``.
  16. kwargs: Can contain "format" and "canvas_size" if ``like`` is a :class:`~torchvision.tv_tensor.BoundingBoxes`.
  17. Ignored otherwise.
  18. """
  19. if isinstance(like, BoundingBoxes):
  20. return BoundingBoxes._wrap(
  21. wrappee,
  22. format=kwargs.get("format", like.format),
  23. canvas_size=kwargs.get("canvas_size", like.canvas_size),
  24. )
  25. else:
  26. return wrappee.as_subclass(type(like))