TORCHVISION.TRANSFORMS
- 简介
- 1、Transforms on PIL Image(对PIL图像进行处理)
-
- 1-1:torchvision.transforms.CenterCrop(size)
- 1-2:torchvision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
- 1-3:torchvision.transforms.FiveCrop(size)
- 1-4:torchvision.transforms.Grayscale(num_output_channels=1)
- 1-5:torchvision.transforms.Pad(padding, fill=0, padding_mode='constant')
- 1-5:torchvision.transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)
- 1-6:torchvision.transforms.RandomApply(transforms, p=0.5)
- 1-7:torchvision.transforms.RandomChoice(transforms)
- 1-8:torchvision.transforms.RandomCrop(size, padding=None, pad_if_needed=False, fill=0, padding_mode='constant')
- 1-9:torchvision.transforms.RandomGrayscale(p=0.1)
- 1-10:torchvision.transforms.RandomHorizontalFlip(p=0.5)
- 1-11torchvision.transforms.RandomOrder(transforms)
- 1-12:torchvision.transforms.RandomPerspective(distortion_scale=0.5, p=0.5, interpolation=3, fill=0)
- 1-13:torchvision.transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333), interpolation=2)
- 1-14:torchvision.transforms.RandomRotation(degrees, resample=False, expand=False, center=None, fill=None)
- 1-15:torchvision.transforms.RandomSizedCrop(*args, **kwargs)
- 1-16:torchvision.transforms.RandomVerticalFlip(p=0.5)
- 1-17:torchvision.transforms.Resize(size, interpolation=2)
- 1-18:torchvision.transforms.TenCrop(size, vertical_flip=False)
- 2、Transforms on torch.*Tensor(在torch张量上的变换)
-
- 2-1:torchvision.transforms.LinearTransformation(transformation_matrix, mean_vector)
- 2-2:torchvision.transforms.Normalize(mean, std, inplace=False)
- 2-3:torchvision.transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False)
- 3、Conversion Transforms(类型转换)
-
- 3-1:torchvision.transforms.ToPILImage(mode=None)
- 3-2:torchvision.transforms.ToTensor
- 4、Generic Transforms(通用变换)
-
- 4-1:torchvision.transforms.Lambda(lambd)
- 5、Functional Transforms(函数变换)
-
- 5-1:torchvision.transforms.functional.adjust_brightness(img: torch.Tensor, brightness_factor: float) → torch.Tensor
- 5-2:torchvision.transforms.functional.adjust_contrast(img: torch.Tensor, contrast_factor: float) → torch.Tensor
- 5-3:torchvision.transforms.functional.adjust_gamma(img, gamma, gain=1)
- 5-4:torchvision.transforms.functional.adjust_hue(img: torch.Tensor, hue_factor: float) → torch.Tensor
- 5-5:torchvision.transforms.functional.adjust_saturation(img: torch.Tensor, saturation_factor: float) → torch.Tensor
- 5-6:torchvision.transforms.functional.affine(img, angle, translate, scale, shear, resample=0, fillcolor=None)
- 5-7:torchvision.transforms.functional.center_crop(img, output_size)
- 5-8:torchvision.transforms.functional.rotate(img, angle, resample=False, expand=False, center=None, fill=None)
- 5-9:torchvision.transforms.functional.ten_crop(img, size, vertical_flip=False)
- 5-9:torchvision.transforms.functional.to_grayscale(img, num_output_channels=1)
- 5-10:torchvision.transforms.functional.to_pil_image(pic, mode=None)
- 5-11:torchvision.transforms.functional.to_tensor(pic)
- 5-12:torchvision.transforms.functional.vflip(img: torch.Tensor) → torch.Tensor
简介
本文进行简单的函数索引工作,详细细节可参考官方文档
TORCHVISION.TRANSFORMS
Transforms
是常见的图像变换。可以使用Compose
将它们(变换设置)链接在一起。此外,还有torchvision.transforms.functional
。变换函数能够很好的控制图像变换的细粒度。如果你需要构建一个更复杂的transforms
设计(例如分割任务)transforms.functional模块是非常有用的。
torchvision.transforms.Compose(transforms)
该函数将我们所有的变换设置包装在一起
参数:transforms (list of Transform objects) #对变换序列进行组合
例子:
import torch
import torchvision
import torchvision.transforms as transforms
transforms.Compose([transforms.CenterCrop(10),transforms.ToTensor(),])
1、Transforms on PIL Image(对PIL图像进行处理)
PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等
1-1:torchvision.transforms.CenterCrop(size)
作用:对给定的PIL图像以中心位置为基准进行裁剪
参数:size(sequence or int)-期望图像裁剪的尺寸,sequence->(h,w)可以设置裁剪的尺寸的高和宽,如果只设置一个int数的话,就得到一个正方形的输出。
transforms.Compose([transforms.CenterCrop(10),])transforms.Compose([transforms.CenterCrop((125,257)),])
1-2:torchvision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
作用:随机改变图像的亮度、对比度和饱和度
参数:
- brightness (float or tuple of python:float (min, max)) – 亮度调节的阈值. 从[max(0,1-brightness),1 +brightness]或给定的[min,max]中均匀选择亮度系数。应为非负数。
- contrast (float or tuple of python:float (min, max)) – 对比度调节的阈值从[max(0,1-contrast),1+contrast] 或给定的[min,max]中均匀的调节对比度。应该为非负数。
- saturation (float or tuple of python:float (min, max)) – 饱和度的调节阈值. 如果是float数值就在[max(0,1-saturation),1+saturation]中均匀的调节饱和度,或是从给定的范围中选择。应该为非负数。
- hue (float or tuple of python:float (min, max)) – 调节色调,从[-hue,hue]或给定的[min,max]中均匀选择hue_factor。hue的范围应该满足: <=hue<= 0.5 或 -0.5 <=min<=max<= 0.5
1-3:torchvision.transforms.FiveCrop(size)
作用:以图像的四个角位置和中心位置五个点为基准进行裁剪,该函数会输出一个数量为5的图像组
参数:size (sequence or int)-期待裁剪后图像的尺寸
注意:在训练时,一般用randomResize,在测试时用FiveCrop
1-4:torchvision.transforms.Grayscale(num_output_channels=1)
作用:将图像转换为灰度图像
参数:num_output_channels (int)–期待输出图像的通道数(1或者3)
1-5:torchvision.transforms.Pad(padding, fill=0, padding_mode=‘constant’)
对给定的PIL图像进行padding填充
参数:
- padding (int or tuple) 在每个边框上填充。如果提供一个整型数,则用于填充所有边框。如果提供了长度为2的元组,那么它分别是左/右和顶/底部的填充。如果提供了一个长度为4的元组,那么它就是分别用于左边框、上边框、右边框和底边框的填充。
- fill (int or tuple) 像素填充值用于恒定填充。默认值为0。如果一个元组的长度为3,则分别用于填充R,G,B通道。仅当padding_mode为常数时使用此值。
padding_mode (str) 填充类型。应为:常数,边缘,反射或对称。默认为常数。
1-5:torchvision.transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)
作用:保持中心不变的图像的随机仿射变换
参数:
- degrees (sequence or float or int) – 旋转的度数
-translate (tuple, optional) – 平移- scale (tuple, optional) – 缩放
- shear (sequence or float or int, optional) – 错切
- resample ({PIL.Image.NEAREST, PIL.Image.BILINEAR, PIL.Image.BICUBIC}, optional) –图像重采样
- fillcolor (tuple or int) – 输出图像中变换外部区域的可选填充颜色(用于RGB图像的元组,用于灰度的int)
1-6:torchvision.transforms.RandomApply(transforms, p=0.5)
作用:以给定的概率随机应用一系列转换
参数:transforms (list or tuple) – 变换序列
p (float) – 概率
1-7:torchvision.transforms.RandomChoice(transforms)
作用:从列表中随机挑选一个变换
参数:transforms-变换列表
1-8:torchvision.transforms.RandomCrop(size, padding=None, pad_if_needed=False, fill=0, padding_mode=‘constant’)
作用:在随机位置裁剪给定的PIL图像
1-9:torchvision.transforms.RandomGrayscale(p=0.1)
作用:
将图像以p的概率随机转换为灰度(默认值为0.1)。
1-10:torchvision.transforms.RandomHorizontalFlip(p=0.5)
作用:根据给定的概率随机水平饭庄图像
1-11torchvision.transforms.RandomOrder(transforms)
作用:以随机序列应用转换列表
1-12:torchvision.transforms.RandomPerspective(distortion_scale=0.5, p=0.5, interpolation=3, fill=0)
作用:以给定的概率随机执行给定的PIL图像的透视变换
1-13:torchvision.transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333), interpolation=2)
作用:将给定的PIL图像裁剪为随机大小和纵横比
1-14:torchvision.transforms.RandomRotation(degrees, resample=False, expand=False, center=None, fill=None)
作用:按角度旋转图像
1-15:torchvision.transforms.RandomSizedCrop(*args, **kwargs)
作用:不建议使用此转换,而推荐使用RandomResizedCrop
1-16:torchvision.transforms.RandomVerticalFlip(p=0.5)
作用:以给定的概率垂直翻转给定的PIL图像。
1-17:torchvision.transforms.Resize(size, interpolation=2)
作用:将输入的PIL图像调整为给定尺寸。
1-18:torchvision.transforms.TenCrop(size, vertical_flip=False)
作用:将给定的PIL图像裁剪为四个角,并在中央裁剪并加上翻转的版本(默认情况下使用水平翻转)
2、Transforms on torch.*Tensor(在torch张量上的变换)
2-1:torchvision.transforms.LinearTransformation(transformation_matrix, mean_vector)
作用:一般用到白化矩阵上
2-2:torchvision.transforms.Normalize(mean, std, inplace=False)
用均值和标准差对张量图像进行归一化。
2-3:torchvision.transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False)
随机选择图像中的矩形区域并删除其像素
3、Conversion Transforms(类型转换)
3-1:torchvision.transforms.ToPILImage(mode=None)
将tensor或ndarray转换为PIL图像。
3-2:torchvision.transforms.ToTensor
作用:将一个 PIL Image 或 numpy.ndarray 转换为张量。
将[0,255]范围内的 PIL Image 或 numpy.ndarray (h x w x c)转换为Tensor。如果 PIL 图像属于其中一个模式(l,LA,p,i,f,RGB,YCbCr,RGBA,CMYK,1) ,或者 numpy.ndarray 具有 dtype = np.uint8,则 torch.FloatTensor(h x w x c)在[0.0,1.0]范围内。
4、Generic Transforms(通用变换)
4-1:torchvision.transforms.Lambda(lambd)
作用:使用lambd作为转换器
5、Functional Transforms(函数变换)
functional transforms
能够自定义自己的转换类。参数,转换序列等都可以自定义。
Example:
import torchvision.transforms.functional as TF
import randomclass MyRotationTransform:"""Rotate by one of the given angles."""def __init__(self, angles):self.angles = anglesdef __call__(self, x):angle = random.choice(self.angles)return TF.rotate(x, angle)rotation_transform = MyRotationTransform(angles=[-30, -15, 0, 15, 30])
5-1:torchvision.transforms.functional.adjust_brightness(img: torch.Tensor, brightness_factor: float) → torch.Tensor
作用:调节图像的亮度
5-2:torchvision.transforms.functional.adjust_contrast(img: torch.Tensor, contrast_factor: float) → torch.Tensor
作用:调节图像的对比度
5-3:torchvision.transforms.functional.adjust_gamma(img, gamma, gain=1)
作用:在一张图片上执行伽玛校正操作。
5-4:torchvision.transforms.functional.adjust_hue(img: torch.Tensor, hue_factor: float) → torch.Tensor
作用:调节图像的色调
5-5:torchvision.transforms.functional.adjust_saturation(img: torch.Tensor, saturation_factor: float) → torch.Tensor
作用:调节图像的饱和度
5-6:torchvision.transforms.functional.affine(img, angle, translate, scale, shear, resample=0, fillcolor=None)
作用:将仿射变换应用于使图像中心不变的图像
5-7:torchvision.transforms.functional.center_crop(img, output_size)
作用:裁剪给定的 PIL 图像并将其调整为所需的大小。
特别是在RandomResizedCrop中使用。
5-8:torchvision.transforms.functional.rotate(img, angle, resample=False, expand=False, center=None, fill=None)
作用:按角度旋转图像
5-9:torchvision.transforms.functional.ten_crop(img, size, vertical_flip=False)
作用:从给定的PIL图像生成十张裁剪的图像。将给定的PIL图像裁剪为四个角,并在中央裁剪并加上翻转后的版本(默认情况下使用水平翻转)
5-9:torchvision.transforms.functional.to_grayscale(img, num_output_channels=1)
作用:将图像转换为图像的灰度版本。
5-10:torchvision.transforms.functional.to_pil_image(pic, mode=None)
作用:将张量或多维数组转换成为PIL图像
5-11:torchvision.transforms.functional.to_tensor(pic)
作用:将PIL图像或numpy.ndarray转换为张量。
5-12:torchvision.transforms.functional.vflip(img: torch.Tensor) → torch.Tensor
作用:垂直翻转图像
参考链接:官方英文文档