Heim > Backend-Entwicklung > Python-Tutorial > OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

DDD
Freigeben: 2024-12-22 18:42:14
Original
917 Leute haben es durchsucht

Kauf mir einen Kaffee☕

*Mein Beitrag erklärt Oxford-IIIT Pet.

OxfordIIITPet() kann den Oxford-IIIT Pet-Datensatz wie unten gezeigt verwenden:

*Memos:

  • Das 1. Argument ist root(Required-Type:str oder pathlib.Path). *Ein absoluter oder relativer Pfad ist möglich.
  • Das 2. Argument ist geteilt (Optional-Default:"train"-Type:str). *„trainval“ (3.680 Bilder) oder „test“ (3.669 Bilder) können darauf eingestellt werden.
  • Das dritte Argument ist target_types(Optional-Default:"attr"-Type:str oder list of str): *Memos:
    • Darauf können „category“, „binary-category“ und/oder „segmentation“ gesetzt werden: *Memos:
    • „Kategorie“ steht für die Bezeichnung aus 37 Kategorien (Klassen).
    • „Binärkategorie“ steht für die Bezeichnung von Katze(0) oder Hund(1).
    • „Segmentierung“ steht für ein Segmentierungs-Trimap-Bild.
    • Es kann auch ein leeres Tupel oder eine leere Liste darauf gesetzt werden.
    • Es können mehrere gleiche Werte eingestellt werden.
    • Wenn die Reihenfolge der Werte unterschiedlich ist, ist auch die Reihenfolge ihrer Elemente unterschiedlich.
  • Das 4. Argument ist transform(Optional-Default:None-Type:callable).
  • Das 5. Argument ist target_transform(Optional-Default:None-Type:callable).
  • Das 6. Argument ist download(Optional-Default:False-Type:bool): *Memos:
    • Wenn es wahr ist, wird der Datensatz aus dem Internet heruntergeladen und in das Stammverzeichnis extrahiert (entpackt).
    • Wenn es „True“ ist und der Datensatz bereits heruntergeladen wurde, wird er extrahiert.
    • Wenn es „True“ ist und der Datensatz bereits heruntergeladen und extrahiert wurde, passiert nichts.
    • Es sollte „False“ sein, wenn der Datensatz bereits heruntergeladen und extrahiert wurde, da es schneller ist.
    • Sie können den Datensatz (images.tar.gz und annotations.tar.gz) manuell herunterladen und von hier nach data/oxford-iiit-pet/ extrahieren.
  • Über die Bezeichnung aus den Kategorien (Klassen) für die Zugbildindizes: Abessinier(0) ist 0~49, Amerikanische Bulldogge(1) ist 50~99, American Pit Bull Terrier(2) ist 100~149, Basset Jagdhund(3) ist 150~199, Beagle(4) ist 200~249, Bengal(5) ist 250~299, Birma( 6) ist 300~349, Bombay(7) ist 350~398, Boxer(8) ist 399~448, Britisch Kurzhaar(9) ist 449~498 usw.
  • Über die Bezeichnung aus den Kategorien (Klassen) für die Testbildindizes: Abessinier(0) ist 0~97, Amerikanische Bulldogge(1) ist 98~197, American Pit Bull Terrier(2) ist 198~297, Basset Hound(3) ist 298~397, Beagle(4) ist 398~497, Bengal(5) ist 498~597, Birma (6) ist 598~697, Bombay(7) ist 698~785, Boxer(8) ist 786~884, Britisch Kurzhaar(9) ist 885~984 usw.
from torchvision.datasets import OxfordIIITPet

trainval_cate_data = OxfordIIITPet(
    root="data"
)

trainval_cate_data = OxfordIIITPet(
    root="data",
    split="trainval",
    target_types="category",
    transform=None,
    target_transform=None,
    download=False
)

trainval_bincate_data = OxfordIIITPet(
    root="data",
    split="trainval",
    target_types="binary-category"
)

test_seg_data = OxfordIIITPet(
    root="data",
    split="test",
    target_types="segmentation"
)

test_empty_data = OxfordIIITPet(
    root="data",
    split="test",
    target_types=[]
)

test_all_data = OxfordIIITPet(
    root="data",
    split="test",
    target_types=["category", "binary-category", "segmentation"]
)

len(trainval_cate_data), len(trainval_bincate_data)
# (3680, 3680)

len(test_seg_data), len(test_empty_data), len(test_all_data)
# (3669, 3669, 3669)

trainval_cate_data
# Dataset OxfordIIITPet
#     Number of datapoints: 3680
#     Root location: data

trainval_cate_data.root
# 'data'

trainval_cate_data._split
# 'trainval'

trainval_cate_data._target_types
# ['category']

print(trainval_cate_data.transform)
# None

print(trainval_cate_data.target_transform)
# None

trainval_cate_data._download
# <bound method OxfordIIITPet._download of Dataset OxfordIIITPet
#     Number of datapoints: 3680
#     Root location: data>

len(trainval_cate_data.classes), trainval_cate_data.classes
# (37,
#  ['Abyssinian', 'American Bulldog', 'American Pit Bull Terrier',
#   'Basset Hound', 'Beagle', 'Bengal', 'Birman', 'Bombay', 'Boxer',
#   'British Shorthair', ..., 'Wheaten Terrier', 'Yorkshire Terrier'])

trainval_cate_data[0]
# (<PIL.Image.Image image mode=RGB size=394x500>, 0)

trainval_cate_data[1]
# (<PIL.Image.Image image mode=RGB size=450x313>, 0)

trainval_cate_data[2]
# (<PIL.Image.Image image mode=RGB size=500x465>, 0)

trainval_bincate_data[0]
# (<PIL.Image.Image image mode=RGB size=394x500>, 0)

trainval_bincate_data[1]
# (<PIL.Image.Image image mode=RGB size=450x313>, 0)

trainval_bincate_data[2]
# (<PIL.Image.Image image mode=RGB size=500x465>, 0)

test_seg_data[0]
# (<PIL.Image.Image image mode=RGB size=300x225>,
#  <PIL.PngImagePlugin.PngImageFile image mode=L size=300x225>)

test_seg_data[1]
# (<PIL.Image.Image image mode=RGB size=300x225>,
#  <PIL.PngImagePlugin.PngImageFile image mode=L size=300x225>)

test_seg_data[2]
# (<PIL.Image.Image image mode=RGB size=229x300>,
#  <PIL.PngImagePlugin.PngImageFile image mode=L size=229x300>)

test_empty_data[0]
# (<PIL.Image.Image image mode=RGB size=300x225>, None)

test_empty_data[1]
# (<PIL.Image.Image image mode=RGB size=300x225>, None)

test_empty_data[2]
# (<PIL.Image.Image image mode=RGB size=229x300>, None)

test_all_data[0]
# (<PIL.Image.Image image mode=RGB size=300x225>,
#  (0, 0, <PIL.PngImagePlugin.PngImageFile image mode=L size=300x225>))

test_all_data[1]
# (<PIL.Image.Image image mode=RGB size=300x225>,
#  (0, 0, <PIL.PngImagePlugin.PngImageFile image mode=L size=300x225>))

test_all_data[2]
# (<PIL.Image.Image image mode=RGB size=229x300>,
#  (0, 0, <PIL.PngImagePlugin.PngImageFile image mode=L size=229x300>))

import matplotlib.pyplot as plt

def show_images(data, ims, main_title=None):
    if len(data._target_types) == 0:      
        plt.figure(figsize=(12, 6))
        plt.suptitle(t=main_title, y=1.0, fontsize=14)
        for i, j in enumerate(ims, start=1):
            plt.subplot(2, 5, i)
            im, _ = data[j]
            plt.imshow(X=im)
    elif len(data._target_types) == 1:
        if data._target_types[0] == "category":
            plt.figure(figsize=(12, 6))
            plt.suptitle(t=main_title, y=1.0, fontsize=14)
            for i, j in enumerate(ims, start=1):
                plt.subplot(2, 5, i)
                im, cate = data[j]
                plt.title(label=cate)
                plt.imshow(X=im)
        elif data._target_types[0] == "binary-category":
            plt.figure(figsize=(12, 6))
            plt.suptitle(t=main_title, y=1.0, fontsize=14)
            for i, j in enumerate(ims, start=1):
                plt.subplot(2, 5, i)
                im, bincate = data[j]
                plt.title(label=bincate)
                plt.imshow(X=im)
        elif data._target_types[0] == "segmentation":
            plt.figure(figsize=(12, 12))
            plt.suptitle(t=main_title, y=1.0, fontsize=14)
            for i, j in enumerate(ims, start=1):
                im, seg = data[j]
                if 1 <= i and i <= 5:
                    plt.subplot(4, 5, i)
                    plt.imshow(X=im)
                    plt.subplot(4, 5, i+5)
                    plt.imshow(X=seg)
                if 6 <= i and i <= 10:
                    plt.subplot(4, 5, i+5)
                    plt.imshow(X=im)
                    plt.subplot(4, 5, i+10)
                    plt.imshow(X=seg)
    elif len(data._target_types) == 3:
        plt.figure(figsize=(12, 12))
        plt.suptitle(t=main_title, y=1.0, fontsize=14)
        for i, j in enumerate(ims, start=1):
            im, (cate, bincate, seg) = data[j]
            if 1 <= i and i <= 5:
                plt.subplot(4, 5, i)
                plt.title(label=f"{cate}, {bincate}")
                plt.imshow(X=im)
                plt.subplot(4, 5, i+5)
                plt.imshow(X=seg)
            if 6 <= i and i <= 10:
                plt.subplot(4, 5, i+5)
                plt.title(label=f"{cate}, {bincate}")
                plt.imshow(X=im)
                plt.subplot(4, 5, i+10)
                plt.imshow(X=seg)
    plt.tight_layout(h_pad=3.0)
    plt.show()

train_ims = (0, 1, 2, 50, 100, 150, 200, 250, 300, 350)
test_ims = (0, 1, 2, 98, 198, 298, 398, 498, 598, 698)

show_images(data=trainval_cate_data, ims=train_ims,
            main_title="trainval_cate_data")
show_images(data=trainval_bincate_data, ims=train_ims, 
            main_title="trainval_bincate_data")
show_images(data=test_seg_data, ims=test_ims,
            main_title="test_seg_data")
show_images(data=test_empty_data, ims=test_ims,
            main_title="test_empty_data")
show_images(data=test_all_data, ims=test_ims,
            main_title="test_all_data")
Nach dem Login kopieren

OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

Das obige ist der detaillierte Inhalt vonOxfordIIITPet in PyTorch. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage