*Memos:
-
My post explains ElasticTransform() about
alpha
andfill
argument. -
My post explains ElasticTransform() about
sigma
andfill
argument. -
My post explains ElasticTransform() about
alpha
,sigma
andfill
argument. - My post explains OxfordIIITPet().
ElasticTransform() can do random morphological transformation for an image as shown below. *It's about no arguments, alpha
argument with sigma=0.1
and sigma
argument with alpha=0
:
*Memos:
- The 1st argument for initialization is
alpha
(Optional-Default:50.0
-Type:int
,float
ortuple
/list
(int
orfloat
)): *Memos:- It can do morphological transformation.
- It's the magnitude of displacements
[number, number]
. - A tuple/list must be the 1D with 1 or 2 elements.
- A single value(
int
,float
ortuple
/list
(int
orfloat
)) means[alpha, alpha]
.
- The 2nd argument for initialization is
sigma
(Optional-Default:5.0
-Type:int
,float
ortuple
/list
(int
orfloat
)): *Memos:- It's the smoothness of displacements
[number, number]
. - It must be
0 < number
. *A sigle value ofnumber <= 0
works which may be error. - A tuple/list must be the 1D with 1 or 2 elements.
- A single value(
int
,float
ortuple
/list
(int
orfloat
)) means[sigma, sigma]
.
- It's the smoothness of displacements
- The 3rd argument for initialization is
interpolation
(Optional-Default:InterpolationMode.BILINEAR
-Type:InterpolationMode). - The 4th argument for initialization is
fill
(Optional-Default:0
-Type:int
,float
ortuple
/list
(int
orfloat
)): *Memos:- It can change the background of an image. *The background can be seen when doing morphological transformation for 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
ortensor
(int
)): *Memos:- A tensor must be 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 ElasticTransform
from torchvision.transforms.functional import InterpolationMode
et = ElasticTransform()
et = ElasticTransform(alpha=50, sigma=5,
interpolation=InterpolationMode.BILINEAR, fill=0)
et
# ElasticTransform(alpha=[50.0, 50.0], sigma=[5.0, 5.0],
# interpolation=InterpolationMode.BILINEAR, fill=0)
et.alpha
# [50.0, 50.0]
et.sigma
# [5.0, 5.0]
et.interpolation
# <InterpolationMode.BILINEAR: 'bilinear'>
et.fill
# 0
origin_data = OxfordIIITPet(
root="data",
transform=None
# transform=ElasticTransform(alpha=0, sigma=0)
)
noargs_data = OxfordIIITPet( # `noargs` is no arguments.
root="data",
transform=ElasticTransform()
)
a0s01_data = OxfordIIITPet( # `a` is alpha and `s` is sigma.
root="data",
transform=ElasticTransform(alpha=0, sigma=0.1)
)
a50s01_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=50, sigma=0.1)
)
a100s01_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=100, sigma=0.1)
)
a200s01_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=200, sigma=0.1)
)
a500s01_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=500, sigma=0.1)
)
a1000s01_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=1000, sigma=0.1)
)
a5000s01_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=5000, sigma=0.1)
)
a10000s01_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=10000, sigma=0.1)
)
a0s1_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=0, sigma=1)
)
a0s5_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=0, sigma=5)
)
a0s10_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=0, sigma=10)
)
a0s20_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=0, sigma=20)
)
a0s40_data = OxfordIIITPet(
root="data",
transform=ElasticTransform(alpha=0, sigma=40)
)
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=a0s01_data, main_title="a0s01_data")
show_images1(data=a50s01_data, main_title="a50s01_data")
show_images1(data=a100s01_data, main_title="a100s01_data")
show_images1(data=a200s01_data, main_title="a200s01_data")
show_images1(data=a500s01_data, main_title="a500s01_data")
show_images1(data=a1000s01_data, main_title="a1000s01_data")
show_images1(data=a5000s01_data, main_title="a5000s01_data")
show_images1(data=a10000s01_data, main_title="a10000s01_data")
print()
show_images1(data=a0s01_data, main_title="a0s01_data")
show_images1(data=a0s1_data, main_title="a0s1_data")
show_images1(data=a0s5_data, main_title="a0s5_data")
show_images1(data=a0s10_data, main_title="a0s10_data")
show_images1(data=a0s20_data, main_title="a0s20_data")
show_images1(data=a0s40_data, main_title="a0s40_data")
# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, a=50, s=5,
ip=InterpolationMode.BILINEAR, f=0):
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)
et = ElasticTransform(alpha=a, sigma=s,
interpolation=ip, fill=f)
plt.imshow(X=et(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="a0s01_data", a=0, s=0.1)
show_images2(data=origin_data, main_title="a50s01_data", a=50, s=0.1)
show_images2(data=origin_data, main_title="a100s01_data", a=100, s=0.1)
show_images2(data=origin_data, main_title="a200s01_data", a=200, s=0.1)
show_images2(data=origin_data, main_title="a500s01_data", a=500, s=0.1)
show_images2(data=origin_data, main_title="a1000s01_data", a=1000, s=0.1)
show_images2(data=origin_data, main_title="a5000s01_data", a=5000, s=0.1)
show_images2(data=origin_data, main_title="a10000s01_data", a=10000, s=0.1)
print()
show_images2(data=origin_data, main_title="a0s01_data", a=0, s=0.1)
show_images2(data=origin_data, main_title="a0s1_data", a=0, s=1)
show_images2(data=origin_data, main_title="a0s5_data", a=0, s=5)
show_images2(data=origin_data, main_title="a0s10_data", a=0, s=10)
show_images2(data=origin_data, main_title="a0s20_data", a=0, s=20)
show_images2(data=origin_data, main_title="a0s40_data", a=0, s=40)
Top comments (0)