RandomResizedCrop in PyTorch (4)

Buy Me a Coffee☕ *Memos: My post explains RandomResizedCrop() about size argument. My post explains RandomResizedCrop() about scale argument. My post explains RandomResizedCrop() about ratio argument. My post explains OxfordIIITPet(). RandomResizedCrop() can crop a random part of an image, then resize it to a given size as shown below: from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import RandomResizedCrop from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) s1000sc0_0r1_1_data = OxfordIIITPet( # `s` is size and `sc` is scale. root="data", # `r` is ratio. transform=RandomResizedCrop(size=1000, scale=[0, 0], ratio=[1, 1]) ) s500sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=500, scale=[0, 0], ratio=[1, 1]) ) s100sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=100, scale=[0, 0], ratio=[1, 1]) ) s50sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=50, scale=[0, 0], ratio=[1, 1]) ) s10sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=10, scale=[0, 0], ratio=[1, 1]) ) s1sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=1, scale=[0, 0], ratio=[1, 1]) ) s600_900sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=[600, 900], scale=[0, 0], ratio=[1, 1]) ) s900_600sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=[900, 600], scale=[0, 0], ratio=[1, 1]) ) s200_300sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=[200, 300], scale=[0, 0], ratio=[1, 1]) ) s300_200sc0_0r1_1_data = OxfordIIITPet( root="data", transform=RandomResizedCrop(size=[300, 200], scale=[0, 0], ratio=[1, 1]) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") show_images1(data=s1000sc0_0r1_1_data, main_title="s1000sc0_0r1_1_data") show_images1(data=s500sc0_0r1_1_data, main_title="s500sc0_0r1_1_data") show_images1(data=s100sc0_0r1_1_data, main_title="s100sc0_0r1_1_data") show_images1(data=s50sc0_0r1_1_data, main_title="s50sc0_0r1_1_data") show_images1(data=s10sc0_0r1_1_data, main_title="s10sc0_0r1_1_data") show_images1(data=s1sc0_0r1_1_data, main_title="s1sc0_0r1_1_data") print() show_images1(data=origin_data, main_title="origin_data") show_images1(data=s600_900sc0_0r1_1_data, main_title="s600_900sc0_0r1_1_data") show_images1(data=s900_600sc0_0r1_1_data, main_title="s900_600sc0_0r1_1_data") show_images1(data=s200_300sc0_0r1_1_data, main_title="s200_300sc0_0r1_1_data") show_images1(data=s300_200sc0_0r1_1_data, main_title="s300_200sc0_0r1_1_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=None, sc=(0.08, 1.0), r=(0.75, 1.3333333333333333), ip=InterpolationMode.BILINEAR, a=True): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) if s: rrc = RandomResizedCrop(size=s, scale=sc, # Here ratio=r, interpolation=ip, antialias=a) plt.imshow(X=rrc(im)) # Here else: plt.imshow(X=im) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") show_images2(data=origin_data, main_title="s1000sc0_0r1_1_data", s=1000, sc=[0, 0], r=[1, 1]) show_images2(data=origin_data, main_title="s500sc0_0r1_1_data", s=500, sc=[0, 0], r=[1, 1]) show_images2(data=origin_data, main_title="s100sc0_0r1_1_data", s=100, sc=[0, 0], r=[1, 1]) show_images2(data=origin_data, main_title="s50sc0_0r1_1_data", s=50, sc=[0, 0], r=[1, 1]) show_images2(data=origin_data, main_title="s10sc0_0r1_1_data", s=10, sc=[0, 0], r=[1, 1]) show_images2(data=origin_data, main_title="s1sc0_0r1_1_data", s=1, sc=[0, 0], r=[1, 1]) print() show_images2(data=origin_data, main_title="origin_data") show_images2(data=origin_data, main_title="s600_900sc0_0r1_1_data", s=[600, 900], sc=[0, 0], r=[1, 1]) show_images2(data=origin_data, main_title="s900_600sc0_0r1_1_data", s=[900, 600], sc=[0, 0], r=[1, 1]) show_images2(data=origin_data, main_title="s200_300sc0_0r1_1_data", s=[200, 300], sc=[0, 0], r=[1, 1]) show_images2(data=origin_data, main_title="s300_200sc0_0r1_1_data", s=[3

Feb 13, 2025 - 04:52
 0
RandomResizedCrop in PyTorch (4)

Buy Me a Coffee

*Memos:

RandomResizedCrop() can crop a random part of an image, then resize it to a given size as shown below:

from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import RandomResizedCrop
from torchvision.transforms.functional import InterpolationMode

origin_data = OxfordIIITPet(
    root="data",
    transform=None
)

s1000sc0_0r1_1_data = OxfordIIITPet( # `s` is size and `sc` is scale.
    root="data",                     # `r` is ratio.
    transform=RandomResizedCrop(size=1000, scale=[0, 0], ratio=[1, 1])
)

s500sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=500, scale=[0, 0], ratio=[1, 1])
)

