facetorch.transforms API documentation

# Module `facetorch.transforms`

Expand source code

    from typing import Union

    import torch
    import torchvision
    from torchvision import transforms

    def script_transform(
        transform: transforms.Compose,
    ) -> Union[torch.jit.ScriptModule, torch.jit.ScriptFunction]:
        """Convert the composed transform to a TorchScript module.

        Args:
            transform (transforms.Compose): Transform compose object to be scripted.

        Returns:
            Union[torch.jit.ScriptModule, torch.jit.ScriptFunction]: Scripted transform.
        """

        transform_seq = torch.nn.Sequential(*transform.transforms)
        transform_jit = torch.jit.script(transform_seq)
        return transform_jit

    class SquarePad(torch.nn.Module):
        """SquarePad is a transform that pads the image to a square shape."""

        def __init__(self) -> None:
            """It is initialized as a torch.nn.Module."""
            super().__init__()

        def __call__(self, tensor: torch.Tensor) -> torch.Tensor:
            """Pads a tensor to a square.

            Args:
                tensor (torch.Tensor): tensor to pad.

            Returns:
                torch.Tensor: Padded tensor.
            """
            height, width = tensor.shape[-2:]
            img_size = [width, height]

            max_wh = max(img_size)
            p_left, p_top = [(max_wh - s) // 2 for s in img_size]
            p_right, p_bottom = [
                max_wh - (s + pad) for s, pad in zip(img_size, [p_left, p_top])
            ]
            padding = (p_left, p_top, p_right, p_bottom)
            tensor_padded = torchvision.transforms.functional.pad(
                tensor, padding, 0, "constant"
            )
            return tensor_padded

        def forward(self, tensor: torch.Tensor) -> torch.Tensor:
            """Pads a tensor to a square.

            Args:
                tensor (torch.Tensor): tensor to pad.

            Returns:
                torch.Tensor: Padded tensor.

            """
            return self.__call__(tensor)

## Functions

`def script_transform(transform: torchvision.transforms.transforms.Compose) ‑> Union[torch.jit._script.ScriptModule, torch.jit.ScriptFunction]`

  Convert the composed transform to a TorchScript module.

  ## Args

  `transform` :`transforms.Compose`
    Transform compose object to be scripted.

  ## Returns

  `Union[torch.jit.ScriptModule, torch.jit.ScriptFunction]`
    Scripted transform.
  Expand source code

      def script_transform(
          transform: transforms.Compose,
      ) -> Union[torch.jit.ScriptModule, torch.jit.ScriptFunction]:
          """Convert the composed transform to a TorchScript module.

          Args:
              transform (transforms.Compose): Transform compose object to be scripted.

          Returns:
              Union[torch.jit.ScriptModule, torch.jit.ScriptFunction]: Scripted transform.
          """

          transform_seq = torch.nn.Sequential(*transform.transforms)
          transform_jit = torch.jit.script(transform_seq)
          return transform_jit

## Classes

`class SquarePad`

  SquarePad is a transform that pads the image to a square shape.

  It is initialized as a torch.nn.Module.

  Expand source code

      class SquarePad(torch.nn.Module):
          """SquarePad is a transform that pads the image to a square shape."""

          def __init__(self) -> None:
              """It is initialized as a torch.nn.Module."""
              super().__init__()

          def __call__(self, tensor: torch.Tensor) -> torch.Tensor:
              """Pads a tensor to a square.

              Args:
                  tensor (torch.Tensor): tensor to pad.

              Returns:
                  torch.Tensor: Padded tensor.
              """
              height, width = tensor.shape[-2:]
              img_size = [width, height]

              max_wh = max(img_size)
              p_left, p_top = [(max_wh - s) // 2 for s in img_size]
              p_right, p_bottom = [
                  max_wh - (s + pad) for s, pad in zip(img_size, [p_left, p_top])
              ]
              padding = (p_left, p_top, p_right, p_bottom)
              tensor_padded = torchvision.transforms.functional.pad(
                  tensor, padding, 0, "constant"
              )
              return tensor_padded

          def forward(self, tensor: torch.Tensor) -> torch.Tensor:
              """Pads a tensor to a square.

              Args:
                  tensor (torch.Tensor): tensor to pad.

              Returns:
                  torch.Tensor: Padded tensor.

              """
              return self.__call__(tensor)

  ### Ancestors

  - torch.nn.modules.module.Module

  ### Methods

  `def forward(self, tensor: torch.Tensor) ‑> torch.Tensor`

    Pads a tensor to a square.

    ## Args

    `tensor` :`torch.Tensor`
      tensor to pad.

    ## Returns

    `torch.Tensor`
      Padded tensor.
    Expand source code

        def forward(self, tensor: torch.Tensor) -> torch.Tensor:
            """Pads a tensor to a square.

            Args:
                tensor (torch.Tensor): tensor to pad.

            Returns:
                torch.Tensor: Padded tensor.

            """
            return self.__call__(tensor)