*Memos:
- My post explains RandomAffine().
- My post explains RandomPerspective().
- My post explains RandomHorizontalFlip().
- My post explains RandomVerticalFlip().
- My post explains OxfordIIITPet().
RandomRotation() can rotate zero or more images as shown below:
*Memos:
- The 1st argument for initialization is
degrees
(Required-Type:int
,float
ortuple
/list
(int
orfloat
)): *Memos:- It can do rotation.
- It’s the range of the degrees
[min, max]
. - A single value must be
0 <= x
. - A single value is converted to
[-degrees, +degrees]
. - A tuple or list must be the 1D with 2 elements. *The 1st element must be less than or equal to the 2nd element.
- The 2nd argument for initialization is
interpolation
(Optional-Default:InterpolationMode.NEAREST
-Type:InterpolationMode). - The 3rd argument for initialization is
expand
(Optional-Default:False
-Type:bool
). - The 4th argument for initialization is
center
(Optional-Default:None
-Type:tuple
/list
(int
orfloat
)). *It must be the 1D with 2 elements. - The 5th argument for initialization is
fill
(Optional-Default:0
-Type:int
,float
ortuple
/list
(int
orfloat
)): *Memos:- It can change the background of images. *The background can be seen when rotating images.
- A tuple/list must be the 1D with 3 elements.
- The 1st argument is
img
(Required-Type:PIL Image
ortensor
(int
,float
,complex
orbool
)): *Memos:- It must be the 3D or more D tensor of zero or more elements.
- 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 RandomRotation
from torchvision.transforms.functional import InterpolationMode
randomrotation = RandomRotation(degrees=90.0)
randomrotation = RandomRotation(degrees=[-90.0, 90.0],
interpolation=InterpolationMode.NEAREST,
expand=False,
center=None,
fill=0)
randomrotation
# RandomRotation(degrees=[-90.0, 90.0], # interpolation=InterpolationMode.NEAREST, # expand=False, # fill=0)
randomrotation.degrees
# [-90.0, 90.0]
randomrotation.interpolation
# <InterpolationMode.NEAREST: 'nearest'>
randomrotation.expand
# False
print(randomrotation.center)
# None
randomrotation.fill
# 0
origin_data = OxfordIIITPet(
root="data",
transform=None
# transform=RandomRotation(degrees=[0.0, 0.0]) )
p90_data = OxfordIIITPet( # `p` is plus. root="data",
transform=RandomRotation(degrees=90.0)
# transform=RandomRotation(degrees=[-90.0, 90.0]) )
p90p90_data = OxfordIIITPet(
root="data",
transform=RandomRotation(degrees=[90.0, 90.0])
)
m90m90expand_data = OxfordIIITPet( # `m` is minus. root="data",
transform=RandomRotation(degrees=[-90.0, -90.0], expand=True)
)
p180p180offcenter_data = OxfordIIITPet(
root="data",
transform=RandomRotation(degrees=[180.0, 180.0], center=[270, 200])
)
m45m45fillgray_data = OxfordIIITPet(
root="data",
transform=RandomRotation(degrees=[-45.0, -45.0], fill=150)
)
p135p135fillpurple_data = OxfordIIITPet(
root="data",
transform=RandomRotation(degrees=[135.0, 135.0], 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")
show_images1(data=p90_data, main_title="p90_data")
show_images1(data=p90p90_data, main_title="p90p90_data")
show_images1(data=m90m90expand_data, main_title="m90m90expand_data")
show_images1(data=p180p180offcenter_data, main_title="p180p180offcenter_data")
show_images1(data=m45m45fillgray_data, main_title="m45m45fillgray_data")
show_images1(data=p135p135fillpurple_data,
main_title="p135p135fillpurple_data")
# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, d=0, e=False, c=None, f=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)
rr = RandomRotation(degrees=d, expand=e, center=c, fill=f) # Here plt.imshow(X=rr(im)) # Here plt.xticks(ticks=[])
plt.yticks(ticks=[])
plt.tight_layout()
plt.show()
show_images2(data=origin_data, main_title="origin_data")
show_images2(data=origin_data, main_title="p90_data", d=90)
show_images2(data=origin_data, main_title="p90p90_data", d=[90, 90])
show_images2(data=origin_data, main_title="m90m90expand_data", d=[-90, -90])
show_images2(data=origin_data, main_title="p180p180offcenter_data",
d=[180, 180], c=[270, 200])
show_images2(data=origin_data, main_title="m45m45fillgray_data",
d=[-45, -45], f=150)
show_images2(data=origin_data, main_title="p135p135fillpurple_data",
d=[135, 135], f=[160, 32, 240])
Enter fullscreen mode Exit fullscreen mode
© 版权声明
THE END
暂无评论内容