1 분 소요

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms

import matplotlib.pyplot as plt
import numpy as np

import warnings
warnings.filterwarnings('ignore')

device = 'cuda' if torch.cuda.is_available() else 'cpu'
torch.manual_seed(777)
train_set = torchvision.datasets.CIFAR100(
    root = './data',
    train = True,
    download = True,
    transform = transforms.Compose([
        transforms.ToTensor() # 데이터를 0에서 255까지 있는 값을 0에서 1사이 값으로 변환
    ])
)

train_loader = torch.utils.data.DataLoader(train_set, batch_size=16)
for i in train_loader:
    s = 1
    plt.figure(figsize=(16,10))
    for img in i[0][:4]:
        plt.subplot(1, int(len(i[0])/4), s)
        plt.imshow(np.transpose(img, (1,2,0)))
        s = s + 1
    break
plt.show()

다운로드.jpg

def plottransform(transform):
  train_set = torchvision.datasets.CIFAR100(
    root = './data',
    train = True,
    download = True,
    transform = transforms.Compose([
        transforms.ToTensor() # 데이터를 0에서 255까지 있는 값을 0에서 1사이 값으로 변환
    ])
  )

  train_loader = torch.utils.data.DataLoader(train_set, batch_size=4)

  test_set = torchvision.datasets.CIFAR100(
    root = './data',
    train = True,
    download = True,
    transform = transforms.Compose([
        transforms.ToTensor(),
        transform
    ])
  )

  test_loader = torch.utils.data.DataLoader(test_set, batch_size=4)

  plt.figure(figsize=(16,10))
  for i in train_loader:
      s = 1
      for img in i[0]:
          plt.subplot(2, len(i[0]), s)
          plt.imshow(np.transpose(img, (1,2,0)))
          s = s + 1
      break
  for i in test_loader:
      for img in i[0]:
          plt.subplot(2, len(i[0]), s)
          plt.imshow(np.transpose(img, (1,2,0)))
          s = s + 1
      break
  plt.show()

#함수

transforms.ToPILImage() - csv 파일로 데이터셋을 받을 경우, PIL image로 바꿔준다.

transforms.CenterCrop(size) - 가운데 부분을 size 크기로 자른다.

transforms.Grayscale(num_output_channels=1) - grayscale로 변환한다.

transforms.ColorJitter() - 색을 바꾼다.

transforms.RandomAffine(degrees, translate) - 랜덤으로 affine 변형을 한다. 회전, 이동을 함

transforms.RandomCrop(size, scale, ratio) -이미지를 랜덤으로 아무데나 잘라 size 크기로 출력한다.

transforms.Resize(size) - 이미지 사이즈를 size로 변경한다

transforms.RandomRotation(degrees) 이미지를 랜덤으로 degrees 각도로 회전한다.

transforms.RandomResizedCrop(size, scale, ratio) - 이미지를 랜덤으로 변형한다.

transforms.RandomVerticalFlip(p=0.5) - 이미지를 랜덤으로 수직으로 뒤집는다. p =0이면 뒤집지 않는다.

transforms.RandomHorizontalFlip(p=0.5) - 이미지를 랜덤으로 수평으로 뒤집는다.

transforms.RandomApply([transforms, p=0.3) - transform함수를 p확률 만큼 적용한다.

transforms.ToTensor() - 이미지 데이터를 tensor로 바꿔준다.

transforms.Normalize(mean, std, inplace=False) - 이미지를 정규화한다.

plottransform(transforms.CenterCrop(10))

다운로드.jpg

plottransform(transforms.RandomCrop(10))

image.png

plottransform(transforms.Resize(100))

image.png

plottransform(transforms.RandomResizedCrop(50))

image.png

plottransform(transforms.RandomResizedCrop(30))

image.png

plottransform(transforms.RandomResizedCrop(10, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333)))

image.png

plottransform(transforms.RandomAffine((-90,90), translate=(0.2, 0.2)))

image.png

plottransform(transforms.RandomAffine((-90,90), translate=(0.2, 0.2), scale=(0.8, 2)))

image.png

plottransform(transforms.RandomRotation(90))

image.png

plottransform(transforms.RandomVerticalFlip(p=0.5))

image.png

plottransform(transforms.RandomHorizontalFlip(p=0.5))

image.png

# brightness 밝기, contrast 대조, saturation 채도, hue 색조
plottransform(torchvision.transforms.ColorJitter(brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5))

image.png

plottransform(transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]))

image.png

plottransform(transforms.RandomApply([transforms.RandomAffine((-90,90), translate=(0.5, 0.5))], p=0.3))

image.png

태그:

카테고리:

업데이트:

댓글남기기