DEV Community

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

Posted on

ElasticTransform in PyTorch (2)

Buy Me a Coffee

*Memos:

ElasticTransform() can do random morphological transformation for an image as shown below. *It's about alpha and fill argument:

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

origin_data = OxfordIIITPet(
    root="data",
    transform=None
    # transform=ElasticTransform(alpha=0, sigma=0)
)

a0origin_data = OxfordIIITPet( # `a` is alpha.
    root="data",
    transform=ElasticTransform(alpha=0)
)

a50_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=50)
    # transform=ElasticTransform(alpha=[50, 50])
    # transform=ElasticTransform(alpha=-50)
    # transform=ElasticTransform(alpha=[-50, -50])
)

a100_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=100)
    # transform=ElasticTransform(alpha=-100)
)

a200_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=200)
    # transform=ElasticTransform(alpha=-200)
)

a500_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=500)
    # transform=ElasticTransform(alpha=-500)
)

a1000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=1000)
    # transform=ElasticTransform(alpha=-1000)
)

a5000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=5000)
    # transform=ElasticTransform(alpha=-5000)
)

a10000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=10000)
    # transform=ElasticTransform(alpha=-10000)
)

a50000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=50000)
    # transform=ElasticTransform(alpha=-50000)
)

a100000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=100000)
    # transform=ElasticTransform(alpha=-100000)
)

a1000000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=1000000)
    # transform=ElasticTransform(alpha=-1000000)
)

a10000000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=10000000)
    # transform=ElasticTransform(alpha=-10000000)
)

a0_0origin_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 0])
)

a50_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[50, 0])
    # transform=ElasticTransform(alpha=[-50, 0])
)

a100_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[100, 0])
    # transform=ElasticTransform(alpha=[-100, 0])
)

a200_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[200, 0])
    # transform=ElasticTransform(alpha=[-200, 0])
)

a500_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[500, 0])
    # transform=ElasticTransform(alpha=[-500, 0])
)

a1000_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[1000, 0])
    # transform=ElasticTransform(alpha=[-1000, 0])
)

a5000_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[5000, 0])
    # transform=ElasticTransform(alpha=[-5000, 0])
)

a10000_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[10000, 0])
    # transform=ElasticTransform(alpha=[-10000, 0])
)

a50000_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[50000, 0])
    # transform=ElasticTransform(alpha=[-50000, 0])
)

a100000_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[100000, 0])
    # transform=ElasticTransform(alpha=[-100000, 0])
)

a1000000_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[1000000, 0])
    # transform=ElasticTransform(alpha=[-1000000, 0])
)

a10000000_0_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[10000000, 0])
    # transform=ElasticTransform(alpha=[-10000000, 0])
)

a0_50_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 50])
    # transform=ElasticTransform(alpha=[0, -50])
)

a0_100_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 100])
    # transform=ElasticTransform(alpha=[0, -100])
)

a0_200_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 200])
    # transform=ElasticTransform(alpha=[0, -200])
)

a0_500_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 500])
    # transform=ElasticTransform(alpha=[0, -500])
)

a0_1000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 1000])
    # transform=ElasticTransform(alpha=[0, -1000])
)

a0_5000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 5000])
    # transform=ElasticTransform(alpha=[0, -5000])
)

a0_10000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 10000])
    # transform=ElasticTransform(alpha=[0, -10000])
)

a0_50000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 50000])
    # transform=ElasticTransform(alpha=[0, -50000])
)

a0_100000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 100000])
    # transform=ElasticTransform(alpha=[0, -100000])
)

a0_1000000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 1000000])
    # transform=ElasticTransform(alpha=[0, -1000000])
)

a0_10000000_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=[0, 10000000])
    # transform=ElasticTransform(alpha=[0, -10000000])
)

a5000fgray_data = OxfordIIITPet( # `f` is fill.
    root="data",
    transform=ElasticTransform(alpha=5000, fill=150)
    # transform=ElasticTransform(alpha=5000, fill=[150])
)

a10000fgray_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=10000, fill=150)
)

a5000fpurple_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=5000, fill=[160, 32, 240])
)

