Rumah > pembangunan bahagian belakang > Tutorial Python > Ubah saiz dalam PyTorch

Ubah saiz dalam PyTorch

Mary-Kate Olsen
Lepaskan: 2025-01-19 22:12:10
asal
938 orang telah melayarinya

Beli Saya Kopi☕

*Memo:

  • Siaran saya menerangkan OxfordIIITPet().

Resize() boleh mengubah saiz sifar atau lebih imej seperti yang ditunjukkan di bawah:

*Memo:

  • Argumen pertama untuk permulaan ialah saiz(Jenis-Diperlukan:int atau tuple/list(int)): *Memo:
    • Ia [lebar, tinggi].
    • Ia mestilah 1 <= x.
    • Tuple/senarai mestilah 1D dengan 1 atau 2 elemen.
    • Satu nilai(int atau tuple/list(int`)) digunakan pada lebar atau tepi ketinggian imej yang lebih kecil, kemudian sisi lebar atau ketinggian yang lebih besar juga diubah saiz: *Memo:
    • Jika lebar imej lebih kecil daripada ketinggiannya, ia adalah [saiz, saiz * lebar / tinggi].
    • Jika lebar imej lebih besar daripada ketinggiannya, ia ialah [saiz * lebar / tinggi , saiz].
    • Jika lebar imej sama dengan ketinggiannya, ia adalah [saiz, saiz].
  • Argumen ke-2 untuk permulaan ialah interpolasi(Pilihan-Lalai:Mod Interpolasi.Jenis-BILINEAR:Mod Interpolasi).
  • Argumen ke-3 untuk permulaan ialah max_size(Optional-Default:None-Type:int): *Memo:
    • Ia hanya disokong jika saiz ialah satu nilai(int atau tuple/list(int`)).
    • Selepas saiz digunakan jika lebar atau tepi ketinggian imej yang lebih besar melebihinya, ia digunakan pada lebar atau tepi ketinggian imej yang lebih besar untuk mengehadkan saiz imej, kemudian lebar atau tepi ketinggian imej lain yang lebih kecil juga menjadi lebih kecil daripada sebelumnya.
  • Argumen ke-4 untuk pemula ialah antialias(Pilihan-Lalai:True-Type:bool). *Walaupun jika menetapkan False padanya, ia sentiasa Benar jika interpolasi ialah InterpolationMode.BILINEAR atau InterpolationMode.BICUBIC.
  • Argumen pertama ialah img(Required-Type:PIL Image or tensor(int, float, complex or bool)): *Memo:
    • Tensor mestilah tensor 3D atau lebih D bagi satu atau lebih 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 Resize
from torchvision.transforms.functional import InterpolationMode

resize = Resize(size=100)
resize = Resize(size=100,
                interpolation=InterpolationMode.BILINEAR,
                max_size=None,
                antialias=True)
resize
# Resize(size=[100],
#        interpolation=InterpolationMode.BILINEAR,
#        antialias=True)

resize.size
# [100]

resize.interpolation
# 

print(resize.max_size)
# None

resize.antialias
# True

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

p1000_data = OxfordIIITPet(
    root="data",
    transform=Resize(size=1000)
    # transform=Resize(size=[1000])
)

p100_data = OxfordIIITPet(
    root="data",
    transform=Resize(size=100)
)

p50_data = OxfordIIITPet(
    root="data",
    transform=Resize(size=50)
)

p10_data = OxfordIIITPet(
    root="data",
    transform=Resize(size=10)
)

p100p180_data = OxfordIIITPet(
    root="data",
    transform=Resize(size=[100, 180])
)

p180p100_data = OxfordIIITPet(
    root="data",
    transform=Resize(size=[180, 100])
)

p100ms110_data = OxfordIIITPet(
    root="data",
    transform=Resize(size=100, max_size=110)
)

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.tight_layout()
    plt.show()

show_images1(data=origin_data, main_title="origin_data")
show_images1(data=p1000_data, main_title="p1000_data")
show_images1(data=p100_data, main_title="p100_data")
show_images1(data=p50_data, main_title="p50_data")
show_images1(data=p10_data, main_title="p10_data")
print()
show_images1(data=origin_data, main_title="origin_data")
show_images1(data=p100p180_data, main_title="p100p180_data")
show_images1(data=p180p100_data, main_title="p180p100_data")
print()
show_images1(data=p100_data, main_title="p100_data")
show_images1(data=p100ms110_data, main_title='p100ms110_data')

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, s=None, ms=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)
        if not s:
            s = im.size
        resize = Resize(size=s, max_size=ms) # Here
        plt.imshow(X=resize(im)) # Here
    plt.tight_layout()
    plt.show()

show_images2(data=origin_data, main_title="origin_data")
show_images2(data=origin_data, main_title="p1000_data", s=1000)
show_images2(data=origin_data, main_title="p100_data", s=100)
show_images2(data=origin_data, main_title="p50_data", s=50)
show_images2(data=origin_data, main_title="p10_data", s=10)
print()
show_images2(data=origin_data, main_title="origin_data")
show_images2(data=origin_data, main_title="p100p180_data", s=[100, 180])
show_images2(data=origin_data, main_title="p180p100_data", s=[180, 100])
print()
show_images2(data=origin_data, main_title="p100_data", s=100)
show_images2(data=origin_data, main_title="p100ms110_data", s=100, ms=110)




Image description

Image description

Image description

Image description

Image description


Image description

Image description

Image description


Image description

Image description

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

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan