Comment :
torchvision
torchvision.datasets
: Torchvision이 가지고 있는 데이터셋 설명torchvision.transforms
: Torchvision이 제공하는 이미지 Transformation 기초
Torchvision은 PyTorch와 함께 사용되는 Computer Vision 용 라이브러리입니다.
아래와 같은 것들을 포함하고 있습니다.
torchvision.transforms
: 효율적인 이미지 및 비디오 변환을 위한 유틸리티torchvision.datasets
: 일부 데이터 세트 아직...
: (사전학습 된) 모델 pip install torchvision
torchvision.datasets
: Torchvision이 제공하는 데이터셋을 가져오기 (저장하기)
ex)
train_set = torchvision.datasets.CIFAR10(
'데이터 저장 위치',
train=True
download=True
transform=transform
)
[!] torchvision.datasets
는 Train / Test셋이 원래(?)부터 나눠져있다. 따라서 train
argument를 True / False로 조작하여 Training dataset과 Test dataset을 받을 수 있다.
[!] transform
은 이제 아래에서 설명해드림!
[+] '데이터 저장 위치'
는 현재 디렉토리(디폴트 : 너의 Python 파일이 돌고있는 곳)를 기준으로 한다.
[+] torchvision.datasets
가 보유한 데이터셋 리스트는 아래 와 같다.
[+] 데이터 다운로드를 완료하면 아래와 같이 할당된다.
train_set
>>>
Dataset CIFAR10
Number of datapoints: 50000
Root location: ./LHK_data
Split: Train
torchvision.transforms
: Torchvision이 제공하는 이미지 or 영상 변환 기능
import torch
import torchvision
from torchvision import transforms # 주의사항! transform's'!
torchvision.__version__ # Version check
[+] torchvision.transforms
가 제공해주는 이미지 변환 기능은 아래 와 같다.
torchvision.transforms.ToTensor()
: 이미지 데이터 세트를 Tensor로 변환torchvision.transforms.Normalize(mean, std, inplace=False)
: 사용중인 데이터 세트의 픽셀 값을 정규화 Tensor에만 적용 가능!torchvision.transforms.Resize(size, interpolation=2)
: 이미지를 지정한 크기로 변환한다. torchvision.transforms.CenterCrop(size)
: 이미지의 중앙 부분을 크롭하여 [size, size]크기로 만든다.torchvision.transforms.Compose( [ ] )
: 여러 transform 함수들을 Compose로 하나의 함수로 구성가능ex)
# Step 1 - define my transformation pipeline
my_transform = transforms.Compose([
transforms.Grayscale(1),
transforms.RandomHorizontalFlip(p=0.5)
transforms.ToTensor()
])
# Step 2 - use that to load your data
my_data = torch.utils.data.DataLoader(train_set, batch_size=128, transform = my_transform)
# Settings
import torch
from torch import uitls
# pip install torchvision
import torchvision
from torchvision import datasets, transforms
[!] torchvision.datasets! / transforms! 둘다 s가 있다.
# 데이터 가져오기
train_set = torchvision.datasets.MNIST('./LHK_data',
train=True,
download=True
)
test_set = torchvision.datasets.MNIST('./LHK_data',
train=False,
download=True
)
[!] 훈련셋에는 train=True
, 테스트셋에는 train=False
이다.
[+] 실행하면 아래와 같이 다운로드 받는다.
Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./LHK_data\MNIST\raw\train-images-idx3-ubyte.gz
9913344/? [00:00<00:00, 11890967.20it/s]
Extracting ./LHK_data\MNIST\raw\train-images-idx3-ubyte.gz to ./LHK_data\MNIST\raw
Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ./LHK_data\MNIST\raw\train-labels-idx1-ubyte.gz
29696/? [00:00<00:00, 783565.79it/s]
Extracting ./LHK_data\MNIST\raw\train-labels-idx1-ubyte.gz to ./LHK_data\MNIST\raw
Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ./LHK_data\MNIST\raw\t10k-images-idx3-ubyte.gz
1649664/? [00:00<00:00, 4240672.79it/s]
Extracting ./LHK_data\MNIST\raw\t10k-images-idx3-ubyte.gz to ./LHK_data\MNIST\raw
Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ./LHK_data\MNIST\raw\t10k-labels-idx1-ubyte.gz
5120/? [00:00<00:00, 301947.90it/s]
Extracting ./LHK_data\MNIST\raw\t10k-labels-idx1-ubyte.gz to ./LHK_data\MNIST\raw
[!] torch.utils.data.DataLoader
를 함께 사용
# 데이터 불러오기 및 Transform 설정
Transform = transforms.Compose( [transforms.ToTensor(),
transforms.Normalize( (1, 1, 1), (1, 1, 1))
] )
train_loader = torch.utils.data.DataLoader(train_set,
batch_size=64,
shuffle=True
)
test_loader = torch.utils.data.DataLoader(test_set,
batch_size=64,
shuffle=True
)
참고 : Torchvision의 기능 이해