PyTorch-Image Transform
利用transform做数据增强
https://zhuanlan.zhihu.com/p/54527197
import torch import numpy as np import torchvision #torch的视觉包 import torchvision.datasets as datasets import torchvision.transforms as transforms import matplotlib.pyplot as plt import PIL.Image as Image import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" im=Image.open('D:/Project_Encyclopedia/catdog/dog/1.jpg').convert('RGB') plt.imshow(im) #随机比例放缩 #print字符串前面加f表示格式化字符串,加f后可以在字符串里面使用用花括号括起来的变量和表达式 #如果字符串里面没有表达式,那么前面加不加f输出应该都一样. new_im = transforms.Resize((100, 200))(im) print(f'{im.size}---->{new_im.size}') plt.imshow(new_im) #随机位置裁剪 new_im = transforms.RandomCrop(100)(im) # 随机裁剪出100x100的区域 plt.imshow(new_im) new_im = transforms.CenterCrop(100)(im) # 在图像的中心位置裁剪出100×100的区域 plt.imshow(new_im) #随机水平翻转 new_im = transforms.RandomHorizontalFlip(p=1)(im) # p表示概率 p=1的时候百分之百翻转 plt.imshow(new_im) #随机垂直翻转 new_im = transforms.RandomVerticalFlip(p=1)(im) plt.imshow(new_im) #随机角度旋转 new_im = transforms.RandomRotation(45)(im) #随机旋转0-45度 plt.imshow(new_im) #随机角度旋转 new_im = transforms.RandomRotation([90,90])(im) #肯定旋转90度 plt.imshow(new_im) #色度、亮度、饱和度、对比度的变化 new_im = transforms.ColorJitter(brightness=1)(im)#亮度 plt.subplot(2,2,1) plt.imshow(new_im) new_im = transforms.ColorJitter(contrast=1)(im)#对比度 plt.subplot(2,2,2) plt.imshow(new_im) new_im = transforms.ColorJitter(saturation=0.5)(im)#饱和度 plt.subplot(2,2,3) plt.imshow(new_im) new_im = transforms.ColorJitter(hue=0.5)(im)#色度 plt.subplot(2,2,4) plt.imshow(new_im) plt.show() #进行随机的灰度化 new_im = transforms.RandomGrayscale(p=1)(im) # 以1的概率进行灰度化 plt.imshow(new_im) #Padding (将原始图padding成正方形) new_im = transforms.Pad((0, (im.size[0]-im.size[1])//2))(im) # 原图为(500,313) plt.imshow(new_im) image_size=(224,224) data_transform={'train':transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.Resize(image_size), transforms.CenterCrop(image_size), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]), transforms.ToPILImage() ])} new_im=data_transform['train'](im) plt.imshow(new_im) image_size=(224,224) data_transform={'train':transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.Resize(image_size), transforms.CenterCrop(image_size), transforms.ToTensor(), #transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]), transforms.ToPILImage() ])} new_im=data_transform['train'](im) plt.imshow(new_im)
转载请注明出处,欢迎讨论和交流!