Maison >développement back-end >Tutoriel Python >Redimensionner dans PyTorch

Redimensionner dans PyTorch

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-19 22:12:10988parcourir

Achetez-moi un café☕

*Mémos :

  • Mon message explique OxfordIIITPet().

Resize() peut redimensionner zéro ou plusieurs images comme indiqué ci-dessous :

*Mémos :

  • Le 1er argument pour l'initialisation est size(Required-Type:int ou tuple/list(int)) : *Mémos :
    • C'est [largeur, hauteur].
    • Il doit être 1 <= x.
    • Un tuple/liste doit être le 1D avec 1 ou 2 éléments.
    • Une seule valeur (int ou tuple/list(int`)) est appliquée au bord de largeur ou de hauteur d'une image plus petite, puis l'autre bord de largeur ou de hauteur plus grand est également redimensionné : *Mémos :
    • Si la largeur d'une image est inférieure à sa hauteur, c'est [taille, taille * largeur/hauteur].
    • Si la largeur d'une image est supérieure à sa hauteur, c'est [taille * largeur / hauteur, taille].
    • Si la largeur d'une image est égale à sa hauteur, c'est [taille, taille].
  • Le 2ème argument pour l'initialisation est l'interpolation (Optional-Default:InterpolationMode.BILINEAR-Type:InterpolationMode).
  • Le 3ème argument pour l'initialisation est max_size(Optional-Default:None-Type:int) : *Mémos :
    • Il n'est pris en charge que si la taille est une valeur unique (int ou tuple/list(int`)).
    • Une fois la taille appliquée, si le bord en largeur ou en hauteur d'une image plus grande la dépasse, elle est appliquée au bord en largeur ou en hauteur d'une image plus grande pour limiter la taille de l'image, puis le bord en largeur ou en hauteur de l'autre image plus petite devient également plus petit qu'auparavant.
  • Le 4ème argument pour l'initialisation est antialias(Optional-Default:True-Type:bool). *Même si vous définissez False, c'est toujours True si l'interpolation est InterpolationMode.BILINEAR ou InterpolationMode.BICUBIC.
  • Le 1er argument est img(Required-Type:PIL Image ou tensor(int, float, complexe ou bool)) : *Mémos :
    • Un tenseur doit être le tenseur 3D ou plus D d'un ou plusieurs éléments.
    • N'utilisez pas img=.
  • Il est recommandé d'utiliser la v2 selon la V1 ou la V2 ? Lequel dois-je utiliser ?.
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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn