Artificial intelligence/Pytorch

torchvision.transforms (ToTensor, Normalize, Resize, RandomCrop,Compose)

JinSeopKim 2022. 9. 2. 16:52
728x90
728x90

transforms 모듈은 이미지를 학습을 위해 적절히 변환할때 사용합니다.

모듈에서 주로 사용하는 것을 소개하겠습니다.

module import

import torchvision.transforms as transforms

 

transforms.ToTensor

transforms.ToTensor()

Pytorch의 배열은 배열구조가 C*H*W(C:채널, H:높이, W:너비)입니다. 

하지만 PIL이미지와 Numpy 배열에서는 H*W*C입니다. 

ToTensor는 이러한 데이터의 구조를 변경해줍니다.

또한 ToTensor는 이미지 픽셀의 밝기정도를 Scale해줍니다. 

밝기정도가 0~255로 표시되었다면 그 값을 0~1로 scale해주게 됩니다.

 

transforms.Nomalize

transforms.Normalize([means],[stds])

각 채널의 평균과 표준편차를 넣어주어 정규화를 시켜줍니다.

채널수에 맞게 평균과 표준편차를 넣어줍니다.(보통 3개 :R,G,B)

transforms.Resize

transforms.Resize(size1)
transforms.Resize(size1, size2)

사진의 사이즈를 변경할 때 사용합니다.

size를 하나만 넣어주면 이미지 가로 세로 중 짧은 부분을 인자에 맞춰주고 큰 부분은 그 맞춰진 것의 비율을 유지하며 변경됩니다.

만약 2개를 넣어주면 입력된 값에 따라 사이즈를 변경합니다.

 

transforms.RandomCrop

transforms.RandomCop(size)

이미지를 임의의 위치에서 잘라줍니다.

Size에 맞추어서 잘라주게 됩니다. (Size * Size로)

Random 이 외에 Center도 있습니다.(이는 중간 위치를 기준으로 잘라줌)

 

transforms.Compose

transform_compose = transforms.Compose([transforms.Rescale(256),
					transforms.RandomCrop(224)])

Compose를 활용하여 여러개의 transform을 묶을 수 있습니다.

이 때 Compose에 입력되는 것은 반드시 List 이어야합니다.

728x90
728x90