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
'Artificial intelligence > Pytorch' 카테고리의 다른 글
Pytorch Dataset과 DataLoader (0) | 2022.09.03 |
---|---|
[Pytorch] nn.module을 상속받을 때 super().__init__()을 하는 이유 (0) | 2022.08.26 |