PyTorch Study - 2, CIFAR-10을 이용한 image classification

신동현·2023년 4월 24일
0

PyTorch

목록 보기
2/2

목표

CIFAR-10 데이터셋과 nn.Linear를 사용하여 테스트셋에서 Top-1 accuracy 65% 이상 달성해보기

  • CIFAR-10 image
    CIFAR-10은 유명한 데이터셋 중 하나로 32x32 픽셀의 60000개 컬러이미지가 포함되어 있으며, 각 이미지는 10개의 클래스로 라벨링이 되어있다.
    (비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭)
    60000개 이미지 중에서 50000개는 트레이닝, 나머지 10000개는 테스트 용도로 사용된다.

1. torchvision을 이용하여 데이터셋 (dataset), 데이터로더 (dataloader) 구현하기

Torchvision

Torchvision은 PyTorch와 함께 사용되는 컴퓨터 비전용 라이브러리이다.


1.0 torch.device

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

print('Using device:', device)
  • 'cuda': 학습에 GPU를 사용
  • 'cpu': 학습에 CPU를 사용

1.1 torchvision.transforms

  • transforms.Compose(): 여러 transform 들을 Compose로 구성한다.
  • transforms.ToTensor(): PIL 이미지 또는 numpy.ndarray를 pytorch의 tensor로 변형시켜 준다.
  • transforms.Normalize(mean, std, inplace): 이미지 정규화
transform = transforms.Compose([
	transforms.ToTensor(),
    transforms.Normalize(mean=(0.5, 0.5, 0.5), std(0.5, 0.5, 0.5))
])

1.2 torchvision.datasets

torchvision.datasets : Torchvision에서 제공하는 데이터셋을 받아오기

  • MNIST
  • Fashion-MNIST
  • KMNIST
  • COCO
  • ImageFolder
  • Imagenet-12
  • CIFAR
    etc...
trainset = datasets.CIFAR10(
							root='./cifar10',
							train=True,
                            download=True,
                            transform=transform
                            )
  • root: '데이터 저장 위치'
  • train: True이면 트레이닝을 위한 데이터셋, False이면 테스트를 위한 데이터셋
testset = datasets.CIFAR10(
							root='./cifar10',
                            train=False, 
                            download=True, 
                            transform=transform
                            )
  • download: download 여부
  • transform: 앞서 정의한 transform을 적용한다.

1.3 torch.utils.data.DataLoader()

trainloader = torch.utils.data.DataLoader(
										trainset,
										batch_size=128,
                            			shuffle=True, 
                            			num_workers=0
                            			)



2. nn.Linear를 기본으로 FeedForwardNetwork 구성하기

profile
행복해

0개의 댓글