You need to sign in or sign up before continuing.
Unverified Commit 84911291 authored by Aditya Oke's avatar Aditya Oke Committed by GitHub
Browse files

Add illustrations for CenterCrop and FiveCrop in gallery example (#3706)


Co-authored-by: default avatarNicolas Hug <nicolashug@fb.com>
parent 77ccd878
...@@ -17,14 +17,14 @@ import torchvision.transforms as T ...@@ -17,14 +17,14 @@ import torchvision.transforms as T
orig_img = Image.open(Path('assets') / 'astronaut.jpg') orig_img = Image.open(Path('assets') / 'astronaut.jpg')
def plot(img, title="", with_orig=True, **kwargs): def plot(img, title: str = "", with_orig: bool = True, **kwargs):
def _plot(img, title, **kwargs): def _plot(img, title, **kwargs):
plt.figure().suptitle(title, fontsize=25) plt.figure().suptitle(title, fontsize=25)
plt.imshow(np.asarray(img), **kwargs) plt.imshow(np.asarray(img), **kwargs)
plt.axis('off') plt.axis('off')
if with_orig: if with_orig:
_plot(orig_img, "Original image") _plot(orig_img, "Original Image")
_plot(img, title, **kwargs) _plot(img, title, **kwargs)
...@@ -35,7 +35,7 @@ def plot(img, title="", with_orig=True, **kwargs): ...@@ -35,7 +35,7 @@ def plot(img, title="", with_orig=True, **kwargs):
# (see also :func:`~torchvision.transforms.functional.pad`) # (see also :func:`~torchvision.transforms.functional.pad`)
# fills image borders with some pixel values. # fills image borders with some pixel values.
padded_img = T.Pad(padding=30)(orig_img) padded_img = T.Pad(padding=30)(orig_img)
plot(padded_img, "Padded image") plot(padded_img, "Padded Image")
#################################### ####################################
# Resize # Resize
...@@ -44,7 +44,30 @@ plot(padded_img, "Padded image") ...@@ -44,7 +44,30 @@ plot(padded_img, "Padded image")
# (see also :func:`~torchvision.transforms.functional.resize`) # (see also :func:`~torchvision.transforms.functional.resize`)
# resizes an image. # resizes an image.
resized_img = T.Resize(size=30)(orig_img) resized_img = T.Resize(size=30)(orig_img)
plot(resized_img, "Resized image") plot(resized_img, "Resized Image")
####################################
# CenterCrop
# ----------
# The :class:`~torchvision.transforms.CenterCrop` transform
# (see also :func:`~torchvision.transforms.functional.center_crop`)
# crops the given image at the center.
center_cropped_img = T.CenterCrop(size=(100, 100))(orig_img)
plot(center_cropped_img, "Center Cropped Image")
####################################
# FiveCrop
# --------
# The :class:`~torchvision.transforms.FiveCrop` transform
# (see also :func:`~torchvision.transforms.functional.five_crop`)
# crops the given image into four corners and the central crop.
(img1, img2, img3, img4, img5) = T.FiveCrop(size=(100, 100))(orig_img)
plot(img1, "Top Left Corner Image")
plot(img2, "Top Right Corner Image", with_orig=False)
plot(img3, "Bottom Left Corner Image", with_orig=False)
plot(img4, "Bottom Right Corner Image", with_orig=False)
plot(img5, "Center Image", with_orig=False)
#################################### ####################################
# ColorJitter # ColorJitter
...@@ -52,7 +75,7 @@ plot(resized_img, "Resized image") ...@@ -52,7 +75,7 @@ plot(resized_img, "Resized image")
# The :class:`~torchvision.transforms.ColorJitter` transform # The :class:`~torchvision.transforms.ColorJitter` transform
# randomly changes the brightness, saturation, and other properties of an image. # randomly changes the brightness, saturation, and other properties of an image.
jitted_img = T.ColorJitter(brightness=.5, hue=.3)(orig_img) jitted_img = T.ColorJitter(brightness=.5, hue=.3)(orig_img)
plot(jitted_img, "Jitted image") plot(jitted_img, "Jitted Image")
#################################### ####################################
# Grayscale # Grayscale
...@@ -61,7 +84,7 @@ plot(jitted_img, "Jitted image") ...@@ -61,7 +84,7 @@ plot(jitted_img, "Jitted image")
# (see also :func:`~torchvision.transforms.functional.to_grayscale`) # (see also :func:`~torchvision.transforms.functional.to_grayscale`)
# converts an image to grayscale # converts an image to grayscale
gray_img = T.Grayscale()(orig_img) gray_img = T.Grayscale()(orig_img)
plot(gray_img, "Grayscale image", cmap='gray') plot(gray_img, "Grayscale Image", cmap='gray')
#################################### ####################################
# RandomPerspective # RandomPerspective
...@@ -70,7 +93,7 @@ plot(gray_img, "Grayscale image", cmap='gray') ...@@ -70,7 +93,7 @@ plot(gray_img, "Grayscale image", cmap='gray')
# (see also :func:`~torchvision.transforms.functional.perspective`) # (see also :func:`~torchvision.transforms.functional.perspective`)
# performs random perspective transform on an image. # performs random perspective transform on an image.
perspectived_img = T.RandomPerspective(distortion_scale=0.6, p=1.0)(orig_img) perspectived_img = T.RandomPerspective(distortion_scale=0.6, p=1.0)(orig_img)
plot(perspectived_img, "Perspective transformed image") plot(perspectived_img, "Perspective transformed Image")
#################################### ####################################
# RandomRotation # RandomRotation
...@@ -79,7 +102,7 @@ plot(perspectived_img, "Perspective transformed image") ...@@ -79,7 +102,7 @@ plot(perspectived_img, "Perspective transformed image")
# (see also :func:`~torchvision.transforms.functional.rotate`) # (see also :func:`~torchvision.transforms.functional.rotate`)
# rotates an image with random angle. # rotates an image with random angle.
rotated_img = T.RandomRotation(degrees=(30, 70))(orig_img) rotated_img = T.RandomRotation(degrees=(30, 70))(orig_img)
plot(rotated_img, "Rotated image") plot(rotated_img, "Rotated Image")
#################################### ####################################
# RandomAffine # RandomAffine
...@@ -88,7 +111,7 @@ plot(rotated_img, "Rotated image") ...@@ -88,7 +111,7 @@ plot(rotated_img, "Rotated image")
# (see also :func:`~torchvision.transforms.functional.affine`) # (see also :func:`~torchvision.transforms.functional.affine`)
# performs random affine transform on an image. # performs random affine transform on an image.
affined_img = T.RandomAffine(degrees=(30, 70), translate=(0.1, 0.3), scale=(0.5, 0.75))(orig_img) affined_img = T.RandomAffine(degrees=(30, 70), translate=(0.1, 0.3), scale=(0.5, 0.75))(orig_img)
plot(affined_img, "Affine transformed image") plot(affined_img, "Affine transformed Image")
#################################### ####################################
# RandomCrop # RandomCrop
...@@ -96,8 +119,8 @@ plot(affined_img, "Affine transformed image") ...@@ -96,8 +119,8 @@ plot(affined_img, "Affine transformed image")
# The :class:`~torchvision.transforms.RandomCrop` transform # The :class:`~torchvision.transforms.RandomCrop` transform
# (see also :func:`~torchvision.transforms.functional.crop`) # (see also :func:`~torchvision.transforms.functional.crop`)
# crops an image at a random location. # crops an image at a random location.
crop = T.RandomCrop(size=(128, 128))(orig_img) crop_img = T.RandomCrop(size=(128, 128))(orig_img)
plot(crop, "Random crop") plot(crop_img, "Random cropped Image")
#################################### ####################################
# RandomResizedCrop # RandomResizedCrop
...@@ -106,8 +129,8 @@ plot(crop, "Random crop") ...@@ -106,8 +129,8 @@ plot(crop, "Random crop")
# (see also :func:`~torchvision.transforms.functional.resized_crop`) # (see also :func:`~torchvision.transforms.functional.resized_crop`)
# crops an image at a random location, and then resizes the crop to a given # crops an image at a random location, and then resizes the crop to a given
# size. # size.
resized_crop = T.RandomResizedCrop(size=(32, 32))(orig_img) resized_crop_img = T.RandomResizedCrop(size=(32, 32))(orig_img)
plot(resized_crop, "Random resized crop") plot(resized_crop_img, "Random resized cropped Image")
#################################### ####################################
# RandomHorizontalFlip # RandomHorizontalFlip
...@@ -119,8 +142,8 @@ plot(resized_crop, "Random resized crop") ...@@ -119,8 +142,8 @@ plot(resized_crop, "Random resized crop")
# .. note:: # .. note::
# Since the transform is applied randomly, the two images below may actually be # Since the transform is applied randomly, the two images below may actually be
# the same. # the same.
random_hflip = T.RandomHorizontalFlip(p=0.5)(orig_img) random_hflip_img = T.RandomHorizontalFlip(p=0.5)(orig_img)
plot(random_hflip, "Random horizontal flip") plot(random_hflip_img, "Random horizontal flipped Image")
#################################### ####################################
# RandomVerticalFlip # RandomVerticalFlip
...@@ -132,8 +155,8 @@ plot(random_hflip, "Random horizontal flip") ...@@ -132,8 +155,8 @@ plot(random_hflip, "Random horizontal flip")
# .. note:: # .. note::
# Since the transform is applied randomly, the two images below may actually be # Since the transform is applied randomly, the two images below may actually be
# the same. # the same.
random_vflip = T.RandomVerticalFlip(p=0.5)(orig_img) random_vflip_img = T.RandomVerticalFlip(p=0.5)(orig_img)
plot(random_vflip, "Random vertical flip") plot(random_vflip_img, "Random vertical flipped Image")
#################################### ####################################
# RandomApply # RandomApply
...@@ -144,8 +167,8 @@ plot(random_vflip, "Random vertical flip") ...@@ -144,8 +167,8 @@ plot(random_vflip, "Random vertical flip")
# .. note:: # .. note::
# Since the transform is applied randomly, the two images below may actually be # Since the transform is applied randomly, the two images below may actually be
# the same. # the same.
random_apply = T.RandomApply(transforms=[T.RandomCrop(size=(64, 64))], p=0.5)(orig_img) random_apply_img = T.RandomApply(transforms=[T.RandomCrop(size=(64, 64))], p=0.5)(orig_img)
plot(random_apply, "Random Apply transform") plot(random_apply_img, "Random Apply transformed Image")
#################################### ####################################
# GaussianBlur # GaussianBlur
...@@ -154,4 +177,4 @@ plot(random_apply, "Random Apply transform") ...@@ -154,4 +177,4 @@ plot(random_apply, "Random Apply transform")
# (see also :func:`~torchvision.transforms.functional.gaussian_blur`) # (see also :func:`~torchvision.transforms.functional.gaussian_blur`)
# performs gaussianblur transform on an image. # performs gaussianblur transform on an image.
gaus_blur_img = T.GaussianBlur(kernel_size=(5, 9), sigma=(0.4, 3.0))(orig_img) gaus_blur_img = T.GaussianBlur(kernel_size=(5, 9), sigma=(0.4, 3.0))(orig_img)
plot(gaus_blur_img, "Gaussian Blur of image") plot(gaus_blur_img, "Gaussian Blurred Image")
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment