DEV Community

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

Posted on • Edited on

RandomAffine in PyTorch (3)

Buy Me a Coffee

*Memos:

RandomAffine() can do random rotation or random affine transformation for an image as shown below. *It's about shear argument (1):

from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import RandomAffine origin_data = OxfordIIITPet( root="data", transform=None ) shear0_0_0_0origin_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[0, 0, 0, 0]) ) shear90_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=90) # transform=RandomAffine(degrees=[0, 0], shear=[-90, 90, 0, 0]) ) shearn90_0_data = OxfordIIITPet( # `n` is negative.  root="data", transform=RandomAffine(degrees=[0, 0], shear=[-90, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-90, 0, 0, 0]) ) shear0_90_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[0, 90]) # transform=RandomAffine(degrees=[0, 0], shear=[0, 90, 0, 0]) ) shearn90_90n90_90_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-90, 90, -90, 90]) ) shear10_10_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[10, 10, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-170, -170, 0, 0]) ) shear20_20_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[20, 20, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-160, -160, 0, 0]) ) shear30_30_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[30, 30, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-150, -150, 0, 0]) ) shear40_40_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[40, 40, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-140, -140, 0, 0]) ) shear50_50_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[50, 50, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-130, -130, 0, 0]) ) shear60_60_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[60, 60, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-120, -120, 0, 0]) ) shear70_70_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[70, 70, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-110, -110, 0, 0]) ) shear80_80_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[80, 80, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-100, -100, 0, 0]) ) shear90_90_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[90, 90, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[-90, -90, 0, 0]) ) shearn10n10_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-10, -10, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[170, 170, 0, 0]) ) shearn20n20_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-20, -20, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[160, 160, 0, 0]) ) shearn30n30_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-30, -30, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[150, 150, 0, 0]) ) shearn40n40_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-40, -40, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[140, 140, 0, 0]) ) shearn50n50_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-50, -50, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[130, 130, 0, 0]) ) shearn60n60_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-60, -60, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[120, 120, 0, 0]) ) shearn70n70_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-70, -70, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[110, 110, 0, 0]) ) shearn80n80_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-80, -80, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[100, 100, 0, 0]) ) shearn90n90_0_0_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], shear=[-90, -90, 0, 0]) # transform=RandomAffine(degrees=[0, 0], shear=[90, 90, 0, 0]) ) 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=shear0_0_0_0origin_data, main_title="shear0_0_0_0origin_data") show_images1(data=shear90_data, main_title="shear90_data") show_images1(data=shearn90_0_data, main_title="shearn90_0_data") show_images1(data=shear0_90_data, main_title="shear0_90_data") show_images1(data=shearn90_90n90_90_data, main_title="shearn90_90n90_90_data") print() show_images1(data=shear0_0_0_0origin_data, main_title="shear0_0_0_0origin_data") show_images1(data=shear10_10_0_0_data, main_title="shear10_10_0_0_data") show_images1(data=shear20_20_0_0_data, main_title="shear20_20_0_0_data") show_images1(data=shear30_30_0_0_data, main_title="shear30_30_0_0_data") show_images1(data=shear40_40_0_0_data, main_title="shear40_40_0_0_data") show_images1(data=shear50_50_0_0_data, main_title="shear50_50_0_0_data") show_images1(data=shear60_60_0_0_data, main_title="shear60_60_0_0_data") show_images1(data=shear70_70_0_0_data, main_title="shear70_70_0_0_data") show_images1(data=shear80_80_0_0_data, main_title="shear80_80_0_0_data") show_images1(data=shear90_90_0_0_data, main_title="shear90_90_0_0_data") print() show_images1(data=shear0_0_0_0origin_data, main_title="shear0_0_0_0origin_data") show_images1(data=shearn10n10_0_0_data, main_title="shearn10n10_0_0_data") show_images1(data=shearn20n20_0_0_data, main_title="shearn20n20_0_0_data") show_images1(data=shearn30n30_0_0_data, main_title="shearn30n30_0_0_data") show_images1(data=shearn40n40_0_0_data, main_title="shearn40n40_0_0_data") show_images1(data=shearn50n50_0_0_data, main_title="shearn50n50_0_0_data") show_images1(data=shearn60n60_0_0_data, main_title="shearn60n60_0_0_data") show_images1(data=shearn70n70_0_0_data, main_title="shearn70n70_0_0_data") show_images1(data=shearn80n80_0_0_data, main_title="shearn80n80_0_0_data") show_images1(data=shearn90n90_0_0_data, main_title="shearn90n90_0_0_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, d=None, 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) if main_title != "origin_data": 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=[]) else: 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_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="shear0_0_0_0origin_data", d=[0, 0], sh=[0, 0, 0, 0]) show_images2(data=origin_data, main_title="shear90_data", d=[0, 0], sh=90) show_images2(data=origin_data, main_title="shearn90_0_data", d=[0, 0], sh=[-90, 0]) show_images2(data=origin_data, main_title="shear0_90_data", d=[0, 0], sh=[0, 90]) show_images2(data=origin_data, main_title="shearn90_90n90_90_data", d=[0, 0], sh=[-90, 90, -90, 90]) print() show_images2(data=origin_data, main_title="shear0_0_0_0origin_data", d=[0, 0], sh=[0, 0, 0, 0]) show_images2(data=origin_data, main_title="shear10_10_0_0_data", d=[0, 0], sh=[10, 10, 0, 0]) show_images2(data=origin_data, main_title="shear20_20_0_0_data", d=[0, 0], sh=[20, 20, 0, 0]) show_images2(data=origin_data, main_title="shear30_30_0_0_data", d=[0, 0], sh=[30, 30, 0, 0]) show_images2(data=origin_data, main_title="shear40_40_0_0_data", d=[0, 0], sh=[40, 40, 0, 0]) show_images2(data=origin_data, main_title="shear50_50_0_0_data", d=[0, 0], sh=[50, 50, 0, 0]) show_images2(data=origin_data, main_title="shear60_60_0_0_data", d=[0, 0], sh=[60, 60, 0, 0]) show_images2(data=origin_data, main_title="shear70_70_0_0_data", d=[0, 0], sh=[70, 70, 0, 0]) show_images2(data=origin_data, main_title="shear80_80_0_0_data", d=[0, 0], sh=[80, 80, 0, 0]) show_images2(data=origin_data, main_title="shear90_90_0_0_data", d=[0, 0], sh=[90, 90, 0, 0]) print() show_images2(data=origin_data, main_title="shear0_0_0_0origin_data", d=[0, 0], sh=[0, 0, 0, 0]) show_images2(data=origin_data, main_title="shearn10n10_0_0_data", d=[0, 0], sh=[-10, -10, 0, 0]) show_images2(data=origin_data, main_title="shearn20n20_0_0_data", d=[0, 0], sh=[-20, -20, 0, 0]) show_images2(data=origin_data, main_title="shearn30n30_0_0_data", d=[0, 0], sh=[-30, -30, 0, 0]) show_images2(data=origin_data, main_title="shearn40n40_0_0_data", d=[0, 0], sh=[-40, -40, 0, 0]) show_images2(data=origin_data, main_title="shearn50n50_0_0_data", d=[0, 0], sh=[-50, -50, 0, 0]) show_images2(data=origin_data, main_title="shearn60n60_0_0_data", d=[0, 0], sh=[-60, -60, 0, 0]) show_images2(data=origin_data, main_title="shearn70n70_0_0_data", d=[0, 0], sh=[-70, -70, 0, 0]) show_images2(data=origin_data, main_title="shearn80n80_0_0_data", d=[0, 0], sh=[-80, -80, 0, 0]) show_images2(data=origin_data, main_title="shearn90n90_0_0_data", d=[0, 0], sh=[-90, -90, 0, 0]) 
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)