FiveCrop dans PyTorch

Barbara Streisand
Barbara Streisandoriginal
2025-01-21 12:12:09806parcourir

Achetez-moi un café☕

*Mémos :

  • Mon message explique OxfordIIITPet().

FiveCrop() peut recadrer une image en 5 parties (haut gauche, haut droit, bas gauche, bas droit et centre) comme indiqué ci-dessous :

*Mémos :

  • Le 1er argument pour l'initialisation est size(Required-Type:int ou tuple/list(int) ou size()) : *Mémos :
    • C'est [hauteur, largeur].
    • 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) signifie [taille, taille].
  • Le 1er argument est img(Required-Type:PIL Image ou tensor(int)) : *Mémos :
    • Un tenseur doit être la 2D ou la 3D 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 FiveCrop

fivecrop = FiveCrop(size=100)

fivecrop
# FiveCrop(size=(100, 100))

fivecrop.size
# (100, 100)

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

p500p394origin_data = OxfordIIITPet(
    root="data",
    transform=FiveCrop(size=[500, 394])
    # transform=FiveCrop(size=[600])
    # transform=FiveCrop(size=[600, 600])
)

p300_data = OxfordIIITPet(
    root="data",
    transform=FiveCrop(size=300)
)

p200_data = OxfordIIITPet(
    root="data",
    transform=FiveCrop(size=200)
)

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

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

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

p200p300_data = OxfordIIITPet(
    root="data",
    transform=FiveCrop(size=[200, 300])
)

p300p200_data = OxfordIIITPet(
    root="data",
    transform=FiveCrop(size=[300, 200])
)

import matplotlib.pyplot as plt

def show_images1(fcims, main_title=None):
    plt.figure(figsize=(10, 5))
    plt.suptitle(t=main_title, y=0.8, fontsize=14)
    titles = ['Top-left', 'Top-right', 'bottom-left',
              'bottom-right', 'center']
    for i, fcim in zip(range(1, 6), fcims):
        plt.subplot(1, 5, i)
        plt.title(label=titles[i-1], fontsize=14)
        plt.imshow(X=fcim)
    plt.tight_layout()
    plt.show()

plt.figure(figsize=(7, 9))
plt.title(label="Origin_data", fontsize=14)
plt.imshow(X=origin_data[0][0])
show_images1(fcims=p500p394origin_data[0][0], main_title="p500p394origin_data")
show_images1(fcims=p300_data[0][0], main_title="p300_data")
show_images1(fcims=p200_data[0][0], main_title="p200_data")
show_images1(fcims=p100_data[0][0], main_title="p100_data")
show_images1(fcims=p50_data[0][0], main_title="p50_data")
show_images1(fcims=p10_data[0][0], main_title="p10_data")
show_images1(fcims=p200p300_data[0][0], main_title="p200p300_data")
show_images1(fcims=p300p200_data[0][0], main_title="p300p200_data")

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(im, main_title=None, s=None):
    plt.figure(figsize=(10, 5))
    plt.suptitle(t=main_title, y=0.8, fontsize=14)
    titles = ['Top-left', 'Top-right', 'bottom-left',
              'bottom-right', 'center']
    if not s:
        s = [im.size[1], im.size[0]] 
    fc = FiveCrop(size=s) # Here
    for i, fcim in zip(range(1, 6), fc(im)):
        plt.subplot(1, 5, i)
        plt.title(label=titles[i-1], fontsize=14)
        plt.imshow(X=fcim) # Here
    plt.tight_layout()
    plt.show()

plt.figure(figsize=(7, 9))
plt.title(label="Origin_data", fontsize=14)
plt.imshow(X=origin_data[0][0])
show_images2(im=origin_data[0][0], main_title="p500p394origin_data")
# show_images2(im=origin_data[0][0], main_title="p500p394origin_data",
#              s=[500, 394])
show_images2(im=origin_data[0][0], main_title="p300_data", s=300)
show_images2(im=origin_data[0][0], main_title="p200_data", s=200)
show_images2(im=origin_data[0][0], main_title="p100_data", s=100)
show_images2(im=origin_data[0][0], main_title="p50_data", s=50)
show_images2(im=origin_data[0][0], main_title="p10_data", s=10)
show_images2(im=origin_data[0][0], main_title="p200p300_data", s=[200, 300])
show_images2(im=origin_data[0][0], main_title="p300p200_data", s=[300, 200])

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