티스토리 뷰
PyTorch에서 컴퓨터 비전 실험을 할 때 데이터셋 로딩은 첫 번째이자 매우 중요한 단계입니다. PyTorch 생태계에서 torchvision.datasets는 다양한 벤치마크 데이터셋을 손쉽게 불러올 수 있게 해주며, 연구와 개발에서 빠른 프로토타이핑을 가능하게 합니다. 이번 글에서는 torchvision.datasets.CIFAR10을 포함한 주요 데이터셋, 각 데이터셋의 의의, 그리고 사용자 현실 데이터를 사용할 때의 방법까지 자세히 설명하겠습니다.
📦 torchvision.datasets란?
torchvision.datasets는 PyTorch에서 제공하는 표준 데이터셋 모듈로, 다양한 공개 이미지 데이터셋을 쉽게 불러와 사용할 수 있게 해줍니다. 이 모듈은 데이터셋 클래스, 다운로드 관리, 전처리 transform 연결까지 한 번에 처리할 수 있어 매우 편리합니다.
데이터셋은 보통 아래처럼 불러옵니다:
import torchvision.datasets as datasets
cifar10 = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
- root: 데이터셋을 저장할 경로
- train: 학습용(True) / 테스트용(False)
- download: 데이터가 없으면 다운로드 여부
- transform: 전처리(transform) 파이프라인
🔥 torchvision에서 제공하는 주요 데이터셋과 의의
🖼 CIFAR10, CIFAR100
- 10/100개의 클래스, 32x32 RGB 이미지
- 의의: 소규모 이미지 분류 벤치마크로, 빠른 실험 및 비교용 표준 데이터셋
✏️ MNIST, FashionMNIST
- MNIST: 손글씨 숫자 (28x28 회색조)
- FashionMNIST: 의류 이미지 (28x28 회색조)
- 의의: 저해상도, 단순한 데이터로 기본적인 분류 모델 테스트용
📸 ImageNet
- 1000개 클래스, 대규모 고해상도 이미지
- 의의: 대규모 학습 및 transfer learning 표준 데이터셋
🐶 STL10
- 10개 클래스, 96x96 컬러 이미지
- 의의: 제한된 라벨 데이터 + unlabeled data로 semi-supervised 실험에 유용
🚦 COCO, Pascal VOC
- 객체 탐지, 분할, 키포인트 예측용 데이터셋
- 의의: 컴퓨터 비전 고급 과제용, 연구 benchmark로 매우 널리 사용
😃 CelebA
- 얼굴 이미지, 속성 라벨 포함
- 의의: 얼굴 속성 분류, 얼굴 검출, fairness 연구에 활용
📥 torchvision 외부에서 현실 데이터 사용하기
현실 데이터(예: 자체 수집 이미지)를 사용할 때는 ImageFolder 또는 Custom Dataset을 사용합니다.
📁 ImageFolder 사용 (폴더 구조 기반)
data/
├── class1/
│ ├── img1.jpg
│ └── img2.jpg
└── class2/
├── img3.jpg
└── img4.jpg
from torchvision import datasets, transforms
transform = transforms.Compose([
transforms.Resize(224),
transforms.ToTensor()
])
custom_dataset = datasets.ImageFolder(root='./data', transform=transform)
👉 자동으로 폴더명을 클래스 라벨로 인식, 파일을 로딩함
⚙️ Custom Dataset 만들기
from torch.utils.data import Dataset
from PIL import Image
import os
class MyDataset(Dataset):
def __init__(self, img_dir, transform=None):
self.img_dir = img_dir
self.transform = transform
self.img_names = os.listdir(img_dir)
def __len__(self):
return len(self.img_names)
def __getitem__(self, idx):
img_path = os.path.join(self.img_dir, self.img_names[idx])
image = Image.open(img_path)
if self.transform:
image = self.transform(image)
return image
👉 데이터셋 구조와 라벨링 방식이 복잡할 때는 직접 Dataset 클래스를 정의하면 유연하게 처리 가능
✨ 결론
torchvision.datasets는 강력하고 편리한 벤치마크 데이터셋 모듈로, 빠른 실험과 연구 성능 비교에 필수적인 도구입니다. 하지만 현실 데이터에서는 ImageFolder 또는 Custom Dataset 클래스를 사용해 맞춤형 파이프라인을 구축할 수 있습니다. 데이터셋 선택은 실험 목표, 모델 복잡성, 데이터 규모에 따라 결정되므로 항상 목적에 맞게 설계하세요.
추가로 데이터셋별 transform 예제나 Custom Dataset 설계 팁이 필요하다면 언제든 문의해 주세요!
'머신러닝&딥러닝' 카테고리의 다른 글
PyTorch 데이터셋 분할 및 DataLoader (2) | 2025.05.01 |
---|---|
PyTorch Compose를 통한 데이터 전처리: 심층 분석 (0) | 2025.05.01 |
torchvision 완전 정복: PyTorch 비전 프로젝트의 핵심 라이브러리 (0) | 2025.05.01 |
모델 저장 및 재사용 (0) | 2025.02.28 |
모델의 컴파일, 학습 및 평가 (0) | 2025.02.28 |
- Total
- Today
- Yesterday
- f-string
- 1165회 로또
- chat gpt 가격 예상
- TorchVision
- chat gpt 모델 별 가격
- 텍스트 전처리
- python import
- 장고 orm sql문 비교
- 로또 1164회 당첨
- 인공지능 로또 예측
- 클래스형 뷰
- chat gpt 모델별 예산
- 텍스트 마이닝
- 1164회 로또
- github action
- postgre
- 티스토리챌린지
- chat gpt 한국어 가격
- 토치비전
- Numpy
- 오블완
- chat gpt 4o 예산
- chat gpt 모델 api 가격 예측
- 케라스
- 로또 ai
- python 문자열 슬라이싱
- chat gpt api 비용 계산
- Python
- Django
- GitHub
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |