Rumah >pembangunan bahagian belakang >Tutorial Python >OxfordIIITPet dalam PyTorch

OxfordIIITPet dalam PyTorch

DDD
DDDasal
2024-12-22 18:42:14923semak imbas

Beli Saya Kopi☕

*Siaran saya menerangkan Oxford-IIIT Pet.

OxfordIIITPet() boleh menggunakan dataset Oxford-IIIT Pet seperti ditunjukkan di bawah:

*Memo:

  • Argumen pertama ialah root(Required-Type:str or pathlib.Path). *Laluan mutlak atau relatif boleh dilakukan.
  • Argumen ke-2 dipecahkan(Pilihan-Lalai:"train"-Type:str). *"trainval"(3,680 imej) atau "ujian" (3,669 imej) boleh ditetapkan kepadanya.
  • Argumen ke-3 ialah target_types(Optional-Default:"attr"-Type:str or list of str): *Memo:
    • "kategori", "kategori binari" dan/atau "segmentasi" boleh ditetapkan kepadanya: *Memo:
    • "kategori" adalah untuk label daripada 37 kategori(kelas).
    • "kategori binari" adalah untuk label kucing(0) atau anjing(1).
    • "segmentasi" adalah untuk imej trimap pembahagian.
    • Tuple atau senarai kosong juga boleh ditetapkan padanya.
    • Berbilang nilai yang sama boleh ditetapkan padanya.
    • Jika susunan nilai berbeza, susunan elemennya juga berbeza.
  • Argumen ke-4 ialah transform(Optional-Default:None-Type:callable).
  • Argumen ke-5 ialah target_transform(Optional-Default:None-Type:callable).
  • Argumen ke-6 ialah muat turun(Optional-Default:False-Type:bool): *Memo:
    • Jika Benar, set data dimuat turun dari internet dan diekstrak (dibuka zip) ke akar.
    • Jika ia Benar dan set data sudah dimuat turun, ia akan diekstrak.
    • Jika ia Benar dan set data sudah dimuat turun dan diekstrak, tiada apa yang berlaku.
    • Ia sepatutnya Palsu jika set data sudah dimuat turun dan diekstrak kerana ia lebih pantas.
    • Anda boleh memuat turun dan mengekstrak set data (images.tar.gz dan anotasi.tar.gz) secara manual dari sini ke data/oxford-iiit-pet/.
  • Mengenai label daripada kategori(kelas) untuk indeks imej kereta api, Abyssinian(0) ialah 0~49, American Bulldog(1) ialah 50~99, American Pit Bull Terrier(2) ialah 100~149, Basset Hound(3) ialah 150~199, Beagle(4) ialah 200~249, Bengal(5) ialah 250~299, Birman (6) ialah 300~349, Bombay(7) ialah 350~398, Boxer(8) ialah 399~448, British Shorthair(9) ialah 449~498, dsb.
  • Mengenai label daripada kategori(kelas) untuk indeks imej ujian, Abyssinian(0) ialah 0~97, American Bulldog(1) ialah 98~197, American Pit Bull Terrier(2) ialah 198~297, Basset Hound(3) ialah 298~397, Beagle(4) ialah 398~497, Bengal(5) ialah 498~597, Birman (6) ialah 598~697, Bombay(7) ialah 698~785, Boxer(8) ialah 786~884, British Shorthair(9) ialah 885~984, dsb.
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")

OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

OxfordIIITPet in PyTorch

Atas ialah kandungan terperinci OxfordIIITPet dalam PyTorch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn