这次笔记是续PyTorch框架第五次笔记,上次笔记链接为:https://blog.csdn.net/qq_40467656/article/details/107914085
功能:将输入图像的尺寸resize到给定的尺寸。
操作对象:PIL格式或是张量。
torchvision.transforms.Resize(size, interpolation=2)
transforms.Resize((512, 512))
功能:逐通道的标准化图像,公式为
output[channel] = (input[channel] - mean[channel]) / std[channel]
操作对象:张量。
torchvision.transforms.Normalize(mean, std, inplace=False)
标准化的作用:可以加快模型的收敛。
例子如下,这是RGB三通道图像,所以均值标准差都要有三个:
norm_mean = [0.485, 0.456, 0.406]
norm_std = [0.229, 0.224, 0.225]
transforms.Normalize(norm_mean, norm_std)
功能:将 PIL Image 或 numpy.ndarray 转变为tensor。
操作对象:PIL格式或是ndarray。
torchvision.transforms.ToTensor
将一个尺寸为(H×W×C)像素值范围[0, 255]的PIL图像或numpy的ndarray转变为尺寸为(C×H×W)像素值范围[0.0, 1.0]。
transforms.ToTensor()
因为像素值都小于等于1,所以显示不出来,其实像素值是有值的。
功能:将张量或ndarray转换为PIL图像,同时保留值的范围。
操作对象:ndarray或是张量。
torchvision.transforms.ToPILImage(mode=None)
功能:对图片的边缘进行填充。
操作对象:PIL格式或是张量。
torchvision.transforms.Pad(padding, fill=0, padding_mode='constant')
几个例子如下:
(1)四边都填充32像素,模式为constant,填充值为(255, 0, 0)(红色)。
transforms.Pad(padding=32, fill=(255, 0, 0), padding_mode='constant')
transforms.Pad(padding=(8, 64), fill=(255, 0, 0), padding_mode='constant')
transforms.Pad(padding=(8, 16, 32, 64), fill=(255, 0, 0), padding_mode='constant')
transforms.Pad(padding=(8, 16, 32, 64), fill=(255, 0, 0), padding_mode='symmetric')
功能:调整亮度、对比度、饱和度和色相。
操作对象:PIL格式或是张量。
torchvision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
例子如下:
(1)亮度:
transforms.ColorJitter(brightness=0.5)
transforms.ColorJitter(contrast=0.5)
transforms.ColorJitter(saturation=0.5)
transforms.ColorJitter(hue=0.3)
功能:将图像转变为灰度图,返回类型为PIL图像。
操作对象:PIL图像。
torchvision.transforms.Grayscale(num_output_channels=1)
参数:
注意它的返回,通道为3时,三通道的值相等:
例子如下:
transforms.Grayscale(num_output_channels=3)
功能:依概率将图片转换为灰度图。
操作对象:PIL图像。
torchvision.transforms.RandomGrayscale(p=0.1)
功能:对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子构成,分别是旋转、平移、缩放、错切和翻转。
操作对象:PIL格式(或是张量?不清楚张量可不可以)。
torchvision.transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)
例子如下:
(1)旋转
transforms.RandomAffine(degrees=30)
transforms.RandomAffine(degrees=0, translate=(0.2, 0.2), fillcolor=(255, 0, 0))
transforms.RandomAffine(degrees=0, scale=(0.7, 0.7))
transforms.RandomAffine(degrees=0, shear=(0, 0, 0, 45))
transforms.RandomAffine(degrees=0, shear=90, fillcolor=(255, 0, 0))
功能:在图像中随机选择一个矩阵区域并遮挡其像素。
操作对象:张量。
torchvision.transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False)
例子如下:
(1)
transforms.RandomErasing(p=1, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=(254/255, 0, 0))
transforms.RandomErasing(p=1, scale=(0.02, 0.33), ratio=(0.3, 3.3), value='1234')
功能:用户自定义lambda方法。
torchvision.transforms.Lambda(lambd)
参数:
格式为:
lambda[ arg1 [,arg2,…] ]:expression
其中:
arg1 [,arg2,…]为输入参数,expression为要做的操作以及返回的内容。
例子如下:
transforms.TenCrop(112, vertical_flip=False)
transforms.Lambda(lambda crops: torch.stack([(transforms.ToTensor()(crop)) for crop in crops]))
这里的操作是将TenCrop生成的十个图像拼接成一个张量。
功能:从一系列transforms方法中随机挑选一个。
torchvision.transforms.RandomChoice(transforms)
格式为:
transforms.RandomChoice([transforms1, transforms2, transforms3,...])
如:要么垂直翻转,要么水平翻转。
transforms.RandomChoice([transforms.RandomVerticalFlip(p=1), transforms.RandomHorizontalFlip(p=1)])
功能:依据概率执行一组transforms操作。
torchvision.transforms.RandomApply(transforms, p=0.5)
如:0.5的概率执行仿射变换后灰度化。
transforms.RandomApply([transforms.RandomAffine(degrees=0, shear=45, fillcolor=(255, 0, 0)), transforms.Grayscale(num_output_channels=3)], p=0.5)
功能:对一组transforms方法打乱,然后顺序执行。
torchvision.transforms.RandomOrder(transforms)
如:
transforms.RandomOrder([transforms.RandomRotation(15),
transforms.Pad(padding=32),
transforms.RandomAffine(degrees=0, translate=(0.01, 0.1), scale=(0.9, 1.1))]),