DEV Community

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

Posted on

RandomHorizontalFlip in PyTorch

Buy Me a Coffee

*Memos:

RandomHorizontalFlip() can flip zero or more images horizontally as shown below:

*Memos:

  • The 1st argument for initialization is p(Optional-Default:0.5-Type:float). *It's the probability which each image is flipped. *It's the probability which each image is flipped.
  • The 1st argument is img(Required-Type:PIL Image or tensor, tuple or list of int): *Memos:
    • It must be 2D.
    • 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 RandomHorizontalFlip

RandomHorizontalFlip()
# RandomHorizontalFlip(p=0.5)

RandomHorizontalFlip().p
# 0.5

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

trans100_data = OxfordIIITPet(
    root="data",
    transform=RandomHorizontalFlip(p=1.0)
)

trans50_data = OxfordIIITPet(
    root="data",
    transform=RandomHorizontalFlip(p=0.5)
)

import matplotlib.pyplot as plt

def show_images(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_images(data=origin_data, main_title="origin_data")
show_images(data=trans100_data, main_title="trans100_data")
show_images(data=trans50_data, main_title="trans50_data")
Enter fullscreen mode Exit fullscreen mode

Image description

Image description

Image description

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

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

import matplotlib.pyplot as plt

def show_images(data, main_title=None, prob=0.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)
        rhf = RandomHorizontalFlip(p=prob)
        plt.imshow(X=rhf(im))
        plt.xticks(ticks=[])
        plt.yticks(ticks=[])
    plt.tight_layout()
    plt.show()

show_images(data=my_data, main_title="origin_data")
show_images(data=my_data, main_title="trans100_data", prob=1.0)
show_images(data=my_data, main_title="trans50_data", prob=0.5)
Enter fullscreen mode Exit fullscreen mode

Image description

Image description

Image description

Top comments (0)