Rumah >pembangunan bahagian belakang >Tutorial Python >RandomRotation dalam PyTorch

RandomRotation dalam PyTorch

Susan Sarandon
Susan Sarandonasal
2024-12-29 02:47:11679semak imbas

Beli Saya Kopi☕

*Memo:

  • Siaran saya menerangkan RandomHorizontalFlip().
  • Siaran saya menerangkan RandomVerticalFlip().
  • Siaran saya menerangkan OxfordIIITPet().

RandomRotation() boleh memutar sifar atau lebih imej seperti yang ditunjukkan di bawah:

*Memo:

  • Argumen pertama untuk permulaan ialah darjah(Jenis Diperlukan:int, float atau tuple/list(int atau float)): *Memo:
    • Nilai tunggal mestilah 0 <= x.
    • Tuple atau senarai mestilah 1D dengan 2 elemen. *Elemen pertama mestilah kurang daripada atau sama dengan elemen ke-2.
  • Argumen ke-2 untuk pemulaan ialah interpolasi(Pilihan-Lalai:Mod Interpolasi.Jenis TERDEKAT:Mod Interpolasi).
  • Argumen ke-3 untuk permulaan ialah kembangkan(Pilihan-Lalai:Jenis-Salah:bool).
  • Argumen ke-4 untuk pemulaan ialah center(Optional-Default:None-Type:tuple/list(int or float)). *Ia mestilah 1D dengan 2 elemen.
  • Argumen ke-5 untuk permulaan ialah fill(Optional-Default:0-Type:int, float atau tuple/list(int or float)): *Memo:
    • Tuple atau senarai mestilah 1D dengan 3 elemen.
  • Argumen pertama ialah img(Required-Type:PIL Image atau tensor/tuple/list(int or float)): *Memo:
    • Ia mestilah 2D atau 3D. Untuk 3D, D terdalam mesti mempunyai satu elemen.
    • Jangan gunakan img=.
  • v2 disyorkan untuk digunakan mengikut V1 atau V2? Mana satu patut saya guna?.
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")




<p><img src="https://img.php.cn/upload/article/000/000/000/173541163355044.jpg" alt="RandomRotation in PyTorch"></p>

<p><img src="https://img.php.cn/upload/article/000/000/000/173541163528488.jpg" alt="RandomRotation in PyTorch"></p>

<p><img src="https://img.php.cn/upload/article/000/000/000/173541163621429.jpg" alt="RandomRotation in PyTorch"></p>

<p><img src="https://img.php.cn/upload/article/000/000/000/173541163867638.jpg" alt="RandomRotation in PyTorch"></p>

<p><img src="https://img.php.cn/upload/article/000/000/000/173541164089048.jpg" alt="RandomRotation in PyTorch"></p>

<p><img src="https://img.php.cn/upload/article/000/000/000/173541164120249.jpg" alt="RandomRotation in PyTorch"></p>

<p><img src="https://img.php.cn/upload/article/000/000/000/173541164382128.jpg" alt="RandomRotation in PyTorch"><br>
</p>

<pre class="brush:php;toolbar:false">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

Atas ialah kandungan terperinci RandomRotation dalam PyTorch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn