首頁 > 後端開發 > Python教學 > PyTorch 中的隨機旋轉

PyTorch 中的隨機旋轉

Susan Sarandon
發布: 2024-12-29 02:47:11
原創
684 人瀏覽過

請我喝杯咖啡☕

*備忘錄:

  • 我的貼文解釋了 RandomHorizo​​ntalFlip()。
  • 我的貼文解釋了 RandomVerticalFlip()。
  • 我的帖子解釋了 OxfordIIITPet()。

RandomRotation() 可以旋轉零個或多個影像,如下所示:

*備忘錄:

  • 初始化的第一個參數是度數(必要型別:int、float 或 tuple/list(int 或 float)): *備註:
    • 單一值必須為 0
    • 元組或列表必須是具有 2 個元素的一維。 *第一個元素必須小於或等於第二個元素。
  • 初始化的第二個參數是插值(Optional-Default:InterpolationMode.NEAREST-Type:InterpolationMode)。
  • 初始化的第三個參數是expand(Optional-Default:False-Type:bool)。
  • 初始化的第四個參數是 center(Optional-Default:None-Type:tuple/list(int or float))。 *必須是2個元素的一維。
  • 初始化的第五個參數是 fill(Optional-Default:0-Type:int, float or tuple/list(int or float)): *備註:
    • 元組或列表必須是具有 3 個元素的一維。
  • 第一個參數是img(必需類型:PIL映像或張量/元組/列表(int或float)): *備註:
    • 它必須是 2D 或 3D。對於 3D,最深的 D 必須有一個元素。
    • 不要使用img=。
  • v2建議依照V1還是V2使用?我應該使用哪一個?
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
)

p90_data = OxfordIIITPet( # `p` is plus.
    root="data",
    transform=RandomRotation(degrees=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_images(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_images(data=origin_data, main_title="origin_data")
show_images(data=p90_data, main_title="p90_data")
show_images(data=p90p90_data, main_title="p90p90_data")
show_images(data=m90m90expand_data, main_title="m90m90expand_data")
show_images(data=p180p180offcenter_data, main_title="p180p180offcenter_data")
show_images(data=m45m45fillgray_data, main_title="m45m45fillgray_data")
show_images(data=p135p135fillpurple_data, main_title="p135p135fillpurple_data")
登入後複製

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import RandomRotation

my_data = OxfordIIITPet(
    root="data",
    transform=None
)

import matplotlib.pyplot as plt

def show_images(data, main_title=None, d=0.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_images(data=my_data, main_title="my_data")
show_images(data=my_data, main_title="p90_data", d=90.0)
show_images(data=my_data, main_title="p90p90_data", d=(90.0, 90.0))
show_images(data=my_data, main_title="m90m90expand_data", d=(-90, -90))
show_images(data=my_data, main_title="p180p180offcenter_data",
            d=(180.0, 180.0), c=(270, 200))
show_images(data=my_data, main_title="m45m45fillgray_data",
            d=(-45.0, -45.0), f=150)
show_images(data=my_data, main_title="p135p135fillpurple_data",
            d=(135.0, 135.0), f=(160, 32, 240))
登入後複製

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

RandomRotation in PyTorch

以上是PyTorch 中的隨機旋轉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板