RandomAffine in PyTorch (2)

Buy Me a Coffee☕ *Memos: My post explains RandomAffine() about degrees, translate, fill and center argument. My post explains RandomAffine() about shear argument. My post explains OxfordIIITPet(). RandomAffine() can do random rotation or random affine transformation for an image as shown below: from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import RandomAffine from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) scale1_1origin_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[1, 1]) ) scale01_5_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.1, 5]) ) scale01_1_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.1, 1]) ) scale1_5_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[1, 5]) ) scale09_09_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.9, 0.9]) ) scale08_08_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.8, 0.8]) ) scale07_07_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.7, 0.7]) ) scale06_06_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.6, 0.6]) ) scale05_05_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.5, 0.5]) ) scale04_04_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.4, 0.4]) ) scale03_03_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.3, 0.3]) ) scale02_02_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.2, 0.2]) ) scale01_01_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.1, 0.1]) ) scale001_001_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.01, 0.01]) ) scale0001_0001_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.001, 0.001]) ) scale2_2_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[2, 2]) ) scale3_3_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[3, 3]) ) scale4_4_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[4, 4]) ) scale5_5_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[5, 5]) ) scale7_7_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[7, 7]) ) scale10_10_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[10, 10]) ) scale15_15_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[15, 15]) ) scale25_25_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[25, 25]) ) scale50_50_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[50, 50]) ) scale100_100_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[100, 100]) ) scale300_300_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[300, 300]) ) 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.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=scale1_1origin_data, main_title="scale1_1origin_data") show_images1(data=scale01_5_data, main_title="scale01_5_data") show_images1(data=scale01_1_data, main_title="scale01_1_data") show_images1(data=scale1_5_data, main_title="scale1_5_data") print() show_images1(data=scale1_1origin_data, main_title="scale1_1origin_data") show_images1(data=scale09_09_data, main_title="scale09_09_data") show_images1(data=scale08_08_data, main_title="scale08_08_data") show_images1(data=scale07_07_data, main_title="scale07_07_data") show_images1(data=scale06_06_data, main_title="scale06_06_data") show_images1(data=scale05_05_data, main_title="scale05_05_data") show_images1(data=scale04_04_data, main_title="scale04_04_data") show_images1(data=scale03_03_data, main_title="scale03_03_data") show_images1(data=scale02_02_data, main_title="scale02_02_data") show_images1(data=scale01_01_data, main_title="scale01_01_data") show_images1(data=scale001_001_data, main_title="scale001_001_data") show_images1(data=scale0001_0001_data, main_title="scale0001_0001_data") print() show_images1(data=scale1_1origin_data

Feb 21, 2025 - 23:25
 0
RandomAffine in PyTorch (2)

Buy Me a Coffee

*Memos:

RandomAffine() can do random rotation or random affine transformation for an image as shown below:

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

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

scale1_1origin_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[1, 1])
)

scale01_5_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.1, 5])
)

scale01_1_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.1, 1])
)

scale1_5_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[1, 5])
)

scale09_09_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.9, 0.9])
)

scale08_08_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.8, 0.8])
)

scale07_07_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.7, 0.7])
)

scale06_06_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.6, 0.6])
)

scale05_05_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.5, 0.5])
)

scale04_04_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.4, 0.4])
)

scale03_03_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.3, 0.3])
)

scale02_02_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.2, 0.2])
)

scale01_01_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.1, 0.1])
)

scale001_001_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.01, 0.01])
)

scale0001_0001_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[0.001, 0.001])
)

scale2_2_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[2, 2])
)

scale3_3_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[3, 3])
)

scale4_4_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[4, 4])
)

scale5_5_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[5, 5])
)

scale7_7_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[7, 7])
)

scale10_10_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[10, 10])
)

scale15_15_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[15, 15])
)

scale25_25_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[25, 25])
)

scale50_50_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[50, 50])
)

scale100_100_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[100, 100])
)

scale300_300_data = OxfordIIITPet(
    root="data",
    transform=RandomAffine(degrees=[0, 0], scale=[300, 300])
)

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.xticks(ticks=[])
        plt.yticks(ticks=[])
    plt.tight_layout()
    plt.show()

