赞
踩
图像变换往往是CV的第一步,合适的图像大小才能传入网络中进行训练以获得合适的结果
本文主要对TorchVision文档中包含的与transforms有关的方法进行分类以及解释,其包含的方法在裁剪板块给出,后续板块的方法的具体用法可参考裁剪板块
from torchvision import transforms
import PIL.Image as Image
import torch
image = Image.open("cat.png")
image.size, image.format, image.mode
transforms.CenterCrop(size)
中心裁剪
center_crop = transforms.CenterCrop(40)
image_crop = center_crop(image)
image_crop.size
transforms.RandomCrop(size,padding = None,pad_if_needed = False,fill = 0,padding_mode ='constant')
随机裁剪
random_crop = transforms.RandomCrop(100, pad_if_needed=True)
image_crop = random_crop(image)
image_crop.size
# 添加torch的随机种子,以保证图像和标签的随机剪裁区域一致
seed = torch.random.seed()
torch.random.manual_seed(seed)
random_crop = transforms.RandomCrop(300)
image_crop = random_crop(image)
image_crop.size
transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333), interpolation=2)
随机长宽比裁剪
random_size_crop = transforms.RandomResizedCrop(100)
image_crop = random_size_crop(image)
image_crop.size
transforms.FiveCrop(size)
图片的四个角和中心各截取一幅大小为 size 的图片
five_crop = transforms.FiveCrop(40)
image_crop = five_crop(image)
image_crop
transforms.TenCrop(size, vertical_flip=False)
将给定的PIL图像裁剪为四个角,中央裁剪加上这些的翻转版本(默认使用水平翻转)。
此转换返回图像元组,并且数据集返回的输入和目标数量可能不匹配。
ten_crop = transforms.TenCrop(40)
image_crop = ten_crop(image)
image_crop
transforms.RandomHorizontalFlip(p=0.5)
以给定的概率随机水平翻转给定的PIL图像
transforms.RandomVerticalFlip(p=0.5)
以给定的概率随机竖直翻转给定的PIL图像
transforms.RandomRotation(degrees, resample=False, expand=False, center=None)
按角度随机旋转图像
transforms.Resize(size, interpolation=2)
将输入PIL图像的大小调整为给定大小
transforms.Normalize(mean, std)
用平均值和标准偏差正则化张量图像
transforms.ToTensor
将PIL Image或者numpy.ndarray转换为tensor
# 实例化一个ToTensor对象
to_tensor = transforms.ToTensor()
image_crop = to_tensor(image)
image_crop
transforms.Pad(padding, fill=0, padding_mode='constant')
transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
随机更改图像的亮度,对比度和饱和度
transforms.Grayscale(num_output_channels=1)
将图像转换为灰度
transforms.RandomGrayscale(p=0.1)
根据概率p随机将图像转换为灰度图
transforms.LinearTransformation(transformation_matrix)
用一个方形的变换矩阵和一个离线计算的平均矢量来变换张量图像。这种转换不支持PIL图像。给定transformation_matrix和mean_vector,将把torch.*Tensor放平,并从其中减去mean_vector,然后计算与transformation矩阵的点乘,再把tensor重塑为原来的形状。
transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, interpolation=<InterpolationMode.NEAREST: 'nearest'>, fill=0, fillcolor=None, resample=None, center=None)
图像保持中心不变,进行随机的随机仿射变换
transforms.ToPILImage(mode=None)
将张量或ndarray转换成PIL图像
transforms.Lambda(lambd)
应用一个用户定义的lambda作为一个转换
transforms.Compose(transforms)
将几个变换组合在一起
transforms.Compose([
transforms.CenterCrop(10),
transforms.PILToTensor(),
transforms.ConvertImageDtype(torch.float),
])
transforms.RandomChoice(transforms)
应用从列表中随机抽取的单个转换
transforms.RandomApply(transforms, p=0.5)
以给定的概率随机地应用一个变换列表
transforms.RandomOrder(transforms)
以随机的顺序应用一系列的变换。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。