AugMix in PyTorch (1)
Buy Me a Coffee☕
*Memos:
* My post explains AugMix() about `severity` argument (1).
* My post explains AugMix() about `severity` argument (2).
* My post explains AutoAugment().
* My post explains RandAugment() about `num_ops` and `fill` argument.
* My post explains TrivialAugmentWide().
* My post explains OxfordIIITPet().
AugMix() can randomly do AugMix to an image as shown below. *It's about no arguments and `full` argument:
*Memos:
* The 1st argument for initialization is `severity`(Optional-Default:`3`-Type:`int`). *It must be `1 <= x <= 10`.
* The 2nd argument for initialization is `mixture_width`(Optional-Default:`3`-Type:`int`).
* The 3rd argument for initialization is `chain_depth`(Optional-Default:`-1`-Type:`int`). *If it's `x <= 0`, it's randomly taken from the interval `[1, 3]`.
* The 4th argument for initialization is `alpha`(Optional-Default:`1.0`-Type:`float`). *It must be `1 <= x`.
* The 5th argument for initialization is `all_ops`(Optional-Default:`True`-Type:`bool`). *It must be `1 <= x`.
* The 6th argument for initialization is `interpolation`(Optional-Default:`InterpolationMode.NEAREST`-Type:InterpolationMode). *If the input is a tensor, only `InterpolationMode.NEAREST` and `InterpolationMode.BILINEAR` can be set to it.
* The 7th argument for initialization is `fill`(Optional-Default:`0`-Type:`int`, `float` or `tuple`/`list`(`int` or `float`)): *Memos:
* It can change the background of an image. *The background can be seen when doing AugMix to an image.
* A tuple/list must be the 1D with 1 or 3 elements.
* If all values are `x <= 0`, it's black.
* If all values are `255 <= x`, it's white.
* 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 AugMix
from torchvision.transforms.functional import InterpolationMode
am = AugMix()
am = AugMix(severity=3, mixture_width=3, chain_depth=-1, alpha=1.0,
all_ops=True, interpolation=InterpolationMode.BILINEAR,
fill=None)
am
# AugMix(interpolation=InterpolationMode.BILINEAR, severity=3,
# mixture_width=3, chain_depth=-1, alpha=1.0, all_ops=True)
am.severity
# 3
am.mixture_width
# 3
am.chain_depth
# -1
am.alpha
# 1.0
am.all_ops
# True
am.interpolation
# <InterpolationMode.BILINEAR: 'bilinear'>
print(am.fill)
# None
origin_data = OxfordIIITPet(
root="data",
transform=None
)
noargs_data = OxfordIIITPet( # `noargs` is no arguments.
root="data",
transform=AugMix()
)
aoFalse_data = OxfordIIITPet( # `ao` is all_ops.
root="data",
transform=AugMix(all_ops=False)
# transform=AugMix(severity=3, mixture_width=3, chain_depth=-1,
# alpha=1.0, all_ops=True,
# interpolation=InterpolationMode.BILINEAR,
# fill=None)
)
s10cd25fgray_data = OxfordIIITPet( # `s` is severity and `cd` is chain_depth.
root="data", # `f` is fill.
transform=AugMix(severity=10, chain_depth=25, fill=150)
)
s10cd25fpurple_data = OxfordIIITPet(
root="data",
transform=AugMix(severity=10, chain_depth=25, 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=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
show_images1(data=noargs_data, main_title="noargs_data")
print()
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
show_images1(data=aoFalse_data, main_title="aoFalse_data")
print()
show_images1(data=s10cd25fgray_data, main_title="s10cd25fgray_data")
show_images1(data=s10cd25fpurple_data, main_title="s10cd25fpurple_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="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
show_images2(data=origin_data, main_title="noargs_data")
print()
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
show_images2(data=origin_data, main_title="aoFalse_data", ao=False)
print()
show_images2(data=origin_data, main_title="s10cd25fgray_data", s=10, cd=25,
f=150)
show_images2(data=origin_data, main_title="s10cd25fpurple_data", s=10,
cd=25, f=[160, 32, 240])