RandAugment in PyTorch (3)

Super Kai (Kazuya Ito) - Mar 3 - - Dev Community

Buy Me a Coffee

*Memos:

RandAugment() can randomly augment an image as shown below. *It's about num_magnitude_bins and fill argument:

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

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

nmb10_data = OxfordIIITPet( # `nmb` is num_magnitude_bins.
    root="data",
    transform=RandAugment(num_magnitude_bins=10)
)

nmb25_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_magnitude_bins=25)
)

nmb50_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_magnitude_bins=50)
)

nmb100_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_magnitude_bins=100)
)

nmb500_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_magnitude_bins=500)
)

nmb1000_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_magnitude_bins=1000)
)

no1000nmb10_data = OxfordIIITPet( # `no` is num_ops.
    root="data",
    transform=RandAugment(num_ops=1000, num_magnitude_bins=10)
)

no1000nmb25_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, num_magnitude_bins=25)
)

no1000nmb50_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, num_magnitude_bins=50)
)

no1000nmb100_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, num_magnitude_bins=100)
)

no1000nmb500_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, num_magnitude_bins=500)
)

no1000nmb1000_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, num_magnitude_bins=1000)
)

m9nmb10_data = OxfordIIITPet( # `m` is magnitude.
    root="data",
    transform=RandAugment(magnitude=9, num_magnitude_bins=10)
)

m9nmb25_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(magnitude=9, num_magnitude_bins=25)
)

m9nmb50_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(magnitude=9, num_magnitude_bins=50)
)

m9nmb100_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(magnitude=9, num_magnitude_bins=100)
)

m9nmb500_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(magnitude=9, num_magnitude_bins=500)
)

m9nmb1000_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(magnitude=9, num_magnitude_bins=1000)
)

no1000m9nmb10_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, magnitude=9, num_magnitude_bins=10)
)

no1000m9nmb25_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, magnitude=9, num_magnitude_bins=25)
)

no1000m9nmb50_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, magnitude=9, num_magnitude_bins=50)
)

no1000m9nmb100_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, magnitude=9, num_magnitude_bins=100)
)

no1000m9nmb500_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, magnitude=9, num_magnitude_bins=500)
)

no1000m9nmb1000_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_ops=1000, magnitude=9, num_magnitude_bins=1000)
)

nmb10f150_data = OxfordIIITPet( # `f` is fill.
    root="data",
    transform=RandAugment(num_magnitude_bins=10, fill=150)
)

nmb10f160_32_240_data = OxfordIIITPet(
    root="data",
    transform=RandAugment(num_magnitude_bins=10, 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=nmb10_data, main_title="nmb10_data")
show_images1(data=nmb25_data, main_title="nmb25_data")
show_images1(data=nmb50_data, main_title="nmb50_data")
show_images1(data=nmb100_data, main_title="nmb100_data")
show_images1(data=nmb500_data, main_title="nmb500_data")
show_images1(data=nmb1000_data, main_title="nmb1000_data")
print()
show_images1(data=no1000nmb10_data, main_title="no1000nmb10_data")
show_images1(data=no1000nmb25_data, main_title="no1000nmb25_data")
show_images1(data=no1000nmb50_data, main_title="no1000nmb50_data")
show_images1(data=no1000nmb100_data, main_title="no1000nmb100_data")
show_images1(data=no1000nmb500_data, main_title="no1000nmb500_data")
show_images1(data=no1000nmb1000_data, main_title="no1000nmb1000_data")
print()
show_images1(data=m9nmb10_data, main_title="m9nmb10_data")
show_images1(data=m9nmb25_data, main_title="m9nmb25_data")
show_images1(data=m9nmb50_data, main_title="m9nmb50_data")
show_images1(data=m9nmb100_data, main_title="m9nmb100_data")
show_images1(data=m9nmb500_data, main_title="m9nmb500_data")
show_images1(data=m9nmb1000_data, main_title="m9nmb1000_data")
print()
show_images1(data=no1000m9nmb10_data, main_title="no1000m9nmb10_data")
show_images1(data=no1000m9nmb25_data, main_title="no1000m9nmb25_data")
show_images1(data=no1000m9nmb50_data, main_title="no1000m9nmb50_data")
show_images1(data=no1000m9nmb100_data, main_title="no1000m9nmb100_data")
show_images1(data=no1000m9nmb500_data, main_title="no1000m9nmb500_data")
show_images1(data=no1000m9nmb1000_data, main_title="no1000m9nmb1000_data")
print()
show_images1(data=nmb10f150_data, main_title="nmb10f150_data")
show_images1(data=nmb10f160_32_240_data, main_title="nmb10f160_32_240_data")

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, no=2, m=9, nmb=31,
                 ip=InterpolationMode.NEAREST, f=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 = RandAugment(num_ops=no, magnitude=m,
                             num_magnitude_bins=nmb,
                             interpolation=ip, 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="nmb10_data", nmb=10)
show_images2(data=origin_data, main_title="nmb25_data", nmb=25)
show_images2(data=origin_data, main_title="nmb50_data", nmb=50)
show_images2(data=origin_data, main_title="nmb100_data", nmb=100)
show_images2(data=origin_data, main_title="nmb500_data", nmb=500)
show_images2(data=origin_data, main_title="nmb1000_data", nmb=1000)
print()
show_images2(data=origin_data, main_title="no1000nmb10_data", no=1000,
             nmb=10)
show_images2(data=origin_data, main_title="no1000nmb25_data", no=1000,
             nmb=25)
show_images2(data=origin_data, main_title="no1000nmb50_data", no=1000,
             nmb=50)
show_images2(data=origin_data, main_title="no1000nmb100_data", no=1000,
             nmb=100)
show_images2(data=origin_data, main_title="no1000nmb500_data", no=1000, 
             nmb=500)
show_images2(data=origin_data, main_title="no1000nmb1000_data", no=1000, 
             nmb=1000)
print()
show_images2(data=origin_data, main_title="m9nmb10_data", m=9, nmb=10)
show_images2(data=origin_data, main_title="m9nmb25_data", m=9, nmb=25)
show_images2(data=origin_data, main_title="m9nmb50_data", m=9, nmb=50)
show_images2(data=origin_data, main_title="m9nmb100_data", m=9, nmb=100)
show_images2(data=origin_data, main_title="m9nmb500_data", m=9, nmb=500)
show_images2(data=origin_data, main_title="m9nmb1000_data", m=9, nmb=1000)
print()
show_images2(data=origin_data, main_title="no1000m9nmb10_data", no=1000, m=9,
             nmb=10)
show_images2(data=origin_data, main_title="no1000m9nmb25_data", no=1000, m=9,
             nmb=25)
show_images2(data=origin_data, main_title="no1000m9nmb50_data", no=1000, m=9,
             nmb=50)
show_images2(data=origin_data, main_title="no1000m9nmb100_data", no=1000, m=9,
             nmb=100)
show_images2(data=origin_data, main_title="no1000m9nmb500_data", no=1000, m=9,
             nmb=500)
show_images2(data=origin_data, main_title="no1000m9nmb1000_data", no=1000, m=9,
             nmb=1000)
print()
show_images2(data=origin_data, main_title="nmb10f150_data", nmb=10, f=150)
show_images2(data=origin_data, main_title="nmb10f160_32_240_data", nmb=10,
             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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .