This content originally appeared on DEV Community and was authored by Super Kai (Kazuya Ito)
*Memos:
-
My post explains RandAugment() about
num_opsandfillargument. -
My post explains RandAugment() about
magnitudeandfillargument. -
My post explains RandAugment() about
num_magnitude_binsandfillargument. - My post explains TrivialAugmentWide().
- My post explains AutoAugment().
-
My post explains AugMix() about no arguments and
fullargument. - My post explains OxfordIIITPet().
RandAugment() can randomly augment an image as shown below. *It’s about no arguments and fill argument:
*Memos:
- The 1st argument for initialization is
num_ops(Optional-Default:2-Type:int). *It must be0 <= x. - The 2nd argument for initialization is
magnitude(Optional-Default:9-Type:intortuple/list(intorfloat)): *Memos:- It must be
0 <= xand0 < num_magnitude_bins.
- It must be
- The 3rd argument for initialization is
num_magnitude_bins(Optional-Default:31-Type:int). *It must be1 <= x. - The 4th argument for initialization is
interpolation(Optional-Default:InterpolationMode.NEAREST-Type:InterpolationMode). *If the input is a tensor, onlyInterpolationMode.NEAREST,InterpolationMode.BILINEARcan be set to it. - The 5th argument for initialization is
fill(Optional-Default:None-Type:int,floatortuple/list(intorfloat)): *Memos:- It can change the background of an image. *The background can be seen when augmenting 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 Imageortensor(int)): *Memos:- A tensor must be 3D.
- Don’t use
img=.
-
v2is recommended to use according to V1 or V2? Which one should I use?.
from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import RandAugment
from torchvision.transforms.functional import InterpolationMode
ra = RandAugment()
ra = RandAugment(num_ops=2, magnitude=9, num_magnitude_bins=31,
interpolation=InterpolationMode.NEAREST, fill=None)
ra
# RandAugment(interpolation=InterpolationMode.NEAREST,
# num_ops=2, magnitude=9, num_magnitude_bins=31)
ra.num_ops
# 2
ra.magnitude
# 9
ra.num_magnitude_bins
# 31
ra.interpolation
# <InterpolationMode.NEAREST: 'nearest'>
print(ra.fill)
# None
origin_data = OxfordIIITPet(
root="data",
transform=None
)
noargs_data = OxfordIIITPet( # `noargs` is no arguments.
root="data",
transform=RandAugment()
)
fgray_data = OxfordIIITPet( # `f` is fill.
root="data",
transform=RandAugment(fill=150)
# transform=RandAugment(fill=[150])
)
fpurple_data = OxfordIIITPet(
root="data",
transform=RandAugment(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=fgray_data, main_title="fgray_data")
show_images1(data=fpurple_data, main_title="fpurple_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="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="fgray_data", f=150)
show_images2(data=origin_data, main_title="fpurple_data", f=[160, 32, 240])
This content originally appeared on DEV Community and was authored by Super Kai (Kazuya Ito)













