DEV Community

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

Posted on

1 1 1 1

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

Heroku

Amplify your impact where it matters most — building exceptional apps.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someone’s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay