AugMix in PyTorch (5) – DEV Community

AugMix() can randomly do AugMix to an image as shown below. *It’s about mixture_width
argument (2):
from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import AugMix
from torchvision.transforms.functional import InterpolationMode
origin_data = OxfordIIITPet(
root="data",
transform=None
)
mw0a50_data = OxfordIIITPet( # `mw` is mixture_width and `a` is alpha.
root="data",
transform=AugMix(mixture_width=0, alpha=50.0)
)
mw1a50_data = OxfordIIITPet(
root="data",
transform=AugMix(mixture_width=1, alpha=50.0)
)
mw2a50_data = OxfordIIITPet(
root="data",
transform=AugMix(mixture_width=2, alpha=50.0)
)
mw5a50_data = OxfordIIITPet(
root="data",
transform=AugMix(mixture_width=5, alpha=50.0)
)
mw10a50_data = OxfordIIITPet(
root="data",
transform=AugMix(mixture_width=10, alpha=50.0)
)
mw25a50_data = OxfordIIITPet(
root="data",
transform=AugMix(mixture_width=25, alpha=50.0)
)
mw50a50_data = OxfordIIITPet(
root="data",
transform=AugMix(mixture_width=50, alpha=50.0)
)
s10mw0cd50a50_data = OxfordIIITPet( # `s` is severity and `cd` is chain_depth.
root="data",
transform=AugMix(severity=10, mixture_width=0, chain_depth=50, alpha=50.0)
)
s10mw1cd50a50_data = OxfordIIITPet(
root="data",
transform=AugMix(severity=10, mixture_width=1, chain_depth=50, alpha=50.0)
)
s10mw2cd50a50_data = OxfordIIITPet(
root="data",
transform=AugMix(severity=10, mixture_width=2, chain_depth=50, alpha=50.0)
)
s10mw5cd50a50_data = OxfordIIITPet(
root="data",
transform=AugMix(severity=10, mixture_width=5, chain_depth=50, alpha=50.0)
)
s10mw10cd50a50_data = OxfordIIITPet(
root="data",
transform=AugMix(severity=10, mixture_width=10, chain_depth=50, alpha=50.0)
)
s10mw25cd50a50_data = OxfordIIITPet(
root="data",
transform=AugMix(severity=10, mixture_width=25, chain_depth=50, alpha=50.0)
)
s10mw50cd50a50_data = OxfordIIITPet(
root="data",
transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=50.0)
)
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=mw0a50_data, main_title="mw0a50_data")
show_images1(data=mw1a50_data, main_title="mw1a50_data")
show_images1(data=mw2a50_data, main_title="mw2a50_data")
show_images1(data=mw5a50_data, main_title="mw5a50_data")
show_images1(data=mw10a50_data, main_title="mw10a50_data")
show_images1(data=mw25a50_data, main_title="mw25a50_data")
show_images1(data=mw50a50_data, main_title="mw50a50_data")
print()
show_images1(data=s10mw0cd50a50_data, main_title="s10mw0cd50a50_data")
show_images1(data=s10mw1cd50a50_data, main_title="s10mw1cd50a50_data")
show_images1(data=s10mw2cd50a50_data, main_title="s10mw2cd50a50_data")
show_images1(data=s10mw5cd50a50_data, main_title="s10mw5cd50a50_data")
show_images1(data=s10mw10cd50a50_data, main_title="s10mw10cd50a50_data")
show_images1(data=s10mw25cd50a50_data, main_title="s10mw25cd50a50_data")
show_images1(data=s10mw50cd50a50_data, main_title="s10mw50cd50a50_data")
# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0,
ao=True, ip=InterpolationMode.BILINEAR, 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)
am = AugMix(severity=s, mixture_width=mw, chain_depth=cd,
alpha=a, all_ops=ao, interpolation=ip, fill=f)
plt.imshow(X=am(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="mw0a50_data", mw=0, a=50.0)
show_images2(data=origin_data, main_title="mw1a50_data", mw=1, a=50.0)
show_images2(data=origin_data, main_title="mw2a50_data", mw=2, a=50.0)
show_images2(data=origin_data, main_title="mw5a50_data", mw=5, a=50.0)
show_images2(data=origin_data, main_title="mw10a50_data", mw=10, a=50.0)
show_images2(data=origin_data, main_title="mw25a50_data", mw=25, a=50.0)
show_images2(data=origin_data, main_title="mw50a50_data", mw=50, a=50.0)
print()
show_images2(data=origin_data, main_title="s10mw0cd50a50_data", s=10, mw=0,
cd=50, a=50.0)
show_images2(data=origin_data, main_title="s10mw1cd50a50_data", s=10, mw=1,
cd=50, a=50.0)
show_images2(data=origin_data, main_title="s10mw2cd50a50_data", s=10, mw=2,
cd=50, a=50.0)
show_images2(data=origin_data, main_title="s10mw5cd50a50_data", s=10, mw=5,
cd=50, a=50.0)
show_images2(data=origin_data, main_title="s10mw10cd50a50_data", s=10, mw=10,
cd=50, a=50.0)
show_images2(data=origin_data, main_title="s10mw25cd50a50_data", s=10, mw=25,
cd=50, a=50.0)
show_images2(data=origin_data, main_title="s10mw50cd50a50_data", s=10, mw=50,
cd=50, a=50.0)