Maison >développement back-end >Tutoriel Python >Rotation aléatoire dans PyTorch

Rotation aléatoire dans PyTorch

Susan Sarandon
Susan Sarandonoriginal
2024-12-29 02:47:11679parcourir

Achetez-moi un café☕

*Mémos :

  • Mon message explique RandomHorizontalFlip().
  • Mon message explique RandomVerticalFlip().
  • Mon message explique OxfordIIITPet().

RandomRotation() peut faire pivoter zéro ou plusieurs images comme indiqué ci-dessous :

*Mémos :

  • Le 1er argument pour l'initialisation est degrés(Required-Type:int, float ou tuple/list(int ou float)) : *Mémos :
    • Une seule valeur doit être 0 <= x.
    • Un tuple ou une liste doit être le 1D avec 2 éléments. *Le 1er élément doit être inférieur ou égal au 2ème élément.
  • Le 2ème argument pour l'initialisation est l'interpolation (Optional-Default:InterpolationMode.NEAREST-Type:InterpolationMode).
  • Le 3ème argument pour l'initialisation est expand(Optional-Default:False-Type:bool).
  • Le 4ème argument pour l'initialisation est center(Optional-Default:None-Type:tuple/list(int ou float)). *Ce doit être le 1D avec 2 éléments.
  • Le 5ème argument pour l'initialisation est fill(Optional-Default:0-Type:int, float ou tuple/list(int ou float)) : *Mémos :
    • Un tuple ou une liste doit être le 1D avec 3 éléments.
  • Le 1er argument est img(Required-Type:PIL Image ou tensor/tuple/list(int ou float)) : *Mémos :
    • Il doit être en 2D ou en 3D. Pour la 3D, le D le plus profond doit avoir un élément.
    • 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 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

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