본문 바로가기
책&강의 학습/올인원 패키지 :딥러닝&인공지능

[패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 18회차 미션

by 소한보 2020. 7. 16.

Part3-22 Pytorch - 03. dataset loader - torchvision.transforms

파이토치 전처리 함수들 확인
잘사용하면 test셋에서 성능 향상의 가능성 있음

원본사진

centercrop

중앙 부분 추출

torchvision.transforms.CenterCrop(size= (300,300))(image)

ColorJitter

이미지를 바꿔줌 밝기,명암

torchvision.transforms.ColorJitter(brightness=1, contrast=0, saturation=0, hue =0)(image)

FiveCrop

5개의 이미지로 바꿔줌(정확히 5등분하는 것은 아님)

torchvision.transforms.FiveCrop(size= (300,300))(image)[0]

grayscale

회색조로 변경

 torchvision.transforms.Grayscale(num_output_channels=1)(image)

pad

이미지가 작을때, padding으로 크기조절

torchvision.transforms.Pad(padding=(50,50),fill=0, padding_mode='constant')(image)

RandomAffine

이미지 회전, 회전후 남는 공간은 fillcolor로 체워짐

torchvision.transforms.RandomAffine(degrees=90, fillcolor=0)(image)

RandomApply

랜덤하게 이미지 변환 적용
p는 확률 앞에 있는 것을 적용하는가 마는가

transforms = [torchvision.transforms.Grayscale(num_output_channels=1),
               torchvision.transforms.CenterCrop(size= (300,300)),
               torchvision.transforms.RandomAffine(degrees=90, fillcolor=0)]

randomchoice

transforms 중 하나 선택

torchvision.transforms.RandomChoice(transforms)(image)

randomcrop

자동으로 cropping

torchvision.transforms.RandomCrop(size= (300,300))(image)

RandomGrayscale

랜덤하게 grayscale한것과 아닌거 불러옴

torchvision.transforms.RandomGrayscale(p= 0.5)(image)

RandomHorizontal

Flip좌우 변환

torchvision.transforms.RandomHorizontalFlip(p= 0.5)(image)

Resize

크기 변환
이미지를 맞춰줘야 할때
input사이즈 알면 미리 맞추고 시작하면 좋음

torchvision.transforms.Resize((100,100))(image)

transform on tensor

tensor = torchvision.transforms.ToTensor()(image)
trans = torchvision.transforms.Normalize(mean = (0,0,0), std = (1,1,1))(tensor)
plt.imshow(trans.numpy().transpose(1,2,0)) #pytorch에 맞게 채널 위치 변경
#랜덤하게 지워지는거 확인
trans = torchvision.transforms.RandomErasing(p= 0.5, scale= (0.02, 0.33),
                                             ratio = (0.3, 3.3),value = 0)(tensor)
plt.imshow(trans.numpy().transpose(1,2,0))

Part3-23 Pytorch - 04. pytorch에서 TensorBoard

파이토치에서도 텐서보드 사용가능
파이토치에서는 알아서 날짜와 시간 넣어서 진행
돌아가는 중에서도 실시간으로 업데이트 됨

import

import torchvision
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()

모델하단부에 삽입

    grid = torchvision.utils.make_grid(data) #이미지를 분할
    writer.add_image('images',grid, epoch) #매에폭마다 진행
    writer.add_graph(model, data) #그래프를 그림

    writer.add_scalar('Loss/train/', loss, epoch)
    writer.add_scalar('Loss/test/', test_loss, epoch)
    writer.add_scalar('Accuracy/test/', accuracy, epoch)

딥러닝/인공지능 올인원 패키지 Online

댓글