DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

ToPILImage in PyTorch (2)

Buy Me a Coffee

*Memos:

ToPILImage() can convert an Image([..., C, H, W]), tensor or ndarray to a PIL(Pillow library) image([H, W, C]) and doesn't scale its values to [0.0, 1.0] as shown below. *It's about mode argument (1):

from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import ToPILImage, ToImage, PILToTensor import torch Image_data = OxfordIIITPet( root="data", transform=ToImage() ) Tensor_data = OxfordIIITPet( root="data", transform=PILToTensor() ) tp = ToPILImage() tp = ToPILImage(mode="RGB") tp(Image_data[0]) tp(Tensor_data[0]) # (<PIL.Image.Image image mode=RGB size=394x500>, 0)  print(tp(Image_data[0][0])) print(tp(Tensor_data[0][0])) # <PIL.Image.Image image mode=RGB size=394x500 at 0x1A808BB8560>  tp = ToPILImage(mode="YCbCr") tp(Image_data[0]) tp(Tensor_data[0]) # (<PIL.Image.Image image mode=YCbCr size=394x500>, 0)  print(tp(Image_data[0][0])) print(tp(Tensor_data[0][0])) # <PIL.Image.Image image mode=YCbCr size=394x500 at 0x1A80D360530>  tp = ToPILImage(mode="HSV") tp(Image_data[0]) tp(Tensor_data[0]) # (<PIL.Image.Image image mode=HSV size=394x500>, 0)  print(tp(Image_data[0][0])) print(tp(Tensor_data[0][0])) # <PIL.Image.Image image mode=HSV size=394x500 at 0x1A80D362180>  tp = ToPILImage() tp = ToPILImage(mode="I") tp((torch.tensor([[[0]]], dtype=torch.int32), 0)) # (<PIL.Image.Image image mode=I size=1x1>, 0)  tp = ToPILImage(mode="LA") tp((torch.tensor([[[0]], [[1]]]), 0)) # int64 tp((torch.tensor([[[0]], [[1]]], dtype=torch.int32), 0)) # (<PIL.Image.Image image mode=LA size=1x1>, 0)  tp = ToPILImage(mode="RGB") tp((torch.tensor([[[0]], [[1]], [[2]]]), 0)) tp((torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32), 0)) # (<PIL.Image.Image image mode=RGB size=1x1>, 0)  tp = ToPILImage(mode="YCbCr") tp((torch.tensor([[[0]], [[1]], [[2]]]), 0)) tp((torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32), 0)) # (<PIL.Image.Image image mode=YCbCr size=1x1>, 0)  tp = ToPILImage(mode="HSV") tp((torch.tensor([[[0]], [[1]], [[2]]]), 0)) tp((torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32), 0)) # (<PIL.Image.Image image mode=HSV size=1x1>, 0)  tp = ToPILImage(mode="RGBA") tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]]), 0)) tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32), 0)) # (<PIL.Image.Image image mode=RGBA size=1x1>, 0)  tp = ToPILImage(mode="CMYK") tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]]), 0)) tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32), 0)) # (<PIL.Image.Image image mode=CMYK size=1x1>, 0)  tp = ToPILImage(mode="RGBX") tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]]), 0)) tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32), 0)) # (<PIL.Image.Image image mode=RGBX size=1x1>, 0)  tp = ToPILImage() tp = ToPILImage(mode="L") tp((torch.tensor([[[0.]]]), 0)) # float32 tp((torch.tensor([[[0.]]], dtype=torch.float64), 0)) # (<PIL.Image.Image image mode=L size=1x1>, 0)  tp = ToPILImage() tp = ToPILImage(mode="LA") tp((torch.tensor([[[0.]], [[1.]]]), 0)) tp((torch.tensor([[[0.]], [[1.]]], dtype=torch.float64), 0)) # (<PIL.Image.Image image mode=LA size=1x1>, 0)  tp = ToPILImage() tp = ToPILImage(mode="RGB") tp((torch.tensor([[[0.]], [[1.]], [[2.]]]), 0)) tp((torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64), 0)) # (<PIL.Image.Image image mode=RGB size=1x1>, 0)  tp = ToPILImage(mode="YCbCr") tp((torch.tensor([[[0.]], [[1.]], [[2.]]]), 0)) tp((torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64), 0)) # (<PIL.Image.Image image mode=YCbCr size=1x1>, 0)  tp = ToPILImage(mode="HSV") tp((torch.tensor([[[0.]], [[1.]], [[2.]]]), 0)) tp((torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64), 0)) # (<PIL.Image.Image image mode=HSV size=1x1>, 0)  tp = ToPILImage() tp = ToPILImage(mode="RGBA") tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]]), 0)) tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64), 0)) # (<PIL.Image.Image image mode=RGBA size=1x1>, 0)  tp = ToPILImage(mode="CMYK") tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]]), 0)) tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64), 0)) # (<PIL.Image.Image image mode=CMYK size=1x1>, 0)  tp = ToPILImage(mode="RGBX") tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]]), 0)) tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64), 0)) # (<PIL.Image.Image image mode=RGBX size=1x1>, 0)  tp = ToPILImage(mode="LA") tp((torch.tensor([[[0.+0.j]], [[1.+0.j]]]), 0)) # complex64 tp((torch.tensor([[[0.+0.j]], [[1.+0.j]]], dtype=torch.complex128), 0)) # (<PIL.Image.Image image mode=LA size=1x1>, 0)  tp = ToPILImage(mode="RGB") tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]]), 0)) tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]], dtype=torch.complex128), 0)) # (<PIL.Image.Image image mode=RGB size=1x1>, 0)  tp = ToPILImage(mode="YCbCr") tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]]), 0)) tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]], dtype=torch.complex128), 0)) # (<PIL.Image.Image image mode=YCbCr size=1x1>, 0)  tp = ToPILImage(mode="HSV") tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]]), 0)) tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]], dtype=torch.complex128), 0)) # (<PIL.Image.Image image mode=HSV size=1x1>, 0)  tp = ToPILImage(mode="RGBA") tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]]), 0)) tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]], dtype=torch.complex128), 0)) # (<PIL.Image.Image image mode=RGBA size=1x1>, 0)  tp = ToPILImage(mode="CMYK") tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]]), 0)) tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]], dtype=torch.complex128), 0)) # (<PIL.Image.Image image mode=CMYK size=1x1>, 0)  tp = ToPILImage(mode="RGBX") tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]]), 0)) tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]], dtype=torch.complex128), 0)) # (<PIL.Image.Image image mode=RGBX size=1x1>, 0)  tp = ToPILImage(mode="LA") tp((torch.tensor([[[True]], [[False]]]), 0)) # bool # (<PIL.Image.Image image mode=LA size=1x1>, 0)  tp = ToPILImage(mode="RGB") tp((torch.tensor([[[True]], [[False]], [[True]]]), 0)) # (<PIL.Image.Image image mode=RGB size=1x1>, 0)  tp = ToPILImage(mode="YCbCr") tp((torch.tensor([[[True]], [[False]], [[True]]]), 0)) # (<PIL.Image.Image image mode=YCbCr size=1x1>, 0)  tp = ToPILImage(mode="HSV") tp((torch.tensor([[[True]], [[False]], [[True]]]), 0)) # (<PIL.Image.Image image mode=HSV size=1x1>, 0)  tp = ToPILImage(mode="RGBA") tp((torch.tensor([[[True]], [[False]], [[True]], [[False]]]), 0)) # (<PIL.Image.Image image mode=RGBA size=1x1>, 0)  tp = ToPILImage(mode="CMYK") tp((torch.tensor([[[True]], [[False]], [[True]], [[False]]]), 0)) # (<PIL.Image.Image image mode=CMYK size=1x1>, 0)  tp = ToPILImage(mode="RGBX") tp((torch.tensor([[[True]], [[False]], [[True]], [[False]]]), 0)) # (<PIL.Image.Image image mode=RGBX size=1x1>, 0) 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)