RandomInvert in PyTorch

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • MyrinNew
    Senior Member
    • Feb 2024
    • 5168

    #1

    RandomInvert in PyTorch

    Buy Me a Coffee


    *Memos:

    RandomInvert() can randomly invert an image as shown below:


    *Memos:
    • The 1st argument for initialization is p(Optional-Default:0.5-Type:int or float):
      *Memos:
      • It's the probability of whether an image is inverted or not.
      • It must be 0 .
    • The 1st argument is img(Required-Type:PIL Image or tensor(int)):
      *Memos:
      • A tensor must be 2D or 3D.
      • Don't use img=.
    • v2 is recommended to use according to V1 or V2? Which one should I use?.




    from torchvision.datasets import OxfordIIITPet
    from torchvision.transforms.v2 import RandomInvert

    randominvert = RandomInvert()
    randominvert = RandomInvert(p=0.5)

    randominvert
    # RandomInvert(p=0.5)

    randominvert.p
    # 0.5

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

    p0_data = OxfordIIITPet(
    root="data",
    transform=RandomInvert(p=0)
    )

    p05_data = OxfordIIITPet(
    root="data",
    transform=RandomInvert(p=0.5)
    )

    p1_data = OxfordIIITPet(
    root="data",
    transform=RandomInvert(p=1)
    )

    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=p0_data, main_title="p0_data")
    show_images1(data=p0_data, main_title="p0_data")
    show_images1(data=p0_data, main_title="p0_data")
    print()
    show_images1(data=p05_data, main_title="p05_data")
    show_images1(data=p05_data, main_title="p05_data")
    show_images1(data=p05_data, main_title="p05_data")
    print()
    show_images1(data=p1_data, main_title="p1_data")
    show_images1(data=p1_data, main_title="p1_data")
    show_images1(data=p1_data, main_title="p1_data")

    # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
    def show_images2(data, main_title=None, prob=0):
    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)
    ri = RandomInvert(p=prob)
    plt.imshow(X=ri(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="p0_data", prob=0)
    show_images2(data=origin_data, main_title="p0_data", prob=0)
    show_images2(data=origin_data, main_title="p0_data", prob=0)
    print()
    show_images2(data=origin_data, main_title="p05_data", prob=0.5)
    show_images2(data=origin_data, main_title="p05_data", prob=0.5)
    show_images2(data=origin_data, main_title="p05_data", prob=0.5)
    print()
    show_images2(data=origin_data, main_title="p1_data", prob=1)
    show_images2(data=origin_data, main_title="p1_data", prob=1)
    show_images2(data=origin_data, main_title="p1_data", prob=1)
















































    More...
Working...