s100sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=100, scale=[0, 0], ratio=[1, 1])
)

s50sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=50, scale=[0, 0], ratio=[1, 1])
)

s10sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=10, scale=[0, 0], ratio=[1, 1])
)

s1sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=1, scale=[0, 0], ratio=[1, 1])
)

s600_900sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=[600, 900], scale=[0, 0], ratio=[1, 1])
)

s900_600sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=[900, 600], scale=[0, 0], ratio=[1, 1])
)

s200_300sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=[200, 300], scale=[0, 0], ratio=[1, 1])
)

s300_200sc0_0r1_1_data = OxfordIIITPet(
    root="data",
    transform=RandomResizedCrop(size=[300, 200], scale=[0, 0], ratio=[1, 1])
)

import matplotlib.pyplot as plt

def show_images1(data, main_title=None):
    plt.figure(figsize=[10, 5])
    plt.suptitle(t=main_title, y=0.8, fontsize=14)
    for i, (im, _) in zip(range(1, 6), data):
        plt.subplot(1, 5, i)
        plt.imshow(X=im)
    plt.tight_layout()
    plt.show()

show_images1(data=origin_data, main_title="origin_data")
show_images1(data=s1000sc0_0r1_1_data, main_title="s1000sc0_0r1_1_data")
show_images1(data=s500sc0_0r1_1_data, main_title="s500sc0_0r1_1_data")
show_images1(data=s100sc0_0r1_1_data, main_title="s100sc0_0r1_1_data")
show_images1(data=s50sc0_0r1_1_data, main_title="s50sc0_0r1_1_data")
show_images1(data=s10sc0_0r1_1_data, main_title="s10sc0_0r1_1_data")
show_images1(data=s1sc0_0r1_1_data, main_title="s1sc0_0r1_1_data")
print()
show_images1(data=origin_data, main_title="origin_data")
show_images1(data=s600_900sc0_0r1_1_data, main_title="s600_900sc0_0r1_1_data")
show_images1(data=s900_600sc0_0r1_1_data, main_title="s900_600sc0_0r1_1_data")
show_images1(data=s200_300sc0_0r1_1_data, main_title="s200_300sc0_0r1_1_data")
show_images1(data=s300_200sc0_0r1_1_data, main_title="s300_200sc0_0r1_1_data")

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ 
def show_images2(data, main_title=None, s=None, sc=(0.08, 1.0),
                 r=(0.75, 1.3333333333333333),
                 ip=InterpolationMode.BILINEAR, a=True):
    plt.figure(figsize=[10, 5])
    plt.suptitle(t=main_title, y=0.8, fontsize=14)
    for i, (im, _) in zip(range(1, 6), data):
        plt.subplot(1, 5, i)
        if s:
            rrc = RandomResizedCrop(size=s, scale=sc, # Here
                                    ratio=r, interpolation=ip,
                                    antialias=a)
            plt.imshow(X=rrc(im)) # Here
        else:
            plt.imshow(X=im)
    plt.tight_layout()
    plt.show()

show_images2(data=origin_data, main_title="origin_data")
show_images2(data=origin_data, main_title="s1000sc0_0r1_1_data", s=1000, 
             sc=[0, 0], r=[1, 1])
show_images2(data=origin_data, main_title="s500sc0_0r1_1_data", s=500, 
             sc=[0, 0], r=[1, 1])
show_images2(data=origin_data, main_title="s100sc0_0r1_1_data", s=100, 
             sc=[0, 0], r=[1, 1])
show_images2(data=origin_data, main_title="s50sc0_0r1_1_data", s=50,
             sc=[0, 0], r=[1, 1])
show_images2(data=origin_data, main_title="s10sc0_0r1_1_data", s=10,
             sc=[0, 0], r=[1, 1])
show_images2(data=origin_data, main_title="s1sc0_0r1_1_data", s=1,
             sc=[0, 0], r=[1, 1])
print()
show_images2(data=origin_data, main_title="origin_data")
show_images2(data=origin_data, main_title="s600_900sc0_0r1_1_data",
             s=[600, 900], sc=[0, 0], r=[1, 1])
show_images2(data=origin_data, main_title="s900_600sc0_0r1_1_data",
             s=[900, 600], sc=[0, 0], r=[1, 1])
show_images2(data=origin_data, main_title="s200_300sc0_0r1_1_data",
             s=[200, 300], sc=[0, 0], r=[1, 1])
show_images2(data=origin_data, main_title="s300_200sc0_0r1_1_data",
             s=[300, 200], sc=[0, 0], r=[1, 1])

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description