Heim > Backend-Entwicklung > Python-Tutorial > Größe in PyTorch ändern

Größe in PyTorch ändern

Mary-Kate Olsen
Freigeben: 2025-01-19 22:12:10
Original
938 Leute haben es durchsucht

Kauf mir einen Kaffee☕

*Memos:

  • Mein Beitrag erklärt OxfordIIITPet().

Resize() kann die Größe von null oder mehr Bildern ändern, wie unten gezeigt:

*Memos:

  • Das erste Argument für die Initialisierung ist size(Required-Type:int oder tuple/list(int)): *Memos:
    • Es ist [Breite, Höhe].
    • Es muss 1 <= x sein.
    • Ein Tupel/eine Liste muss 1D mit 1 oder 2 Elementen sein.
    • Ein einzelner Wert (int oder tuple/list(int`)) wird auf die Kante eines kleineren Bildes in Breite oder Höhe angewendet, dann wird die Größe der anderen Kante mit größerer Breite oder Höhe ebenfalls geändert: *Memos:
    • Wenn die Breite eines Bildes kleiner als seine Höhe ist, beträgt es [Größe, Größe * Breite / Höhe].
    • Wenn die Breite eines Bildes größer als seine Höhe ist, beträgt es [Größe * Breite / Höhe, Größe].
    • Wenn die Breite eines Bildes gleich seiner Höhe ist, ist es [Größe, Größe].
  • Das 2. Argument für die Initialisierung ist Interpolation (Optional-Default:InterpolationMode.BILINEAR-Type:InterpolationMode).
  • Das dritte Argument für die Initialisierung ist max_size(Optional-Default:None-Type:int): *Memos:
    • Es wird nur unterstützt, wenn size ein einzelner Wert ist (int oder tuple/list(int`)).
    • Nachdem die Größe angewendet wurde, wenn die Breiten- oder Höhenkante eines größeren Bildes diese überschreitet, wird sie auf die Breiten- oder Höhenkante eines größeren Bildes angewendet, um die Bildgröße zu begrenzen. Anschließend wird die Breiten- oder Höhenkante des anderen kleineren Bildes ebenfalls kleiner als zuvor.
  • Das vierte Argument für die Initialisierung ist Antialias (Optional-Default:True-Type:bool). *Auch wenn „False“ eingestellt ist, ist es immer „True“, wenn die Interpolation InterpolationMode.BILINEAR oder InterpolationMode.BICUBIC ist.
  • Das 1. Argument ist img(Required-Type:PIL Image oder tensor(int, float, complex oder bool)): *Memos:
    • Ein Tensor muss der 3D- oder mehr-D-Tensor eines oder mehrerer Elemente sein.
    • Verwenden Sie nicht img=.
  • Wird empfohlen, V2 gemäß V1 oder V2 zu verwenden? Welches soll ich verwenden?
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

Das obige ist der detaillierte Inhalt vonGröße in PyTorch ändern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage