CIFAR 데이터셋
IT 위키
인공무능 (토론 | 기여)님의 2025년 10월 9일 (목) 01:38 판 (새 문서: '''CIFAR 데이터셋'''은 이미지 인식 및 머신러닝 연구에서 널리 사용되는 소형 컬러 이미지 데이터셋이다. 대표적으로 '''CIFAR-10'''과 '''CIFAR-100'''이 존재하며, 각기 다른 분류 수준을 제공한다. ==개요== CIFAR는 "Canadian Institute for Advanced Research"의 약자로, 원래는 MIT의 Tiny Images 프로젝트에서 파생된 데이터셋이다. 이 데이터셋들은 32×32 픽셀 크기의 컬러 이미지로 구성되...)
CIFAR 데이터셋은 이미지 인식 및 머신러닝 연구에서 널리 사용되는 소형 컬러 이미지 데이터셋이다. 대표적으로 CIFAR-10과 CIFAR-100이 존재하며, 각기 다른 분류 수준을 제공한다.
개요[편집 | 원본 편집]
CIFAR는 "Canadian Institute for Advanced Research"의 약자로, 원래는 MIT의 Tiny Images 프로젝트에서 파생된 데이터셋이다. 이 데이터셋들은 32×32 픽셀 크기의 컬러 이미지로 구성되어 있으며, 각 이미지에는 사전에 정의된 클래스 레이블이 부여되어 있다. 모델 개발과 벤치마킹에 널리 사용된다.
CIFAR-10[편집 | 원본 편집]
- 클래스 수: 10개
- 비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭
- 데이터 크기: 총 60,000장
- 훈련 이미지 50,000장, 테스트 이미지 10,000장
- 이미지 크기: 32×32 RGB
- 용도: 경량 이미지 분류, 기본 CNN 구조 실험, 데이터 증강 연구 등
CIFAR-100[편집 | 원본 편집]
- 클래스 수: 100개 (20개의 상위 클래스, 100개의 하위 클래스)
- 데이터 크기: 총 60,000장
- 클래스당 600장 (500장 훈련, 100장 테스트)
- 이미지 크기: 32×32 RGB
- 용도: 정밀 분류, 계층적 분류 실험, 다중 레이블 학습 등
특징[편집 | 원본 편집]
- 모든 이미지는 정사각형이며, 크기가 작고 균일하다
- 클래스 간 이미지 수가 균등하게 분포되어 있다
- 복잡하지 않은 구조로 인해 저사양 환경에서도 실험 가능
- 이미지에 배경이 포함되어 있고, 일부는 클래스 간 시각적 구분이 어렵다
장단점[편집 | 원본 편집]
장점[편집 | 원본 편집]
- 경량화된 데이터: 학습 속도가 빠르고 실험 반복에 적합하다
- 표준화된 구조: 다양한 모델 간 성능 비교가 용이하다
- 커뮤니티 확산: 다양한 라이브러리와 튜토리얼에서 지원
단점[편집 | 원본 편집]
- 낮은 해상도: 복잡한 패턴이나 세밀한 특징 인식에는 한계가 있다
- 일반화 한계: 실제 환경의 고해상도 이미지와 차이가 있어 모델 성능이 과대평가될 수 있다
- 중복 이미지 존재: 훈련 및 테스트 이미지 간 유사 이미지가 존재함이 보고된 바 있다
활용 예시[편집 | 원본 편집]
- 기본적인 CNN 실험 (예: LeNet, AlexNet, VGG 등)
- 전이 학습 테스트 및 fine-tuning
- 데이터 증강 기법 비교
- 반지도학습, 자가 지도 학습 실험
- 벤치마크 비교 논문에서 성능 비교 기준선
PyTorch 사용 예시[편집 | 원본 편집]
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
# 훈련 및 테스트용 데이터 전처리
transform_train = transforms.Compose([
transforms.RandomCrop(32, padding=4),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
])
transform_test = transforms.Compose([
transforms.ToTensor(),
])
# CIFAR-10 데이터셋 로딩
trainset = torchvision.datasets.CIFAR10(root='./data',
train=True,
download=True,
transform=transform_train)
trainloader = DataLoader(trainset, batch_size=128, shuffle=True)
testset = torchvision.datasets.CIFAR10(root='./data',
train=False,
download=True,
transform=transform_test)
testloader = DataLoader(testset, batch_size=100, shuffle=False)