深度学习:图像变换transforms

0.前言

记录pytorch中torchvision.transforms的图像变换.
在这里,只使用transforms实现基本的功能,并没有对函数中的其他参数进行解读。
参考: pytorch中transforms函数的21种使用方法解析

from torchvision import transforms

1.变换函数

测试原图
(c,h,w)=(3,280,300)
深度学习:图像变换transforms_第1张图片

from torchvision import transforms# 导包
from PIL import Image
img = Image.open(r'image\dogcat\dogcat\train\cat\cat.1.jpg')# 读取原图

1.1 transforms.ToTensor()

Convert a PIL Image or numpy.ndarray to tensor.
转换成tensor对象,如果是numpy对象dtype需要是unit8。

tsf = transforms.ToTensor()
img = tsf(img)

1.2 transforms.ToPILImage()

tensor to PIL

tsf = transforms.ToPILImage()
img = tsf(img)

1.3裁剪Crop

img格式可以是PIL或者tensor

1.3.1随机裁剪到指定大小

tsf = transforms.RandomCrop(224,224)# 指定大小224*224,通道数是不变的
img = tsf(img)

效果对比
深度学习:图像变换transforms_第2张图片

1.3.2 中心裁剪

tsf = transforms.CenterCrop((100,100))
img = tsf(img)

深度学习:图像变换transforms_第3张图片

1.3.3 按比例裁剪后调整大小

按照比例随机裁剪图片后reszie到指定大小

tsf = transforms.RandomResizedCrop((224,224),(0.5,1))
img = tsf(img)

深度学习:图像变换transforms_第4张图片

1.3.4 上下左右中心裁剪出五张图片

tsf = transforms.FiveCrop((100,100))
img = tsf(img)
for i in img:
    i.show()

深度学习:图像变换transforms_第5张图片

1.4翻转和旋转 Flip and Rotation

1.4.1 按照概率镜像

tsf = transforms.RandomHorizontalFlip(p=0.8)  # 镜像旋转,p是旋转操作的概率
img = tsf(img)

深度学习:图像变换transforms_第6张图片

1.3.2按照概率倒映

tsf = transforms.RandomVerticalFlip(p=0.8)  
img = tsf(img)

深度学习:图像变换transforms_第7张图片

1.3.3 随机旋转角度旋转

tsf = transforms.RandomRotation(degrees=(-45,60))# -45°-60°
img = tsf(img)

深度学习:图像变换transforms_第8张图片

1.4.改变分辨率

tsf = transforms.Resize((224,224)) 
img = tsf(img)

注意这个和裁剪到224*224的区别

深度学习:图像变换transforms_第9张图片

1.5 Compose组合变化

先做大小变化然后随机旋转

tsf = transforms.Compose([
    transforms.Resize((224,224)),
    transforms.RandomRotation(degrees=(-45,60))])
img = tsf(img)

1.6 标准化

Normalize接受的是tensor格式的数据,PIL会报错

mean,std = 125,50
tsf = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean,std)
])
img = tsf(img)

1.7 修改亮度、对比度和饱和度

tsf = transforms.ColorJitter(brightness=1,contrast=2,saturation=4,hue=0)
img = tsf(img)

深度学习:图像变换transforms_第10张图片

1.8转灰度图

tsf = transforms.Grayscale(num_output_channels=1)
img = tsf(img)

深度学习:图像变换transforms_第11张图片

1.8.2依概率p转为灰度图

tsf = transforms.RandomGrayscale(0.8)
img = tsf(img)

你可能感兴趣的:(人工智能——深度学习,python_图像处理,深度学习,pytorch)