> 백엔드 개발 > 파이썬 튜토리얼 > PyTorch의 OxfordIIITPet

PyTorch의 OxfordIIITPet

DDD
풀어 주다: 2024-12-22 18:42:14
원래의
921명이 탐색했습니다.

커피 한잔 사주세요😄

*내 게시물은 Oxford-IIIT Pet에 대한 설명입니다.

OxfordIIITPet()은 아래와 같이 Oxford-IIIT Pet 데이터세트를 사용할 수 있습니다.

*메모:

  • 첫 번째 인수는 루트(필수 유형:str 또는 pathlib.Path)입니다. *절대경로, 상대경로 모두 가능합니다.
  • 두 번째 인수는 분할(Optional-Default:"train"-Type:str)입니다. *"trainval"(3,680 이미지) 또는 "test"(3,669 이미지)를 설정할 수 있습니다.
  • 세 번째 인수는 target_types(Optional-Default:"attr"-Type:str 또는 list of str)입니다. *메모:
    • "category", "binary-category" 및/또는 "segmentation"을 설정할 수 있습니다. *메모:
    • "카테고리"는 37개 카테고리(클래스)의 라벨입니다.
    • "binary-category"는 고양이(0) 또는 개(1) 레이블에 대한 것입니다.
    • "segmentation"은 분할 트라이맵 이미지를 위한 것입니다.
    • 빈 튜플이나 리스트도 여기에 설정할 수 있습니다.
    • 동일한 값을 여러 개 설정할 수 있습니다.
    • 값의 순서가 다르면 요소의 순서도 다릅니다.
  • 네 번째 인수는 변환(Optional-Default:None-Type:callable)입니다.
  • 5번째 인수는 target_transform(Optional-Default:None-Type:callable)입니다.
  • 여섯 번째 인수는 download(Optional-Default:False-Type:bool)입니다. *메모:
    • True인 경우 데이터 세트가 인터넷에서 다운로드되어 루트에 추출(압축 해제)됩니다.
    • True이고 데이터세트가 이미 다운로드된 경우 추출됩니다.
    • True이고 데이터 세트가 이미 다운로드되어 추출된 경우 아무 일도 일어나지 않습니다.
    • 데이터 세트가 이미 다운로드되어 추출된 경우 더 빠르므로 False여야 합니다.
    • 여기에서 데이터 세트(images.tar.gz 및 Annotation.tar.gz)를 data/oxford-iiit-pet/에 수동으로 다운로드하고 추출할 수 있습니다.
  • 열차 이미지 인덱스에 대한 카테고리(클래스)의 라벨을 보면, Abyssinian(0)은 0~49, American Bulldog(1)은 50~99, 아메리칸 핏불테리어(2)는 100~149, 바셋하운드(3)는 150~199, 비글(4)은 200~249, 벵갈(5)은 250~299, 버만 (6)은 300~349이고, 봄베이(7)는 350~398, 복서(8)는 399~448, 브리티시 쇼트헤어(9)는 449~498 등
  • 테스트 이미지 인덱스에 대한 카테고리(클래스)의 라벨을 보면, Abyssinian(0)은 0~97, American Bulldog(1)은 98~197, 아메리칸 핏불테리어(2)는 198~297, 바셋하운드(3)는 298~397, 비글(4)은 398~497, 벵갈(5)은 498~597, 버만 (6)은 598~697이고, 봄베이(7)는 698~785, 복서(8)는 786~884, 브리티시 쇼트헤어(9)는 885~984 등입니다.
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

위 내용은 PyTorch의 OxfordIIITPet의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