ToPILImage in PyTorch (5)

Buy Me a Coffee☕ *Memos: My post explains ToPILImage() about no arguments. My post explains ToPILImage() about mode argument (1). My post explains ToPILImage() about mode argument (2). My post explains ToPILImage() about mode argument (3). 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 (4): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import ToPILImage, ToImage, PILToTensor import numpy as np def show_images(im, m=None): if m == None: m = [None for _ in range(len(im))] if len(im) > len(m): for _ in range(len(im)-len(m)): m.append(None) plt.figure(figsize=[14, 6]) for i in range(len(im)): image = im[i] if torch.is_tensor(image): dpart = str(image.dtype).split(".")[1] elif isinstance(image, np.ndarray): dpart = str(image.dtype) title = "m" + str(m[i]) + "_PILImage from " \ + type(image).__name__+ "(" + dpart + ")" plt.subplot(1, 3, (i+1)) tp = ToPILImage(mode=m[i]) plt.title(label=title, y=1, fontsize=14) plt.imshow(X=tp(image)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images(im=[np.array([[[0]]]), np.array([[[0, 1]]])], # int32 m=["I", "LA"]) show_images(im=[np.array([[[0, 1, 2]]]), np.array([[[0, 1, 2]]]), np.array([[[0, 1, 2]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0, 1, 2, 3]]]), np.array([[[0, 1, 2, 3]]]), np.array([[[0, 1, 2, 3]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0, 1]]], dtype=np.int64)], m=["LA"]) show_images(im=[np.array([[[0, 1, 2]]], dtype=np.int64), np.array([[[0, 1, 2]]], dtype=np.int64), np.array([[[0, 1, 2]]], dtype=np.int64)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0, 1, 2, 3]]], dtype=np.int64), np.array([[[0, 1, 2, 3]]], dtype=np.int64), np.array([[[0, 1, 2, 3]]], dtype=np.int64)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0.]]]), np.array([[[0., 1.]]])], # float64 m=["L", "LA"]) show_images(im=[np.array([[[0., 1., 2.]]]), np.array([[[0., 1., 2.]]]), np.array([[[0., 1., 2.]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0., 1., 2., 3.]]]), np.array([[[0., 1., 2., 3.]]]), np.array([[[0., 1., 2., 3.]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0.]]], dtype=np.float32), np.array([[[0., 1.]]], dtype=np.float32)], m=["L", "LA"]) show_images(im=[np.array([[[0., 1., 2.]]], dtype=np.float32), np.array([[[0., 1., 2.]]], dtype=np.float32), np.array([[[0., 1., 2.]]], dtype=np.float32)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0., 1., 2., 3.]]], dtype=np.float32), np.array([[[0., 1., 2., 3.]]], dtype=np.float32), np.array([[[0., 1., 2., 3.]]], dtype=np.float32)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0.+0.j, 1.+0.j]]])], m=["LA"]) # complex128 show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]]), np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]]), np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]]), np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]]), np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0.+0.j, 1.+0.j]]], dtype=np.complex64)], m=["LA"]) show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64), np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64), np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], dtype=np.complex64), np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], dtype=np.complex64), np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], dtype=np.complex64)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[True, False]]])], m=["LA"]) # bool show_images(im=[np.array([[[True, False, True]]]), np.array([[[True, False, True]]]), np.array([[[True, False, True]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[True, False, True, False]]]), np.array([[[True, False, True, False]]]), np.array([[[True, False, True, False]]])],

Apr 29, 2025 - 16:28
 0
ToPILImage in PyTorch (5)

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 (4):

from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import ToPILImage, ToImage, PILToTensor
import numpy as np

def show_images(im, m=None):
    if m == None:
        m = [None for _ in range(len(im))]
    if len(im) > len(m):
        for _ in range(len(im)-len(m)):
            m.append(None)
    plt.figure(figsize=[14, 6])
    for i in range(len(im)):
        image = im[i]
        if torch.is_tensor(image):
            dpart = str(image.dtype).split(".")[1]
        elif isinstance(image, np.ndarray):
            dpart = str(image.dtype)
        title = "m" + str(m[i]) + "_PILImage from " \
                + type(image).__name__+ "(" + dpart + ")"
        plt.subplot(1, 3, (i+1))
        tp = ToPILImage(mode=m[i])
        plt.title(label=title, y=1, fontsize=14)
        plt.imshow(X=tp(image))
        plt.xticks(ticks=[])
        plt.yticks(ticks=[])
    plt.tight_layout()
    plt.show()

show_images(im=[np.array([[[0]]]), np.array([[[0, 1]]])], # int32
            m=["I", "LA"])
show_images(im=[np.array([[[0, 1, 2]]]), np.array([[[0, 1, 2]]]),
                np.array([[[0, 1, 2]]])], m=["RGB", "YCbCr", "HSV"])
show_images(im=[np.array([[[0, 1, 2, 3]]]), np.array([[[0, 1, 2, 3]]]),
                np.array([[[0, 1, 2, 3]]])], m=["RGBA", "CMYK", "RGBX"])
print()
show_images(im=[np.array([[[0, 1]]], dtype=np.int64)], m=["LA"])
show_images(im=[np.array([[[0, 1, 2]]], dtype=np.int64),
                np.array([[[0, 1, 2]]], dtype=np.int64),
                np.array([[[0, 1, 2]]], dtype=np.int64)],
            m=["RGB", "YCbCr", "HSV"])
show_images(im=[np.array([[[0, 1, 2, 3]]], dtype=np.int64),
                np.array([[[0, 1, 2, 3]]], dtype=np.int64),
                np.array([[[0, 1, 2, 3]]], dtype=np.int64)],
            m=["RGBA", "CMYK", "RGBX"])
print()
show_images(im=[np.array([[[0.]]]), np.array([[[0., 1.]]])], # float64
            m=["L", "LA"])
show_images(im=[np.array([[[0., 1., 2.]]]), np.array([[[0., 1., 2.]]]),
                np.array([[[0., 1., 2.]]])], m=["RGB", "YCbCr", "HSV"])
show_images(im=[np.array([[[0., 1., 2., 3.]]]),
                np.array([[[0., 1., 2., 3.]]]),
                np.array([[[0., 1., 2., 3.]]])],
            m=["RGBA", "CMYK", "RGBX"])
print()
show_images(im=[np.array([[[0.]]], dtype=np.float32),
                np.array([[[0., 1.]]], dtype=np.float32)], m=["L", "LA"])
show_images(im=[np.array([[[0., 1., 2.]]], dtype=np.float32),
                np.array([[[0., 1., 2.]]], dtype=np.float32),
                np.array([[[0., 1., 2.]]], dtype=np.float32)],
            m=["RGB", "YCbCr", "HSV"])
show_images(im=[np.array([[[0., 1., 2., 3.]]], dtype=np.float32),
                np.array([[[0., 1., 2., 3.]]], dtype=np.float32),
                np.array([[[0., 1., 2., 3.]]], dtype=np.float32)],
            m=["RGBA", "CMYK", "RGBX"])
print()
show_images(im=[np.array([[[0.+0.j, 1.+0.j]]])], m=["LA"]) # complex128
show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]]),
                np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]]),
                np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]])],
            m=["RGB", "YCbCr", "HSV"])
show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]]),
                np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]]),
                np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]])],
            m=["RGBA", "CMYK", "RGBX"])
print()
show_images(im=[np.array([[[0.+0.j, 1.+0.j]]], dtype=np.complex64)],
            m=["LA"])
show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64),
                np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64),
                np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64)],
            m=["RGB", "YCbCr", "HSV"])
show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], 
                         dtype=np.complex64),
                np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], 
                         dtype=np.complex64),
                np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], 
                         dtype=np.complex64)],
            m=["RGBA", "CMYK", "RGBX"])
print()
show_images(im=[np.array([[[True, False]]])], m=["LA"]) # bool
show_images(im=[np.array([[[True, False, True]]]),
                np.array([[[True, False, True]]]),
                np.array([[[True, False, True]]])],
            m=["RGB", "YCbCr", "HSV"])
show_images(im=[np.array([[[True, False, True, False]]]),
                np.array([[[True, False, True, False]]]),
                np.array([[[True, False, True, False]]])],
            m=["RGBA", "CMYK", "RGBX"])

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description