Data Augmentation in PyTorch

后端 未结 3 626
太阳男子
太阳男子 2020-12-07 20:20

I am a little bit confused about the data augmentation performed in PyTorch. Now, as far as I know, when we are performing data augmentation, we are KEEPING our original dat

3条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-07 21:14

    The transforms operations are applied to your original images at every batch generation. So your dataset is left unchanged, only the batch images are copied and transformed every iteration.

    The confusion may come from the fact that often, like in your example, transforms are used both for data preparation (resizing/cropping to expected dimensions, normalizing values, etc.) and for data augmentation (randomizing the resizing/cropping, randomly flipping the images, etc.).


    What your data_transforms['train'] does is:

    • Randomly resize the provided image and randomly crop it to obtain a (224, 224) patch
    • Apply or not a random horizontal flip to this patch, with a 50/50 chance
    • Convert it to a Tensor
    • Normalize the resulting Tensor, given the mean and deviation values you provided

    What your data_transforms['val'] does is:

    • Resize your image to (256, 256)
    • Center crop the resized image to obtain a (224, 224) patch
    • Convert it to a Tensor
    • Normalize the resulting Tensor, given the mean and deviation values you provided

    (i.e. the random resizing/cropping for the training data is replaced by a fixed operation for the validation one, to have reliable validation results)


    If you don't want your training images to be horizontally flipped with a 50/50 chance, just remove the transforms.RandomHorizontalFlip() line.

    Similarly, if you want your images to always be center-cropped, replace transforms.RandomResizedCrop by transforms.Resize and transforms.CenterCrop, as done for data_transforms['val'].

提交回复
热议问题