① 토치비전(torchvision) 라이브러리를 이용하면 이미지에 대한 전처리를 손쉽게 할 수 있습니다. torchvision.transforms에서 사용하는 파라미터는 다음과 같습니다. 이미 5장에서 살펴보았지만 다시 한 번 정리해 보겠습니다.
ⓐ transforms.Compose: 이미지를 변형할 수 있는 방식들의 묶음입니다.
ⓑ transforms.RandomResizedCrop: 입력 이미지를 주어진 크기(resize: 224×224)로 조정합니다. 또한, scale은 원래 이미지를 임의의 크기(0.5~1.0(50~100%))만큼 면적을 무작위로 자르겠다는 의미입니다.
ⓒ transforms.RandomHorizontalFlip: 주어진 확률로 이미지를 수평 반전시킵니다. 이때 확률 값을 지정하지 않았으므로 기본값인 0.5의 확률로 이미지들이 수평 반전됩니다. 즉, 훈련 이미지 중 반은 위아래 뒤집힌 상태로 두고, 반은 그대로 사용합니다.
ⓓ transforms.ToTensor: ImageFolder 메서드를 비롯해서 torchvision 메서드는 이미지를 읽을 때 파이썬 이미지 라이브러리인 PIL을 사용합니다. PIL을 사용해서 이미지를 읽으면 생성되는 이미지는 범위가 [0, 255]이며, 배열의 차원이 (높이 H×너비 W×채널 수 C)로 표현됩니다. 이후 효율적인 연산을 위해 torch.FloatTensor 배열로 바꾸어야 하는데, 이때 픽셀 값의 범위는 [0.0, 1.0] 사이가 되고 차원의 순서도 (채널 수 C×높이 H×너비 W)로 바뀝니다. 그리고 이러한 작업을 수행해 주는 메서드가 ToTensor()입니다.