다량의 양질의 데이터는 좋은 딥러닝 모델을 만드는데 필수 조건입니다. 그런데 실제 산업 현장에서는 데이터가 충분히 확보 되어있지 않거나 명확히 분류되어있지 않은 경우가 많습니다. 특히, 공정과정에서 발생하는 이미지는 이런 경우가 비일비재합니다. 그러므로, 모델에 학습 시키기전 데이터 augmentation 과정은 필수입니다.
torchvision.transforms은 이미지의 다양한 전처리 기능을 제공하며 이를 통해 데이터 augmentation도 손쉽게 구현할 수 있습니다. 이에 본 포스팅에서는 torchvision의 transforms 메써드에서 제공하는 다양한 데이터 증강용 함수를 기능 중점적으로 소개드리고자 합니다.
더 자세한 내용은 pytorch에서 제공하는 공식 doc을 참고해주세요.
CentorCrop
FiveCrop
Tencrop
RandomCrop
RandomResizedCrop
ColorJitter
Grayscale
RandomGrayscale
RandomInvert
이미지를 샘플링 후, invert를 진행합니다. 입력 파라미터로는 sampling ratio p를 받습니다. tensor의 경우, 모든 픽셀의 값이 [0,1]로 normalize 되어있습니다. 이때, Invert를 수행하면, 1-기존 pixel값을 return 합니다.
첫번째 이미지는 기존 이미지이고, 두번째 이미지는 invert를 수행한 이미지입니다. 원본 이미지의 첫번째 픽셀값은 0.1529이고, inverted 이미지의 첫번째 픽셀값은 1-0.1529에 해당하는 0.8471입니다.
RandomSolarize
이미지를 샘플링 후, threshold 이상의 값을 가지는 픽셀을 모두 invert합니다. 입력 파라미터로는 threshold와 sampling ratio p를 받습니다.
RandomPosterize
RandomAdjustSharpness
RandomAffine
이미지의 center를 유지하면서 affine transform을 진행합니다.
RandomHorizontalFlip
이미지를 샘플링 후, 수평으로 flip합니다. 입력 파라미터로는 sampling ratio p를 받습니다.
RandomVerticalFlip
이미지를 샘플링 후, 수직으로 flip합니다. 입력 파라미터로는 sampling ratio p를 받습니다.
RandomRotation
이미지를 랜덤하게 rotation 합니다. 입력 파라미터로는 degree를 받습니다. 이때 degree는 단일 float 또는 sequence로 받을 수 있습니다. sequence를 입력으로 할 경우. (min, max)내에서 랜덤하게 degree가 결정됩니다. single float를 입력으로 할 경우, (-input, +input) 범위 내에서 랜덤하게 degree를 결정합니다.
RandomPerspective
GaussianBlur
AutoAugment
RandAugment
TrivialAugmentWide
Normalize
LinearTransformation
RandomErasing