pytorch学习(一) torchvision.transforms

  • Post author:
  • Post category:其他


torchvision

torchvision包包括流行的数据集、模型架构和计算机视觉的常见图像转换。

torchvision.transforms

可用于图像变换,多个函数可用Compose将它们串联起。

数据类型:PIL图像和张量图像。张量图像是(C,H,W)形状的张量,其中C是通道数,H和W是图像高度和宽度。一批张量图像是一个(B, C, H, W)形状的张量,其中B是该批图像的数量。

Compositions of transforms

compose(transforms):用于把多个变换组合起来。

compose = [
    transforms.Resize(size=size),
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
             ]
transforms = torch.Compose(compse)

Transforms on torch.*Tensor only

transforms.Normalize(mean, std, inplace=False)

是用均值和标准差对

Tensor

进行归一化处理,常用在对输入图像的预处理中 。

Conversion Transforms

ToPILImage([mode])

将tensor或者ndarray转化成PILImage。

ToTensor()

将PIL Image or numpy.ndarray转化为tensor。

PILToTensor()

Transforms on PIL Image and torch.*Tensor

有很多对图片进行处理的操作,可用于数据增强。

Resize

Resize(size[, interpolation, max_size, …]) 把图片转成需要的尺寸。

GaussianBlur

对图片进行高斯模糊。

CenterCrop

在中心位置对给定的图像进行裁剪

size = (224, 224)
transform = transforms.CenterCrop(size)
center_crop = transform(img)
center_crop.save('center_crop.jpg')

原图和中心裁剪后:








ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)

随机修改图片的亮度、对比度和饱和度,色相,常用来进行数据增强,尤其是训练图像类别不均衡或图像数量较少时。

brightness = (1, 10)
contrast = (1, 10)
saturation = (1, 10)
hue = (0.2, 0.4)
transform = transforms.ColorJitter(brightness, contrast, saturation, hue)
color_jitter = transform(img)
color_jitter.save('color_jitter.jpg')

FiveCrop(size)

分别从图像的四个角以及中心进行五次裁剪,剪裁后返回的是一个tuple。

size = (224, 224)
transform = transforms.FiveCrop(size)
five_crop = transform(img)
five_crop[0].save(r'five_crop.jpg')
five_crop[1].show()

原图的一角:




Grayscale(num_output_channels=1)

将图像转换为灰度图像,默认通道数为1,通道数为3时,RGB三个通道的值相等。

Pad(padding, fill=0, padding_mode=‘constant’)

对图像进行填充,可以设置要填充的值及填充的大小,默认是图像四边都填充。

size = (224, 224)
padding = 16
fill = (0, 0, 255)
transform = transforms.Compose([
        transforms.CenterCrop(size),
        transforms.Pad(padding, fill)
])
pad = transform(img)
pad.save('pad.jpg')

RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)

保持图像中心不变的情况下对图像进行随机的仿射变换

degrees = (15, 30)
translate=(0, 0.2)
scale=(0.8, 1)
fillcolor = (0, 0, 255)
transform = transforms.RandomAffine(degrees=degrees, translate=translate, scale=scale, fillcolor=fillcolor)
random_affine = transform(img)
random_affine.save('random_affine.jpg')

Functional Transforms

待补充



版权声明:本文为Lyyforever1220原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。