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)

 

posted @ 2021-03-24 11:00  司砚章  阅读(231)  评论(0编辑  收藏  举报