show_images1(data=origin_data, main_title="origin_data")
print()
show_images1(data=scale1_1origin_data, main_title="scale1_1origin_data")
show_images1(data=scale01_5_data, main_title="scale01_5_data")
show_images1(data=scale01_1_data, main_title="scale01_1_data")
show_images1(data=scale1_5_data, main_title="scale1_5_data")
print()
show_images1(data=scale1_1origin_data, main_title="scale1_1origin_data")
show_images1(data=scale09_09_data, main_title="scale09_09_data")
show_images1(data=scale08_08_data, main_title="scale08_08_data")
show_images1(data=scale07_07_data, main_title="scale07_07_data")
show_images1(data=scale06_06_data, main_title="scale06_06_data")
show_images1(data=scale05_05_data, main_title="scale05_05_data")
show_images1(data=scale04_04_data, main_title="scale04_04_data")
show_images1(data=scale03_03_data, main_title="scale03_03_data")
show_images1(data=scale02_02_data, main_title="scale02_02_data")
show_images1(data=scale01_01_data, main_title="scale01_01_data")
show_images1(data=scale001_001_data, main_title="scale001_001_data")
show_images1(data=scale0001_0001_data, main_title="scale0001_0001_data")
print()
show_images1(data=scale1_1origin_data, main_title="scale1_1origin_data")
show_images1(data=scale2_2_data, main_title="scale2_2_data")
show_images1(data=scale3_3_data, main_title="scale3_3_data")
show_images1(data=scale4_4_data, main_title="scale4_4_data")
show_images1(data=scale5_5_data, main_title="scale5_5_data")
show_images1(data=scale7_7_data, main_title="scale7_7_data")
show_images1(data=scale10_10_data, main_title="scale10_10_data")
show_images1(data=scale15_15_data, main_title="scale15_15_data")
show_images1(data=scale25_25_data, main_title="scale25_25_data")
show_images1(data=scale50_50_data, main_title="scale50_50_data")
show_images1(data=scale100_100_data, main_title="scale100_100_data")
show_images1(data=scale300_300_data, main_title="scale300_300_data")

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ 
def show_images2(data, main_title=None, d=0, t=None, sc=None, sh=None,
                 ip=InterpolationMode.NEAREST, f=0, c=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)
        ra = RandomAffine(degrees=d, translate=t, scale=sc,
                          shear=sh, interpolation=ip, center=c, fill=f)
        plt.imshow(X=ra(im))
        plt.xticks(ticks=[])
        plt.yticks(ticks=[])
    plt.tight_layout()
    plt.show()

show_images2(data=origin_data, main_title="origin_data")
print()
show_images2(data=origin_data, main_title="scale1_1origin_data", d=[0, 0], 
             sc=[1, 1])
show_images2(data=origin_data, main_title="scale09_09_data", d=[0, 0],
             sc=[0.9, 0.9])
show_images2(data=origin_data, main_title="scale08_08_data", d=[0, 0],
             sc=[0.8, 0.8])
show_images2(data=origin_data, main_title="scale07_07_data", d=[0, 0],
             sc=[0.7, 0.7])
show_images2(data=origin_data, main_title="scale06_06_data", d=[0, 0],
             sc=[0.6, 0.6])
show_images2(data=origin_data, main_title="scale05_05_data", d=[0, 0],
             sc=[0.5, 0.5])
show_images2(data=origin_data, main_title="scale04_04_data", d=[0, 0],
             sc=[0.4, 0.4])
show_images2(data=origin_data, main_title="scale03_03_data", d=[0, 0],
             sc=[0.3, 0.3])
show_images2(data=origin_data, main_title="scale02_02_data", d=[0, 0],
             sc=[0.2, 0.2])
show_images2(data=origin_data, main_title="scale01_01_data", d=[0, 0],
             sc=[0.1, 0.1])
show_images2(data=origin_data, main_title="scale001_001_data", d=[0, 0],
             sc=[0.01, 0.01])
show_images2(data=origin_data, main_title="scale0001_0001_data", d=[0, 0], 
             sc=[0.001, 0.001])
print()
show_images2(data=origin_data, main_title="scale1_1origin_data", d=[0, 0], 
             sc=[1, 1])
show_images2(data=origin_data, main_title="scale2_2_data", d=[0, 0],
             sc=[2, 2])
show_images2(data=origin_data, main_title="scale3_3_data", d=[0, 0],
             sc=[3, 3])
show_images2(data=origin_data, main_title="scale4_4_data", d=[0, 0],
             sc=[4, 4])
show_images2(data=origin_data, main_title="scale5_5_data", d=[0, 0],
             sc=[5, 5])
show_images2(data=origin_data, main_title="scale7_7_data", d=[0, 0],
             sc=[7, 7])
show_images2(data=origin_data, main_title="scale10_10_data", d=[0, 0],
             sc=[10, 10])
show_images2(data=origin_data, main_title="scale15_15_data", d=[0, 0],
             sc=[15, 15])
show_images2(data=origin_data, main_title="scale25_25_data", d=[0, 0],
             sc=[25, 25])
show_images2(data=origin_data, main_title="scale50_50_data", d=[0, 0],
             sc=[50, 50])
show_images2(data=origin_data, main_title="scale100_100_data", d=[0, 0],
             sc=[100, 100])
show_images2(data=origin_data, main_title="scale300_300_data", d=[0, 0],
             sc=[300, 300])

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

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description