a10000fpurple_data = OxfordIIITPet(
    root="data",
    transform=ElasticTransform(alpha=10000, fill=[160, 32, 240])
)

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=a0origin_data, main_title="a0origin_data")
show_images1(data=a50_data, main_title="a50_data")
show_images1(data=a100_data, main_title="a100_data")
show_images1(data=a200_data, main_title="a200_data")
show_images1(data=a500_data, main_title="a500_data")
show_images1(data=a1000_data, main_title="a1000_data")
show_images1(data=a5000_data, main_title="a5000_data")
show_images1(data=a10000_data, main_title="a10000_data")
show_images1(data=a50000_data, main_title="a50000_data")
show_images1(data=a100000_data, main_title="a100000_data")
show_images1(data=a1000000_data, main_title="a1000000_data")
show_images1(data=a10000000_data, main_title="a10000000_data")
print()
show_images1(data=a0_0origin_data, main_title="a0_0origin_data")
show_images1(data=a50_0_data, main_title="a50_0_data")
show_images1(data=a100_0_data, main_title="a100_0_data")
show_images1(data=a200_0_data, main_title="a200_0_data")
show_images1(data=a500_0_data, main_title="a500_0_data")
show_images1(data=a1000_0_data, main_title="a1000_0_data")
show_images1(data=a5000_0_data, main_title="a5000_0_data")
show_images1(data=a10000_0_data, main_title="a10000_0_data")
show_images1(data=a50000_0_data, main_title="a50000_0_data")
show_images1(data=a100000_0_data, main_title="a100000_0_data")
show_images1(data=a1000000_0_data, main_title="a1000000_0_data")
show_images1(data=a10000000_0_data, main_title="a10000000_0_data")
print()
show_images1(data=a0_0origin_data, main_title="a0_0origin_data")
show_images1(data=a0_50_data, main_title="a0_50_data")
show_images1(data=a0_100_data, main_title="a0_100_data")
show_images1(data=a0_200_data, main_title="a0_200_data")
show_images1(data=a0_500_data, main_title="a0_500_data")
show_images1(data=a0_1000_data, main_title="a0_1000_data")
show_images1(data=a0_5000_data, main_title="a0_5000_data")
show_images1(data=a0_10000_data, main_title="a0_10000_data")
show_images1(data=a0_50000_data, main_title="a0_50000_data")
show_images1(data=a0_100000_data, main_title="a0_100000_data")
show_images1(data=a0_1000000_data, main_title="a0_1000000_data")
show_images1(data=a0_10000000_data, main_title="a0_10000000_data")
print()
show_images1(data=a5000fgray_data, main_title="a5000fgray_data")
show_images1(data=a10000fgray_data, main_title="a10000fgray_data")
print()
show_images1(data=a5000fpurple_data, main_title="a5000fpurple_data")
show_images1(data=a10000fpurple_data, main_title="a10000fpurple_data")

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, a=50, s=5, 
                 ip=InterpolationMode.BILINEAR, f=0):
    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)
            et = ElasticTransform(alpha=a, sigma=s,
                                  interpolation=ip, fill=f)
            plt.imshow(X=et(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="a0origin_data", a=0)
show_images2(data=origin_data, main_title="a50_data", a=50)
show_images2(data=origin_data, main_title="a100_data", a=100)
show_images2(data=origin_data, main_title="a200_data", a=200)
show_images2(data=origin_data, main_title="a500_data", a=500)
show_images2(data=origin_data, main_title="a1000_data", a=1000)
show_images2(data=origin_data, main_title="a5000_data", a=5000)
show_images2(data=origin_data, main_title="a10000_data", a=10000)
show_images2(data=origin_data, main_title="a50000_data", a=50000)
show_images2(data=origin_data, main_title="a100000_data", a=100000)
show_images2(data=origin_data, main_title="a1000000_data", a=1000000)
show_images2(data=origin_data, main_title="a10000000_data", a=10000000)
print()
show_images2(data=origin_data, main_title="a0_0origin_data", a=[0, 0])
show_images2(data=origin_data, main_title="a50_0_data", a=[50, 0])
show_images2(data=origin_data, main_title="a100_0_data", a=[100, 0])
show_images2(data=origin_data, main_title="a200_0_data", a=[200, 0])
show_images2(data=origin_data, main_title="a500_0_data", a=[500, 0])
show_images2(data=origin_data, main_title="a1000_0_data", a=[1000, 0])
show_images2(data=origin_data, main_title="a5000_0_data", a=[5000, 0])
show_images2(data=origin_data, main_title="a10000_0_data", a=[10000, 0])
show_images2(data=origin_data, main_title="a50000_0_data", a=[50000, 0])
show_images2(data=origin_data, main_title="a100000_0_data", a=[100000, 0])
show_images2(data=origin_data, main_title="a1000000_0_data", a=[1000000, 0])
show_images2(data=origin_data, main_title="a10000000_0_data", a=[10000000, 0])
print()
show_images2(data=origin_data, main_title="a0_0origin_data", a=[0, 0])
show_images2(data=origin_data, main_title="a0_50_data", a=[0, 50])
show_images2(data=origin_data, main_title="a0_100_data", a=[0, 100])
show_images2(data=origin_data, main_title="a0_200_data", a=[0, 200])
show_images2(data=origin_data, main_title="a0_500_data", a=[0, 500])
show_images2(data=origin_data, main_title="a0_1000_data", a=[0, 1000])
show_images2(data=origin_data, main_title="a0_5000_data", a=[0, 5000])
show_images2(data=origin_data, main_title="a0_10000_data", a=[0, 10000])
show_images2(data=origin_data, main_title="a0_50000_data", a=[0, 50000])
show_images2(data=origin_data, main_title="a0_100000_data", a=[0, 100000])
show_images2(data=origin_data, main_title="a0_1000000_data", a=[0, 1000000])
show_images2(data=origin_data, main_title="a0_10000000_data", a=[0, 10000000])
print()
show_images2(data=origin_data, main_title="a5000fgray_data", a=5000, f=150)
show_images2(data=origin_data, main_title="a10000fgray_data", a=10000, f=150)
print()
show_images2(data=origin_data, main_title="a5000fpurple_data", a=5000,
             f=[160, 32, 240])
show_images2(data=origin_data, main_title="a10000fpurple_data", a=10000,
             f=[160, 32, 240])
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

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)