pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等

图像增广

import torch import matplotlib.pyplot as plt from torch.utils.data import Dataset, DataLoader import torchvision from PIL import Image

# 获取图像 img = Image.open(r'D:\pyPro\hhandwritten_web\static\images\bg.jpg') plt.imshow(img)


pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等
文章图片

# 定义增广函数 def show_img(img,num_rows, num_cols, scale=2): figsize = (num_cols * scale, num_rows * scale) _, axes = plt.subplots(num_rows,num_cols, figsize=figsize) for i in range(0,num_rows): for j in range(0,num_cols): axes[i][j].imshow(img[i * num_rows + num_cols]) axes[i][j].axes.get_xaxis().set_visible(False) axes[i][j].axes.get_yaxis().set_visible(False) def apply(img, aug, rows = 2, cols = 4, scale = 1.5): Y = [aug(img) for _ in range(0,rows*cols)] show_img(Y, rows, cols, scale)

  • 水平翻转
# 采用默认的行列 apply(img, torchvision.transforms.RandomHorizontalFlip())

pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等
文章图片

  • 垂直翻转
apply(img, torchvision.transforms.RandomVerticalFlip())

pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等
文章图片

  • 裁剪
# 我们每次随机裁剪出?块?积为原?积0.1 - 1的区域,且该区域的宽和?之?随机取?0.5 - 2,然后再将该区域的宽和?分别缩放到200像素。 shape_aug = torchvision.transforms.RandomResizedCrop((600,1000), scale= (0.1, 1), ratio=(0.5, 2)) apply(img, shape_aug)

pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等
文章图片

  • 颜色
#设置如何随机变化图像的亮度( brightness )、对?度( contrast )、饱和度( saturation )和?调( hue )。 apply(img, torchvision.transforms.ColorJitter(brightness=0.5, hue=0.5,contrast=0.5, saturation=0.5))

pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等
文章图片

  • 叠加多个变化
mutil_aug = torchvision.transforms.Compose( [torchvision.transforms.RandomResizedCrop((600,1000), scale= (0.1, 1), ratio=(0.5, 2)), torchvision.transforms.ColorJitter(brightness=0.5, hue=0.5,contrast=0.5, saturation=0.5)] ) apply(img,mutil_aug)

【pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等】pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等
文章图片

    推荐阅读